การระบุตำแหน่งในอาคาร
UAT 366 ระบบอากาศยานไร้คนขับอัตโนมัติภายในอาคารและระบบอากาศยานไร้คนขับหลายลำ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- รวมความคลาดของตำแหน่งจากหลายแหล่งเป็นงบความคลาดแบบ RSS
- อธิบายความคลาดสะสมของ VIO และการแก้ด้วยป้ายอ้างอิงที่รู้ตำแหน่ง
- อธิบายห่วงโซ่ข้อมูลตำแหน่งภายนอกเข้า EKF2 เวลาหน่วง และอัตราส่งข้อมูล
- กำหนดกรอบพิกัดของอาคารและระยะห่างของป้ายอ้างอิงตามความคลาดที่ยอมรับได้
ทำไมต้องรู้
ในคลังสินค้าไม่มีสัญญาณ GNSS โดรนต้องรู้ตำแหน่งตัวเองจากเซนเซอร์อื่น UAT 363 แนะนำวิธีระบุตำแหน่งในอาคารและการหาตำแหน่งจาก UWB แล้ว วิชานี้ตอบคำถามต่อไปว่า ตำแหน่งที่ได้แม่นพอสำหรับบินระหว่างชั้นวางที่ห่างกันไม่กี่เมตรหรือไม่ ความคลาดมาจากหลายแหล่งพร้อมกัน ถ้าไม่รวมให้เห็นทั้งหมด ทีมอาจบินใกล้ชั้นวางเกินไปโดยไม่รู้ตัว
ทั้งวิชาใช้กรณีสมมติเดียว: โรงงานผลิตชิ้นส่วนมีคลังชั้นวางสูงขนาด 60 × 30 m ใช้โดรน 3 ลำนับสต็อกช่วงกลางคืน ตัวเลขทั้งหมดเป็นข้อมูลสมมติสำหรับฝึก โค้ด Python ของทุกโมดูลดาวน์โหลดได้ที่ /downloads/uat-366/
ห่วงโซ่ข้อมูลตำแหน่ง
คู่มือ PX4 เรื่องการใช้ระบบภาพหรือ motion capture ระบุว่าควรส่งตำแหน่งภายนอกที่ 30–50 Hz ถ้าอัตราต่ำเกินไป EKF2 จะไม่หลอมรวมข้อมูล พารามิเตอร์ EKF2_EV_CTRL เลือกว่าจะใช้ตำแหน่งแนวราบ แนวดิ่ง ความเร็ว หรือทิศหัว และ EKF2_EV_DELAY บอกเวลาหน่วงของข้อมูลภาพเทียบกับ IMU ซึ่งคู่มือระบุว่าต้องปรับจากการทดลอง เวลาหน่วงที่ไม่ชดเชยทำให้ตำแหน่งที่ใช้เป็นตำแหน่งในอดีต คลาดเท่ากับความเร็วคูณเวลาหน่วง
งบความคลาด
ความคลาดจากหลายแหล่งที่เป็นอิสระกันรวมกันแบบ รากที่สองของผลรวมกำลังสอง (root sum square, RSS) แหล่งที่ใหญ่ที่สุดมีผลมากที่สุด การลดแหล่งเล็กจึงช่วยน้อย
ตัวอย่างที่ 1 งบความคลาดของตำแหน่งในคลัง
ค่าสมมติ (ส่วนเบี่ยงเบนมาตรฐาน m) บินระหว่างชั้นวาง 1.5 m/s เวลาหน่วงที่ไม่ชดเชย 40 ms
import math
SPEED, LATENCY = 1.5, 0.040
sources = {
"UWB position": 0.10,
"anchor survey": 0.05,
"uncompensated latency": SPEED * LATENCY,
"map-to-tag offset": 0.03,
}
total = math.sqrt(sum(v ** 2 for v in sources.values()))
for name, v in sources.items():
print(f"{name:<22} {v:.3f} m ({v ** 2 / total ** 2:.0%} of variance)")
print(f"total (RSS) {total:.3f} m")
fixed = math.sqrt(total ** 2 - sources["uncompensated latency"] ** 2)
print(f"after compensating latency with EKF2_EV_DELAY: {fixed:.3f} m")
UWB position 0.100 m (59% of variance)
anchor survey 0.050 m (15% of variance)
uncompensated latency 0.060 m (21% of variance)
map-to-tag offset 0.030 m (5% of variance)
total (RSS) 0.130 m
after compensating latency with EKF2_EV_DELAY: 0.116 m
UWB เป็นแหล่งใหญ่ที่สุด คิดเป็นเกินครึ่งของความแปรปรวน การชดเชยเวลาหน่วงช่วยลดความคลาดรวมได้ราว 1.4 cm ถ้าทางเดินกว้าง 2.5 m และโดรนกว้าง 0.8 m จะเหลือระยะเผื่อแต่ละข้างราว 0.85 m ต้องเทียบกับความคลาดหลายเท่าของส่วนเบี่ยงเบนมาตรฐาน ไม่ใช่ค่าเดียว
ความคลาดสะสมของ VIO
VIO (visual-inertial odometry) ประมาณการเคลื่อนที่จากกล้องกับ IMU ไม่ต้องติดตั้งอุปกรณ์ในอาคาร แต่ความคลาดสะสมตามระยะทาง ป้าย AprilTag (Olson, 2011) ที่ติดไว้ในตำแหน่งที่รู้ ช่วยรีเซ็ตความคลาดเมื่อกล้องเห็นป้าย ความคลาดจึงเป็นรูปฟันเลื่อย
ตัวอย่างที่ 2 ระยะห่างของป้ายที่ต้องใช้
สมมติ VIO คลาดสะสม 1% ของระยะทาง ป้ายรีเซ็ตความคลาดเหลือ 0.03 m
DRIFT, TAG_ERR, ROUTE_M = 0.01, 0.03, 120
for spacing in (60, 30, 15):
worst = TAG_ERR + DRIFT * spacing
print(f"tags every {spacing:>2} m: worst error {worst:.2f} m")
print(f"no tags over {ROUTE_M} m: {TAG_ERR + DRIFT * ROUTE_M:.2f} m")
for limit in (0.20, 0.10):
print(f"to stay below {limit:.2f} m, place tags at most every {(limit - TAG_ERR) / DRIFT:.0f} m")
tags every 60 m: worst error 0.63 m
tags every 30 m: worst error 0.33 m
tags every 15 m: worst error 0.18 m
no tags over 120 m: 1.23 m
to stay below 0.20 m, place tags at most every 17 m
to stay below 0.10 m, place tags at most every 7 m
ถ้าต้องการความคลาดไม่เกิน 10 cm ต้องติดป้ายทุก 7 m ซึ่งมากเกินไป ทางออกจึงเป็นการรวมหลายแหล่ง เช่น UWB ร่วมกับ VIO ในโมดูล 2
กรอบพิกัดของอาคาร
ทุกแหล่งต้องอ้างกรอบพิกัดเดียวกัน กำหนดจุดกำเนิดและทิศแกนของห้อง (เช่น มุมคลาดตะวันตกเฉียงใต้ แกน x ตามแนวทางเดิน) วัดตำแหน่งสมอ UWB และป้ายด้วยเครื่องมือวัดที่แม่นกว่าที่ต้องการอย่างน้อยหลายเท่า แล้วแปลงเป็นกรอบที่ PX4 ใช้ (NED) ตามที่เรียนการแปลง ENU กับ NED ใน UAT 322
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: งบความคลาดในห้องปฏิบัติการ
- กำหนดกรอบพิกัดของห้องบิน วัดตำแหน่งสมอ UWB หรือกล้อง motion capture และป้าย AprilTag
- ส่งตำแหน่งภายนอกเข้า PX4 ตามคู่มือ ตรวจอัตราส่งและตั้ง
EKF2_EV_CTRL - ทดลองปรับ
EKF2_EV_DELAYสามค่า เทียบความคลาดขณะบินไปกลับที่ความเร็วคงที่ - วัดความคลาดของแต่ละแหล่ง แล้วใช้โค้ดตัวอย่างที่ 1 ทำงบความคลาด
- บินตามแนวยาวด้วย VIO อย่างเดียว วัดความคลาดสะสม แล้วใช้โค้ดตัวอย่างที่ 2 กำหนดระยะห่างป้าย
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ดูเฉพาะความแม่นของ UWB โดยไม่รวมแหล่งอื่น
- ไม่ชดเชยเวลาหน่วง ของข้อมูลภายนอก
- ส่งตำแหน่งช้ากว่าที่ EKF2 ต้องการ
- ปนกรอบพิกัด ENU กับ NED
- เชื่อ VIO ต่อเนื่องนาน โดยไม่มีจุดอ้างอิงแก้ความคลาด
สรุป
- ความคลาดจากหลายแหล่งรวมแบบ RSS แหล่งใหญ่ที่สุดกำหนดผลรวม
- เวลาหน่วงที่ไม่ชดเชยทำให้คลาด v·Δt ต้องตั้ง
EKF2_EV_DELAYและส่งข้อมูลที่ 30–50 Hz - VIO คลาดสะสม ป้ายอ้างอิงช่วยรีเซ็ต ระยะห่างป้ายคำนวณจากความคลาดที่ยอมรับได้
- ทุกแหล่งต้องอยู่ในกรอบพิกัดเดียวกันที่วัดไว้อย่างแม่นยำ
แบบฝึกตรวจความเข้าใจ
- แหล่งความคลาด 0.06, 0.08 m รวมแบบ RSS เท่าใด
- บิน 2 m/s เวลาหน่วงไม่ชดเชย 50 ms คลาดเท่าใด
- VIO คลาด 2% ของระยะทาง ป้ายรีเซ็ตเหลือ 0.02 m ต้องการไม่เกิน 0.2 m ต้องติดป้ายห่างไม่เกินเท่าใด
- PX4 แนะนำให้ส่งตำแหน่งภายนอกที่อัตราเท่าใด
- ทำไมการลดแหล่งความคลาดที่เล็กที่สุดจึงช่วยน้อย
เฉลย
- m
- m
- m
- 30–50 Hz
- RSS ขึ้นกับกำลังสองของแต่ละแหล่ง แหล่งเล็กมีส่วนในผลรวมน้อยมาก
สรุปสูตรสำคัญ
| งบความคลาดแบบ RSS | |
| ความคลาดจากเวลาหน่วงที่ไม่ชดเชย | |
| ระยะห่างป้ายสูงสุด |
แหล่งอ้างอิงหลัก
- PX4 Autopilot. Using vision or motion capture systems for position estimation. PX4 guide (main). link
- Olson, E. (2011). AprilTag: A robust and flexible visual fiducial system. In 2011 IEEE International Conference on Robotics and Automation (pp. 3400–3407). IEEE. link
- IEEE. (2020). IEEE standard for low-rate wireless networks — Amendment 1: Enhanced ultra wideband (UWB) physical layers (PHYs) and associated ranging techniques (IEEE Std 802.15.4z-2020). link
- Alarifi, A., Al-Salman, A., Alsaleh, M., Alnafessah, A., Al-Hadhrami, S., Al-Ammar, M. A., & Al-Khalifa, H. S. (2016). Ultra wideband indoor positioning technologies: Analysis and recent advances. Sensors, 16(5), 707. link
- Groves, P. D. (2013). Principles of GNSS, inertial, and multisensor integrated navigation systems (2nd ed.). Artech House. link
- Siegwart, R., Nourbakhsh, I. R., & Scaramuzza, D. (2011). Introduction to autonomous mobile robots (2nd ed.). MIT Press. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ
หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม