โมดูล 4/5 · สัปดาห์ 10–12 · 27 ชม.

ภารกิจจำลองและ Return to Launch

UAT 201 พื้นฐานระบบอากาศยานไร้คนขับ

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

บทเรียน

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

  1. แยกความหมายของ mission, waypoint และ flight mode และอ่านลำดับโหมดจาก log
  2. อธิบายขั้นตอน Return to Launch ของ ArduPilot และ Return ของ PX4 พร้อมค่าเริ่มต้นที่สำคัญ
  3. คำนวณระยะ เวลา และพลังงานของภารกิจจาก waypoint และตรวจว่าเหลือพลังงานพอสำหรับบินกลับ
  4. วางและรันภารกิจใน SITL แล้วเก็บหลักฐานให้ผู้อื่นทำซ้ำได้

ความรู้พื้นฐานที่ควรมี: UAT 201 โมดูล 1–3

ทำไมต้องรู้

ภารกิจถ่ายภาพอาคารของทีมมีจุดถ่ายภาพหลายจุด ถ้าบังคับด้วยมือทีละจุด ภาพแต่ละรอบจะไม่ซ้ำตำแหน่งเดิม และผู้บังคับจะเหนื่อยจนพลาด การวางภารกิจอัตโนมัติ (mission) ทำให้บินซ้ำได้เหมือนเดิม แต่ต้องรู้ว่าเมื่อเกิดเหตุผิดปกติ โดรนจะทำอะไร โดยเฉพาะการบินกลับจุดขึ้น (Return to Launch, RTL) ซึ่งเป็นทางรอดที่ใช้บ่อยที่สุด

Mission, waypoint และ flight mode

  • Waypoint คือจุดที่กำหนดพิกัดและความสูงให้โดรนบินไป
  • Mission คือรายการคำสั่งเรียงลำดับ เช่น ขึ้นบิน บินไปจุดที่ 1 ถ่ายภาพ บินไปจุดที่ 2 แล้วกลับ
  • Flight mode คือวิธีที่ตัวควบคุมการบินตีความคำสั่ง เช่น Stabilize (ผู้บังคับคุมเอง) Loiter (ค้างตำแหน่ง) Auto (ทำตาม mission) และ RTL
มุมมองจากด้านบน จุด H คือจุดขึ้นบินที่มุมล่างซ้าย เส้นทางสีฟ้าผ่าน waypoint 1 ถึง 8 แบบซิกแซกรอบอาคารสี่เหลี่ยมตรงกลาง เส้นประสีส้มจาก waypoint 8 กลับไป H กล่องด้านขวาระบุภารกิจ 320 m และกลับ 63.2 m
ภาพที่ 1 แผนภารกิจถ่ายภาพรอบอาคารมองจากด้านบน

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 = ลงจอด)ลงจอด
มุมมองด้านข้าง แกนนอนคือระยะจาก Home 0 ถึง 80 m แกนตั้งคือความสูง จุดสั่ง RTL อยู่ที่ระยะ 63 m สูง 10 m เส้นสีฟ้าของ ArduPilot ไต่ขึ้น 15 m บินกลับแล้วลงที่ Home เส้นประสีส้มของ PX4 ไต่ขึ้น 60 m บินกลับ ลดลงที่ 30 m แล้วลงจอด
ภาพที่ 2 แนวบิน RTL ด้านข้างตามค่าเริ่มต้นของ ArduPilot และ PX4

ชื่อพารามิเตอร์เปลี่ยนตามรุ่น

ใน 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

  1. เปิด ArduPilot SITL (Copter) ผ่าน Mission Planner หรือ QGroundControl บันทึกรุ่น firmware และตั้งความสูง RTL ให้เหมาะกับอาคารสมมติ
  2. วาง waypoint ตามภาพที่ 1 บินสูง 30 m บันทึกไฟล์ mission และค่าพารามิเตอร์ก่อนเริ่ม
  3. รันภารกิจในโหมด Auto แล้วสั่ง RTL ระหว่างทาง อ่านลำดับโหมดและความสูงจาก log
  4. จำลองสัญญาณขาดตามแนวทางแล็บ l10 บันทึกว่าระบบเปลี่ยนโหมดเมื่อใดและอย่างไร
  5. ทำซ้ำด้วย mission เดิม เทียบเวลาและจุดลงจอดสองรอบ และส่งไฟล์ให้เพื่อนกลุ่มอื่นลองทำซ้ำ

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

ระวัง

  • ใช้ความสูง RTL เริ่มต้นโดยไม่ดูสิ่งกีดขวาง เช่น อาคารหรือต้นไม้ที่สูงกว่า 15 m
  • ตั้งพารามิเตอร์ผิดหน่วย ใส่ 15 ในช่องที่เป็นเซนติเมตร
  • ไม่ตรวจจุด Home ก่อนขึ้นบิน จุดกลับอาจไม่ใช่ที่คิด
  • คำนวณพลังงานเฉพาะภารกิจ ลืมการบินกลับจากจุดไกลสุดและลม
  • ไม่บันทึกรุ่น firmware และพารามิเตอร์ ผู้อื่นจึงทำซ้ำไม่ได้

สรุป

  • Mission คือรายการคำสั่ง waypoint คือจุดหมาย และ flight mode กำหนดวิธีตีความคำสั่ง
  • RTL ของ ArduPilot ใช้ความสูงเริ่มต้น 15 m ส่วน Return ของ PX4 ใช้ 60 m และลดลงที่ 30 m
  • ชื่อและหน่วยพารามิเตอร์ต่างกันตามรุ่น firmware
  • คำนวณระยะ เวลา และพลังงานของทั้งภารกิจและการบินกลับจากจุดไกลสุด รวมผลของลม

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

  1. ใน ArduPilot Copter รุ่น 4.6 ต้องการความสูง RTL 30 m ต้องตั้ง RTL_ALT เป็นเท่าใด
  2. Waypoint (0, 0) → (30, 40) → (30, 0) มีความยาวเส้นทางเท่าใด
  3. บินกลับ 100 m ที่ความเร็วเทียบพื้น 4 m/s ใช้เวลากี่วินาที
  4. ใช้กำลัง 200 W นาน 9 นาที ใช้พลังงานกี่ Wh
  5. โดรนบินได้ 5 m/s ลมต้าน 6 m/s ขณะบินกลับ จะเกิดอะไรขึ้น
เฉลย
  1. 3000 (หน่วยเซนติเมตร)
  2. m
  3. s
  4. Wh
  5. ความเร็วเทียบพื้นติดลบ โดรนถูกลมพาถอยห่างออกไปและกลับไม่ได้ จึงต้องไม่บินในลมแรงเช่นนี้

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

ความยาวเส้นทาง
พลังงานที่ใช้

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

  1. ArduPilot Dev Team. RTL mode. ArduPilot Copter documentation. link
  2. PX4 Autopilot. Return mode (generic vehicle). PX4 user guide (main). link
  3. ArduPilot Dev Team. SITL simulator (software in the loop). link
  4. ArduPilot Dev Team. Mission Planner simulation. Mission Planner documentation. link
  5. QGroundControl. QGroundControl user guide. link

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

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

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

ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย

หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz

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

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

โดเมนความรู้: การวางแผนภารกิจ การบิน และการจำลอง · การสื่อสาร เครือข่าย และ IoT