ROS 2 สำหรับหุ่นยนต์เคลื่อนที่
สอนตั้งแต่ยังไม่เคยใช้ ROS 2 มาก่อน จนต่ออุปกรณ์จริงให้หุ่นวิ่งได้เอง
Note
เขียนเสร็จแล้ว 11 หัวข้อ — ส่วนที่ 1 ครบทั้ง 10 และหัวข้อ 11 ของส่วนที่ 2 กดที่ชื่อหัวข้อเพื่ออ่าน · หัวข้อ 12–18 ยังเป็นแผน
เขียนให้ใครอ่าน
คนที่มีอุปกรณ์อยู่ในมือแล้ว และต้องการให้มันขยับด้วย ROS 2 — วิศวกรที่กำลังประกอบ AGV/AMR เอง หรือทีมที่ย้ายจากระบบเดิมมาใช้ ROS 2
ไม่ต้องเคยใช้ ROS มาก่อน แต่ควรใช้ Linux พื้นฐานได้ (เปิด terminal · cd · ls · แก้ไฟล์)
ส่วนที่ 1 — ปูพื้นฐาน
เป้าหมายของส่วนนี้คือ อ่านออกว่าระบบกำลังทำอะไรอยู่ ยังไม่ต้องต่ออุปกรณ์อะไรทั้งสิ้น ใช้แค่คอมเครื่องเดียว
# |
หัวข้อ |
จะครอบคลุม |
|---|---|---|
1 |
ปัญหาที่ ROS แก้ให้ · ราคาที่ต้องจ่าย · งานแบบไหนเขียนตรง ๆ ง่ายกว่า |
|
2 |
เลือกรุ่นให้ตรงกัน · ติดตั้ง Humble · ตรวจว่าใช้ได้จริงก่อนไปต่อ |
|
3 |
ลองด้วย |
|
4 |
|
|
5 |
|
|
6 |
node แรกที่เขียนเอง (Python) · รับค่าจาก node อื่นมาใช้ |
|
7 |
เปิดหลาย node พร้อมกัน · แยกค่าตั้งออกเป็น YAML · เปลี่ยนค่าโดยไม่แก้โค้ด |
|
8 |
|
|
9 |
ดูอะไรได้บ้าง · ตั้งค่าให้เห็นสิ่งที่ต้องการ · ใช้หาสาเหตุเวลาผิดพลาด |
|
10 |
ทำไม "ดูปกติแต่ไม่มีข้อมูล" · sensor data กับ reliable ต่างกันตรงไหน |
ส่วนที่ 1 — ปูพื้นฐาน
ส่วนที่ 2 — ต่อกับอุปกรณ์จริง
Tip
หัวข้อ 10 มาไว้ท้ายส่วนพื้นฐานโดยตั้งใจ — เป็นสาเหตุอันดับต้น ๆ ที่ทำให้คนเพิ่งเริ่ม
ติดอยู่นานเป็นวัน ทั้งที่โค้ดถูกหมด ros2 topic list เห็นชื่อ topic
แต่ ros2 topic echo ไม่มีอะไรออกมา
ส่วนที่ 2 — ต่อกับอุปกรณ์จริง
Important
🔒 ส่วนนี้สำหรับลูกค้าที่ซื้ออุปกรณ์กับทางร้าน — ต้องใส่รหัสก่อนเข้าอ่าน ติดต่อขอรหัสได้ที่ร้าน ส่วนที่ 1 ข้างบนอ่านได้ฟรีไม่ต้องใช้รหัส
เนื้อหาส่วนนี้อ้างอิงสเปกและค่าตั้งของอุปกรณ์ที่ทางร้านจำหน่ายโดยตรง
เรียงตามลำดับการประกอบหุ่นยนต์จริง — ทำให้ล้อหมุนก่อน แล้วค่อยให้มันรู้ว่าตัวเองอยู่ไหน
# |
หัวข้อ |
จะครอบคลุม |
|---|---|---|
11 |
ต่อไดรฟ์/มอเตอร์ผ่าน RS485 · ส่งคำสั่งความเร็วจาก ROS 2 · ตรวจว่าหมุนถูกทาง |
|
12 |
odometry จาก encoder |
อ่านค่า encoder · แปลงเป็น |
13 |
โครงหุ่นยนต์ (URDF) |
วางตำแหน่งล้อและเซ็นเซอร์ · |
14 |
LiDAR กับ SLAM |
ต่อ LiDAR · เลือกรุ่นให้พอกับขนาดพื้นที่ · สร้างแผนที่ด้วย |
15 |
นำทางด้วย Nav2 |
ตั้ง costmap · จูนความเร็วและระยะเบรก · สั่งไปยังจุดหมาย |
16 |
เซ็นเซอร์ความปลอดภัย |
ต่อ safety laser scanner · ผูกกับการหยุดฉุกเฉิน · แยกโซนเตือนกับโซนหยุด |
17 |
นำทางด้วยเทปแม่เหล็ก |
ทางเลือกที่ไม่ใช้ SLAM · เมื่อไหร่ควรใช้แทน LiDAR · ต่อเซ็นเซอร์แม่เหล็กเข้า ROS 2 |
18 |
ระบบไฟและการชาร์จ |
คำนวณแบตให้พอกับกะทำงาน · กลับไปชาร์จอัตโนมัติ · อ่านสถานะแบตเข้า ROS 2 |
ทำไมเรียงแบบนี้
ส่วนที่ 1 ก่อนส่วนที่ 2 เพราะเวลาต่ออุปกรณ์จริงแล้วไม่ทำงาน คำถามแรกคือ
"ข้อมูลไปถึงไหนแล้ว" ซึ่งตอบไม่ได้เลยถ้าอ่าน ros2 topic กับ tf ไม่เป็น
จะกลายเป็นเดาไปเรื่อยว่าสายเสีย ไดรฟ์เสีย หรือโค้ดผิด
ในส่วนที่ 2 ห้ามข้ามหัวข้อ 11–13 หลายคนเริ่มจาก SLAM เพราะเห็นคลิปแล้วน่าสนใจที่สุด แล้วไปติดตรงที่แผนที่เพี้ยน ซึ่งสาเหตุมักไม่ได้อยู่ที่ LiDAR แต่อยู่ที่ odometry ไม่แม่น แผนที่จะเพี้ยนตามไปด้วยเสมอ ไม่ว่า LiDAR จะดีแค่ไหน