Connect to the Unitree Go2 with WebRTC
Project description
Full Unitree Go2 WebRTC Driver
This repository contains a Python implementation of the WebRTC driver to connect to the Unitree Go2 Robot.
- High level control of the dog through WebRTC (like the Unitree Go app)
- No jailbreak or firmware manipulation required.
- Compatible with Go2 AIR/PRO/EDU models.
Installation
pip install go2-webrtc-connect
For audio and video:
pip install "go2-webrtc-connect[audio,video]"
Supported Firmware Versions
The currently supported Go2 firmware packages are:
- 1.1.1 - 1.1.4 (latest available)
- 1.0.19 - 1.0.25
Use the Unitree Go2 app to check your firmware version.
Audio Support
There is an audio (sendrecv) channel in WebRTC that you can connect to.
This is supported only on Go2 Pro and Edu. Check out the examples in the /examples/audio folder.
- Install
portaudio19-dev.
# On Linux
sudo apt update && sudo apt install portaudio19-dev
# On MacOS
brew update && brew install portaudio19-dev
- Use the
audiooptional dependencies
uv run --extra audio examples/audio/mp3_player/play_mp3.py
Video Support
There is video (recvonly) channel in WebRTC. Use the video optional dependencies for this.
uv run --extra audio examples/audio/mp3_player/play_mp3.py
Lidar support
There is a lidar decoder built in, so you can handle decoded PoinClouds directly. Check out the examples in the /examples/data_channel/lidar folder.
Connection Methods
The driver supports three types of connection methods:
-
AP Mode: Go2 is in AP mode, and the WebRTC client is connected directly to it:
Go2WebRTCConnection(WebRTCConnectionMethod.LocalAP)
-
STA-L Mode: Go2 and the WebRTC client are on the same local network. An IP or Serial number is required:
Go2WebRTCConnection(WebRTCConnectionMethod.LocalSTA, ip="192.168.8.181")
If the IP is unknown, you can specify only the serial number, and the driver will try to find the IP using the special Multicast discovery feature available on Go2:
Go2WebRTCConnection(WebRTCConnectionMethod.LocalSTA, serialNumber="B42D2000XXXXXXXX")
-
STA-T mode: Remote connection through remote Unitrees TURN server. Could control your Go2 even being on the diffrent network. Requires username and pass from Unitree account
Go2WebRTCConnection(WebRTCConnectionMethod.Remote, serialNumber="B42D2000XXXXXXXX", username="email@gmail.com", password="pass")
Multicast scanner
The driver has a built-in Multicast scanner to find the Unitree Go2 on the local network and connect using only the serial number.
Usage
Example programs are located in the /examples directory.
Thanks
A big thank you to TheRoboVerse community! Visit us at TheRoboVerse for more information and support.
Special thanks to the tfoldi WebRTC project and abizovnuralem for adding LiDAR support and MrRobotow for providing a plot LiDAR example.
Support
This project is originally a fork from the repo of legion1581. Please consider buying the author a coffee:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file go2_webrtc_connect-0.2.1.tar.gz.
File metadata
- Download URL: go2_webrtc_connect-0.2.1.tar.gz
- Upload date:
- Size: 31.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fddf74f6e75963af0d0ecf86dfa10fce8d2a11a3f7a46f0f28e686e35b0e058
|
|
| MD5 |
0e537a799aa05ec16aee3cf4676fce9f
|
|
| BLAKE2b-256 |
9e8d482ed17c425360ce755554132220b60d2ff185d2eb84b276d9de45bcea62
|
File details
Details for the file go2_webrtc_connect-0.2.1-py3-none-any.whl.
File metadata
- Download URL: go2_webrtc_connect-0.2.1-py3-none-any.whl
- Upload date:
- Size: 38.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
520f13cee82cd6a74c7de4ec4c3513deab658eff1c92cf03fdf6d28cd8dd03c6
|
|
| MD5 |
32cfeb964066ca16185c3136d123e156
|
|
| BLAKE2b-256 |
f7164f59c951a9d1616e684950067ed874f8ed65d6f0dd3d2dda9ac58a928551
|