# AMR Navigation การนำทาง (Navigation) เป็นหัวใจสำคัญของหุ่นยนต์เคลื่อนที่อัตโนมัติ (Autonomous Mobile Robot – AMR) ระบบนี้ช่วยให้หุ่นยนต์สามารถ “รู้ตำแหน่งของตนเอง”, “เข้าใจสภาพแวดล้อม”, “วางแผนเส้นทาง”, และ “เคลื่อนที่ไปยังเป้าหมายได้อย่างปลอดภัย” โดยไม่ชนสิ่งกีดขวาง ใน ROS 2 ระบบนำทางจะประกอบด้วยชุดแพ็กเกจหลักหลายส่วนที่ทำงานร่วมกัน ได้แก่ การสร้างแผนที่ (Mapping), การระบุตำแหน่ง (Localization), การรวมข้อมูล (Sensor Fusion), และการนำทางจริง (Navigation2 หรือ Nav2 Stack) ## ภาพรวมแพ็กเกจที่ใช้ในระบบนำทาง AMR ```{list-table} :widths: 25 25 25 :header-rows: 1 * - **หมวดการทำงาน** - **แพ็กเกจที่ใช้** - **หน้าที่หลัก** * - การสร้างแผนที่ (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 ของหุ่นยนต์ ``` ## การปรับจูน (Tuning) ระบบ Navigation เมื่อโครงสร้างทั้งหมดทำงานร่วมกันได้แล้ว ขั้นตอนต่อมาคือการ ปรับจูน (Tuning) ซึ่งมีผลโดยตรงต่อความแม่นยำ ความนุ่มนวล และพฤติกรรมของหุ่นยนต์ การจูนจะอ้างอิงแนวทางจากงานวิจัยสำคัญของ Kaiyu Zheng (2016) https://arxiv.org/pdf/1706.09068 *** สามารถ เปิดดูตัวอย่างไฟล์ nav.yaml ในโฟลเดอร์ Documents *** ```{image} images/c18/18.1.png :width: 80% :align: center ```