โมดูล 1/5 · สัปดาห์ 1–3 · 27 ชม.

การระบุตำแหน่งในอาคาร

UAT 366 ระบบอากาศยานไร้คนขับอัตโนมัติภายในอาคารและระบบอากาศยานไร้คนขับหลายลำ

เวลาเรียนประมาณ 80 นาทีร่าง รอตรวจปรับปรุงล่าสุด 27 กันยายน 2569

บทเรียน

เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ

  1. รวมความคลาดของตำแหน่งจากหลายแหล่งเป็นงบความคลาดแบบ RSS
  2. อธิบายความคลาดสะสมของ VIO และการแก้ด้วยป้ายอ้างอิงที่รู้ตำแหน่ง
  3. อธิบายห่วงโซ่ข้อมูลตำแหน่งภายนอกเข้า EKF2 เวลาหน่วง และอัตราส่งข้อมูล
  4. กำหนดกรอบพิกัดของอาคารและระยะห่างของป้ายอ้างอิงตามความคลาดที่ยอมรับได้

ความรู้พื้นฐานที่ควรมี: UAT 322 (บูรณาการระบบอัตโนมัติและ sensor fusion) และ UAT 363 โมดูล 3 (ระบุตำแหน่งในคลังสินค้า)

ทำไมต้องรู้

ในคลังสินค้าไม่มีสัญญาณ GNSS โดรนต้องรู้ตำแหน่งตัวเองจากเซนเซอร์อื่น UAT 363 แนะนำวิธีระบุตำแหน่งในอาคารและการหาตำแหน่งจาก UWB แล้ว วิชานี้ตอบคำถามต่อไปว่า ตำแหน่งที่ได้แม่นพอสำหรับบินระหว่างชั้นวางที่ห่างกันไม่กี่เมตรหรือไม่ ความคลาดมาจากหลายแหล่งพร้อมกัน ถ้าไม่รวมให้เห็นทั้งหมด ทีมอาจบินใกล้ชั้นวางเกินไปโดยไม่รู้ตัว

ทั้งวิชาใช้กรณีสมมติเดียว: โรงงานผลิตชิ้นส่วนมีคลังชั้นวางสูงขนาด 60 × 30 m ใช้โดรน 3 ลำนับสต็อกช่วงกลางคืน ตัวเลขทั้งหมดเป็นข้อมูลสมมติสำหรับฝึก โค้ด Python ของทุกโมดูลดาวน์โหลดได้ที่ /downloads/uat-366/

ห่วงโซ่ข้อมูลตำแหน่ง

ห้าขั้นเรียงจากซ้ายไปขวา UWB MoCap หรือ VIO คอมพิวเตอร์บนลำ ROS 2 ข้อความ MAVLink ODOMETRY EKF2 ที่ชดเชยเวลาหน่วง และการควบคุมตำแหน่ง ด้านล่างเขียนว่าส่งตำแหน่งภายนอกที่ 30 ถึง 50 Hz
ภาพที่ 1 ห่วงโซ่ข้อมูลตำแหน่งภายนอกเข้า EKF2

คู่มือ 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) ที่ติดไว้ในตำแหน่งที่รู้ ช่วยรีเซ็ตความคลาดเมื่อกล้องเห็นป้าย ความคลาดจึงเป็นรูปฟันเลื่อย

กราฟความคลาดตามระยะบิน เส้นประสีชมพูไม่มีป้ายเพิ่มขึ้นตรงไปเรื่อย ๆ เส้นทึบสีฟ้ามีป้ายทุก 30 เมตร เพิ่มขึ้นแล้วตกลงเหลือ 0.03 เมตรทุก 30 เมตรเป็นรูปฟันเลื่อย
ภาพที่ 2 ความคลาดสะสมของ VIO กับการแก้ด้วยป้าย

ตัวอย่างที่ 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

ปฏิบัติการประจำโมดูล

ปฏิบัติการ: งบความคลาดในห้องปฏิบัติการ

  1. กำหนดกรอบพิกัดของห้องบิน วัดตำแหน่งสมอ UWB หรือกล้อง motion capture และป้าย AprilTag
  2. ส่งตำแหน่งภายนอกเข้า PX4 ตามคู่มือ ตรวจอัตราส่งและตั้ง EKF2_EV_CTRL
  3. ทดลองปรับ EKF2_EV_DELAY สามค่า เทียบความคลาดขณะบินไปกลับที่ความเร็วคงที่
  4. วัดความคลาดของแต่ละแหล่ง แล้วใช้โค้ดตัวอย่างที่ 1 ทำงบความคลาด
  5. บินตามแนวยาวด้วย VIO อย่างเดียว วัดความคลาดสะสม แล้วใช้โค้ดตัวอย่างที่ 2 กำหนดระยะห่างป้าย

ข้อผิดพลาดที่พบบ่อย

ระวัง

  • ดูเฉพาะความแม่นของ UWB โดยไม่รวมแหล่งอื่น
  • ไม่ชดเชยเวลาหน่วง ของข้อมูลภายนอก
  • ส่งตำแหน่งช้ากว่าที่ EKF2 ต้องการ
  • ปนกรอบพิกัด ENU กับ NED
  • เชื่อ VIO ต่อเนื่องนาน โดยไม่มีจุดอ้างอิงแก้ความคลาด

สรุป

  • ความคลาดจากหลายแหล่งรวมแบบ RSS แหล่งใหญ่ที่สุดกำหนดผลรวม
  • เวลาหน่วงที่ไม่ชดเชยทำให้คลาด v·Δt ต้องตั้ง EKF2_EV_DELAY และส่งข้อมูลที่ 30–50 Hz
  • VIO คลาดสะสม ป้ายอ้างอิงช่วยรีเซ็ต ระยะห่างป้ายคำนวณจากความคลาดที่ยอมรับได้
  • ทุกแหล่งต้องอยู่ในกรอบพิกัดเดียวกันที่วัดไว้อย่างแม่นยำ

แบบฝึกตรวจความเข้าใจ

  1. แหล่งความคลาด 0.06, 0.08 m รวมแบบ RSS เท่าใด
  2. บิน 2 m/s เวลาหน่วงไม่ชดเชย 50 ms คลาดเท่าใด
  3. VIO คลาด 2% ของระยะทาง ป้ายรีเซ็ตเหลือ 0.02 m ต้องการไม่เกิน 0.2 m ต้องติดป้ายห่างไม่เกินเท่าใด
  4. PX4 แนะนำให้ส่งตำแหน่งภายนอกที่อัตราเท่าใด
  5. ทำไมการลดแหล่งความคลาดที่เล็กที่สุดจึงช่วยน้อย
เฉลย
  1. m
  2. m
  3. m
  4. 30–50 Hz
  5. RSS ขึ้นกับกำลังสองของแต่ละแหล่ง แหล่งเล็กมีส่วนในผลรวมน้อยมาก

สรุปสูตรสำคัญ

งบความคลาดแบบ RSS
ความคลาดจากเวลาหน่วงที่ไม่ชดเชย
ระยะห่างป้ายสูงสุด

แหล่งอ้างอิงหลัก

  1. PX4 Autopilot. Using vision or motion capture systems for position estimation. PX4 guide (main). link
  2. 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
  3. 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
  4. 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
  5. Groves, P. D. (2013). Principles of GNSS, inertial, and multisensor integrated navigation systems (2nd ed.). Artech House. link
  6. Siegwart, R., Nourbakhsh, I. R., & Scaramuzza, D. (2011). Introduction to autonomous mobile robots (2nd ed.). MIT Press. link

อ่านเพิ่มเติม

ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล

ในชั้นเรียน / ภาคสนาม

ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ

หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม

แบบทดสอบประจำโมดูล

แบบทดสอบนี้ใช้ตรวจความเข้าใจ (formative) ไม่ใช่การสอบเก็บคะแนน

โดเมนความรู้: ขนส่ง ภายในอาคาร และคลังสินค้า · การควบคุม ออโตไพลอต และการนำทาง