Skip to content

Isaac Sim 作为 Gazebo 替代方案的 ROS2 快速应用指南

注意

本篇内容基于 Isaac Sim 4.5.0 版本。

Ros Bridge Extensions

默认情况下启用 ROS2 Bridge。如果您正在运行 isaac-sim.sh,并希望两个 ROS2 Bridge 或切换到自动加载 ROS2 Bridge,请使用以下步骤:

打开位于~/isaacsim/apps/isaacsim.exp.full.kit文件

找到行 isaac.startup.ros_bridge_extension = "isaacsim.ros2.bridge" 并将其更改为 isaac.startup.ros_bridge_extension = "" 禁用两个桥梁,或 isaac.startup.ros_bridge_extension = "isaacsim.ros1.bridge" 自动加载 ROS1 Bridge

保存并关闭文件。

在 ROS 2 中,默认情况下启用并安装了 Fast DDS。

提示

omni.isaac.ros_bridge 扩展提供了一个连接 isaacsimROS 通信的接口,使得两者可以正常通信,就像gazebo_ros_pkgsROSGazebo 进行通信中所做的事情一样。

USD 和 URDF

在 Isaac Sim,采用一种对于场景或者模型的通用格式 USD(Universal Scene Description,最早由 Pixar 基于可扩展交换的需求提出)。

而 URDF(Unified Robot Description Format)则是由 ROS 社区标准,基于 XML 格式,用于描述机器人模型的一种格式

USD vs URDF 模型格式对比

对比维度USD (Universal Scene Description)URDF (Unified Robot Description Format)
开发背景Pixar 提出 → NVIDIA 扩展ROS 社区标准
文件结构分层组合式场景图(可引用/继承/覆盖)单文件树状结构
物理仿真原生支持 PhysX 5.1 (GPU 加速)依赖 Gazebo 插件 (ODE/Bullet)
材质系统完整 PBR 材质支持 (Metallic/Roughness)仅基础颜色支持
传感器仿真原生激光雷达/相机/IMU 等 20+ 传感器需通过 Gazebo 插件扩展
扩展性支持 Python/C++ 扩展XML 属性扩展
多机器人支持原生实例化支持需手动复制模型
版本兼容向前兼容设计不同 ROS 版本差异较大
协作编辑支持 Omniverse 实时协作单用户编辑
典型工作流URDF → USD 转换 → 场景优化直接使用 URDF + Gazebo 插件
工具链支持Omniverse Composer / Isaac SimRViz / Gazebo
GPU 利用率全流程 GPU 加速 (PhysX/RTX-Render)仅部分物理计算 GPU 加速
示例命令python /isaac-sim/tools/urdf_importer/import_urdf.py --urdf_path robot.urdf<link name="base_link"><inertial>...
优势场景• 复杂工业场景
• 高精度传感器仿真
• 数字孪生
• 快速原型开发
• ROS 原生集成
• 学术研究
局限学习曲线陡峭扩展复杂场景困难
典型文件大小Carter 机器人:15MB (USD)Carter 机器人:2MB (URDF) + 50MB 网格文件
实时调试支持运行时参数热更新需重启仿真

转换工具对照表

功能USD 工具链URDF 工具链
模型检查usdcheckercheck_urdf
可视化编辑Omniverse ComposerBlender-URDF 插件
物理验证PhysX Visual DebuggerGazebo Physics Preview
格式转换omni.isaac.urdf_importer 扩展urdf2webots 等第三方工具

注:Isaac Sim 4.5 推荐工作流:URDF → USD 转换 → 场景增强,兼顾开发效率与仿真性能

ROS Workspace

其中该存储库包含两个工作空间:noetic_ws(Ros Noetic)和 humble_ws(ROS2 Humble),可以根据需要选择其中一个使用。

bash
git clone https://github.com/isaac-sim/IsaacSim-ros_workspaces.git
  • Carter_Navigation:包含 NVIDIA CARTER 机器人所需的启动文件和 ROS 2 导航参数。

  • CMDVEL_TO_ACKERMANN:包含一个脚本文件和启动文件,用于将命令速度消息(Twist MSG 类型)转换为 Ackermann 驱动器消息(AckermannDrivestamped MSG 类型)。

  • Custom_message:包含 NVIDIA CARTER 机器人所需的启动文件和 ROS 2 导航参数。

  • isaac_ros_navigation_goal:用于在 ROS 2 导航中自动设置随机或用户定义的目标姿势。

  • ISAAC_ROS2_MESSAGES:一个自定义的 ROS 2 服务接口,用于检索姿势以及列出 Prims 并操纵其属性。

  • Isaacsim:包含用于运行和启动以 ISAAC SIM 为 ROS2 节点的启动文件和脚本。

  • isaac_tutorials:包含启动文件,rviz2 配置文件和教程系列的脚本。

  • iw_hub_navigation:包含 IW.HUB 机器人所需的启动文件和 ROS 2 导航参数。

bash
cd IsaacSim-ros_workspaces/humble_ws

colcon build --symlink-install

Omni Graph 与 ROS2

您可以使用Omni graph节点在ISAAC SIM中设置一个简单的时钟发布者,如下所示。在 Isaac Sim 中点击播放。

打开一个单独的终端,然后输入命令 ros2 topic echo /clock 就可以看到打印来自 Isaac Sim 的时间戳。

信息

该模块会基于前文中提到的 ROS2 bridge 创建一个名为/clock的发布者,其消息类型为builtin_interfaces/msg/Time