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