跳转至

Unitree G1

Unitree G1 locomanipulation demo

Unitree G1 人形机器人现已在 LeRobot 中得到支持!您可以进行遥操作、训练移动操作策略、在仿真中测试等。支持 29 和 23 自由度两种变体。


第一部分:入门

安装 Unitree SDK

按照 unitree_sdk2_python 安装指南进行操作。已使用 unitree_sdk2py==1.0.1cyclonedds==0.10.2 进行测试:

conda create -y -n lerobot python=3.12
conda activate lerobot
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip install -e .
cd ..

安装 LeRobot

conda install ffmpeg -c conda-forge
conda install -c conda-forge "pinocchio>=3.0.0,<4.0.0"
git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e '.[unitree_g1]'

Tip

目前,pinocchio 必须从 conda-forge(而非 pip)安装,以包含手臂逆运动学所需的 CasADi 绑定。

测试安装(仿真)

仿真环境有其自己的依赖项。检查仿真环境依赖项:Unitree G1 Mujoco EnvHub

pip install mujoco loguru msgpack msgpack-numpy
lerobot-teleoperate \
  --robot.type=unitree_g1 \
  --robot.is_simulation=true \
  --teleop.type=unitree_g1 \
  --teleop.id=wbc_unitree \
  --robot.cameras='{"global_view": {"type": "zmq", "server_address": "localhost", "port": 5555, "camera_name": "head_camera", "width": 640, "height": 480, "fps": 30, "warmup_s": 5}}' \
  --display_data=true \
  --robot.controller=GrootLocomotionController

这将为 G1 启动一个 MuJoCo 仿真实例。您可以在启动前将游戏手柄连接到您的机器,以便在仿真中控制机器人的移动。我们通过 --robot.controller 支持 HolosomaLocomotionControllerGrootLocomotionController

  • 9 释放机器人
  • 7 / 8 增加/减少腰部高度

连接到物理机器人

G1 的以太网 IP 固定为 192.168.123.164。您的机器必须在同一子网上具有静态 IP:192.168.123.x,其中 x ≠ 164

# 将 'enp131s0' 替换为您的以太网接口名称(使用 `ip a` 检查)
sudo ip addr flush dev enp131s0
sudo ip addr add 192.168.123.200/24 dev enp131s0
sudo ip link set enp131s0 up

SSH 进入机器人

ssh unitree@192.168.123.164
# 密码:123

通过以太网共享互联网

G1 需要互联网访问来克隆仓库和安装软件包。通过以太网共享您的笔记本电脑的连接:

在您的笔记本电脑上:

sudo sysctl -w net.ipv4.ip_forward=1

# 将 wlp132s0f0 替换为您的 WiFi 接口名称
sudo iptables -t nat -A POSTROUTING -o wlp132s0f0 -s 192.168.123.0/24 -j MASQUERADE
sudo iptables -A FORWARD -i wlp132s0f0 -o enp131s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i enp131s0 -o wlp132s0f0 -j ACCEPT

在 G1 上:

sudo ip route del default 2>/dev/null || true
sudo ip route add default via 192.168.123.200 dev eth0
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

# 验证
ping -c 3 8.8.8.8

在 G1 上安装 Unitree SDK

按照 unitree_sdk2_python 安装指南进行操作:

conda create -y -n lerobot python=3.12
conda activate lerobot
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
python -m pip install -e .
cd ..

在 G1 上安装 LeRobot

git clone https://github.com/huggingface/lerobot.git
cd lerobot
conda install -c conda-forge "pinocchio>=3.0.0,<4.0.0"
python -m pip install -e '.[unitree_g1]'

Tip

目前,pinocchio 必须从 conda-forge(而非 pip)安装,以包含手臂逆运动学所需的 CasADi 绑定。

(可选)在机器人上启用 WiFi

要进行无线 SSH 访问,您可以在 G1 上启用 WiFi(默认情况下被阻止):

sudo rfkill unblock all
sudo ip link set wlan0 up
sudo nmcli radio wifi on
sudo nmcli device set wlan0 managed yes
sudo systemctl restart NetworkManager

连接到 WiFi 网络:

nmcli device wifi list

sudo nmcli connection add type wifi ifname wlan0 con-name "YourNetwork" ssid "YourNetwork"
sudo nmcli connection modify "YourNetwork" wifi-sec.key-mgmt wpa-psk
sudo nmcli connection modify "YourNetwork" wifi-sec.psk "YourPassword"
sudo nmcli connection modify "YourNetwork" connection.autoconnect yes
sudo nmcli connection up "YourNetwork"

ip a show wlan0

然后您可以通过 WiFi 而不是以太网进行 SSH:

ssh unitree@<ROBOT_WIFI_IP>
# 密码:123

第二部分:遥操作和移动

运行机器人服务器

在机器人上(从 ~/lerobot):

cd ~/lerobot
python src/lerobot/robots/unitree_g1/run_g1_server.py --camera

运行移动策略

您可以通过以太网、WiFi(实验性)或直接在机器人本身上从笔记本电脑运行遥操作客户端。注意网络引入的潜在延迟。

从您的笔记本电脑:

lerobot-teleoperate \
  --robot.type=unitree_g1 \
  --robot.is_simulation=false \
  --robot.robot_ip=<ROBOT_IP> \
  --teleop.type=unitree_g1 \
  --teleop.id=wbc_unitree \
  --robot.cameras='{"global_view": {"type": "zmq", "server_address": "<ROBOT_IP>", "port": 5555, "camera_name": "head_camera", "width": 640, "height": 480, "fps": 30}}' \
  --display_data=true \
  --robot.controller=HolosomaLocomotionController

我们通过 --robot.controller 支持 GrootLocomotionControllerHolosomaLocomotionController


第三部分:使用 Homunculus 外骨骼进行移动操作

我们通过 Homunculus 外骨骼提供移动操作解决方案——一个用于全身控制的开源 7 自由度外骨骼。在此处查看。

校准

lerobot-calibrate \
  --teleop.type=unitree_g1 \
  --teleop.left_arm_config.port=/dev/ttyACM1 \
  --teleop.right_arm_config.port=/dev/ttyACM0 \
  --teleop.id=exo

在校准期间,将每个关节移动通过其整个范围。拟合后,将关节移动到中性位置并按 n 前进。

记录数据集

lerobot-record \
  --robot.type=unitree_g1 \
  --robot.is_simulation=true \
  --robot.cameras='{"global_view": {"type": "zmq", "server_address": "localhost", "port": 5555, "camera_name": "head_camera", "width": 640, "height": 480, "fps": 30}}' \
  --teleop.type=unitree_g1 \
  --teleop.left_arm_config.port=/dev/ttyACM1 \
  --teleop.right_arm_config.port=/dev/ttyACM0 \
  --teleop.id=exo \
  --dataset.repo_id=your-username/dataset-name \
  --dataset.single_task="Test" \
  --dataset.num_episodes=2 \
  --dataset.episode_time_s=5 \
  --dataset.reset_time_s=5 \
  --dataset.push_to_hub=true \
  --dataset.streaming_encoding=true \
  --dataset.encoder_threads=2

注意: 如果您只使用操纵杆,请省略 --teleop.left_arm_config.port--teleop.right_arm_config.port

示例数据集:nepyope/unitree_box_move_blue_full


第四部分:训练和推理

训练

python src/lerobot/scripts/lerobot_train.py \
  --dataset.repo_id=your-username/dataset-name  \
  --policy.type=pi05 \
  --output_dir=./outputs/pi05_training \
  --job_name=pi05_training \
  --policy.repo_id=your-username/your-repo-id \
  --policy.pretrained_path=lerobot/pi05_base \
  --policy.compile_model=true \
  --policy.gradient_checkpointing=true \
  --wandb.enable=true \
  --policy.dtype=bfloat16 \
  --policy.freeze_vision_encoder=false \
  --policy.train_expert_only=false \
  --steps=3000 \
  --policy.device=cuda \
  --batch_size=32

使用 RTC 进行推理

训练完成后,我们建议使用推理时 RTC 部署策略:

lerobot-rollout \
  --strategy.type=base \
  --policy.path=your-username/your-repo-id \
  --policy.device=cuda \
  --robot.type=unitree_g1 \
  --robot.is_simulation=false \
  --robot.controller=HolosomaLocomotionController \
  --robot.cameras='{"global_view": {"type": "zmq", "server_address": "<ROBOT_IP>", "port": 5555, "camera_name": "head_camera", "width": 640, "height": 480, "fps": 30}}' \
  --task="task_description" \
  --duration=1000 \
  --fps=30 \
  --inference.type=rtc

其他资源


最后更新:2026 年 3 月