This edition focuses on integrating Unitree H1 with Isaac Sim on Ubuntu 22.04, specifically using ROS2 Humble and Isaac Sim 4.0.0. This integration enables powerful simulation capabilities for robotics development, bridging the gap between virtual simulation and real-world application.
Documentation
For detailed setup and installation instructions, refer to the following resources:
- Isaac Labs Documentation: A comprehensive guide for setting up Isaac Sim and H1.
First-Time Setup
Getting started with Isaac Sim involves a few critical steps to ensure smooth installation and operation.
Installation Instructions
Step 1: Check Compatibility
Before you begin, review the Nvidia Isaac Sim Compatibility to ensure your hardware and software meet the necessary requirements.
Step 2: Download Omniverse
- Visit Omniverse Downloads to download the Omniverse Launcher.
- Make the launcher executable:
sudo chmod +x omniverse-launcher-linux.AppImage
- Install necessary packages:
sudo apt update && sudo apt install fuse
- Run the launcher by double-clicking the AppImage file.
- Disable IOMMU: (This step is required for some systems. Skip if not needed.)
sudo bash -c 'echo GRUB_CMDLINE_LINUX="amd_iommu=off" >> /etc/default/grub' sudo update-grub sudo reboot
Step 3: Install Components
Using the Omniverse Launcher, install the following essential components:
- Cache
- Nucleus
- Isaac Sim
Step 4: Launch Isaac Sim
After installation, you can launch Isaac Sim from the Omniverse Launcher.
ROS2 Interfacing
ROS2 - Adding Environment Variables
Add the following lines to your .bashrc file to set up the necessary environment variables:
# Isaac Sim ROS Variables
export ROS_DOMAIN_ID=0
export FASTRTPS_DEFAULT_PROFILES_FILE=/home/administrator/issac_sim/fastdds.xml
Install dependencies and build your ROS2 workspace with the following commands:
rosdep install -i --from-path src --rosdistro humble -y
colcon build --symlink-install
source install/setup.bash
ROS2 - Configuration in Isaac Sim
Enable Extensions
- Go to Windows -> Extension Manager.
- Enable the following extensions:
- ROS2 Bridge
- ROS2 Robot Description URDF
Set Up Environment
- Navigate to Create -> Isaac -> Environment -> Grid Room.
ROS2 - Importing the Robot
- Use the URDF Importer:
- Navigate to Isaac Utils -> Workflows -> URDF Importer.
- Add your robot model and configure the settings:
- Ensure base_link is unchecked if it is a mobile robot.
- Check the drive type, usually velocity for wheel-based robots.
- Disable self-collision if URDF limits are correct.
- Select the output directory.
- Play the animation to verify the import and then Stop.
ROS2 - Robot Controller Setup
Set Up Controllers
- Navigate to Isaac Utils -> Common Omnigraph.
- Add the following controllers:
- Articulation Position Controller
- Articulation Velocity Controller
- Select your robot and add it to the controller.
Configure Graphs
- Right-click on Graphs in the Stage and select Open Graphs.
- Modify values in the graphs to reflect changes on the robot.
- Add the following nodes to the graphs:
- On Playback Tick node
- Isaac Read Simulation Time node
-
ROS2 Publish Joint State node
- Connect Tick to Exec In.
- Connect Simulation Time to Timestamp.
-
ROS2 Subscribe Joint State node
- Connect Tick to Exec In.
-
ROS2 Nodes
- Connect Effort Command, Joint Names, Position Command, etc.
Launch Controller
This is available in the qre_h1 package (humble branch) that is available for our customers. However, one can create their own controller to interface with the h1 as all prior steps are open source. Run the following command to put the robot in a lying-down position:
ros2 launch h1_isaac_controller system.launch.py
h1_isaac_controller
is a basic demo for interfacing with the H1 robot via ROS2.
Support
For any issues or further assistance, please visit our forums. The community and experts are there to help you with troubleshooting and advanced configurations. Stay connected for more updates and tutorials!