หุ่นยนต์กับโดรน
DRT 344 ระบบอัตโนมัติ หุ่นยนต์ และการควบคุมอัจฉริยะ
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- อธิบายแนวคิดหลักของ ROS 2 ได้แก่ node, topic, service, action และ QoS
- อธิบายการเชื่อม ROS 2 กับ PX4 ผ่าน uXRCE-DDS และการใช้ MAVROS
- แปลงพิกัดระหว่างกรอบ NED และ ENU
- คำนวณงบเวลาหน่วงของสายข้อมูลจากเซนเซอร์ถึงตัวควบคุมการบิน
- ออกแบบสถาปัตยกรรมบูรณาการโดรน หุ่นยนต์ และระบบอัตโนมัติ
ทำไมต้องรู้
โดรนที่ทำภารกิจซับซ้อน เช่น ตรวจจับวัตถุด้วย AI แล้วบินตามอัตโนมัติ มักแยกงานเป็นสองส่วน คือ flight controller ที่ดูแลการบินให้ปลอดภัย (PX4 หรือ ArduPilot) และ คอมพิวเตอร์ภารกิจ (companion computer) ที่รันงานหนัก เช่น AI แผนที่ และการวางแผน ซอฟต์แวร์กลางที่เชื่อมงานเหล่านี้เข้าด้วยกันและเชื่อมกับหุ่นยนต์ภาคพื้นได้คือ ROS 2 ส่วนการส่งข้อมูลขึ้นศูนย์ควบคุมหรือระบบอุตสาหกรรมใช้ MQTT หรือ OPC UA (โมดูล 1)
ROS 2 เปรียบได้กับระบบประสาทของหุ่นยนต์ แต่ละอวัยวะ (node) ส่งสัญญาณผ่านเส้นประสาท (topic) โดยไม่ต้องรู้ว่าใครเป็นผู้รับ ทำให้เพิ่มหรือเปลี่ยนอวัยวะได้โดยไม่ต้องรื้อทั้งระบบ
แนวคิดหลักของ ROS 2
| แนวคิด | ความหมาย | ตัวอย่างในงานโดรน |
|---|---|---|
| node | โปรแกรมหนึ่งหน่วยที่ทำงานเฉพาะ | node กล้อง node ตรวจจับวัตถุ node วางแผน |
| topic | ช่องส่งข้อมูลต่อเนื่องแบบ publish/subscribe | ภาพจากกล้อง ตำแหน่งโดรน |
| service | ถาม–ตอบครั้งเดียว | ขอให้เปลี่ยนโหมดการบิน |
| action | งานใช้เวลานาน มีสถานะระหว่างทางและยกเลิกได้ | บินไปยังตำแหน่งแล้วรายงานความคืบหน้า |
| QoS | นโยบายการส่ง เช่น เชื่อถือได้หรือเร็ว เก็บข้อความย้อนหลังกี่ข้อความ | ข้อมูลเซนเซอร์ใช้ QoS แบบ sensor data |
ROS 2 ออกรุ่นใหม่ทุกเดือนพฤษภาคม ณ วันที่ตรวจ (26 ก.ย. 2569) รุ่นที่ยังได้รับการดูแล ได้แก่ Humble Hawksbill (ถึง พ.ค. 2027) Jazzy Jalisco (ถึง พ.ค. 2029) Kilted Kaiju (ถึง ธ.ค. 2026) และ Lyrical Luth ที่ออกเมื่อ 22 พ.ค. 2026 (ถึง พ.ค. 2031) งานที่ต้องใช้ยาวควรเลือกรุ่นที่มีระยะดูแลยาว และตรึงรุ่นให้ตรงกับเอกสารของ flight stack
เชื่อม ROS 2 กับ flight controller
- PX4 ใช้ middleware uXRCE-DDS มี client ทำงานบน PX4 และ agent บนคอมพิวเตอร์ภารกิจ แลกข้อมูลสองทางผ่าน serial, UDP หรือ TCP ทำให้ topic ภายในของ PX4 ปรากฏเป็น topic ของ ROS 2 โดยตรง คู่มือ PX4 แนะนำ ROS 2 Jazzy บน Ubuntu 24.04 หรือ Humble บน Ubuntu 22.04
- MAVROS เป็นสะพานระหว่างโพรโทคอล MAVLink กับ ROS 2 ใช้ได้กับ flight controller ที่พูด MAVLink รองรับ ROS 2 ตั้งแต่ Humble ขึ้นไป
- ArduPilot มีเอกสารสำหรับเชื่อมกับ ROS 2 ของตนเอง ผู้ใช้ต้องอ่านวิธีที่ตรงกับรุ่นซอฟต์แวร์
กรอบพิกัดที่ต่างกัน
คู่มือ PX4 ระบุว่า PX4 ใช้กรอบโลกแบบ NED (x ชี้เหนือ y ชี้ตะวันออก z ชี้ลง) และกรอบลำตัว FRD (หน้า ขวา ลง) ส่วน ROS ใช้ ENU (x ชี้ตะวันออก y ชี้เหนือ z ชี้ขึ้น) และ FLU (หน้า ซ้าย ขึ้น) ตาม REP 105 node ที่คุยกับ PX4 จึงต้องแปลงกรอบทุกครั้ง ถ้าลืม โดรนอาจบินผิดทิศหรือดิ่งลงแทนที่จะไต่ขึ้น
ตัวอย่างที่ 1 แปลงตำแหน่งจาก NED เป็น ENU
PX4 รายงานตำแหน่งในกรอบ NED ว่า m หมายถึงเหนือ 10 m ตะวันออก 5 m และ สูง 3 m (เพราะ D เป็นลบ)
ในกรอบ ENU: m
ถ้า node ใน ROS 2 ต้องการสั่งให้โดรนไปที่ตำแหน่ง ENU แต่ส่งค่านี้ให้ PX4 ตรง ๆ โดยไม่แปลง PX4 จะอ่านเป็น N = 5, E = 10 และ D = 3 คือ ต่ำกว่าจุดขึ้นบิน 3 m ทั้งทิศแนวราบสลับกันและทิศแนวดิ่งกลับด้าน โดรนจะพยายามบินลงพื้น ความผิดพลาดแบบนี้พบบ่อยมาก จึงควรใช้ไลบรารีแปลงกรอบของ px4_ros_com และทดสอบใน SITL ก่อนเสมอ
งบเวลาหน่วง
ระบบที่ใช้ AI ตรวจจับแล้วสั่งโดรน ต้องรวมเวลาหน่วงของทุกช่วงในสายข้อมูล ระหว่างนั้นโดรนยังเคลื่อนที่อยู่
ตัวอย่างที่ 2 โดรนเคลื่อนไปเท่าไรก่อนคำสั่งถึง
สายข้อมูลมีเวลาหน่วง ส่งภาพเข้า node 5 ms ตรวจจับด้วย AI 12 ms ส่งผ่าน topic ถึง node วางแผน 3 ms และส่งผ่าน uXRCE-DDS ทาง serial ถึง PX4 8 ms โดรนบิน 10 m/s
- ms
- m
ระยะ 0.28 m ต้องรวมอยู่ในระยะเผื่อการหลบหลีก ถ้าเปลี่ยนไปใช้โมเดล AI ที่ช้ากว่าเดิมมาก ระยะนี้จะเพิ่มตาม และคิวข้อความที่ค้างใน MQTT หรือ ROS 2 ก็ทำให้ข้อมูลเก่าได้ (อ่านหน่วยความรู้เจาะลึก MQTT เรื่องอายุข้อมูลและคิว)
สถาปัตยกรรมบูรณาการ
หลักการออกแบบ
- แยกงานที่ต้องปลอดภัยออกจากงานภารกิจ ให้ flight controller และ PLC ทำงานปลอดภัยได้เองแม้คอมพิวเตอร์ภารกิจหรือเครือข่ายล่ม
- เลือกโพรโทคอลตามชั้น DDS/ROS 2 ภายในหุ่นยนต์ MQTT หรือ OPC UA ขึ้นระบบองค์กร MAVLink หรือ uXRCE-DDS กับ flight controller
- รักษาความปลอดภัยไซเบอร์ทุกชั้น เข้ารหัสและยืนยันตัวตน โดยเฉพาะช่องทางที่สั่งอุปกรณ์จริงได้
- ออกแบบให้ทดสอบได้ ใช้ SITL และการจำลองก่อนเชื่อมอุปกรณ์จริง
| กรณีใช้งาน | ชิ้นส่วนที่ประสานกัน |
|---|---|
| คลังสินค้าอัจฉริยะ | โดรนอ่านบาร์โค้ด หุ่นยนต์ขนของ ระบบจัดการคลัง (ISA-95 ระดับ 3) |
| สถานีจอดอัตโนมัติ | PLC เปิดฝาและชาร์จ โดรนบินตามตาราง ศูนย์ควบคุมผ่าน MQTT |
| ตรวจโครงสร้างพื้นฐาน | โดรนถ่ายภาพจากด้านบน หุ่นยนต์ภาคพื้นตรวจระยะใกล้ แผนที่รวมผ่าน ROS 2 |
| ฝูงโดรน | โดรนหลายลำประสานตำแหน่งผ่านเครือข่ายสื่อสาร (อ่านหน่วยความรู้เจาะลึกฝูงโดรน LoRa Mesh) |
กิจกรรมในชั้นเรียน
กิจกรรม: ออกแบบระบบคลังสินค้าที่มีโดรนและหุ่นยนต์
อ่านหน่วยความรู้เจาะลึก “จาก Embedded System สู่ AI Robot และ ROS” จากคลังความรู้โดรนก่อน
- วาดกราฟ ROS 2 ของระบบ ระบุ node, topic, service และ action
- เลือกวิธีเชื่อมกับ flight controller และระบุจุดที่ต้องแปลงกรอบพิกัด
- คำนวณงบเวลาหน่วงของสายตรวจจับสิ่งกีดขวาง และระยะที่โดรนเคลื่อนไประหว่างนั้น
- จัดชิ้นส่วนทั้งหมดลงในสถาปัตยกรรมภาพที่ 2 และระบุว่าถ้าเครือข่ายล่ม แต่ละชิ้นทำอะไรเพื่อให้ปลอดภัย
ข้อผิดพลาดที่พบบ่อย
ระวัง
- ลืมแปลงกรอบพิกัด NED/ENU ระหว่าง ROS 2 กับ PX4
- ใช้ ROS 2 รุ่นที่หมดระยะดูแล หรือคนละรุ่นกับที่เอกสาร flight stack รองรับ
- ให้คอมพิวเตอร์ภารกิจเป็นผู้รับผิดชอบความปลอดภัยหลัก แทน flight controller
- ไม่คิดเวลาหน่วง ของ AI และเครือข่ายในระยะเผื่อ
- เปิดช่องทางสั่งงานโดยไม่เข้ารหัส บนเครือข่ายที่คนอื่นเข้าถึงได้
สรุป
- ROS 2 เชื่อม node ผ่าน topic, service และ action บน DDS พร้อมนโยบาย QoS
- PX4 เชื่อมกับ ROS 2 ผ่าน uXRCE-DDS ส่วน MAVROS เป็นสะพาน MAVLink กับ ROS 2
- PX4 ใช้ NED/FRD ส่วน ROS ใช้ ENU/FLU แปลงตำแหน่งได้ว่า
- งบเวลาหน่วงรวมทุกช่วงของสายข้อมูล และระยะที่เคลื่อนไปคือ
- สถาปัตยกรรมที่ดีแยกงานความปลอดภัยออกจากงานภารกิจ และเลือกโพรโทคอลตามชั้น
แบบฝึกตรวจความเข้าใจ
- ถ้าต้องสั่งโดรนบินไปยังจุดหนึ่งและต้องการรายงานความคืบหน้าระหว่างทาง ควรใช้ topic, service หรือ action
- PX4 รายงานตำแหน่ง NED m ในกรอบ ENU คือเท่าใด
- สายข้อมูลมีเวลาหน่วงรวม 40 ms โดรนบิน 15 m/s เคลื่อนไปกี่เมตร
- ROS 2 รุ่นใดออกในเดือนพฤษภาคม 2026
- ทำไมจึงไม่ควรให้คอมพิวเตอร์ภารกิจเป็นผู้รับผิดชอบความปลอดภัยหลัก
เฉลย
- action เพราะเป็นงานใช้เวลานาน มีสถานะระหว่างทางและยกเลิกได้
- m
- m
- Lyrical Luth (22 พ.ค. 2026)
- คอมพิวเตอร์ภารกิจรันซอฟต์แวร์ซับซ้อนที่อาจค้างหรือล่ม flight controller ต้องรักษาความปลอดภัยได้เองด้วย failsafe แม้คอมพิวเตอร์ภารกิจหยุดทำงาน
สรุปสูตรสำคัญ
| แปลงเวกเตอร์ NED เป็น ENU | |
| งบเวลาหน่วงของสายข้อมูล |
แหล่งอ้างอิงหลัก
- Open Robotics. ROS 2 documentation. link
- PX4 Autopilot. ROS 2 user guide (uXRCE-DDS bridge and frame conventions). PX4 user guide (main). link
- MAVLink Development Team. MAVROS: MAVLink to ROS gateway (ROS 2). link
- MAVLink Development Team. MAVLink developer guide. link
- OASIS. (2019). MQTT version 5.0 (OASIS Standard, 7 March 2019). link
- International Electrotechnical Commission. (2025). OPC unified architecture – Part 1: Overview and concepts (IEC 62541-1:2025). link
- International Society of Automation. ISA-95 standard: Enterprise-control system integration (ANSI/ISA-95, IEC 62264). link
- Chung, S.-J., Paranjape, A. A., Dames, P., Shen, S., & Kumar, V. (2018). A survey on aerial swarm robotics. IEEE Transactions on Robotics, 34(4), 837–855.
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
หัวข้อที่ 3: Robotics & Autonomous Systems
ROS 2 และการเชื่อมต่อกับ flight stack
เนื้อหาเจาะลึก: จาก Embedded System สู่ AI Robot และ ROS
เนื้อหาเจาะลึก: การประสานฝูงโดรน (Swarm Drone) ผ่านโครงข่ายสื่อสาร LoRa Mesh Network
การสื่อสารโดรนและ MAVLink
ในชั้นเรียน / ภาคสนาม
บรรยาย อภิปรายกรณีศึกษา และแก้โจทย์ในชั้นเรียน
หลักฐานการเรียนรู้: ผล quiz และแบบฝึกหัดที่ส่ง