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

บูรณาการระบบ

UAT 494 โครงงานเทคโนโลยีระบบอากาศยานไร้คนขับและระบบอัตโนมัติ 2

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

บทเรียน

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

  1. วางลำดับการบูรณาการจากล่างขึ้นบนและทดสอบทีละส่วนต่อ
  2. ควบคุม configuration ของซอฟต์แวร์ พารามิเตอร์ และฮาร์ดแวร์ ด้วย baseline และการขอเปลี่ยนแปลง
  3. เปรียบเทียบ configuration ระหว่างการทดลองเพื่อหาสาเหตุที่ผลเปลี่ยน
  4. ติดตามผลทดสอบส่วนต่อประสาน (interface) และการทดสอบซ้ำ

ความรู้พื้นฐานที่ควรมี: UAT 494 โมดูล 1 · UAT 493 โมดูล 4 (สถาปัตยกรรมและส่วนต่อประสาน)

ทำไมต้องรู้

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

ลำดับการบูรณาการ

คู่มือวิศวกรรมระบบของ NASA และมาตรฐาน ISO/IEC/IEEE 15288 อธิบายกระบวนการบูรณาการที่นำชิ้นส่วนมารวมเป็นระบบย่อยและระบบทีละระดับ โครงงานนี้ใช้การบูรณาการ จากล่างขึ้นบน: ทดสอบชิ้นส่วน รวมเป็นระบบบินกับระบบถ่ายภาพและตรวจจับ แล้วจึงรวมเป็นระบบครบพร้อม GCS และการรายงาน ส่วนต่อประสานทุกจุดควรบันทึกไว้ใน เอกสารควบคุมส่วนต่อประสาน (ICD) ซึ่ง NASA ให้ดูแลผ่านกระบวนการจัดการ configuration

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

ควบคุม configuration

Configuration คือชุดของรุ่นเฟิร์มแวร์ ซอฟต์แวร์ พารามิเตอร์ ฮาร์ดแวร์ และวิธีเชื่อมต่อ ที่ทำให้ผลทดลองหนึ่งตีความได้ บทฝึกเรื่องการควบคุมรุ่นและ configuration ของคลังความรู้โดรนเตือนว่าถ้าเปลี่ยนหลายอย่างพร้อมกัน จะบอกไม่ได้ว่าอะไรทำให้ผลเปลี่ยน ISO 10007 ให้แนวทางการจัดการ configuration ได้แก่ ระบุรายการที่ควบคุม กำหนด baseline ควบคุมการเปลี่ยนแปลงผ่านคำขอและการทบทวน และบันทึกสถานะ

ห้ากล่องเรียงจากซ้ายไปขวา คำขอเปลี่ยนแปลง ทบทวนผลกระทบ อนุมัติ ทดสอบซ้ำ และ baseline ใหม่ v1.3
ภาพที่ 2 การควบคุมการเปลี่ยนแปลง configuration

ตัวอย่างที่ 1 ทำไมภาพหายเพิ่มขึ้นหลังอัปเดต

การทดลองสองครั้ง ครั้งแรกภาพหาย 1 จาก 210 ภาพ ครั้งที่สองหาย 14 ภาพ เทียบ configuration ที่บันทึกไว้

run_a = {"firmware": "4.5.7", "companion image": "v1.2", "CAM_TRIGG_DIST": 15.0,
         "SERIAL2_BAUD": 921, "camera fw": "1.08", "SD card": "A32"}
run_b = {"firmware": "4.5.7", "companion image": "v1.3", "CAM_TRIGG_DIST": 15.0,
         "SERIAL2_BAUD": 57, "camera fw": "1.08", "SD card": "B64"}
missed = {"run_a": 1, "run_b": 14}

changes = {k: (run_a.get(k), run_b.get(k)) for k in run_a.keys() | run_b.keys() if run_a.get(k) != run_b.get(k)}
print(f"missed images {missed['run_a']} -> {missed['run_b']}")
for k, (a, b) in sorted(changes.items()):
    print(f"changed: {k:<16} {a} -> {b}")
print(f"{len(changes)} changes at once: cannot tell which caused it; revert and change one at a time")
missed images 1 -> 14
changed: SD card          A32 -> B64
changed: SERIAL2_BAUD     921 -> 57
changed: companion image  v1.2 -> v1.3
3 changes at once: cannot tell which caused it; revert and change one at a time

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

ทดสอบส่วนต่อประสาน

ตัวอย่างที่ 2 ตารางทดสอบส่วนต่อประสาน

ผลทดสอบแต่ละส่วนต่อประสานในรอบบูรณาการ (ค่าสมมติ) ส่วนที่ไม่ผ่านต้องแก้และทดสอบซ้ำ รวมถึงส่วนที่อาจได้รับผลกระทบ

tests = [   # (ส่วนต่อประสาน, ผลรอบแรก, ผลรอบแก้ไข)
    ("GCS <-> FC (MAVLink)", "pass", None),
    ("FC -> Companion (trigger)", "fail", "pass"),
    ("Companion -> Camera (USB)", "pass", None),
    ("FC -> Gimbal (PWM)", "pass", None),
    ("GNSS -> FC (UART)", "pass", None),
    ("Companion -> GCS (report)", "fail", "fail"),
    ("GCS -> Cloud (upload)", "pass", None),
]
first = sum(r == "pass" for _, r, _ in tests)
final = sum((r2 or r1) == "pass" for _, r1, r2 in tests)
print(f"first round {first}/{len(tests)} = {first / len(tests):.0%}, after fixes {final}/{len(tests)} = {final / len(tests):.0%}")
for name, r1, r2 in tests:
    if (r2 or r1) != "pass":
        print(f"open issue: {name} (still failing after fix)")
first round 5/7 = 71%, after fixes 6/7 = 86%
open issue: Companion -> GCS (report) (still failing after fix)

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

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

ปฏิบัติการ: บูรณาการทีละส่วน

  1. เขียน ICD สั้น ๆ ของทุกส่วนต่อประสาน (สัญญาณ รูปแบบข้อมูล อัตรา แรงดัน ขั้วต่อ)
  2. ตั้ง baseline v1.0 ของเฟิร์มแวร์ ซอฟต์แวร์ และพารามิเตอร์ เก็บในระบบควบคุมรุ่น
  3. บูรณาการตามลำดับในภาพที่ 1 ทดสอบทุกส่วนต่อประสานด้วยตารางแบบตัวอย่างที่ 2
  4. ทุกการเปลี่ยนแปลงผ่านคำขอ ทบทวน และทดสอบซ้ำ ใช้ตัวอย่างที่ 1 เทียบ configuration ทุกครั้งที่ผลเปลี่ยน
  5. บันทึกประเด็นค้างพร้อมผู้รับผิดชอบ

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

ระวัง

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

สรุป

  • บูรณาการจากล่างขึ้นบนและทดสอบทุกส่วนต่อประสาน บันทึกใน ICD
  • configuration ต้องมี baseline และเปลี่ยนผ่านคำขอกับการทบทวน ตาม ISO 10007
  • เทียบ configuration เพื่อหาสาเหตุเมื่อผลเปลี่ยน และเปลี่ยนทีละอย่าง
  • ประเด็นค้างต้องเปิดเผยพร้อมผู้รับผิดชอบ

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

  1. baseline คืออะไร
  2. เจ็ดส่วนต่อประสานผ่านห้าในรอบแรก อัตราผ่านเท่าใด
  3. ทำไมจึงไม่ควรอัปเดตหลายรายการพร้อมกัน
  4. ICD ควรมีข้อมูลอะไรบ้าง
  5. หลังแก้ส่วนต่อประสานหนึ่ง ต้องทดสอบซ้ำอะไรบ้าง
เฉลย
  1. ชุด configuration ที่ทบทวนและอนุมัติแล้ว ใช้เป็นจุดอ้างอิงของการเปลี่ยนแปลงถัดไป
  2. ถ้าผลเปลี่ยน จะบอกไม่ได้ว่ารายการใดเป็นสาเหตุ
  3. สัญญาณ รูปแบบข้อมูล อัตรา แรงดัน ขั้วต่อ และผู้รับผิดชอบแต่ละฝั่ง
  4. ส่วนต่อประสานนั้นและส่วนอื่นที่อาจได้รับผลกระทบจากการแก้

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

อัตราผ่านของการทดสอบส่วนต่อประสาน

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

  1. National Aeronautics and Space Administration. (2016). NASA systems engineering handbook (NASA/SP-2016-6105 Rev 2). link
  2. International Organization for Standardization. (2017). Quality management — Guidelines for configuration management (ISO 10007:2017). link
  3. International Organization for Standardization. (2023). Systems and software engineering — System life cycle processes (ISO/IEC/IEEE 15288:2023). link
  4. INCOSE. (2023). INCOSE systems engineering handbook: A guide for system life cycle processes and activities (5th ed.). Wiley. link

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

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

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

พัฒนาโครงงานเป็นทีม ประชุมที่ปรึกษา และนำเสนอความก้าวหน้า

หลักฐานการเรียนรู้: ผลงานตามจุดตรวจของโครงงาน

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

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

โดเมนความรู้: การติดตั้ง บำรุงรักษา และการทดสอบ