- Unitree G1 EDU (need SDK/SSH access)
- Laptop/Desktop with Ubuntu 22.04/24.04 with CUDA GPU (recommended), or macOS (experimental)
- Plug an Ethernet cable from the robot into your Laptop
- Open up your Laptop's graphical network manager, manually set the IP addr of your system to
192.168.123.100 - Run wired ssh command:
ssh -L 3030:localhost:3030 unitree@192.168.123.164
# Password: 123After ssh-ing in, find additional IPs:
hostname -IThe second address allows SSH after disconnecting Ethernet.
WiFi passwords (varies by unit): 888888888 or 00000000
Common interface names needed for SDK examples:
eth0/enp2s0— Ethernetwlan0— WiFi
Check with: ip addr show
Recommended to setup tailscale to avoid needing to setup rounter specific configuraions for wireless control.
SSH into the robot, then:
# pick the "developer" setup
bash <(curl -fsSL https://pub-4767fdd15e6a41b6b2ce2558d71ec8d9.r2.dev/install.sh)DimOS handles DDS setup automatically. If you're using the Unitree SDK directly, set:
export CYCLONEDDS_HOME="$HOME/cyclonedds/install"WARNING: You need to have the G1 in a good physical position before running this.
Get the hand-held controller for the G1.
Note: this button combination may vary based on the model of the G1
- If you have a gantry, hang the robot up where its feet are touching the floor, knees straight.
- Press L2 + B (no movement, color change)
- Press L2 + Up (should straighten out)
- Press R2 + A (will attempt to self-balance)
- If don't have a gantry, there is a make-shift way to get it working. You should get a second person to help.
- Make the robot lie down flat on the ground
- Press L2 + B (no movement, color change)
- Press L2 + Up (should straighten out)
- The robot will be super stiff now. Manually pick it up into a standing position and hold it there.
- Press R2 + A (will attempt to self-balance)
In the ssh terminal ssh -L 3030:localhost:3030 unitree@192.168.123.164
source .venv/bin/activate
uv run dimos --rerun-host 0.0.0.0 run unitree-g1-nav-onboard
# should print out something like:
# ============================================================
# Rerun gRPC server running (no viewer opened)
#
# Connect a viewer:
# dimos-viewer --connect rerun+http://0.0.0.0:9877/proxy --ws-url ws://0.0.0.0:3030/ws
# dimos-viewer --connect rerun+http://192.168.123.164:9877/proxy --ws-url ws://192.168.123.164:3030/ws # eth0
# dimos-viewer --connect rerun+http://100.88.236.73:9877/proxy --ws-url ws://100.88.236.73:3030/ws # tailscale0
# dimos-viewer --connect rerun+http://10.0.0.197:9877/proxy --ws-url ws://10.0.0.197:3030/ws # wlan0
# dimos-viewer --connect rerun+http://172.17.0.1:9877/proxy --ws-url ws://172.17.0.1:3030/ws # docker0
#
# hostname: ubuntu
# ============================================================On your laptop:
# install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv --python "3.12"
# use uv to get the dimos viewer
uvx dimos-viewer --version
# run the connect command. NOTE: the address will be different for you
uvx dimos-viewer --connect rerun+http://100.88.236.73:9877/proxy --ws-url ws://100.88.236.73:3030/wsThe viewer should open up. It'll run in faster-than-real speed until its caught up with reality, then should show what's happening in real time.
This usually means port 3030 wasn't forwarded. The 3030:localhost:3030 in the ssh command is what forwards the port. If you use VS Code with the SSH plugin, ports will be forwarded automatically. However sometimes the auto-forward will map 3030 to 3031 - thus breaking the connect command. Clear whatever is on port 3030 (on the G1 sid and the Laptop) then try again.
If the viewer keeps crashing for you, there are two options for now:
- On the G1 (ssh connection) change
vis_throttle=0.5(insidedimos/robot/unitree/g1/blueprints/navigation/unitree_g1_nav_onboard.py) to a lower number, like 0.3 or 0.2 - Get more RAM