2025年6月5日 星期四

Navigation2 (Nav2) 堆疊的核心能力 自主導航

 介紹 Navigation2 (Nav2) 堆疊的核心能力,包括地圖繪製、定位、規劃和避障。


Navigation2 (Nav2) 是 ROS 2 的官方導航堆疊套件,用於實現機器人在已知或未知環境中的自主導航。它是 ROS 1 中 move_base 的進化版本,支援現代 ROS 2 架構,並提供高擴充性與模組化的設計。

以下是 Nav2 的核心能力介紹:


🧭 1. 地圖繪製(Mapping)

功能:

  • 建立機器人的2D環境地圖,通常透過 SLAM(Simultaneous Localization and Mapping)完成。

  • 支援 SLAM ToolboxCartographer 等 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 → 地圖儲存 → 定位 → 規劃 → 移動完整流程

沒有留言:

張貼留言