Nvidia Isaac Sim 4 - ROS 2 安装
NVIDIA Isaac Sim 提供用于集成 ROS 系统的 ROS 2 Bridge。仿真器发布和接收的数据类型,由同一套通用组件定义。
Isaac Sim 支持的 ROS 发行版如下所示。
| 平台 | ROS 2 |
|---|---|
| Ubuntu 24.04 | Jazzy(推荐) |
| Ubuntu 22.04 | Humble、Jazzy |
| Windows 11 | Humble |
对于 ROS 2 桥接器,Isaac Sim 兼容 ROS 2 Jazzy 和 ROS 2 Humble。
建议在 Ubuntu 24.04 上使用 ROS 2 Jazzy。后续所有步骤均默认使用 Ubuntu 24.04 和 ROS 2 Jazzy。
1. 安装 ROS 2(Ubuntu 24.04 + ROS 2 Jazzy)
1.1. 按照官方网站的说明下载 ROS 2 Jazzy
1.2. 安装 ros-jazzy-vision-msgs
运行以下命令在系统上安装该软件包。如果从源码构建 ROS 2,那么克隆该软件包,并且将其包含在 ROS 2 安装工作空间中,然后重新构建。如果无需运行 vision_msgs 发布者,可以跳过此步骤。ROS 2 桥接器中的某些消息类型(用于发布边界框的 Detection2DArray 和 Detection3DArray)依赖 vision_msgs 软件包。
sudo apt install ros-jazzy-vision-msgs1.3. 安装 ros-jazzy-ackermann-msgs
运行以下命令在系统上安装该软件包。如果从源码构建 ROS 2,那么克隆该软件包,并且将其包含在 ROS 2 安装工作空间中,然后重新构建。如果无需运行 ackermann_msgs 发布者/订阅者,可以跳过此步骤。ROS 2 桥接器中的某些消息类型(用于发布和订阅 Ackermann 转向指令的 AckermannDriveStamped)依赖 ackermann_msgs 软件包。
sudo apt install ros-jazzy-ackermann-msgs1.4. source ROS 环境
确保已在终端或 ~/.bashrc 文件中 source ROS 环境。每次使用 ROS 命令之前都必须执行此步骤。
source /opt/ros/jazzy/setup.bash2. Isaac Sim ROS 工作空间
ROS 2 工作空间包含运行 ROS 2 教程和示例所需的必要软件包。
2.1. 包含的 ROS 2 软件包
为 NVIDIA Isaac Sim 创建的示例 ROS 2 软件包列表:
- carter_navigation:包含用于 NVIDIA Carter 机器人的必要启动文件和 ROS 2 导航参数。
- cmdvel_to_ackermann:包含脚本文件和启动文件,用于将速度命令消息(Twist 消息类型)转换为 Ackermann 驱动消息(
AckermannDriveStamped消息类型)。
- custom_message:
- h1_fullbody_controller:包含用于运行 H1 人形机器人全身控制器的必要启动文件、参数和脚本。
- isaac_compressed_image_decoder:包含解码节点,用于使用 PyAV 将 H.264 压缩图像(
sensor_msgs/CompressedImage)还原为原始sensor_msgs/Image消息。
- isaac_moveit:包含用于将 Isaac Sim 与 MoveIt2 栈一起运行的启动文件和参数。
- isaac_ros_navigation_goal:用于在 ROS 2 Navigation 中自动设置随机或用户定义的目标位姿。
- isaac_ros2_messages:一套自定义的 ROS 2 服务接口,用于获取位姿、列出 Prim 以及操作其属性。
- isaacsim_bringup:包含用于将 Isaac Sim 作为 ROS 2 节点运行和启动的启动文件和脚本。
- isaac_tutorials:包含教程系列所需的启动文件、RViz2 配置文件和脚本。
- iw_hub_navigation:包含用于 iw.hub 机器人的必要启动文件和 ROS 2 导航参数。
重要提示
每次打开新终端或加入新 ROS 2 软件包时,务必 source ROS 2 工作空间。然后,在同一终端中运行 Isaac Sim。
2.2. 设置 ROS 2 工作空间
为运行 ROS 2 教程和示例,需要在计划使用的终端中 source ROS 2 安装工作空间。
要构建 Isaac Sim ROS 工作空间,请确保系统已安装 ROS 2。
从 https://github.com/isaac-sim/IsaacSim-ros_workspaces 克隆 Isaac Sim ROS 工作空间仓库。
完成 Isaac Sim ROS 2 教程系列需要一些 ROS 软件包。完整的 ROS 2 工作空间已包含这些必要的软件包。
如果是从源码构建的 ROS 2,则在构建其他工作空间之前,请将 source /opt/ros/<ros_distro>/setup.bash 命令替换为 source <path_ros2_ws>/install/setup.bash。
要构建 ROS 2 工作空间,可能需要安装额外的软件包:
# For rosdep install command
sudo apt install python3-rosdep build-essential
# For colcon build command
sudo apt install python3-colcon-common-extensions确保已经 source 原生 ROS 2:
source /opt/ros/jazzy/setup.bash在 ROS 2 工作空间的根目录下,运行以下命令解决所有软件包依赖项:
cd jazzy_ws
git submodule update --init --recursive # If using docker, perform this step outside the container and relaunch the container
rosdep install -i --from-path src --rosdistro jazzy -y构建工作空间:
colcon build在根目录下,将新建 build、install 和 log 目录。
开始使用此工作空间中构建的 ROS 2 软件包时,打开新终端,使用以下命令 source 该工作空间:
source /opt/ros/jazzy/setup.bash
cd jazzy_ws
source install/local_setup.bash3. 配置选项及启用内部 ROS 库(可选)
如果需要使用 ROS Docker 容器,并且没有可用的原生 ROS 2 安装,则可以使用 Isaac Sim 自带的内部 ROS 库运行 Isaac Sim。
3.1. 使用 Isaac Sim 内部 ROS 库
在 Ubuntu 24.04 中,如果没有 source 其他 ROS 库,Isaac Sim 将自动加载内部的 ROS 2 Jazzy 库。使用常规启动命令运行 Isaac Sim,并且启用 ROS 2 Bridge。
./isaac-sim.sh注意
ROS_DISTRO环境变量用于检查是否已sourceROS。
3.2. 使用终端或启用 ROS 2 Python Standalone 脚本
如果使用 ./python.sh 运行 Isaac Sim Standalone 脚本,必须手动启用内部库。
为直接设置特定的内部 ROS 2 库,必须在运行 Isaac Sim 之前,在新终端或命令提示符中设置以下环境变量。如果 Isaac Sim 安装在非默认位置,请将 isaac_sim_package_path 环境变量替换为 Isaac Sim 安装根目录路径。
3.2.1. 使用手动选择的 ROS 2 内部库运行 Isaac Sim(覆盖为 jazzy)
export isaac_sim_package_path=/isaac-sim
export ROS_DISTRO=jazzy
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
# Can only be set once per terminal.
# Setting this command multiple times will append the internal library path again potentially leading to conflicts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$isaac_sim_package_path/exts/isaacsim.ros2.core/jazzy/lib
# Run Isaac Sim
$isaac_sim_package_path/isaac-sim.sh3.2.2. 运行 Standalone 脚本
export isaac_sim_package_path=$HOME/isaacsim
export ROS_DISTRO=jazzy
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
# Can only be set once per terminal.
# Setting this command multiple times will append the internal library path again potentially leading to conflicts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$isaac_sim_package_path/exts/isaacsim.ros2.core/jazzy/lib
# Run Isaac Sim Standalone scripts
$isaac_sim_package_path/python.sh <path/to/standalone/script>4. 启用 ROS 2 桥接器
当未设置 RMW_IMPLEMENTATION 环境变量时,ROS 2 桥接器默认使用 Fast DDS。
4.1. 在 Linux 上使用 Fast DDS
4.1.1. 单机
如果使用 ROS 2 桥接器与同一台机器上运行的 ROS 2 节点进行通信,请使用 FastDDS 的默认配置。这样可以确保使用共享内存传输,从而获得最佳的仿真性能。
4.2. 在 isaac-sim.sh 中禁用 ROS 桥接器
要禁用 ROS 桥接器,请按以下步骤操作:
- 打开位于
~/isaacsim/apps/isaacsim.exp.full.kit的文件。
- 找到以下配置行:
isaac.startup.ros_bridge_extension = "isaacsim.ros2.bridge"
- 将其修改为:
isaac.startup.ros_bridge_extension = ""即可禁用 ROS 2 桥接器。
- 保存,关闭文件。