18. AMR Navigation
การนำทาง (Navigation) เป็นหัวใจสำคัญของหุ่นยนต์เคลื่อนที่อัตโนมัติ (Autonomous Mobile Robot – AMR) ระบบนี้ช่วยให้หุ่นยนต์สามารถ “รู้ตำแหน่งของตนเอง”, “เข้าใจสภาพแวดล้อม”, “วางแผนเส้นทาง”, และ “เคลื่อนที่ไปยังเป้าหมายได้อย่างปลอดภัย” โดยไม่ชนสิ่งกีดขวาง
ใน ROS 2 ระบบนำทางจะประกอบด้วยชุดแพ็กเกจหลักหลายส่วนที่ทำงานร่วมกัน ได้แก่ การสร้างแผนที่ (Mapping), การระบุตำแหน่ง (Localization), การรวมข้อมูล (Sensor Fusion), และการนำทางจริง (Navigation2 หรือ Nav2 Stack)
18.1. ภาพรวมแพ็กเกจที่ใช้ในระบบนำทาง AMR
หมวดการทำงาน |
แพ็กเกจที่ใช้ |
หน้าที่หลัก |
|---|---|---|
การสร้างแผนที่ (Mapping) |
slam_toolbox |
ใช้สร้างแผนที่ 2D จากข้อมูล LiDAR และ Odometry สามารถบันทึกเป็น .yaml / .pgm เพื่อใช้ใน Navigation ได้ |
การระบุตำแหน่ง (Localization) |
amcl |
ใช้ระบุตำแหน่งของหุ่นยนต์บนแผนที่ด้วยเทคนิค Monte Carlo Localization (Particle Filter) |
การรวมข้อมูลการเคลื่อนที่ (Sensor Fusion) |
robot_localization (EKF) |
รวมข้อมูลจาก Odometry, IMU, และ Velocity Command ให้เป็นข้อมูล odom → base_link ที่เสถียร |
ข้อมูลการวัดระยะ (Perception) |
rplidar_ros, sllidar_ros2, ydlidar_ros2_driver, ฯลฯ |
ใช้เก็บข้อมูลสภาพแวดล้อมรอบตัวหุ่นยนต์ในรูปแบบ LaserScan |
ระบบนำทาง (Navigation) |
nav2_bringup, planner_server, controller_server, bt_navigator, costmap_2d, lifecycle_manager |
วางแผนเส้นทาง, ควบคุมการเคลื่อนที่, ตรวจจับสิ่งกีดขวาง และจัดการลำดับการทำงาน |
การแสดงผล (Visualization) |
rviz2 |
ใช้สำหรับแสดงแผนที่, ตำแหน่ง, เส้นทาง และข้อมูล sensor ต่าง ๆ แบบเรียลไทม์ |
การวัดการเคลื่อนที่ (Odometry Source) |
/odom, /wheel_odom, /encoder_data |
ให้ข้อมูลระยะทางและมุมการหมุนของหุ่นยนต์จาก encoder |
การควบคุมคำสั่งเคลื่อนที่ (Velocity Command) |
/cmd_vel |
เป็น topic ที่ Nav2 ส่งความเร็วเชิงเส้น/มุมไปยัง MCU หรือ motor controller ของหุ่นยนต์ |
18.2. การปรับจูน (Tuning) ระบบ Navigation
เมื่อโครงสร้างทั้งหมดทำงานร่วมกันได้แล้ว ขั้นตอนต่อมาคือการ ปรับจูน (Tuning) ซึ่งมีผลโดยตรงต่อความแม่นยำ ความนุ่มนวล และพฤติกรรมของหุ่นยนต์
การจูนจะอ้างอิงแนวทางจากงานวิจัยสำคัญของ Kaiyu Zheng (2016) https://arxiv.org/pdf/1706.09068
*** สามารถ เปิดดูตัวอย่างไฟล์ nav.yaml ในโฟลเดอร์ Documents ***