ISAAC ROS(Advantech Isaac ROS Kit)
本文件介紹我們所提供的 isaac_ros_base / Isaac ROS 容器化開發與範例框架。此框架可協助使用者在研華平台上快速執行 NVIDIA Isaac ROS 官方範例,並可在相同框架基礎上進一步開發自己的應用程式(App)。
- 第一次執行範例時,系統可能會自動下載或安裝所需資源,例如模型、資料集或相依套件。這屬於正常現象,因此第一次執行可能需要較長的時間。
支援版本
本文件適用於以下 Isaac ROS 與 ROS 2 版本組合:
Isaac ROS ROS 2 Tensorrt v3.2 (release-3.2) Humble v10.7.0 v4.5 (release-4.5) Jazzy v10.13.3
1. Isaac ROS 簡介
NVIDIA Isaac ROS 是一套基於 ROS 2 所建構的 GPU 加速套件,針對機器人常見的感知、定位、建圖與視覺推論工作流程提供最佳化的演算法與節點,例如 Visual SLAM、Nvblox 3D 重建、物件偵測與影像分割等。
在 Jetson / GPU 平台上,Isaac ROS 通常透過 Docker 容器提供一致的執行環境,以降低相依套件與版本相容性所造成的問題,讓開發者能更專注於系統整合與應用程式開發。
2. 為什麼使用此套件(優勢與 isaac_ros_base 提供的功能)
isaac_ros_base 提供一套可直接使用的 Isaac ROS 開發環境,並以 Docker 容器的形式封裝。
此環境可協助使用者快速驗證 Isaac ROS 的功能,並在一致且可重現的環境基礎上開發自己的機器人應用程式。
主要優勢包括:
-
快速啟動:無需花費大量時間設定環境,即可快速執行 Isaac ROS 範例。
-
可重現的開發環境:透過一致的容器化工作流程,降低「只在特定電腦上可以正常運作」的環境差異問題。
-
降低環境設定成本:常用的相依套件與執行環境需求已整合於容器工作流程中。
-
提供客製化開發基礎:使用者可在既有框架上進一步整合自己的 Pipeline 與應用程式。
-
更容易進行故障排除與維護:環境變更彼此隔離,使版本更新與回復更容易管理。
參考資料:https://nvidia-isaac-ros.github.io/
3. 安裝位置與結構
請確認目標系統符合以下條件:
- 研華平台
- 至少 50 GB 的可用磁碟空間
- 需要可正常使用的網路連線
- Ubuntu OS 請使用英文語系環境
依照安裝程式說明選擇並安裝 Isaac ROS Development Environment 功能後,可在以下位置找到相關套件:
-
Isaac ROS Kit 根目錄:
/usr/local/Advantech/ros/container/ros-demokit/isaac_ros_kit
主要內容如下:
-
啟動入口:
launch_isaac.sh
-
範例應用程式:
-
apps/basic_examples(Isaac 官方基礎範例) -
apps/advanced_examples(進階整合範例,例如nvblox_keep_map)
-
-
開發框架:
apps/develop(開發容器的使用方式與範本說明)
4. 使用方式:透過單一指令啟動範例
概述
User
│
▼
launch_isaac.sh
│
▼
Docker Container (Isaac ROS environment)
│
├─ (first run / as needed) install_app.sh: download/install required assets & dependencies
│
└─ (every run) run_app.sh: start the example (e.g., ros2 launch ...)
使用方式如下:
cd /usr/local/Advantech/ros/container/ros-demokit/isaac_ros_kit
./launch_isaac.sh <app_folder> [optional parameters...]
-
<app_folder>為apps/目錄下的相對路徑,例如:-
basic_examples/isaac_ros_nvblox -
basic_examples/isaac_ros_visual_slam -
advanced_examples/nvblox_keep_map
-
快速啟動範例如下:
./launch_isaac.sh basic_examples/isaac_ros_nvblox
ROS_DOMAIN_ID(預設值:90)
此套件預設使用
ROS_DOMAIN_ID=90。如需修改,請編輯
launch_isaac.sh中的ROS_DOMAIN_ID設定。
5. 基本範例(Isaac 官方範例)
以下範例位於:
/usr/local/Advantech/ros/container/ros-demokit/isaac_ros_kit/apps/basic_examples
主要用途:
-
快速驗證 Isaac ROS 官方功能是否能在目標平台上正常執行。
-
作為後續開發的起點,可沿用相同的啟動與安裝框架進一步擴充功能。
5.1 isaac_ros_nvblox
-
用途:3D 重建 / 即時建圖(TSDF / ESDF)。可搭配深度相機或資料集進行 3D 場景重建與視覺化。
-
執行:
./launch_isaac.sh basic_examples/isaac_ros_nvblox -
官方文件:

5.2 isaac_ros_visual_slam
-
用途:Visual SLAM(定位與建圖),包含常見的相機與 IMU 工作流程。
-
執行:
./launch_isaac.sh basic_examples/isaac_ros_visual_slam -
官方文件:

5.3 isaac_ros_yolov8
-
用途:YOLOv8 物件偵測推論,可用於即時物件偵測與感知功能整合。
-
執行:
./launch_isaac.sh basic_examples/isaac_ros_yolov8 -
官方文件:

YOLOv8 模型需求
- 由於授權限制,本套件不包含預先轉換完成的 YOLOv8 模型檔案(
yolov8s.plan)。- TensorRT 版本相容性: TensorRT Engine(.plan)必須使用與所提供 Isaac ROS 容器相同的 TensorRT 版本產生。各容器所提供的 TensorRT 版本,請參考 支援版本。
- 執行此範例之前,請依照 NVIDIA Isaac ROS YOLOv8 Documentation 的說明匯出 YOLOv8 模型,並將
yolov8s.plan放置於以下位置:/home/ubuntu/workspaces/isaac_ros-dev/isaac_ros_assets/models/yolov8/yolov8s.plan
5.4 isaac_ros_unet
-
用途:基於 UNet 的語意分割工作流程,可應用於場景理解、可通行區域判斷,以及前景 / 背景分離等功能。
-
執行:
./launch_isaac.sh basic_examples/isaac_ros_unet -
官方文件:

5.5 isaac_ros_centerpose
-
用途:6DoF 姿態估測,常應用於機器人抓取、姿態追蹤與物件對位等任務。
-
執行:
./launch_isaac.sh basic_examples/isaac_ros_centerpose -
官方文件:

5.6 isaac_ros_occupancy_grid_localizer
-
用途:在 2D Occupancy Grid 地圖上進行定位,常用於室內導航與 AMR 應用,可在已知地圖中估算機器人的位置與姿態。
-
執行:
./launch_isaac.sh basic_examples/isaac_ros_occupancy_grid_localizer -
官方文件:

5.7 isaac_ros_cumotion_moveit
-
用途:針對機器手臂應用提供 GPU 加速的運動規劃與碰撞避免功能,可快速產生無碰撞的機器手臂運動軌跡。
-
執行:
./launch_isaac.sh basic_examples/isaac_ros_cumotion_moveit -
官方文件:

6. 建立自己的應用程式
在每個 App 目錄中,都可以找到以下檔案:
-
install_app.sh:用於執行安裝與環境準備步驟,例如下載所需資源、安裝相依套件及初始化環境。 -
run_app.sh:用於設定啟動與執行指令,通常為ros2 launch ...。
您可以依照以下方式建立自己的 App:
-
複製現有的範例目錄,或使用
apps/develop作為範本。 -
將所需的環境設定與安裝步驟加入
install_app.sh。 -
將 ROS 2 的啟動與執行指令加入
run_app.sh。 -
使用相同的入口指令啟動您的 App:
./launch_isaac.sh <your_app_path>