1. ROS 2 คืออะไร และเมื่อไหร่ที่ไม่ต้องใช้
ปัญหาที่ ROS 2 แก้ให้
หุ่นยนต์หนึ่งตัวมีชิ้นส่วนที่ต้องคุยกันหลายอย่าง — มอเตอร์ · encoder · LiDAR · กล้อง · ปุ่มหยุดฉุกเฉิน · ตัวคิดเส้นทาง
ถ้าเขียนเองทั้งหมดในโปรแกรมเดียว จะเจอ 3 อย่างนี้เสมอ
ปัญหา |
ตัวอย่าง |
|---|---|
ชิ้นหนึ่งค้าง ทั้งระบบค้าง |
LiDAR ไม่ตอบ → ลูปหลักหยุด → คำสั่งหยุดล้อไม่ถูกส่ง |
เปลี่ยนอุปกรณ์ = รื้อโค้ด |
เปลี่ยน LiDAR ยี่ห้อใหม่ ต้องแก้ทั้งไฟล์ |
ดูไม่ได้ว่าข้างในเกิดอะไร |
หุ่นไม่ขยับ แต่ไม่รู้ว่าคำสั่งไปไม่ถึง หรือไปถึงแล้วไม่ทำ |
ROS 2 แก้ด้วยการแยกเป็นโปรแกรมย่อยหลายตัว (เรียกว่า node) แล้วให้ส่งข้อความหากัน ผ่านช่องที่มีชื่อ (เรียกว่า topic)
ผลที่ได้จริง:
LiDAR ค้าง → node อื่นยังทำงาน คำสั่งหยุดยังส่งได้
เปลี่ยน LiDAR → เปลี่ยนแค่ node ตัวนั้น ตราบใดที่ยังส่งข้อความชนิดเดิม
เปิดดูข้อมูลที่ไหลอยู่ได้ทุกช่องโดยไม่ต้องแก้โค้ด — ข้อนี้สำคัญที่สุดตอนหาสาเหตุ
ราคาที่ต้องจ่าย
ไม่ใช่ของฟรี สิ่งที่แลกไป:
ของที่ต้องเรียนเยอะ — workspace · package · launch file · tf · QoS กว่าจะทำให้ล้อหมุนได้ครั้งแรกใช้เวลานานกว่าเขียนตรง ๆ มาก
ผูกกับรุ่นของ Ubuntu — ROS 2 แต่ละรุ่นใช้ได้กับ Ubuntu รุ่นเดียว เลือกผิดตั้งแต่ต้นแก้ยาก
หน่วงเพิ่มขึ้น — ข้อความวิ่งผ่านระบบสื่อสาร ไม่ใช่เรียกฟังก์ชันตรง ๆ งานที่ต้องตอบสนองระดับไมโครวินาที ROS 2 ไม่ใช่ที่ของมัน
แก้ปัญหายากขึ้นตอนแรก — ความผิดพลาดบางแบบเงียบสนิท ไม่มี error (ดูหัวข้อ 10. QoS)
เมื่อไหร่ที่ไม่ควรใช้
Important
ROS 2 ไม่ได้ดีกว่าเสมอ งาน 3 แบบนี้เขียนตรง ๆ ง่ายกว่าและเชื่อถือได้มากกว่า
① สายพานหรือเครื่องจักรที่เดินซ้ำเส้นทางเดิม ไม่ต้องคิดเส้นทาง ไม่ต้องรู้ตำแหน่งตัวเอง — PLC หรือไมโครคอนโทรลเลอร์ตัวเดียวจบ ใส่ ROS 2 เข้าไปคือเพิ่มของที่ต้องดูแลโดยไม่ได้อะไรกลับมา
② วงควบคุมที่ต้องแม่นระดับมิลลิวินาที ควบคุมกระแสมอเตอร์ · PID ของล้อ · ตัดวงจรเมื่อกระแสเกิน งานพวกนี้อยู่ในไดรฟ์หรือไมโครคอนโทรลเลอร์ ไม่ควรวิ่งผ่าน ROS 2 ในระบบจริงเราให้ ROS 2 สั่งความเร็วลงไป แล้วให้ไดรฟ์คุมกระแสเอง
③ ระบบความปลอดภัย ปุ่มหยุดฉุกเฉินและ safety scanner ต้องต่อเป็นวงจรฮาร์ดแวร์ที่ตัดไฟได้เอง ห้ามให้ซอฟต์แวร์เป็นตัวเดียวที่หยุดหุ่น — ไม่ว่าซอฟต์แวร์นั้นจะเป็น ROS 2 หรืออะไรก็ตาม ROS 2 รับรู้สถานะได้ แต่ไม่ใช่ตัวที่ตัด
แล้วเมื่อไหร่ที่คุ้ม
ตอบง่าย ๆ คือเมื่อหุ่นต้องรู้ว่าตัวเองอยู่ตรงไหน แล้วตัดสินใจเองว่าจะไปทางไหน
พอถึงจุดนั้นจะต้องมี แผนที่ · การหาตำแหน่ง · การวางเส้นทาง · การหลบสิ่งกีดขวาง ซึ่งเขียนเองทั้งหมดใช้เวลาเป็นปี ส่วน ROS 2 มีให้แล้วและมีคนใช้จริงจนนิ่ง
รุ่นที่คู่มือนี้ใช้
ROS 2 Humble บน Ubuntu 22.04 — เลือกเพราะเป็นรุ่นที่ Nav2 กับ slam_toolbox นิ่งที่สุด
ตอนที่เขียน และรองรับยาวถึงปี 2027
Warning
ROS 2 ผูกกับรุ่น Ubuntu แบบเปลี่ยนทีหลังไม่ได้ง่าย ๆ ถ้าลง Ubuntu ผิดรุ่นจะติดตั้ง Humble ไม่ได้เลย ต้องลง Ubuntu ใหม่ เรื่องนี้อยู่ในหัวข้อถัดไป
ต่อไป: 2. ติดตั้ง Ubuntu กับ ROS 2