Skip to content

legion1581/unitree_ui

Repository files navigation

Unitree WebRTC UI

A browser-based control interface for Unitree Go2 and Unitree G1 robots, communicating over the same WebRTC connection the official mobile apps use. No jailbreak, no firmware modification, no phone app required.

Built with TypeScript, Three.js, and Vite.

Status Browser License

Supported Robots

Family Firmware
Go2 1.0.19 – 1.0.25, 1.1.1 – 1.1.14 (latest)
G1 1.2.0 – 1.4.5, 1.5.1+ (latest)

Tour

Quick Start

git clone https://github.com/legion1581/unitree_ui.git
cd unitree_ui
npm install
npm run start          # Vite + Python BLE server together
# or:
npm run start:no-ble   # Vite only, no Bluetooth features

npm run start and npm run start:no-ble already bind Vite to all interfaces, so the terminal will print both a Local: (http://localhost:5173) and a Network: (http://192.168.x.x:5173) URL — open the Local one on this machine, the Network one from your phone or another device on the same WiFi. Use Chrome (recommended).

If you want Vite by itself (no BLE backend), npm run dev is localhost-only; npm run dev:host is the LAN-exposed equivalent.

The dev server includes hot module replacement, a built-in UDP multicast scanner (no separate process needed), and proxies for the robot API, Unitree cloud API, and BLE server.

For a production build:

npm run build && npm run preview

Prerequisites

  • Node.js ≥ 18, npm ≥ 9
  • Chrome (Firefox is experimental, Safari untested)
  • A Unitree Go2 or G1 robot

Features

  • Real-time 3D viewport — robot model with live joint angles, lidar spinning animation, voxel point cloud (Go2 SLAM).
  • Camera + dual joystick control — PIP video, on-screen joysticks, action carousel for sport commands and modes.
  • Robot status — battery, motors (temp / position / torque / lost packets), IMU, LiDAR, system info — family-aware fields for Go2 and G1.
  • Service manager — list MCF services, start / stop with protection handling.
  • Account manager — Unitree cloud account: devices, firmware, tutorials, sharing, raw debug API console.
  • 3D LiDAR Mapping (SLAM) — Go2 only: build maps, localize, navigate, patrol, auto-dock and charge; local IndexedDB cache + zip import/export.
  • Bluetooth setup — pair the robot over BLE (V1/V2 for Go2 + G1 < 1.5.1, V3 for G1 ≥ 1.5.1) to configure WiFi without the phone app.
  • BLE remote relay — pair a Unitree BLE remote, forward joystick + buttons to the robot over WebRTC.
  • Dark / light theme — floating toggle, persisted per-browser; the 3D scene adapts on the fly.
  • Connection modes — Local Network (STA-L), Access Point (AP), Remote (TURN through Unitree cloud).
  • Network scanner — UDP multicast auto-discovery, including SN-targeted scan for G1 ≥ 1.5.1.

Documentation

Topic What's covered
Connection Family selection, STA-L / AP / Remote modes, network scan, AES-128 key flow for G1 ≥ 1.5.1
Control View Joysticks, action bar, modes, sport command IDs, BLE remote relay
Robot Status Battery / motor / IMU / system panels for both families
Service Manager MCF service list, protection flag, start/stop
Account Manager Cloud sign-in, devices, tutorials, debug console
Bluetooth Robot provisioning + remote pairing overview
Bluetooth V1/V2 protocol GATT layout for Go2 and G1 < 1.5.1
Bluetooth V3 protocol G1 ≥ 1.5.1 magic-prefix + GCM key exchange
BLE Remote Control Frame layout, axes/buttons mapping, WebRTC relay
SLAM Mapping → Localization → Navigation flow, patrol, auto-dock
LiDAR Point cloud decoding pipeline

Project Structure

src/
  api/              # Unitree cloud API client (account, devices, firmware, …)
  connection/       # WebRTC, local/remote connectors, network scanner
  crypto/           # AES-ECB, RSA, AES-GCM for auth and SDP exchange
  protocol/         # Data channel handler, topics, sport commands
  ui/
    components/     # Action bar, PIP camera, status/services/account pages, nav bar
    scene/          # Three.js scene, robot model, voxel map
  proxy-plugin.ts   # Vite plugin: robot proxy, scanner, cloud API, BLE API proxy
public/
  icons/            # Action and mode SVG icons
  sprites/          # UI sprites and backgrounds
  models/           # Go2.glb / G1.glb 3D models
server/
  ble_server.py     # FastAPI BLE backend (scan, connect, WiFi config)
  scanner.mjs       # Standalone UDP multicast scanner (optional)

Acknowledgements

Big thanks to the TheRoboVerse community.

Support

If you like this project, please consider buying me a coffee:

Buy Me A Coffee

License

MIT

About

A browser-based control interface for the Unitree Go2 and G1

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors