ภารกิจจำลองและขั้นตอนฉุกเฉิน
UAT 402 เทคโนโลยีระบบอากาศยานไร้คนขับขั้นสูงและการปฏิบัติการนอกระยะสายตา
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- คำนวณจุดที่ไม่สามารถบินกลับได้ (point of no return) เมื่อมีลม
- ตรวจความครอบคลุมของจุดลงจอดฉุกเฉินตามแนวเส้นทาง
- ตั้ง failsafe แบตเตอรี่และ rally point ของ ArduPilot ให้สอดคล้องกับการคำนวณ
- ซ้อมภารกิจ BVLOS จำลองพร้อมเหตุผิดปกติและบันทึกผล
ทำไมต้องรู้
หน่วยความรู้ปฏิบัติการเรื่องหยุดและต่อ link จำลองของคลังความรู้โดรนให้บันทึกพฤติกรรมเมื่อ telemetry ขาดหาย ส่วนคู่มือจัดกิจกรรมเรื่อง BVLOS และการประเมินความเสี่ยงแนะนำให้จัดบทอ่าน กิจกรรม ชิ้นงาน และการประเมินให้สอดคล้องกัน UAT 305 ตั้ง failsafe และรั้วภูมิศาสตร์ของ ArduPilot แล้ว ภารกิจแนวท่อ 20 km ของเรามีสองคำถามที่ต้องตอบก่อนซ้อม คือ บินออกไปได้ไกลเท่าใดโดยยังกลับบ้านได้ และ ถ้าต้องลงกลางทาง ลงที่ไหน
จุดที่ไม่สามารถบินกลับได้
เมื่อมีลมตามแนวเส้นทาง ขาไปที่ลมหนุนเร็วขึ้นแต่ขากลับที่ลมต้านช้าลงมากกว่า ความเร็วเฉลี่ยของไปกลับจึงต่ำกว่าลมสงบเสมอ จุดที่ไม่สามารถบินกลับได้ คือระยะไกลที่สุดที่พลังงานไปกลับยังไม่เกินพลังงานที่ใช้ได้หลังหักสำรอง
ตัวอย่างที่ 1 ลม 6 m/s ตามแนวท่อ
แบตเตอรี่มีพลังงานใช้ได้ 700 Wh สำรองไว้ 20% เมื่อถึงบ้าน กำลังขณะบินเดินทาง 1,200 W ความเร็วอากาศ 16 m/s ลมพัดตามแนวท่อออกจากบ้าน 6 m/s (ค่าสมมติ)
import numpy as np
cap_wh = 700.0 # พลังงานใช้ได้ของแบตเตอรี่
reserve = 0.20 # สำรองขั้นต่ำเมื่อถึงบ้าน
p_w = 1200.0 # กำลังขณะบินเดินทาง W
v_air = 16.0 # ความเร็วอากาศ m/s
wind = 6.0 # ลมพัดตามแนวเส้นทางออกจากบ้าน m/s (หนุนขาไป ต้านขากลับ)
def energy_wh(dist_m, ground_speed):
return p_w * dist_m / ground_speed / 3600
usable = cap_wh * (1 - reserve)
out_gs, back_gs = v_air + wind, v_air - wind
d = np.arange(0, 40001, 10)
need = energy_wh(d, out_gs) + energy_wh(d, back_gs)
pnr = d[need <= usable].max()
print(f"usable energy {usable:.0f} Wh")
print(f"point of no return with wind: {pnr/1000:.2f} km from home")
d0 = usable / (2 * p_w / v_air / 3600)
print(f"same calculation in calm air: {d0/1000:.2f} km")
usable energy 560 Wh
point of no return with wind: 11.55 km from home
same calculation in calm air: 13.44 km
ลม 6 m/s ทำให้จุดที่ไม่สามารถบินกลับได้หดจาก 13.4 km เหลือ 11.6 km แนวท่อยาว 20 km จึงบินไปกลับเที่ยวเดียวจากบ้านไม่ได้ ต้องแบ่งเป็นสองเที่ยว ใช้จุดขึ้นลงสองฝั่ง หรือให้รถพาไปปล่อยกลางทาง การคำนวณนี้ต้องทำใหม่ทุกวันตามลมจริง และควรใช้ลมที่ความสูงบิน ไม่ใช่ลมบนพื้น
จุดลงจอดฉุกเฉินตามแนวเส้นทาง
เมื่อแบตเตอรี่ต่ำ มอเตอร์ผิดปกติ หรือต้องหลบอากาศยานอื่น การบินกลับบ้านอาจไกลเกินไป ArduPilot รองรับ rally point ซึ่งเป็นจุดกลับทางเลือก โดรนจะไปยังจุดที่ใกล้ที่สุดเมื่อเข้าโหมด RTL (ภายใต้พารามิเตอร์ RALLY_LIMIT_KM และ RALLY_INCL_HOME) ส่วน failsafe แบตเตอรี่ตั้งเกณฑ์ได้ด้วย BATT_LOW_VOLT, BATT_LOW_MAH และเกณฑ์วิกฤต และเลือกการกระทำด้วย BATT_FS_LOW_ACT เช่น Land, RTL หรือ SmartRTL จุดลงเหล่านี้ต้องได้รับอนุญาตจากเจ้าของพื้นที่และตรวจสภาพจริงก่อนใช้
ตัวอย่างที่ 2 ช่วงไหนของแนวท่อที่ไม่มีที่ลง
มีจุดลงสี่แห่ง บ้าน ลานโรงเรียนที่ 6 km ลานวัดที่ 12 km และคลังปลายทางที่ 20 km เมื่อเกิดเหตุ ต้องถึงจุดลงได้ภายใน 3 km (ค่าสมมติจากพลังงานสำรอง) ตรวจทุก 0.1 km
import numpy as np
route_km = np.round(np.arange(0, 20.05, 0.1), 1) # จุดตามแนวท่อทุก 0.1 km
sites = {"home": 0.0, "L1 school field": 6.0, "L2 temple yard": 12.0, "end depot": 20.0}
reach_km = 3.0 # ระยะที่ต้องบินถึงจุดลงได้เมื่อเกิดเหตุ (สมมติจากพลังงานสำรอง)
gaps, best = [], []
for x in route_km:
name, pos = min(sites.items(), key=lambda s: abs(s[1] - x))
dist = abs(pos - x)
best.append(dist)
if dist > reach_km:
gaps.append(x)
print(f"worst distance to a landing site: {max(best):.2f} km")
if gaps:
print(f"uncovered stretch: {min(gaps):.1f} to {max(gaps):.1f} km")
sites["L3 new field"] = 16.0
worst = max(min(abs(p - x) for p in sites.values()) for x in route_km)
print(f"after adding L3 at 16.0 km, worst distance {worst:.2f} km")
worst distance to a landing site: 4.00 km
uncovered stretch: 15.1 to 16.9 km
after adding L3 at 16.0 km, worst distance 3.00 km
ช่วง 15.1–16.9 km อยู่ห่างจุดลงเกิน 3 km การเพิ่มลานนาที่ 16 km ปิดช่องว่างได้ แต่ระยะแย่ที่สุดเหลือ 3.00 km พอดีกับขีดจำกัด ซึ่งไม่มีระยะเผื่อเลย ควรหาจุดลงเพิ่มหรือเพิ่มพลังงานสำรอง การตรวจทุก 0.1 km ยังสำคัญ เพราะการตรวจห่างเกินไปอาจพลาดช่องว่างสั้น ๆ
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ซ้อมภารกิจ BVLOS ใน SITL
- สร้างภารกิจแนวท่อใน ArduPilot SITL ตั้งลมตามค่าที่พยากรณ์ และคำนวณจุดที่ไม่สามารถบินกลับได้ด้วยตัวอย่างที่ 1
- ใส่ rally point ตามตัวอย่างที่ 2 และตั้ง failsafe แบตเตอรี่ให้ทำงานก่อนถึงจุดที่ไม่สามารถบินกลับได้
- ผู้สอนแทรกเหตุระหว่างบิน เช่นตัด telemetry แบตเตอรี่ลดเร็ว หรือมีอากาศยานเข้าใกล้ ทีมต้องทำตามขั้นตอนที่เขียนไว้
- บันทึกเวลาและการตัดสินใจทุกเหตุ เทียบพฤติกรรมของโดรนกับที่คาด
- ทบทวนหลังซ้อม ระบุว่าขั้นตอนใดต้องแก้ และข้อจำกัดของการจำลองเทียบกับการบินจริง
ข้อผิดพลาดที่พบบ่อย
ระวัง
- คำนวณระยะบินจากลมสงบ
- ใช้ลมบนพื้นแทนลมที่ความสูงบิน
- ตั้ง failsafe แบตเตอรี่จากเปอร์เซ็นต์คงที่ โดยไม่คิดระยะจากจุดลง
- ใส่ rally point ที่ยังไม่ได้รับอนุญาตหรือไม่เคยตรวจสภาพ
- เชื่อผลซ้อมใน SITL เท่ากับการบินจริง
สรุป
- ลมตามแนวเส้นทางทำให้พลังงานไปกลับมากกว่าลมสงบเสมอ
- จุดที่ไม่สามารถบินกลับได้ต้องคำนวณใหม่ตามลมจริงทุกวัน
- จุดลงฉุกเฉินต้องครอบคลุมทุกช่วงของเส้นทางพร้อมระยะเผื่อ
- rally point และ failsafe แบตเตอรี่ของ ArduPilot ต้องตั้งให้ตรงกับการคำนวณและซ้อมจริง
แบบฝึกตรวจความเข้าใจ
- ความเร็วอากาศ 15 m/s ลม 5 m/s ความเร็วเทียบพื้นขาไปและขากลับเท่าใด
- ทำไมลมจึงลดระยะไปกลับแม้ขาไปจะเร็วขึ้น
- ArduPilot ใช้พารามิเตอร์ใดเลือกการกระทำเมื่อแบตเตอรี่ต่ำ
- rally point คืออะไร
- จุดลงอยู่ที่ 0 และ 8 km ต้องถึงภายใน 3 km ช่วงใดไม่ครอบคลุม
เฉลย
- ขาไป 20 m/s ขากลับ 10 m/s
- เวลาที่เสียในขาต้านลมมากกว่าเวลาที่ได้ในขาหนุนลม
- BATT_FS_LOW_ACT
- จุดกลับทางเลือกที่โดรนไปเมื่อเข้าโหมด RTL โดยเลือกจุดที่ใกล้ที่สุด
- ช่วงที่ห่างเกิน 3 km จากทั้งสองจุด คือระหว่าง 3 ถึง 5 km
สรุปสูตรสำคัญ
| พลังงานไปกลับ | |
| จุดที่ไม่สามารถบินกลับได้ |
แหล่งอ้างอิงหลัก
- ArduPilot Dev Team. Battery failsafe (Copter documentation). link
- ArduPilot Dev Team. Rally points (documentation). link
- ArduPilot Dev Team. SITL simulator (software in the loop). link
- Joint Authorities for Rulemaking on Unmanned Systems. (2024). JARUS guidelines on Specific Operations Risk Assessment (SORA), main body, edition 2.5 (JAR-DEL-SRM-SORA-MB-2.5). link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz