โมดูล 3/5 · สัปดาห์ 7–9 · 27 ชม.

GCS และการสื่อสาร

UAT 301 เทคโนโลยีระบบอากาศยานไร้คนขับ

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

บทเรียน

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

  1. อธิบายหน้าที่และสถาปัตยกรรมของสถานีควบคุมภาคพื้น (GCS) และลิงก์ C2 กับลิงก์ payload
  2. อธิบายระดับการทำงานร่วมกันของ GCS ตาม STANAG 4586
  3. อ่านไฟล์ภารกิจ .plan ของ QGroundControl แล้วตรวจระยะทาง เวลา และความสูงด้วยโปรแกรม
  4. คำนวณขอบฟ้าวิทยุและความสูงที่ต้องใช้เพื่อรักษาแนวสายตาวิทยุ

ความรู้พื้นฐานที่ควรมี: UAT 301 โมดูล 1–2 · UAT 207 (ระบบสื่อสารและเครือข่ายข้อมูล)

ทำไมต้องรู้

นักบินไม่ได้นั่งในอากาศยาน ทุกอย่างที่รู้และสั่งผ่าน สถานีควบคุมภาคพื้น (ground control station, GCS) และลิงก์วิทยุ ถ้า GCS แสดงข้อมูลผิดหรือวางแผนภารกิจพลาด โดรนที่สมบูรณ์ก็บินผิดได้ UAT 207 เรียนคลื่นวิทยุ MAVLink และ failsafe ไปแล้ว โมดูลนี้มองในระดับระบบ: GCS ประกอบด้วยอะไร ตรวจแผนภารกิจอย่างไรก่อนอัปโหลด และลิงก์ไปได้ไกลแค่ไหน

สถาปัตยกรรม GCS

GCS มีหน้าที่หลัก คือ วางแผนภารกิจ สั่งการและเฝ้าดูอากาศยานผ่าน ลิงก์ C2 (command and control) แสดงและบันทึกข้อมูลจาก payload ผ่าน ลิงก์ payload และส่งต่อข้อมูลให้ผู้ใช้ (Fahlstrom และคณะ) ลิงก์ C2 ต้องการอัตราข้อมูลต่ำแต่ต้องน่าเชื่อถือสูง ส่วนลิงก์วิดีโอต้องการอัตราข้อมูลสูงแต่ทนการสูญหายบางส่วนได้ ระบบขนาดเล็กอาจรวมสองลิงก์ในวิทยุเดียว แต่ต้องจัดลำดับความสำคัญให้ข้อมูล C2 ก่อนเสมอ

กล่องอากาศยานและ payload ทางซ้าย ลูกศรไปลิงก์ C2 telemetry ด้านบนและลิงก์ payload วิดีโอด้านล่าง ลิงก์เชื่อมเข้ากรอบ GCS ซึ่งมีกล่องวางแผนควบคุมและกล่องแสดงผลบันทึก มีลูกศรคำสั่งกลับจากวางแผนไปลิงก์ C2 และลูกศรจากแสดงผลไปผู้ใช้ข้อมูลทางขวา
ภาพที่ 1 สถาปัตยกรรม GCS และลิงก์

มาตรฐาน NATO STANAG 4586 กำหนดส่วนต่อประสานมาตรฐานระหว่าง GCS กับอากาศยานต่างผู้ผลิต และแบ่ง ระดับการทำงานร่วมกัน (level of interoperability, LOI) เป็น 5 ระดับ (Serrano, NATO STO): ระดับ 1 รับหรือส่งข้อมูล payload และ metadata ทางอ้อม ระดับ 2 รับหรือส่งโดยตรงแต่ไม่ควบคุมอากาศยาน ระดับ 3 ควบคุมและเฝ้าดู payload ระดับ 4 ควบคุมและเฝ้าดูอากาศยานยกเว้นการขึ้นและลง และระดับ 5 ควบคุมอากาศยานรวมถึงการขึ้นและลง แนวคิดนี้ใช้ได้กับระบบพลเรือนเช่นกัน: ก่อนซื้อ ให้ถามว่า GCS ของระบบใช้โพรโทคอลเปิด เช่น MAVLink ที่ QGroundControl อ่านได้ หรือผูกกับซอฟต์แวร์ของผู้ผลิตรายเดียว

ตรวจแผนภารกิจก่อนอัปโหลด

QGroundControl บันทึกภารกิจเป็นไฟล์ .plan รูปแบบ JSON ภายในมี mission.items แต่ละรายการมี command ตามรหัสคำสั่ง MAVLink เช่น 16 คือบินไปจุดเส้นทาง (MAV_CMD_NAV_WAYPOINT) 22 คือขึ้นบิน (MAV_CMD_NAV_TAKEOFF) และ 20 คือกลับจุดขึ้นบิน (MAV_CMD_NAV_RETURN_TO_LAUNCH) และ params เจ็ดค่าซึ่งสามค่าท้ายคือละติจูด ลองจิจูด และความสูง หน่วยความรู้เรื่อง QGroundControl ของคลังความรู้โดรนสาธิตการต่อ SITL วางจุดเส้นทาง และส่งออกไฟล์ภารกิจ

ตัวอย่างที่ 1 ตรวจไฟล์ .plan ด้วยโปรแกรม

ภารกิจสำรวจน้ำท่วมของ VTOL ที่ความเร็ว 16 m/s (พิกัดสมมติ) โปรแกรมคำนวณระยะแต่ละช่วง เวลาบิน ระยะไกลสุดจากจุดขึ้นบิน และตรวจความสูงเทียบเพดาน 90 m ที่ใช้ในการบินทั่วไปตามกฎ กพท.

import math

plan = {"fileType": "Plan", "version": 1, "groundStation": "QGroundControl",
        "mission": {"version": 2, "cruiseSpeed": 16, "plannedHomePosition": [14.0340, 100.6120, 5.0],
                    "items": [
                        {"type": "SimpleItem", "command": 22, "frame": 3, "params": [0, 0, 0, None, 14.0340, 100.6120, 40]},
                        {"type": "SimpleItem", "command": 16, "frame": 3, "params": [0, 0, 0, None, 14.0450, 100.6200, 90]},
                        {"type": "SimpleItem", "command": 16, "frame": 3, "params": [0, 0, 0, None, 14.0450, 100.6400, 90]},
                        {"type": "SimpleItem", "command": 16, "frame": 3, "params": [0, 0, 0, None, 14.0410, 100.6400, 90]},
                        {"type": "SimpleItem", "command": 16, "frame": 3, "params": [0, 0, 0, None, 14.0410, 100.6200, 120]},
                        {"type": "SimpleItem", "command": 20, "frame": 2, "params": [0, 0, 0, 0, 0, 0, 0]},
                    ]}}
MAX_ALT = 90                                   # m เหนือจุดขึ้นบิน (frame 3)

def haversine(lat1, lon1, lat2, lon2, r=6_371_000):
    p1, p2 = math.radians(lat1), math.radians(lat2)
    dp, dl = p2 - p1, math.radians(lon2 - lon1)
    h = math.sin(dp / 2) ** 2 + math.cos(p1) * math.cos(p2) * math.sin(dl / 2) ** 2
    return 2 * r * math.asin(math.sqrt(h))

m = plan["mission"]
home = m["plannedHomePosition"][:2]
points, problems = [home], []
for i, it in enumerate(m["items"], 1):
    if it["command"] in (16, 22):
        lat, lon, alt = it["params"][4:7]
        points.append([lat, lon])
        if alt > MAX_ALT:
            problems.append(f"item {i}: altitude {alt} m > {MAX_ALT} m")
if m["items"][-1]["command"] != 20:
    problems.append("mission does not end with RETURN_TO_LAUNCH")
points.append(home)
legs = [haversine(*points[k], *points[k + 1]) for k in range(len(points) - 1)]
far = max(haversine(*home, *p) for p in points)
print("legs (m):", [round(x) for x in legs])
print(f"total {sum(legs) / 1000:.2f} km, {sum(legs) / m['cruiseSpeed'] / 60:.1f} min at {m['cruiseSpeed']} m/s, farthest {far / 1000:.2f} km from home")
print("problems:", problems or "none")
legs (m): [0, 1497, 2157, 445, 2157, 1162]
total 7.42 km, 7.7 min at 16 m/s, farthest 3.26 km from home
problems: ['item 5: altitude 120 m > 90 m']

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

ลิงก์ไปได้ไกลแค่ไหน

นอกจากกำลังส่งและความไวของเครื่องรับ (link budget ใน UAT 207) ลิงก์ในย่าน VHF ขึ้นไปยังถูกจำกัดด้วยความโค้งของโลก คลื่นวิทยุหักเหในบรรยากาศเล็กน้อย จึงคิดเหมือนโลกมีรัศมีใหญ่ขึ้น เท่า (ITU-R P.834) ขอบฟ้าวิทยุระหว่างเสาอากาศสูง และ เมตร ประมาณ km ในทางปฏิบัติ ต้นไม้ อาคาร และภูมิประเทศมักบังก่อนถึงขอบฟ้า และต้องเว้นเขต Fresnel ให้โล่งด้วย

ตัวอย่างที่ 2 ขอบฟ้าวิทยุและความสูงขั้นต่ำ

import math

def radio_horizon_km(h1, h2):
    return 4.12 * (math.sqrt(h1) + math.sqrt(h2))

def min_drone_alt(d_km, h_gcs):
    x = d_km / 4.12 - math.sqrt(h_gcs)
    return max(0.0, x) ** 2

print(f"GCS 2 m, drone 90 m: horizon {radio_horizon_km(2, 90):.1f} km")
print(f"GCS 10 m mast, drone 90 m: horizon {radio_horizon_km(10, 90):.1f} km")
for d in (5, 20, 40):
    print(f"to keep radio line of sight at {d:>2} km with a 2 m antenna the drone must be above {min_drone_alt(d, 2):.1f} m")
GCS 2 m, drone 90 m: horizon 44.9 km
GCS 10 m mast, drone 90 m: horizon 52.1 km
to keep radio line of sight at  5 km with a 2 m antenna the drone must be above 0.0 m
to keep radio line of sight at 20 km with a 2 m antenna the drone must be above 11.8 m
to keep radio line of sight at 40 km with a 2 m antenna the drone must be above 68.8 m

พื้นที่ทำแผนที่ของกรณีนี้อยู่ห่างไม่ถึง 4 km ขอบฟ้าวิทยุจึงไม่เป็นข้อจำกัด แต่ถ้าต้องค้นหาผู้ประสบภัยไกล 40 km ต้องบินสูงเกือบ 70 m เพียงเพื่อพ้นความโค้งของโลก ยังไม่นับสิ่งกีดขวาง ซึ่งเป็นการบินนอกระยะสายตาที่ต้องได้รับอนุญาตเฉพาะ

ผิวโลกโค้งสีเขียว เสาอากาศ GCS สูง 2 เมตรทางซ้าย โดรนที่ความสูง 90 เมตรทางขวา เส้นประสีทองเชื่อมทั้งสองผ่านเหนือส่วนโค้ง ข้อความขอบฟ้าวิทยุประมาณ 45 กิโลเมตร
ภาพที่ 2 ขอบฟ้าวิทยุกับความสูงของเสาอากาศ

ปฏิบัติการประจำโมดูล

ปฏิบัติการ: วางแผนและตรวจภารกิจใน SITL

  1. เปิด SITL ของ ArduPilot หรือ PX4 แล้วต่อ QGroundControl ตรวจว่า telemetry ครบและเวลาในระบบถูกต้อง
  2. วางภารกิจสำรวจพื้นที่ในวิทยาเขตด้วย Survey pattern แล้วบันทึกเป็นไฟล์ .plan
  3. แก้ตัวอย่างที่ 1 ให้อ่านไฟล์จริงด้วย json.load ตรวจความสูง ระยะไกลสุด และคำสั่งสุดท้าย
  4. จำลองการบินใน SITL เทียบเวลาจริงกับเวลาที่โปรแกรมคำนวณ แล้วอธิบายส่วนต่าง
  5. คำนวณขอบฟ้าวิทยุของจุดตั้ง GCS ที่เลือก และระบุสิ่งกีดขวางที่อาจบังลิงก์

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

ระวัง

  • อัปโหลดภารกิจโดยไม่ตรวจความสูงและคำสั่งสุดท้าย
  • สับสน frame ของความสูง ระหว่างเหนือจุดขึ้นบินกับเหนือระดับทะเล
  • ให้ลิงก์วิดีโอแย่งแบนด์วิดท์ของ C2
  • คิดว่าลิงก์ไปได้ถึงขอบฟ้าวิทยุ โดยไม่ดูสิ่งกีดขวาง
  • ผูกระบบกับซอฟต์แวร์ GCS ปิด โดยไม่ประเมินผลระยะยาว

สรุป

  • GCS ทำหน้าที่วางแผน สั่งการ แสดงผล บันทึก และส่งต่อข้อมูล ผ่านลิงก์ C2 และลิงก์ payload ที่มีความต้องการต่างกัน
  • STANAG 4586 แบ่งระดับการทำงานร่วมกันของ GCS เป็น 5 ระดับ และส่งเสริมส่วนต่อประสานมาตรฐาน
  • ไฟล์ .plan เป็น JSON ที่ตรวจด้วยโปรแกรมได้ก่อนอัปโหลดทุกครั้ง
  • ขอบฟ้าวิทยุ ≈ 4.12(√h₁ + √h₂) km แต่สิ่งกีดขวางมักจำกัดก่อน

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

  1. ลิงก์ C2 กับลิงก์วิดีโอต้องการคุณสมบัติต่างกันอย่างไร
  2. ในไฟล์ .plan คำสั่ง 16 และ 20 หมายถึงอะไร
  3. เสาอากาศ 4 m และโดรนที่ 100 m ขอบฟ้าวิทยุประมาณเท่าใด
  4. ทำไมต้องตรวจไฟล์ภารกิจด้วยโปรแกรม แม้ดูบนแผนที่แล้ว
  5. ถ้าโดรนต้องบินไกล 30 km จาก GCS ที่เสาอากาศสูง 2 m ต้องบินสูงอย่างน้อยเท่าใดเพื่อพ้นความโค้งของโลก
เฉลย
  1. C2 อัตราข้อมูลต่ำแต่ต้องน่าเชื่อถือสูง วิดีโออัตราข้อมูลสูงแต่ทนการสูญหายได้บางส่วน
  2. 16 บินไปจุดเส้นทาง 20 กลับจุดขึ้นบิน
  3. km
  4. ความสูงเกินเพดาน frame ผิด หรือคำสั่งสุดท้ายหาย มองข้ามได้ง่ายบนหน้าจอ
  5. m

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

ระยะวงกลมใหญ่ (haversine)
ขอบฟ้าวิทยุ (k = 4/3)

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

  1. QGroundControl. QGroundControl user guide. link
  2. QGroundControl Dev Team. Plan file format. QGroundControl developer guide. link
  3. MAVLink Development Team. MAVLink common message set (common.xml). link
  4. Serrano, D. (2015). Key initiatives for interoperability through standardization: Applicability to small unmanned vehicles (STO-EN-SCI-271). NATO Science and Technology Organization. link
  5. International Telecommunication Union. (2017). Effects of tropospheric refraction on radiowave propagation (Recommendation ITU-R P.834-9). link
  6. International Telecommunication Union. (1994). Definitions of terms relating to propagation in non-ionized media (Recommendation ITU-R P.310-9). link
  7. Fahlstrom, P. G., Gleason, T. J., & Sadraey, M. H. (2022). Introduction to UAV systems (5th ed.). Wiley. link
  8. สำนักงานการบินพลเรือนแห่งประเทศไทย. (2569). ประกาศ กพท. เรื่อง หลักเกณฑ์และวิธีการในการอนุญาตให้ผู้บังคับหรือปล่อยอากาศยานซึ่งไม่มีนักบิน ประเภทอากาศยานที่ควบคุมการบินจากภายนอก ที่มีน้ำหนักไม่เกิน 25 กิโลกรัม ปฏิบัติแตกต่างไปจากเงื่อนไขที่กำหนด พ.ศ. 2569 (มีผล 17 พฤษภาคม 2569). link

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

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

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

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

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

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

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

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