介紹 Navigation2 (Nav2) 堆疊的核心能力,包括地圖繪製、定位、規劃和避障。
Navigation2 (Nav2)
是 ROS 2 的官方導航堆疊套件,用於實現機器人在已知或未知環境中的自主導航。它是 ROS 1 中 move_base
的進化版本,支援現代 ROS 2 架構,並提供高擴充性與模組化的設計。
以下是 Nav2 的核心能力介紹:
🧭 1. 地圖繪製(Mapping)
功能:
-
建立機器人的2D環境地圖,通常透過 SLAM(Simultaneous Localization and Mapping)完成。
-
支援
SLAM Toolbox
、Cartographer
等 SLAM 模組。
使用場景:
-
初次探索環境時建立地圖。
-
實時更新(online)或離線建圖(offline)。
📍 2. 定位(Localization)
功能:
-
在地圖上確定機器人的當前位置與方向。
-
使用
AMCL
(Adaptive Monte Carlo Localization)或其他粒子濾波器。
技術細節:
-
輸入:雷射雷達資料(LaserScan)、地圖(Occupancy Grid)。
-
輸出:
geometry_msgs/PoseWithCovarianceStamped
表示機器人位姿。
🧭 3. 路徑規劃(Path Planning)
分為:
-
Global Planner(全域規劃):從當前位置規劃到目標位置的可行路徑(如 NavFn、Smac)。
-
Local Planner(區域規劃):根據當前障礙物資訊動態微調路徑(如 DWB、Teb)。
技術:
-
支援 plugin-based 架構,可替換規劃器演算法。
-
使用 costmap 進行避障區域標記。
🚧 4. 避障(Obstacle Avoidance)
功能:
-
根據環境中實時感知到的障礙物進行避讓。
-
動態更新 costmap,包括靜態地圖與實時障礙物資訊(如雷達、深度攝影機)。
模組:
-
Costmap2D
+Voxel Layer
(3D)或Obstacle Layer
(2D)。 -
允許對未知區域進行探索與安全避障。
🛠️ Nav2 特點總結
能力模組 | 功能 | 常用組件 |
---|---|---|
地圖繪製 | 建立2D地圖(佔據格) | SLAM Toolbox / Cartographer |
定位 | 在地圖上估算當前位置 | AMCL |
規劃 | 規劃最短安全路徑 | NavFn / Smac / TEB |
避障 | 動態避讓障礙物 | Costmap2D / Obstacle Layer |
控制 | 根據路徑發送速度指令 | DWB Controller / TEB |
若你希望我補充:
-
✅ Nav2 的 YAML/launch 設定
-
✅ 在 RPi4 + ROS 2 上部署 Nav2 範例
-
✅ SLAM → 地圖儲存 → 定位 → 規劃 → 移動完整流程
沒有留言:
張貼留言