/go2_omniverse

Unitree Go2, Unitree G1 support for Nvidia Isaac Lab (Isaac Gym / Isaac Sim)

Primary LanguagePythonBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Digital Twins

Welcome to the Unitree Go2/G1 Digital Twins Project!

IsaacSim Python Linux platform License

We are thrilled to announce that the Unitree Go2/G1 robot has now been integrated with the Nvidia Isaac Sim 4.0 (Isaac Lab), marking a major step forward in robotics research and development. The combination of these two cutting-edge technologies opens up a world of possibilities for creating and testing algorithms in a variety of simulated environments.

Get ready to take your research to the next level with this powerful new resource at your fingertips!

Real time Go2 Balancing:

Go2

Real time G1 Balancing:

Go2

Go2 Ros2 Camera stream:

Go2

URDF real-time joints sync:

Go2

Foot force data stream:

Go2

Real-time RTX lidar stream:

Go2

Custom envs (Office):

Go2

Custom envs (Warehouse):

Go2

VR support:

Go2

Project RoadMap:

  1. PPO balancing algorithm ✅
  2. Keyboard real time control ✅
  3. Camera stream to ROS2 ✅
  4. RTX Lidar stream to ROS2 ✅
  5. IMU data stream to ROS2 ✅
  6. URDF real-time joints sync ✅
  7. Foot force data stream ✅
  8. Real-time control from ROS2 ✅
  9. Nav2 with Slam_toolbox ✅
  10. Bunch of RL-envs for custom dog training ✅
  11. Custom numbers of robots ✅
  12. Added G1 Unitree support ✅

Your feedback and support mean the world to us.

If you're as enthusiastic about this project as we are, please consider giving it a ⭐ star on our GitHub repository.

Your encouragement fuels our passion and helps us develop our RoadMap further. We welcome any help or suggestions you can offer!

Together, let's push the boundaries of what's possible with the Unitree Go2/G1 and ROS2!

System requirements

You need to install:

  1. Ubuntu 22.04
  2. Nvidia Isaac Sim 4.0
  3. Nvidia Isaac Lab
  4. Ros2 Humble

Full instruction:

https://isaac-sim.github.io/IsaacLab/source/setup/installation/binaries_installation.html

Some suggestions:

  1. You need to check nvidia-smi, it should work, before installing Isaac Sim 4.0
  2. You need to install Miniconda and execute: conda config --set auto_activate_base false
  3. Install Omniverse launcher and then install Isaac Sim 4.0.
  4. Create conda env then activate it, also execute ./isaaclab.sh --install Also, you need to install ROS2 on your system and configure it:
https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_ros.html#isaac-sim-app-install-ros

Downloading the code

To start with the local development environment, clone this repo:

git clone https://github.com/abizovnuralem/go2_omniverse/ --recurse-submodules -j8 --depth=1

Setup the Unitree L1 Lidar:

First, you need to copy files from Isaac Sim folder to your local Isaac Sim installation in order to use Unitree L1 lidar inside Orbit.

1. You need to replace original file that located in ~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.sensor/config/extrensiom.toml 
with Isaac_sim/extension.toml in this repo.
2. You need to add Unitree_L1.json to IsaacLab repo folder, where IsaacLab/source/exts/omni.isaac.sensor/data/lidar_configs/Unitree/Unitree_L1.json will be the final path (If it doesnt exists, create it)

Usage

The current project was tested on Ubuntu 22.04, IsaacSim 4.0 with Isaac Lab and Nvidia Driver Version: 545. To start the project with Unitree GO2, execute:

./run_sim.sh

To start the project with Unitree G1, execute:

./run_sim_g1.sh

You can control the dog using "WASD" keyboard commands

ROS2 SDK

You can use https://github.com/abizovnuralem/go2_ros2_sdk as a basement for your ROS2 setup.

Select custom env

To use predifined custom envs, you need to download files from https://drive.google.com/drive/folders/1vVGuO1KIX1K6mD6mBHDZGm9nk2vaRyj3?usp=sharing and place them to /envs folder. Then you can execute it via python main.py --custom_env=office or python main.py --custom_env=warehouse commands (The whole cmd you can read from run_sim script). If you are doing it first time, it will take 2-3 minutes to configure the env. Please, wait.

Development

To contribute or modify the project, refer to these resources for implementing additional features or improving the existing codebase. PRs are welcome!

VR support

To enable VR support on linux will take some time, but it works! I have tested it on:

  1. Ubuntu 22.04
  2. Nvidia drivers are 545.29.06
  3. SteamVR 2.4.4 (IMPORTANT! It should be 2.4.4) and you need to go to Compatibility tab (Inside Steam app) and "Force the use of a specific Steam Play compatibility tool" and switch to "Steam-Play-None", additional info you can find in ALVR github issues tab.
  4. ALVR streamer 20.8.1 + Oculus Quest 2 (client ALVR you can install via SideQuest app) (How to install it: https://github.com/alvr-org/ALVR)
  5. Execute IsaacSim, Go to Window -> Extensions, find STEAMVR INPUT/OUTPUT then enable it and enable AutoLoad. Reopen IsaacSim. Use OpenXR mode.
  6. Enjoy Omniverse in VR mode!

Thanks

Special thanks to Leul Tesfaye for his expertise in Orbit lidars and Tamas @tfoldi for contributing to this project.

License

This project is licensed under the BSD 2-clause License - see the LICENSE file for details.