ทีม การตัดสินใจ และการทบทวน
UAT 304 การวางแผนภารกิจและการบินอัตโนมัติของระบบอากาศยานไร้คนขับ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- แบ่งบทบาทของทีมภารกิจและสื่อสารแบบทวนกลับ
- ใช้ PAVE และ 3P ประเมินความเสี่ยงก่อนและระหว่างภารกิจ โดยแยกแรงกดดันภายนอก
- เรียงเหตุการณ์จาก log หลายแหล่งที่นาฬิกาไม่ตรงกัน ให้เป็นเส้นเวลาเดียว
- ทบทวนหลังงานโดยแยกเหตุการณ์จากข้อสรุป และติดตามการแก้ไข
ทำไมต้องรู้
ภารกิจส่วนใหญ่ที่ผิดพลาดไม่ได้เริ่มจากเครื่อง แต่เริ่มจากทีมที่เข้าใจสถานการณ์ไม่ตรงกัน หรือยอมรับความเสี่ยงเพราะแรงกดดัน หน่วยความรู้เรื่องทำงานเป็นทีมและมองเห็นสถานการณ์ของคลังความรู้โดรนเน้นการแบ่งบทบาท สื่อสารทวนกลับ และจัดภาระงาน หน่วยความรู้เรื่องการตัดสินใจเมื่อแผนไม่เป็นไปตามคาดใช้ PAVE แยกความเสี่ยงจากแรงกดดัน และหน่วยความรู้เรื่องบันทึกและทบทวนหลังงานให้แยกเหตุการณ์จากข้อสรุป แล้วติดตามการแก้ไขจนมีหลักฐานปิด
บทบาทและการสื่อสาร
ทีมภารกิจขั้นต่ำมี นักบินผู้รับผิดชอบ (ตัดสินใจขั้นสุดท้ายเรื่องความปลอดภัย) ผู้ควบคุม payload หรือ GCS และ ผู้สังเกต (เฝ้าอากาศยานและสิ่งกีดขวาง) คำสั่งและข้อมูลสำคัญใช้ การสื่อสารทวนกลับ: ผู้รับพูดซ้ำสิ่งที่ได้ยิน ผู้ส่งยืนยัน เช่น “แบตเตอรี่เหลือ 30%” “รับทราบ 30% กลับจุดขึ้นบิน” ก่อนภารกิจต้องตกลงคำเรียกขานสำหรับเหตุฉุกเฉินและใครมีสิทธิ์สั่งยุติภารกิจ
PAVE และ 3P
คู่มือ PHAK (FAA-H-8083-25C) ของ FAA บทที่ 2 เรื่องการตัดสินใจทางการบิน เสนอ PAVE เป็นรายการตรวจความเสี่ยงสี่ด้าน: Pilot (นักบิน เช่น ความพร้อมตาม IMSAFE) Aircraft (อากาศยาน) enVironment (สภาพแวดล้อม) และ External pressures (แรงกดดันภายนอก) และเสนอแบบจำลอง 3P: รับรู้สถานการณ์ (Perceive) ประเมินผลต่อความปลอดภัย (Process) และลงมือทำสิ่งที่ดีที่สุด (Perform) ทำซ้ำตลอดภารกิจ แรงกดดันภายนอก เช่น ผู้ว่าจ้างรอ หรือกลัวเสียหน้า เป็นด้านที่อันตรายที่สุด เพราะทำให้คนยอมรับความเสี่ยงของอีกสามด้าน
ตัวอย่างที่ 1 แผ่นงาน PAVE ของทีม
ทีมให้คะแนนความเสี่ยงแต่ละข้อ 0–3 และตั้งเกณฑ์ไว้ล่วงหน้า (วิธีให้คะแนนเป็นของทีม ไม่ใช่ของ FAA)
pave = {
"Pilot": {"slept < 6 h": 2, "first flight at this site": 1},
"Aircraft": {"motor replaced yesterday, one test flight": 2},
"enVironment": {"gusts near limit": 2, "people near take-off point": 1},
"External pressures": {"mayor wants images by 10:00": 3, "media present": 1},
}
LIMIT_TOTAL, LIMIT_ITEM = 8, 3
total = sum(v for items in pave.values() for v in items.values())
for area, items in pave.items():
print(f"{area:<19} {sum(items.values())} {', '.join(items)}")
worst = [(a, k) for a, items in pave.items() for k, v in items.items() if v >= LIMIT_ITEM]
print(f"total {total} (limit {LIMIT_TOTAL}); items at maximum: {worst}")
if total > LIMIT_TOTAL or worst:
print("do not start as planned: remove or reduce risks, or postpone")
Pilot 3 slept < 6 h, first flight at this site
Aircraft 2 motor replaced yesterday, one test flight
enVironment 3 gusts near limit, people near take-off point
External pressures 4 mayor wants images by 10:00, media present
total 12 (limit 8); items at maximum: [('External pressures', 'mayor wants images by 10:00')]
do not start as planned: remove or reduce risks, or postpone
คะแนนรวมเกินเกณฑ์ และข้อที่หนักที่สุดคือแรงกดดันภายนอก การตอบสนองที่ดีไม่ใช่ “ระวังให้มากขึ้น” แต่คือลดความเสี่ยงที่ลดได้จริง เช่น ให้นักบินที่พักพอเป็นผู้บินแทน กั้นพื้นที่ขึ้นลง บินทดสอบอากาศยานที่เพิ่งเปลี่ยนมอเตอร์ก่อน และแจ้งผู้ว่าจ้างล่วงหน้าว่าภาพอาจส่งช้ากว่าที่ขอ
เรียงเหตุการณ์จากหลาย log
การทบทวนหลังงานต้องการเส้นเวลาเดียว แต่ log ของตัวควบคุมการบิน GCS และบันทึกของทีมใช้นาฬิกาต่างกัน log ของ ArduPilot บันทึกเวลา GPS เป็นสัปดาห์ (GWk นับจาก 5 มกราคม 1980) และมิลลิวินาทีในสัปดาห์ (GMS) เวลา GPS ไม่นับวินาทีอธิกสุรทิน ขณะที่ UTC นับ ปัจจุบันเวลา GPS เร็วกว่า UTC 18 วินาที (คำนวณจาก Bulletin C ของ IERS ซึ่งระบุว่า UTC ต่างจาก TAI 37 วินาทีตั้งแต่ปี 2017 และ TAI ต่างจากเวลา GPS 19 วินาทีคงที่) นาฬิกาของคอมพิวเตอร์และโทรศัพท์อาจคลาดได้อีกหลายวินาทีถึงหลายนาที
ตัวอย่างที่ 2 รวมสามแหล่งเป็นเส้นเวลาเดียว
ใช้เหตุการณ์ที่ทุกแหล่งบันทึกร่วมกัน คือ “ติดเครื่อง (arm)” เป็นจุดเทียบ แล้วเลื่อนเวลาของแต่ละแหล่ง (ข้อมูลจำลอง)
from datetime import datetime, timedelta
GPS_EPOCH, LEAP, TZ = datetime(1980, 1, 6), 18, 7
fc_arm = (2440, 354718000) # GWk, GMS ของเหตุการณ์ arm ใน log ตัวควบคุมการบิน
arm_utc = GPS_EPOCH + timedelta(weeks=fc_arm[0], milliseconds=fc_arm[1]) - timedelta(seconds=LEAP)
arm_local = arm_utc + timedelta(hours=TZ)
print("arm (from FC log):", arm_local.strftime("%Y-%m-%d %H:%M:%S"), "local")
sources = { # แหล่ง: (เวลาที่แหล่งนั้นบันทึก arm, [(เวลาในแหล่งนั้น, เหตุการณ์)])
"GCS laptop": ("09:32:05", [("09:36:50", "video link freeze reported"), ("09:38:12", "RTL commanded")]),
"pilot phone": ("09:31:02", [("09:35:40", "gust felt at take-off point"), ("09:37:00", "decision to abort")]),
}
timeline = [(arm_local, "FC", "arm")]
for name, (arm_txt, events) in sources.items():
arm_src = datetime.combine(arm_local.date(), datetime.strptime(arm_txt, "%H:%M:%S").time())
offset = arm_local - arm_src
print(f"{name}: clock offset {offset.total_seconds():+.0f} s")
for txt, ev in events:
t = datetime.combine(arm_local.date(), datetime.strptime(txt, "%H:%M:%S").time()) + offset
timeline.append((t, name, ev))
for t, src, ev in sorted(timeline):
print(t.strftime("%H:%M:%S"), f"{src:<12}", ev)
arm (from FC log): 2026-10-15 09:31:40 local
GCS laptop: clock offset -25 s
pilot phone: clock offset +38 s
09:31:40 FC arm
09:36:18 pilot phone gust felt at take-off point
09:36:25 GCS laptop video link freeze reported
09:37:38 pilot phone decision to abort
09:37:47 GCS laptop RTL commanded
เมื่อเรียงด้วยเวลาที่แก้แล้ว ลำดับจริงคือลมกระโชก ภาพค้าง ตัดสินใจยุติ แล้วสั่ง RTL ตามมาในไม่กี่วินาที ช่วงที่ช้าคือการตัดสินใจหลังภาพค้างซึ่งกินเวลากว่าหนึ่งนาที ถ้าใช้เวลาดิบ จะดูเหมือนทีมตัดสินใจเร็วแต่ผู้ควบคุม GCS สั่ง RTL ช้า ซึ่งทำให้สรุปบทเรียนผิดคน
ทบทวนหลังงาน
การทบทวนที่ได้ผลแยกสามส่วน: เกิดอะไรขึ้น (ตามเส้นเวลาที่มีหลักฐาน) ทำไมจึงเกิด (ปัจจัยของคน เครื่อง สภาพแวดล้อม และองค์กร) และ จะแก้อะไร (การกระทำ ผู้รับผิดชอบ กำหนดเสร็จ และหลักฐานที่ใช้ปิด) เน้นระบบมากกว่าการหาคนผิด เพื่อให้ทีมรายงานเหตุการณ์อย่างเปิดเผยครั้งต่อไป
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ภารกิจจำลองพร้อมการทบทวน
- แบ่งบทบาทในทีม ซ้อมคำเรียกขานและการสื่อสารทวนกลับ
- ทำแผ่นงาน PAVE ก่อนภารกิจด้วยตัวอย่างที่ 1 และบันทึกการลดความเสี่ยง
- อาจารย์แทรกสถานการณ์กดดันระหว่างภารกิจจำลอง ทีมใช้ 3P ตัดสินใจและบันทึกเหตุผล
- รวม log ของ SITL, GCS และบันทึกของทีมเป็นเส้นเวลาเดียวด้วยตัวอย่างที่ 2
- ทบทวนหลังงาน เขียนรายการแก้ไขพร้อมผู้รับผิดชอบและหลักฐานที่ใช้ปิด
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ไม่กำหนดว่าใครมีสิทธิ์สั่งยุติภารกิจ
- รับคำสั่งโดยไม่ทวนกลับ
- มองข้ามแรงกดดันภายนอก เพราะไม่ใช่เรื่องเทคนิค
- เรียงเหตุการณ์ด้วยเวลาดิบของนาฬิกาต่างเครื่อง
- ทบทวนเพื่อหาคนผิด แทนการหาสาเหตุเชิงระบบ
สรุป
- ทีมต้องมีบทบาทชัด ผู้มีสิทธิ์ยุติภารกิจ และการสื่อสารทวนกลับ
- PAVE ตรวจสี่ด้าน นักบิน อากาศยาน สภาพแวดล้อม และแรงกดดันภายนอก ส่วน 3P ใช้ซ้ำตลอดภารกิจ
- เวลา GPS ใน log ของ ArduPilot แปลงเป็น UTC ได้โดยลบ 18 วินาที และใช้เป็นหลักเทียบนาฬิกาอื่น
- การทบทวนแยกเหตุการณ์ สาเหตุ และการแก้ไขที่มีหลักฐานปิด
แบบฝึกตรวจความเข้าใจ
- PAVE ย่อมาจากอะไร
- 3P ประกอบด้วยขั้นใด
- เวลา GPS 10:00:18 ตรงกับ UTC เวลาใด
- นาฬิกาโทรศัพท์บันทึก arm ที่ 09:31:02 แต่เวลาจริง 09:31:58 ต้องเลื่อนเวลาของโทรศัพท์เท่าใด
- ทำไมการทบทวนจึงไม่ควรเน้นหาคนผิด
เฉลย
- Pilot, Aircraft, enVironment, External pressures
- Perceive, Process, Perform
- 10:00:00 UTC
- บวก 56 วินาที
- คนจะไม่กล้ารายงานเหตุการณ์ ทำให้สาเหตุเชิงระบบไม่ถูกแก้
สรุปสูตรสำคัญ
| เวลา GPS จากสัปดาห์และมิลลิวินาที | |
| แปลงเป็น UTC (ตั้งแต่ 2017) |
แหล่งอ้างอิงหลัก
- Federal Aviation Administration. (2023). Pilot's handbook of aeronautical knowledge (FAA-H-8083-25C). link
- International Organization for Standardization. (2023). Unmanned aircraft systems — Part 3: Operational procedures (ISO 21384-3:2023). link
- ArduPilot Dev Team. Onboard message log messages. ArduPilot Copter documentation. link
- International Earth Rotation and Reference Systems Service. (2026). Bulletin C 72. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
ทำงานเป็นทีมและมองเห็นสถานการณ์
ตัดสินใจเมื่อแผนไม่เป็นไปตามคาด
แบบฝึก brief และตัดสินใจของทีม
บันทึก ส่งมอบ และทบทวนหลังงาน
แยกเหตุผิดปกติก่อนเลือกคำตอบ
ปฏิบัติการโดรนภาคสนาม
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz