ภารกิจอัตโนมัติ SITL สู่ภาคสนาม
UAT 322 ปฏิบัติการปัญญาประดิษฐ์และการประกอบรวมระบบอากาศยานไร้คนขับอัตโนมัติ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- วางแผนการทดสอบเป็นขั้นจาก SITL, HITL, การบินโยงเชือกหรือในกรง จนถึงภาคสนาม พร้อมเกณฑ์ผ่านแต่ละขั้น
- รายงานอัตราสำเร็จพร้อมช่วงความเชื่อมั่น และคำนวณจำนวนรอบทดสอบที่ต้องใช้
- อธิบายและจำลองหลัก run-time assurance ที่สลับไปตัวควบคุมปลอดภัยเมื่อเข้าใกล้ขอบเขต
- ระบุข้อกำหนดด้านความปลอดภัยและกฎหมายก่อนนำภารกิจอัตโนมัติไปบินจริง
ทำไมต้องรู้
ภารกิจอัตโนมัติที่ทำงานสมบูรณ์ในเครื่องจำลอง อาจล้มในวันแรกที่บินจริงเพราะลม แสงแดด เซนเซอร์ที่สั่น หรือสัญญาณที่ขาด การทดสอบจึงต้องเป็นขั้นบันได เพิ่มความสมจริงทีละขั้นและจำกัดความเสียหายหากล้ม และทุกขั้นต้องมีเกณฑ์ผ่านที่ตั้งไว้ก่อนเห็นผล โมดูลนี้รวมทุกอย่างในวิชาเป็นภารกิจเดียว ตั้งแต่ SITL จนถึงภาคสนาม
บันไดการทดสอบ
| ขั้น | ทดสอบอะไร | ความเสี่ยงเมื่อล้ม |
|---|---|---|
| SITL | ตรรกะภารกิจ failsafe และการเชื่อมต่อ ใช้ PX4 กับ Gazebo (make px4_sitl gz_x500) หรือ ArduPilot กับ sim_vehicle.py | ไม่มี |
| HITL | firmware จริงบนบอร์ดจริง กับโลกจำลอง | ต่ำ |
| โยงเชือกหรือในกรงตาข่าย | ลำจริง เซนเซอร์จริง ในพื้นที่ที่ควบคุมได้ | จำกัด |
| ภาคสนามเล็ก | ภารกิจสั้นในระยะสายตา มีนักบินพร้อมรับช่วง | ปานกลาง |
| ภารกิจจริง | ตามใบอนุญาตและคู่มือปฏิบัติการ | ต้องควบคุมด้วยการประเมินความเสี่ยง |
ทุกขั้นทดสอบทั้งกรณีปกติและกรณีผิดปกติ เช่น คอมพิวเตอร์บนลำค้าง GNSS หาย สัญญาณควบคุมขาด และแบตเตอรี่ต่ำ โดยเช็กว่า failsafe และ geofence ทำงานตามที่ตั้งไว้ เอกสาร PX4 รวบรวมการตั้งค่า failsafe เหล่านี้ไว้ในหน้าเดียว
ผ่านกี่รอบจึงพอ
อัตราสำเร็จจากการทดสอบไม่กี่รอบมีความไม่แน่นอนสูง จึงต้องรายงานพร้อม ช่วงความเชื่อมั่น เหมือนที่เรียนใน UAT 106
ตัวอย่างที่ 1 อัตราสำเร็จแต่ละขั้น
import math
from scipy import stats
for stage, runs, ok in (("SITL", 50, 48), ("HITL", 20, 19), ("field", 12, 11)):
ci = stats.binomtest(ok, runs).proportion_ci(confidence_level=0.95)
print(f"{stage:<6} {ok}/{runs} = {ok / runs:.0%} 95% CI [{ci.low:.0%}, {ci.high:.0%}]")
reliability, confidence = 0.90, 0.95
n = math.ceil(math.log(1 - confidence) / math.log(reliability))
print(f"to show >= {reliability:.0%} success with {confidence:.0%} confidence and no failures: {n} runs in a row")
SITL 48/50 = 96% 95% CI [86%, 100%]
HITL 19/20 = 95% 95% CI [75%, 100%]
field 11/12 = 92% 95% CI [62%, 100%]
to show >= 90% success with 95% confidence and no failures: 29 runs in a row
ภาคสนามสำเร็จ 11 จาก 12 ครั้ง (92%) ฟังดูดี แต่ช่วงความเชื่อมั่นกว้างตั้งแต่ประมาณ 62% ถ้าต้องการแสดงว่าอัตราสำเร็จไม่ต่ำกว่า 90% ด้วยความเชื่อมั่น 95% ต้องสำเร็จติดต่อกันโดยไม่ล้มเลย 29 ครั้ง ตัวเลขนี้ช่วยวางแผนจำนวนเที่ยวบินทดสอบ และบอกว่าข้อสรุปแบบใดยังพูดไม่ได้
Run-time assurance
AI และตัววางแผนเส้นทางซับซ้อนเกินกว่าจะพิสูจน์ได้ว่าปลอดภัยในทุกสถานการณ์ แนวทาง run-time assurance (RTA) ตามมาตรฐาน ASTM F3269-21 จึงให้มี ตัวเฝ้าระวัง (monitor) ที่เรียบง่ายและตรวจสอบได้ คอยดูว่าระบบยังอยู่ในขอบเขตปลอดภัย ถ้าใกล้จะหลุด ให้สลับไปใช้ ตัวควบคุมปลอดภัย เช่น เบรก ลอยตัวค้าง หรือบินกลับ
ตัวอย่างที่ 2 ตัวเฝ้าระวังก่อนถึง geofence
ตัวควบคุมซับซ้อนเร่งโดรนไปทาง geofence ที่ 100 m ตัวเฝ้าระวังเผื่อระยะ 5 m และคิดระยะหยุดด้วยเวลาหน่วง 0.3 s และหน่วง 2.5 m/s²
fence, margin, latency, brake, dt = 100.0, 5.0, 0.3, 2.5, 0.1
x, v, t, mode = 80.0, 4.0, 0.0, "complex"
while t < 10:
stop = v * latency + v * v / (2 * brake)
if mode == "complex" and x + stop >= fence - margin:
mode = "safe"
print(f"switch to safe controller at t = {t:.1f} s, x = {x:.1f} m, v = {v:.1f} m/s")
v = min(v + 0.5 * dt, 8.0) if mode == "complex" else max(v - brake * dt, 0.0)
x += v * dt
t = round(t + dt, 1)
if mode == "safe" and v == 0:
break
print(f"stopped at x = {x:.1f} m, {fence - x:.1f} m before the fence")
switch to safe controller at t = 2.0 s, x = 89.0 m, v = 5.0 m/s
stopped at x = 93.8 m, 6.2 m before the fence
ตัวเฝ้าระวังไม่ต้องรู้ว่าตัวควบคุมซับซ้อนคิดอะไร รู้เพียงว่าถ้าไปต่อจะหยุดไม่ทัน จึงตรวจสอบได้ง่ายกว่าตัว AI มาก ระบบจริงควรให้ตัวควบคุมการบินถือ geofence ไว้อีกชั้นหนึ่ง เผื่อคอมพิวเตอร์บนลำทั้งเครื่องล่ม
ก่อนบินจริง
- กฎหมาย การบินนอกระยะสายตา (BVLOS) ในไทยมีแนวปฏิบัติของ กพท. CAAT-GM-UAS-PDRA101 (พ.ค. 2568) ซึ่งกำหนดการประเมินความเสี่ยงตามเงื่อนไขที่กำหนดไว้ล่วงหน้า คู่มือปฏิบัติการ การฝึกอบรม และแผนเผชิญเหตุ ต้องตรวจฉบับล่าสุดก่อนยื่นขอทุกครั้ง
- ขั้นตอนปฏิบัติการ ตาม ISO 21384-3 และคู่มือปฏิบัติการของหน่วยงาน
- ระบบที่ใช้ ML EASA วางแนวทางไว้ใน AI Concept Paper Issue 2 (2024) ครอบคลุมการรับรองการใช้ ML ระดับ 1 และ 2 เป็นกรอบอ้างอิงที่ดีสำหรับการเขียนหลักฐานความปลอดภัย
- นักบินพร้อมรับช่วงเสมอ ในทุกขั้นที่บินจริง พร้อมสวิตช์เปลี่ยนโหมดหรือตัดการทำงานที่ทดสอบแล้ว
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ภารกิจสำรวจอัตโนมัติครบวงจร
- รวมงานจากโมดูล 1–4 เป็นภารกิจเดียว: ขึ้นบิน บินสำรวจตามเส้นทาง หลบสิ่งกีดขวางด้วยข้อมูลจากกล้องและตัววัดระยะ แล้วกลับลงจอด
- เขียนแผนทดสอบห้าขั้นพร้อมเกณฑ์ผ่านที่วัดได้ ก่อน ทดสอบ และรายการกรณีผิดปกติที่ต้องทดสอบ
- ทดสอบใน SITL อย่างน้อย 30 รอบด้วยลมและตำแหน่งสิ่งกีดขวางสุ่ม เพิ่มตัวเฝ้าระวังแบบตัวอย่างที่ 2 และทดสอบกรณีคอมพิวเตอร์บนลำค้าง
- ทดสอบในกรงหรือพื้นที่ควบคุมภายใต้การควบคุมของอาจารย์ มีนักบินพร้อมรับช่วง
- รายงานอัตราสำเร็จพร้อมช่วงความเชื่อมั่นทุกขั้น เหตุที่ล้มและการแก้ไข และข้อสรุปว่าพร้อมขั้นต่อไปหรือไม่
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ข้ามขั้นจาก SITL ไปภาคสนาม โดยไม่ผ่าน HITL หรือพื้นที่ควบคุม
- ทดสอบแต่กรณีปกติ ไม่ทดสอบ failsafe
- ตั้งเกณฑ์ผ่านหลังเห็นผล
- รายงานอัตราสำเร็จโดยไม่มีช่วงความเชื่อมั่น จากรอบทดสอบไม่กี่รอบ
- ให้ตัวเฝ้าระวังซับซ้อนเท่าตัวควบคุม จนตรวจสอบไม่ได้
สรุป
- ทดสอบเป็นบันได SITL → HITL → พื้นที่ควบคุม → ภาคสนามเล็ก → ภารกิจจริง และทดสอบกรณีผิดปกติทุกขั้น
- อัตราสำเร็จต้องมีช่วงความเชื่อมั่น การแสดงว่าสำเร็จไม่ต่ำกว่า 90% ที่ความเชื่อมั่น 95% ต้องสำเร็จติดกัน 29 ครั้ง
- Run-time assurance ใช้ตัวเฝ้าระวังที่เรียบง่ายสลับไปตัวควบคุมปลอดภัยก่อนหลุดขอบเขต
- ก่อนบินจริงต้องตรวจกฎหมาย คู่มือปฏิบัติการ และมีนักบินพร้อมรับช่วงเสมอ
แบบฝึกตรวจความเข้าใจ
- ขั้นใดทดสอบ firmware จริงบนบอร์ดจริงกับโลกจำลอง
- ต้องการแสดงว่าอัตราสำเร็จไม่ต่ำกว่า 95% ด้วยความเชื่อมั่น 95% ต้องสำเร็จติดกันกี่ครั้ง
- โดรนอยู่ที่ 90 m ความเร็ว 5 m/s เวลาหน่วง 0.2 s หน่วง 2.5 m/s² fence 100 m ระยะเผื่อ 3 m ตัวเฝ้าระวังควรสลับหรือยัง
- ทำไมตัวเฝ้าระวังใน run-time assurance จึงควรเรียบง่าย
- แนวปฏิบัติของ กพท. ฉบับใดเกี่ยวกับการบินนอกระยะสายตาด้วยการประเมินความเสี่ยงที่กำหนดล่วงหน้า
เฉลย
- HITL
- ครั้ง
- ระยะหยุด m จะหยุดที่ 96 m ยังไม่ถึงขอบ m จึงยังไม่ต้องสลับ แต่เหลือเพียง 1 m
- เพื่อให้ตรวจสอบและพิสูจน์ความถูกต้องได้ ต่างจากตัวควบคุมซับซ้อน
- CAAT-GM-UAS-PDRA101
สรุปสูตรสำคัญ
| จำนวนรอบที่ต้องสำเร็จติดกัน | |
| ระยะหยุดที่ใช้ในตัวเฝ้าระวัง |
แหล่งอ้างอิงหลัก
- PX4 Autopilot. Gazebo simulation. PX4 user guide (main). link
- PX4 Autopilot. Hardware in the loop simulation (HITL). PX4 user guide (main). link
- PX4 Autopilot. Safety configuration (failsafes). PX4 user guide (main). link
- ArduPilot Dev Team. SITL simulator (software in the loop). link
- ASTM International. (2021). Standard practice for methods to safely bound behavior of aircraft systems containing complex functions using run-time assurance (ASTM F3269-21). link
- European Union Aviation Safety Agency. (2024). EASA artificial intelligence concept paper issue 2: Guidance for Level 1 & 2 machine learning applications. link
- สำนักงานการบินพลเรือนแห่งประเทศไทย. (2568). แนวปฏิบัติในการขอปฏิบัติการบินอากาศยานซึ่งไม่มีนักบินโดยใช้การประเมินความเสี่ยงที่เป็นไปตามเงื่อนไขที่กำหนดสำหรับการบินเกินกว่าระยะสายตา (CAAT-GM-UAS-PDRA101 ปรับปรุงครั้งที่ 00). link
- International Organization for Standardization. (2023). Unmanned aircraft systems — Part 3: Operational procedures (ISO 21384-3:2023). link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
พัฒนาระบบจำลองและเชื่อม SITL
PX4 SITL + Gazebo
MAVSDK
เลือกและเปรียบเทียบ Drone Simulator
การรักษาเส้นทางเมื่อมีลมจำลอง
หยุดและต่อ link จำลอง
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ
หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม