Isaac Sim¶
Run robot demos with NVIDIA Isaac Sim for high-fidelity simulation.
Use FaSim-Isaac ./init.sh and ./run.sh. Path and version live in that repo’s config; CLI flags are those named in its README.
Prerequisites¶
NVIDIA Isaac Sim binary installed (GPU + matching NVIDIA drivers)
ROS 2 Jazzy workspace
Default Isaac directory:
ISAACSIM_DIR(~/isaacsimunless you override it)
Steps¶
1. Clone FaSim-Isaac¶
cd ~/
git clone git@github.com:fiveages-sim/FaSim-Isaac.git
cd FaSim-Isaac
2. Initialize¶
./init.sh
What the script does (FaSim README):
Operation 1 — initialize submodules listed in
.gitmodules/submodules_visibility.conf(publicselected by default;privateneeds access). Re-runs are additive.Operation 2 — optional Isaac ROS 2 Jazzy workspace: version menu queries GitHub stable tags (fallback list in
config/fa_sim.confcurrently6.0.1/6.0.0/5.1.0). Override withISAAC_SIM_VERSION=… ./init.sh.
3. Start Isaac Sim¶
./run.sh
What the script does: optional CPU governor, optional Zenoh router if RMW_IMPLEMENTATION=rmw_zenoh_cpp, then an interactive menu — PhysX / Newton / Headless Streaming. There is no ./run.sh --robot or ./run.sh --headless.
Path/version overrides: copy config/fa_sim.local.template.conf → config/fa_sim.local.conf and set ISAACSIM_DIR / ISAAC_SIM_DEFAULT_VERSION. Env also works: ISAACSIM_DIR=/path ./run.sh.
4. Launch ROS 2 Side¶
In a new terminal:
source ~/open-deploy-ws/install/setup.bash
ros2 launch ocs2_arm_controller demo.launch.py hardware:=isaac
Pass robot:=… on this ROS 2 launch as usual. Robot USD selection is done by opening the asset under FaSim robots/ (robot_usds) in Isaac — not a FaSim run.sh flag.
5. Verify Connection¶
ros2 topic list
Acone hardware:=isaac uses topic_based_ros2_control/TopicBasedSystem with /isaac/joint_command and /isaac/joint_states (xacro). Do not expect a stack-wide /target_pose.
USD Assets¶
FaSim-Isaac uses USD (Universal Scene Description) assets from robot_usds:
Path |
Content |
|---|---|
|
Gen1 wheeled-arm USD |
|
Gen2 wheeled-arm USD |
|
Gen3 wheeled-arm USD |
|
Galbot mobile manipulator |
|
Ubtech humanoid |
See robot_usds reference for details.
Environment Assets¶
Scene environments are loaded from:
fiveages-env-usds— Public environment assetsfa-project-usd— Internal project-specific scenes (private)
Open the scene USD in Isaac. There is no ./run.sh --env.
Hardware Interface¶
The hardware:=isaac parameter uses the topic-based hardware interface that bridges Isaac Sim physics to ROS 2 control. Plugin <param> names (joint_commands_topic, initialize_commands_from_state, …): topic_based_ros2_control.
Verification¶
Isaac Sim window (or Headless Streaming) is running from
./run.shROS 2 topics from Isaac appear in
ros2 topic listRobot responds to joint commands
Sensor data (if configured) publishes to ROS 2
Troubleshooting¶
Isaac Sim fails to launch¶
Confirm
ISAACSIM_DIR(default~/isaacsim) contains the launch scripts named inconfig/fa_sim.conf(isaac-sim.sh,isaac-sim.newton.sh,isaac-sim.streaming.sh)Set
ISAACSIM_DIRinconfig/fa_sim.local.confif Isaac is not at~/isaacsimVerify GPU drivers:
nvidia-smiCheck Isaac Sim logs in
~/.nvidia-omniverse/logs/
No ROS 2 topics¶
Verify the ROS 2 bridge extension is enabled in Isaac Sim
Check domain ID matches between Isaac and ROS 2
Restart
./run.shand the ROS 2 launch
USD asset not found¶
Re-run ./init.sh operation 1 and select the needed submodules (including robots).
Simulation runs slowly¶
Reduce rendering quality in Isaac Sim settings
Use
./run.shmenu Headless Streaming for non-visual testingCheck GPU memory usage
Next Steps¶
Synthetic Data — datagen pipeline on Isaac (not Gazebo)