Skip to content

Revo 2 Adaptation for Unitree G1 (Tutorial)

Integration Tutorial

Robot Initialization

  1. Power on Unitree G1. Refer to the Unitree Support Center | Operation Guide. Upon powering, the status indicator on the back of the dexterous hand will light up, and the fingers will automatically reset.
  2. Wait (approx. 1 minute) for Unitree G1 to enter Zero-torque Mode, characterized by joint movement without resistance.
  3. Using the remote controller, press the designated buttons to transition the robot through: Damping ModeLocked Standing Mode. (Note: Do not enter sports/walk mode for arm development).

Remote Connection

Refer to the Unitree Support Center | Quick Development.

  1. For initial connection, hook up G1 to your computer via Ethernet. Configure your computer's Ethernet IP in the same subnet: 192.168.123.XXX (e.g., 192.168.123.222):
sh
IP          192.168.123.222
Subnet      255.255.255.0
Gateway     192.168.1.1
DNS         192.168.1.1
  1. Open VS Code, install the "Remote - SSH" extension, add a new remote target, and connect:
sh
ssh unitree@192.168.123.164

Enter the password (default: 123). Once connected, open folder /home/unitree/ to access the files.

  1. Open a new terminal, enter 1 (which selects the ROS Foxy environment), and press Enter. To reselect, run source ~/.bashrc.

  2. Wi-Fi Configuration: Refer to Unitree Support Center | FAQ → Jetson Orin NX Wi-Fi configuration → STA mode → nmcli configuration. If the Wi-Fi SSID or password contains special characters, Chinese characters, or spaces, enclose them in double quotes:

sh
nmcli device wifi connect "Your_SSID" password "mypass@123!"

If you encounter a Not authorized error, prefix the command with sudo.

  1. Assign Static IP:
sh
# Show wlan0 device details
nmcli device show wlan0

# Check if the desired IP is occupied
nmap -sn 192.168.13.60
# 'Host seems down' means it is available.

# To assign static IP 192.168.13.60:
sudo nmcli connection modify <SSID> ipv4.method manual \
    ipv4.addresses 192.168.13.60/23 \
    ipv4.gateway 192.168.13.1 \
    ipv4.dns "192.168.13.1 8.8.8.8"

# Reconnect to apply settings
sudo nmcli connection down <SSID> && sudo nmcli connection up <SSID>

Dependency Installation

  1. Install Miniconda. Go to the Miniconda Official Docs, choose Linux OS with ARM64 architecture, and execute the installation commands.
  2. Create a conda environment named g1brainco using Python 3.8:
sh
conda create -n g1brainco python=3.8
conda activate g1brainco
  1. Install dependencies within the active environment:
sh
# For arm motion control
conda install pinocchio -c conda-forge
pip install meshcat
pip install transitions
# For building ROS 2 under conda environment
pip install rospkg
pip install -U colcon-common-extensions
# Additional dependencies
pip install loguru
pip install matplotlib
pip install empy==3.3.2
pip install lark-parser

Install Unitree ROS 2

  1. Refer to Unitree Support Center | ROS 2 Communication to install and build unitree_ros2.
  2. Open ~/unitree_ros2/setup.sh and change "enp3s0" to "eth0":
xml
export CYCLONEDDS_URI='<CycloneDDS><Domain><General><Interfaces>
                            <NetworkInterface name="eth0" priority="default" multicast="default" />
                        </Interfaces></General></Domain></CycloneDDS>'

Install BrainCo Stark SDK

  1. Clone the repository onto the G1 platform:
  • Option 1 (Git Clone):
sh
cd ~
git clone https://github.com/BrainCoTech/unitree-g1-brainco-hand.git
  • Option 2 (Local Upload via SCP):
sh
scp -r unitree-g1-brainco-hand unitree@192.168.XXX.XXX:/home/unitree/
  1. Grant executable permissions:
sh
cd ~/unitree-g1-brainco-hand/brainco_ws 
chmod +x ./launch/launch_trans.sh
chmod +x ./launch/launch_robot.sh

Download Unitree G1 Description Model

Get the description assets from: g1-description Open brainco_ws/src/control_py/control_py/action_pkg/robot_control.py and modify the arm_urdf_path to match the local path.

Configure Stark Dexterous Hands

Open ros2_stark_ws/src/ros2_stark_controller/config/params_v2_double.yaml and adjust the parameters to match your specific setup. Default configurations are recommended:

  • port_l, port_r: Serial port identifiers (e.g., matching the USB-to-RS485 adaptors linked to 485_A and 485_B).
  • baudrate: Serial baud rate.
  • slave_id_l, slave_id_r: Modbus slave IDs (default left: 0x7e, default right: 0x7f).

Build Codebases

sh
# Activate Conda Environment
conda activate g1brainco

# Build brainco_ws
cd ~/unitree-g1-brainco-hand/brainco_ws 
python -m colcon build    

# Build ros2_stark_ws
cd ~/unitree-g1-brainco-hand/ros2_stark_ws
python -m colcon build

Contact & Support

If you have any questions or purchase inquiries, please contact the BrainCo Dexterous Hand Team or submit a support ticket via the Help portal in the top-right corner of the documentation page.