ภารกิจจำลองและ Return to Launch
UAT 201 พื้นฐานระบบอากาศยานไร้คนขับ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- แยกความหมายของ mission, waypoint และ flight mode และอ่านลำดับโหมดจาก log
- อธิบายขั้นตอน Return to Launch ของ ArduPilot และ Return ของ PX4 พร้อมค่าเริ่มต้นที่สำคัญ
- คำนวณระยะ เวลา และพลังงานของภารกิจจาก waypoint และตรวจว่าเหลือพลังงานพอสำหรับบินกลับ
- วางและรันภารกิจใน SITL แล้วเก็บหลักฐานให้ผู้อื่นทำซ้ำได้
ทำไมต้องรู้
ภารกิจถ่ายภาพอาคารของทีมมีจุดถ่ายภาพหลายจุด ถ้าบังคับด้วยมือทีละจุด ภาพแต่ละรอบจะไม่ซ้ำตำแหน่งเดิม และผู้บังคับจะเหนื่อยจนพลาด การวางภารกิจอัตโนมัติ (mission) ทำให้บินซ้ำได้เหมือนเดิม แต่ต้องรู้ว่าเมื่อเกิดเหตุผิดปกติ โดรนจะทำอะไร โดยเฉพาะการบินกลับจุดขึ้น (Return to Launch, RTL) ซึ่งเป็นทางรอดที่ใช้บ่อยที่สุด
Mission, waypoint และ flight mode
- Waypoint คือจุดที่กำหนดพิกัดและความสูงให้โดรนบินไป
- Mission คือรายการคำสั่งเรียงลำดับ เช่น ขึ้นบิน บินไปจุดที่ 1 ถ่ายภาพ บินไปจุดที่ 2 แล้วกลับ
- Flight mode คือวิธีที่ตัวควบคุมการบินตีความคำสั่ง เช่น Stabilize (ผู้บังคับคุมเอง) Loiter (ค้างตำแหน่ง) Auto (ทำตาม mission) และ RTL
Return to Launch
RTL ทำงานเมื่อผู้บังคับสั่ง หรือเมื่อ failsafe สั่ง เช่น สัญญาณรีโมตขาดหรือแบตเตอรี่ต่ำ ค่าเริ่มต้นของสอง firmware ต่างกันมาก
| ขั้น | ArduPilot Copter (RTL) | PX4 (Return) |
|---|---|---|
| ไต่ระดับ | ขึ้นไปอย่างน้อยความสูง RTL ค่าเริ่มต้น 15 m | ไต่ถึงความสูงปลอดภัย ค่าเริ่มต้น RTL_RETURN_ALT 60 m |
| บินกลับ | ไปที่จุด Home หรือ rally point ที่ใกล้ที่สุด | ไปที่ Home หรือ rally point |
| เหนือจุดหมาย | ค้าง RTL_LOIT_TIME ค่าเริ่มต้น 5 วินาที | ลดลงถึง RTL_DESCEND_ALT 30 m รอ 0.5 วินาที |
| สุดท้าย | ลงจอด (ค่าเริ่มต้นความสูงสุดท้ายคือ 0 = ลงจอด) | ลงจอด |
ชื่อพารามิเตอร์เปลี่ยนตามรุ่น
ใน ArduPilot Copter รุ่น 4.6 ความสูง RTL ตั้งด้วย RTL_ALT หน่วย เซนติเมตร (ค่าเริ่มต้น 1500) เอกสารรุ่นใหม่ใช้ RTL_ALT_M หน่วย เมตร (ค่าเริ่มต้น 15) ต้องดูรุ่น firmware ก่อนตั้งค่าเสมอ และตั้งความสูง RTL ให้สูงกว่าต้นไม้และอาคารในพื้นที่ ภารกิจรอบอาคารของทีมจึงไม่ควรใช้ 15 m ถ้าอาคารสูง 20 m
คำนวณภารกิจก่อนบิน
ตัวอย่างที่ 1 ระยะ เวลา และพลังงานของภารกิจ
พิกัดเป็นเมตรจากจุด Home (ตะวันออก x, เหนือ y) บินสูง 30 m ความเร็ว 5 m/s ค้างถ่ายภาพจุดละ 3 วินาที ไต่และลดระดับ 1.5 m/s และใช้กำลังเฉลี่ยสมมติ 180 W
import math
waypoints = [(0, 0), (20, 0), (80, 0), (80, 20), (20, 20), (20, 40), (80, 40), (80, 60), (20, 60)]
speed, vz, alt, photo_s, power_w = 5.0, 1.5, 30.0, 3, 180
legs = [math.dist(a, b) for a, b in zip(waypoints, waypoints[1:])]
mission_m = sum(legs)
back_m = math.dist(waypoints[-1], waypoints[0])
t_mission = alt / vz + mission_m / speed + photo_s * (len(waypoints) - 1)
t_return = back_m / speed + 5 + alt / vz # บินกลับ ค้าง 5 s แล้วลดระดับ
energy_wh = power_w * (t_mission + t_return) / 3600
print(f"mission path {mission_m:.0f} m, return {back_m:.1f} m")
print(f"time: mission {t_mission:.0f} s + return {t_return:.1f} s = {(t_mission + t_return) / 60:.1f} min")
print(f"energy {energy_wh:.1f} Wh of 61.6 Wh usable ({energy_wh / 61.6:.0%})")
mission path 320 m, return 63.2 m
time: mission 108 s + return 37.6 s = 2.4 min
energy 7.3 Wh of 61.6 Wh usable (12%)
ภารกิจนี้สั้นมากเทียบกับพลังงานที่มี แต่ต้องคิดกรณีเลวร้ายด้วย ถ้าลิงก์ขาดตอนอยู่ไกลที่สุดหรือต้องบินต้านลม เวลาบินกลับจะนานขึ้น ตัวเลข 180 W และ 61.6 Wh (80% ของแบตเตอรี่ 4S 5200 mAh) เป็นค่าสมมติ ต้องวัดกำลังจริงจาก log ของลำที่ใช้
ตัวอย่างที่ 2 ตรวจว่ากลับบ้านได้จากทุกจุด
สมมติลมต้าน 4 m/s ขณะบินกลับ ความเร็วเทียบพื้นจึงเหลือ 1 m/s ต่อจากตัวอย่างที่ 1
headwind = 4.0
ground_speed = speed - headwind
worst_m = max(math.dist(p, waypoints[0]) for p in waypoints)
t_back = worst_m / ground_speed + 5 + alt / vz
print(f"farthest point {worst_m:.1f} m from home; return into a {headwind:.0f} m/s headwind takes {t_back:.0f} s "
f"and {power_w * t_back / 3600:.1f} Wh")
farthest point 100.0 m from home; return into a 4 m/s headwind takes 125 s and 6.2 Wh
ลมต้านทำให้เวลาบินกลับจากจุดไกลสุดนานขึ้นหลายเท่า ถ้าความเร็วลมเท่ากับหรือมากกว่าความเร็วของโดรน โดรนจะกลับไม่ได้เลย ต้องตรวจลมและกำหนดเกณฑ์ยกเลิกภารกิจก่อนบิน
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ภารกิจจำลองและ RTL ใน SITL
- เปิด ArduPilot SITL (Copter) ผ่าน Mission Planner หรือ QGroundControl บันทึกรุ่น firmware และตั้งความสูง RTL ให้เหมาะกับอาคารสมมติ
- วาง waypoint ตามภาพที่ 1 บินสูง 30 m บันทึกไฟล์ mission และค่าพารามิเตอร์ก่อนเริ่ม
- รันภารกิจในโหมด Auto แล้วสั่ง RTL ระหว่างทาง อ่านลำดับโหมดและความสูงจาก log
- จำลองสัญญาณขาดตามแนวทางแล็บ l10 บันทึกว่าระบบเปลี่ยนโหมดเมื่อใดและอย่างไร
- ทำซ้ำด้วย mission เดิม เทียบเวลาและจุดลงจอดสองรอบ และส่งไฟล์ให้เพื่อนกลุ่มอื่นลองทำซ้ำ
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ใช้ความสูง RTL เริ่มต้นโดยไม่ดูสิ่งกีดขวาง เช่น อาคารหรือต้นไม้ที่สูงกว่า 15 m
- ตั้งพารามิเตอร์ผิดหน่วย ใส่ 15 ในช่องที่เป็นเซนติเมตร
- ไม่ตรวจจุด Home ก่อนขึ้นบิน จุดกลับอาจไม่ใช่ที่คิด
- คำนวณพลังงานเฉพาะภารกิจ ลืมการบินกลับจากจุดไกลสุดและลม
- ไม่บันทึกรุ่น firmware และพารามิเตอร์ ผู้อื่นจึงทำซ้ำไม่ได้
สรุป
- Mission คือรายการคำสั่ง waypoint คือจุดหมาย และ flight mode กำหนดวิธีตีความคำสั่ง
- RTL ของ ArduPilot ใช้ความสูงเริ่มต้น 15 m ส่วน Return ของ PX4 ใช้ 60 m และลดลงที่ 30 m
- ชื่อและหน่วยพารามิเตอร์ต่างกันตามรุ่น firmware
- คำนวณระยะ เวลา และพลังงานของทั้งภารกิจและการบินกลับจากจุดไกลสุด รวมผลของลม
แบบฝึกตรวจความเข้าใจ
- ใน ArduPilot Copter รุ่น 4.6 ต้องการความสูง RTL 30 m ต้องตั้ง
RTL_ALTเป็นเท่าใด - Waypoint (0, 0) → (30, 40) → (30, 0) มีความยาวเส้นทางเท่าใด
- บินกลับ 100 m ที่ความเร็วเทียบพื้น 4 m/s ใช้เวลากี่วินาที
- ใช้กำลัง 200 W นาน 9 นาที ใช้พลังงานกี่ Wh
- โดรนบินได้ 5 m/s ลมต้าน 6 m/s ขณะบินกลับ จะเกิดอะไรขึ้น
เฉลย
- 3000 (หน่วยเซนติเมตร)
- m
- s
- Wh
- ความเร็วเทียบพื้นติดลบ โดรนถูกลมพาถอยห่างออกไปและกลับไม่ได้ จึงต้องไม่บินในลมแรงเช่นนี้
สรุปสูตรสำคัญ
| ความยาวเส้นทาง | |
| พลังงานที่ใช้ |
แหล่งอ้างอิงหลัก
- ArduPilot Dev Team. RTL mode. ArduPilot Copter documentation. link
- PX4 Autopilot. Return mode (generic vehicle). PX4 user guide (main). link
- ArduPilot Dev Team. SITL simulator (software in the loop). link
- ArduPilot Dev Team. Mission Planner simulation. Mission Planner documentation. link
- QGroundControl. QGroundControl user guide. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ภารกิจจำลองและ Return to Launch
ArduPilot SITL
QGroundControl
หยุดและต่อ link จำลอง
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz