Isaac Sim

使用 NVIDIA Isaac Sim 运行高保真仿真机器人演示。

使用 FaSim-Isaac 的 ./init.sh 和 ./run.sh。路径和版本写在该仓库配置里 — 不要写死某一个 Isaac 次版本号,也不要发明 CLI 参数。

前提条件

  • 已安装 NVIDIA Isaac Sim 二进制(GPU 及匹配的 NVIDIA 驱动)

  • ROS 2 Jazzy 工作空间

  • 默认 Isaac 目录:ISAACSIM_DIR(除非覆盖,否则为 ~/isaacsim)

步骤

1. Clone FaSim-Isaac

cd ~/
git clone git@github.com:fiveages-sim/FaSim-Isaac.git
cd FaSim-Isaac

2. Initialize

./init.sh

脚本做什么(FaSim README):

  1. 操作 1 — 初始化 .gitmodules / submodules_visibility.conf 中的子模块(默认勾选 public;private 需要权限)。多次运行是追加的。

  2. 操作 2 — 可选 Isaac ROS 2 Jazzy 工作空间:版本菜单查询 GitHub 稳定 tag(回退列表见 config/fa_sim.conf,目前是 6.0.1 / 6.0.0 / 5.1.0)。用 ISAAC_SIM_VERSION=… ./init.sh 覆盖。

3. Start Isaac Sim

./run.sh

脚本做什么:可选 CPU 调频、若 RMW_IMPLEMENTATION=rmw_zenoh_cpp 则可选 Zenoh router,然后是交互菜单 — PhysX / Newton / Headless Streaming。没有 ./run.sh --robot 或 ./run.sh --headless。

路径/版本覆盖:复制 config/fa_sim.local.template.conf → config/fa_sim.local.conf,设置 ISAACSIM_DIR / ISAAC_SIM_DEFAULT_VERSION。环境变量也可以:ISAACSIM_DIR=/path ./run.sh。

4. Launch ROS 2 Side

在新终端中:

source ~/open-deploy-ws/install/setup.bash
ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac

照常在这条 ROS 2 launch 上传 robot:=…。机器人 USD 是在 Isaac 里打开 FaSim robots/(robot_usds)下的资产 — 不是 FaSim run.sh 的参数。

5. Verify Connection

ros2 topic list

Acone 的 hardware:=isaac 使用 topic_based_ros2_control/TopicBasedSystem,话题为 /isaac/joint_command 和 /isaac/joint_states(xacro)。不要期待全栈通用的 /target_pose。

USD 资产

FaSim-Isaac 使用来自 robot_usds 的 USD(Universal Scene Description,通用场景描述)资产:

路径

内容

humanoid/FiveAges/Gen1

Gen1 轮臂 USD

humanoid/FiveAges/Gen2

Gen2 轮臂 USD

humanoid/FiveAges/Gen3

Gen3 轮臂 USD

humanoid/Galbot

Galbot 移动操作臂

humanoid/Ubtech

Ubtech 人形机器人

详见 robot_usds 参考。

环境资产

场景环境从以下位置加载:

  • fiveages-env-usds — 公开环境资产

  • fa-project-usd — 内部项目专用场景(私有)

在 Isaac 中打开场景 USD。没有 ./run.sh --env。

驱动层

hardware:=isaac 使用基于话题的驱动层,把 Isaac Sim 物理接到 ROS 2 control。插件 <param> 名(joint_commands_topic、initialize_commands_from_state 等):topic_based_ros2_control。

验证

  • Isaac Sim 窗口(或 Headless Streaming)已由 ./run.sh 启动

  • 来自 Isaac 的 ROS 2 话题出现在 ros2 topic list 中

  • 机器人响应关节指令

  • 传感器数据(如已配置)发布到 ROS 2

故障排除

Isaac Sim 启动失败

  1. 确认 ISAACSIM_DIR(默认 ~/isaacsim)包含 config/fa_sim.conf 中的启动脚本(isaac-sim.sh、isaac-sim.newton.sh、isaac-sim.streaming.sh)

  2. 若 Isaac 不在 ~/isaacsim,在 config/fa_sim.local.conf 中设置 ISAACSIM_DIR

  3. 验证 GPU 驱动:nvidia-smi

  4. 查看 Isaac Sim 日志:~/.nvidia-omniverse/logs/

没有 ROS 2 话题

  1. 确认 Isaac Sim 中已启用 ROS 2 桥接扩展

  2. 确认 Isaac 与 ROS 2 的 Domain ID 一致

  3. 重启 ./run.sh 和 ROS 2 launch

找不到 USD 资产

再跑 ./init.sh 操作 1,勾选需要的子模块(包括 robots)。

仿真运行缓慢

  • 在 Isaac Sim 设置中降低渲染质量

  • 非可视化测试请用 ./run.sh 菜单的 Headless Streaming

  • 检查 GPU 显存占用

下一步