This is a Hardware-in-the-Loop (HIL) workflow that demonstrates how to run ROS2 on an embedded system (Jetson) while running Isaac Lab simulation on a separate machine with a desktop GPU. The workflow consists of three main tasks running simultaneously:
- Discovery Server - A ROS2 Discovery Server that routes messages between the embedded system and simulation machine
- Isaac Lab - A headless Isaac Lab instance running a humanoid robot simulation with livestreaming capability
- Locomotion Policy - A robot controller running on the embedded system that determines the robot's movement by publishing commands and subscribing to robot state
The workflow uses ROS2 Discovery Server to enable communication across different networks/subnets, which is essential when the embedded device and simulation machine are not on the same LAN.
The workflow includes several configuration and script files:
- hil_isaac_lab.yaml - The main OSMO workflow specification file
- setup_discovery_server.sh - Script that resolves discovery server IP and populates the correct environment variable for the discovery server
- install_dependencies.sh - Script that installs dependencies needed for locomotion policy task
curl -O https://raw.githubusercontent.com/NVIDIA/OSMO/main/cookbook/hil/setup_discovery_server.sh
curl -O https://raw.githubusercontent.com/NVIDIA/OSMO/main/cookbook/hil/install_dependencies.sh
curl -O https://raw.githubusercontent.com/NVIDIA/OSMO/main/cookbook/hil/hil_isaac_lab.yaml
osmo workflow submit hil_isaac_lab.yaml