Skip to main content

Minimum System Requirements

ComponentMinimumGood/RecommendedIdeal
CPUIntel i7 (10th gen) or AMD Ryzen 7-8 cores minimumIntel i9 (12th gen+) or AMD Ryzen 9-12 coresAMD Ryzen 9 7950X or Intel i9-13900K 16+ cores (24+ threads)
RAM16 GB32 GB64 GB
GPUNVIDIA GTX 1660 Ti 6 GB VRAMNVIDIA RTX 3070 or RTX 4060 Ti 8-12 GB VRAMNVIDIA RTX 4080/4090 16+ GB VRAM with CUDA 11.8+
OSUbuntu 22.04Ubuntu 22.04Ubuntu 22.04
It’s ideal to have atleast 128 GB SSD storage for the setup to run smoothly.

Simulation Instructions

The Gazebo simulator is an industry-standard simulator for robots. Robot shapes and sizes are specified via .dae files, and these robots can then navigate a defined digital world. The simulation framework is useful for prototyping, debugging, and reinforcement learning, among many other uses. To get started with Gazebo and Unitree SDK, please install cyclonedds and ROS2 Humble first. Install cyclonedds via https://cyclonedds.io/docs/cyclonedds/latest/installation/installation.html. To install ROS2 Humble, run the following command
sudo apt install ros-humble-desktop-full
This will install ROS, RViz, Gazebo and all the relevant packages. For more details and a better understanding refer. If you don’t have uv installed, use the following command to install it on your system.
curl -LsSf https://astral.sh/uv/install.sh | sh
Use this CycloneDDS configuration. It uses lo as the network interface. We recommend that you export this in your .bashrc or equivalent configuration file cyclonedds.xml. To add it to cyclonedds.xml:
cd cyclonedds
vi cyclonedds.xml
Add the following, then save and exit.
<CycloneDDS>
    <Domain>
        <General>
            <Interfaces>
                <NetworkInterface address="127.0.0.1" priority="default" multicast="default" />
            </Interfaces>
        </General>
        <Discovery>
            <MaxAutoParticipantIndex>200</MaxAutoParticipantIndex>
        </Discovery>
    </Domain>
</CycloneDDS>
To add the config to your bashrc, run:
vim ~/.bashrc
And add the following:
export CYCLONEDDS_URI='
<CycloneDDS>
    <Domain>
        <General>
            <Interfaces>
                <NetworkInterface address="127.0.0.1" priority="default" multicast="default" />
            </Interfaces>
        </General>
        <Discovery>
            <MaxAutoParticipantIndex>200</MaxAutoParticipantIndex>
        </Discovery>
    </Domain>
</CycloneDDS>'
Now run
source ~/.bashrc
This will apply the latest changes in the current shell session. Check if you have rosdep installed by running rosdep or rosdep --version. If it is not installed, run the following:
sudo apt-get update
sudo apt-get install python3-rosdep
Once you’ve successfully completed above steps, follow the following steps to start the gazebo simulation and run OM1 with it. Step 1: Clone the unitree-sdk repository:
git clone https://github.com/OpenMind/unitree-sdk.git
Step 2: Install all the necessary dependencies:
cd unitree-sdk
rosdep init
rosdep install --from-paths . --ignore-src -r -y
uv pip install -r pyproject.toml
Step 3: Build all the packages:
colcon build
Now you should be able to launch the Gazebo Simulator. Step 4: Open a terminal and run:
source install/setup.bash
ros2 launch go2_gazebo_sim go2_launch.py
Step 5: Open a new terminal and run:
source install/setup.bash
ros2 launch go2_sdk sensor_launch.py use_sim:=true
This will bring up the om/path topic, enabling OM1 to understand the surrounding environment. Step 6: Start OM1 Refer to the Installation Guide for detailed instructions.
uv run src/run.py unitree_go2_autonomy_sim
Step 7: Start SLAM mode Open a new terminal and run the following to start the SLAM mode for the robot to start mapping the area. Our Gazebo setup includes auto mapping feature, this will let the robot to generate a 2D map for the area which can then be utilised at later stage to make the robot move from point A to point B.
source install/setup.bash
launch go2_sdk slam_launch.py use_sim:=true
Step 8: Save the map After the SLAM mode is complete, you can save the map by using the following command. Replace <my_map> with the name you prefer for saving the map.
source install/setup.bash
ros2 run nav2_map_server map_saver_cli -f my_map
Step 9: Navigate the robot across the map Once you successfully save the map, you can run the following command in a new terminal to enable navigation. After running the command, simply head over to RViz window and press 2D goal pose. Now click at any new location on the map to make the robot start navigating towards it. Make sure the map name is same as the one you set up in the previous step.
source install/setup.bash
ros2 launch go2_sdk nav2_launch.py use_sim:=true map_yaml_file:=my_map.yaml
Step 10: Teleoperate the robot in simulation You can also use teleoperation to control the robot through your keyboard using the following commands in a new terminal.
source install/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard
Use the keyboard controls displayed in the terminal to move the robot:
i - Move forward
, - Move backward
j - Turn left
l - Turn right
k - Stop
u/o/m/. - Move diagonally
Note: We don’t have auto charging feature supported with Gazebo but it will be launched soon. Stay tuned!