Skip to content

Simulation of a Unitree Go2 in Isaac Sim using ROS2 for low-level joint control.

License

Notifications You must be signed in to change notification settings

CLeARoboticsLab/go2_isaac_ros2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go2_isaac_ros2

animation

This package allows low-level (or joint-level), ROS2 control of a Unitree Go2 quadruped robot being simulated in Isaac Sim. This package is built on top of IsaacLab. This package is meant to emulate the low-level control mode of the Go2. Here, the robot is controlled by specifying joint position targets and gains to the topic /lowcmd. In low-level control mode, sports mode is disabled, so only low-level readings (like joint angles, joint velocities, IMU, and the raw lidar cloud) are available on the /lowstate and /utlidar/cloud topics.

Tested With Version
Ubuntu 22.04
ROS2 Humble
Isaac Sim 4.5.0

TODO:

Feature
Joint position targets
Joint velocity targets
Joint-level specification of Kp and Kd (proportional and derivative gain)
Joint torque control
Joint state and IMU
Head LiDAR
Front camera
Terrain selection

Installation

First, ensure ROS2 Humble is installed.

It is recommended to install Isaac Lab within a conda / miniconda environment. Create an environment:

conda create -n go2_isaac_ros2 python=3.10
conda activate go2_isaac_ros2

Then install IsaacLab per the their instructions.

Next, create a ROS2 workspace and clone this repository into the src directory:

mkdir -p ~/go2_isaac_ros2_ws/src
cd ~/go2_isaac_ros2_ws/src
git clone https://github.com/CLeARoboticsLab/go2_isaac_ros2.git

You will also need to clone the Unitree ROS2 SDK into the src directory:

cd ~/go2_isaac_ros2_ws/src
git clone https://github.com/unitreerobotics/unitree_ros2.git

Then build the workspace:

cd ~/go2_isaac_ros2_ws
source /opt/ros/humble/setup.bash
colcon build

⚠️ You may have to build the workspace multiple times to resolve all dependencies.

⚠️ This PR is required to use the IMU sensor in Isaac Sim. Ensure this PR has been merged into your clone of Isaac Lab.

Usage

First, start the simulator:

source ~/go2_isaac_ros2_ws/install/setup.bash
conda activate go2_isaac_ros2
ros2 launch go2_isaac_ros2 launch_sim.py

Controlling the robot within Isaac Sim is the same as with hardware. To control the robot, publish unitree_go.msg.LowCmd messages to the /lowcmd topic.

Similarly, to receive observations from the robot, subscribe to the /lowstate and /utlidar/cloud topics.

Note: /clock is also published by this package to allow for time synchronization with the simulator. To synchronize ROS2 with the simulator, be sure to set the use_sim_time: true parameter when launching all nodes.

Acknowledgements

This package was inspired by the go2_omniverse package by @abizovnuralem.

About

Simulation of a Unitree Go2 in Isaac Sim using ROS2 for low-level joint control.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published