針對 Jetson + ROS 2 上部署 Navigation2 (Nav2) 導航系統 的完整流程,
包含 SLAM 建圖、地圖儲存、定位(AMCL)、路徑規劃與移動控制。
🧰 環境需求
硬體:
-
Jetson Nano / Xavier / Orin 系列
-
雷射雷達(如 RPLIDAR、Hokuyo)
-
底盤驅動(支援
cmd_vel
控制) -
IMU(建議,有助於定位穩定)
軟體:
-
ROS 2 Foxy / Humble / Iron(建議使用 LTS 版本)
-
navigation2
,slam_toolbox
,robot_state_publisher
,rviz2
🔁 部署流程總覽
🔧 1. 安裝套件
📌 2. 啟動 SLAM 建圖
建立啟動檔(如 slam_launch.py
)
執行:
🟢 此時在 RViz 中可以看到地圖隨著機器人移動而繪製。
💾 3. 儲存地圖
將會產生:
-
my_map.yaml
-
my_map.pgm
🎯 4. AMCL 定位 + 載入地圖
啟動定位(localization_launch.py
):
🧭 5. 啟動 Navigation2 堆疊
官方方式(Nav2 Bringup):
🕹️ 6. RViz2 進行導航測試
-
在 RViz2 中設定機器人初始位置(2D Pose Estimate)
-
使用「2D Nav Goal」點選目標位置
-
機器人應該開始移動並避開障礙
📌 小提醒(Jetson 實務)
注意事項 | 建議 |
---|---|
效能瓶頸 | Jetson Nano 請搭配 swap 或增加 ZRAM |
時間同步 | 若無 RTC,建議搭配 NTP 或硬體 IMU 校準 |
驅動整合 | 確保你的底盤可接收 cmd_vel 並回報 TF |
RViz 設定 | 可用 headless 模式或遠端執行減少 CPU 負擔 |
TF 配置 | 檢查 base_link、odom、map 之間的關係完整性 |
📂 範例資料夾結構
如果你需要我提供:
-
✅ 範例
nav2_params.yaml
-
✅ 整合 imu + wheel odometry 的 TF 設定方式
-
✅ Jetson Nano 專用優化建議(SWAP、ZRAM、headless RViz)
沒有留言:
張貼留言