宇树机器人对接(仿真器)Python

前言

仿真器仓库地址

https://github.com/unitreerobotics/unitree_mujoco

SDK地址

https://support.unitree.com/home/zh/G1_developer/sdk_overview

上位机连接

https://support.unitree.com/home/zh/G1_developer/quick_development

TTS

https://support.unitree.com/home/zh/G1_developer/VuiClient_Service

工单

https://serviceconsole.unitree.com/#/new-work-order?progress=1

语音唤醒(这个要用手机APP设置WIFI连接,直接使用的,不是开发使用)

https://support.unitree.com/home/zh/G1_developer/voice_assistant_instructions

注意

SDK只支持Ubuntu,版本20.04。

机器人中的PC python版本是3.8.10,所以我们开发过程中最好也用3.8.10。

注意

在仿真器中只能使用底层运动API,不能用高层运动API。

Python仿真器

克隆项目

1
git clone https://github.com/unitreerobotics/unitree_mujoco

进入文件夹中

1
cd unitree_mujoco

虚拟环境

安装pipenv

1
pip install pipenv

Pipfile

1
gedit Pipfile

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "tsinghua"

[packages]
cyclonedds = "0.10.2"
numpy = "*"
opencv-python = "*"
unitree-sdk2py = {file = "unitree_sdk2_python", editable = true}
mujoco = "*"
pygame = "*"

[dev-packages]

[requires]
python_version = "3.8"

安装依赖

1
pipenv install

验证安装情况

1
pipenv run pip list

进入虚拟环境

1
pipenv shell

查看生效的环境

1
which python3

宇树SDK

克隆SDK项目

1
2
3
git clone https://github.com/unitreerobotics/unitree_sdk2_python.git
cd unitree_sdk2_python
pip3 install -e .

安装

1
pipenv install unitree_sdk2py

mujoco-python

1
pipenv install mujoco

joystick

1
pipenv install pygame

验证安装情况

1
pipenv run pip list

测试

1
2
3
pipenv shell
cd ./simulate_python
python3 ./unitree_mujoco.py

在新终端运行

1
2
3
pipenv shell
cd ./simulate_python
python3 ./test/test_unitree_sdk2.py

程序会输出机器人在仿真器中的姿态和位置信息,同时机器人的每个电机都会持续输出 1Nm 的转矩。

1
2
cd ./simulate_python
python3 ./test/gamepad_test.py

相关知识

控制命令

配置机器人的电机控制命令,其中涉及的属性含义如下:

  • mode = 0x01: 0.刹车 1.FOC模式(解锁电机)
  • q = 0.0:一般代表目标位置(位置指令),单位通常是弧度 (rad) 或角度 (°),这里设置为 0 表示目标位置是原点。
  • dq = 0.0:目标速度(速度指令),转子期望转速 rad/s,0 表示目标速度为静止。
  • kp = 0.0:位置环比例增益(Proportional gain),用于调节位置控制的响应速度和稳定性,值越大响应越快但可能震荡。
  • kd = 0.0:速度环比例增益,用于调节速度控制的动态特性,影响系统对速度变化的响应。
  • tau = 0.0:目标力矩(力矩指令),单位通常是牛・米 (N・m),0 表示期望输出力矩为零。

关节说明

序号 名称(英文) 中文名称
0 L_LEG_HIP_PITCH 左髋关节俯仰
1 L_LEG_HIP_ROLL 左髋关节侧倾
2 L_LEG_HIP_YAW 左髋关节旋转
3 L_LEG_KNEE 左膝关节
4 L_LEG_ANKLE_PITCH (L_LEG_ANKLE_B) 左踝关节俯仰(模式 1: 左踝 B)
5 L_LEG_ANKLE_ROLL (L_LEG_ANKLE_A) 左踝关节侧倾(模式 1: 左踝 A)
6 R_LEG_HIP_PITCH 右髋关节俯仰
7 R_LEG_HIP_ROLL 右髋关节侧倾
8 R_LEG_HIP_YAW 右髋关节旋转
9 R_LEG_KNEE 右膝关节
10 R_LEG_ANKLE_PITCH (R_LEG_ANKLE_B) 右踝关节俯仰(模式 1: 右踝 B)
11 R_LEG_ANKLE_ROLL (R_LEG_ANKLE_A) 右踝关节侧倾(模式 1: 右踝 A)
12 WAIST_YAW 腰部旋转
13 WAIST_ROLL (WAIST_A) 腰部侧倾(模式 1: 腰 A)
14 WAIST_PITCH (WAIST_B) 腰部俯仰(模式 1: 腰 B)
15 L_SHOULDER_PITCH 左肩关节俯仰
16 L_SHOULDER_ROLL 左肩关节侧倾
17 L_SHOULDER_YAW 左肩关节旋转
18 L_ELBOW 左肘关节
19 L_WRIST_ROLL 左手腕旋转
20 L_WRIST_PITCH 左手腕俯仰
21 L_WRIST_YAW 左手腕偏航
22 R_SHOULDER_PITCH 右肩关节俯仰
23 R_SHOULDER_ROLL 右肩关节侧倾
24 R_SHOULDER_YAW 右肩关节旋转
25 R_ELBOW 右肘关节
26 R_WRIST_ROLL 右手腕旋转
27 R_WRIST_PITCH 右手腕俯仰
28 R_WRIST_YAW 右手腕偏航

整体说明

  • 腿部关节(0-11):左右腿各 6 个关节,包括髋关节(俯仰、侧倾、旋转)、膝关节和踝关节(俯仰、侧倾)。
  • 腰部关节(12-14):控制机器人上半身的姿态,包括旋转、侧倾和俯仰。
  • 肩部关节(15-24):左右肩各 3 个关节,提供肩部的俯仰、侧倾和旋转。
  • 肘部和腕部关节(25-28):控制手臂末端执行器的位置和姿态。

上位机连接

配置步骤:

设置 => 网络 有线后的+进行添加网络。

机器人机载电脑的 IP 地地址为 192.168.123.161,故需将电脑IP地址设置为与机器人同一网段。

如在 Address 中输入 192.168.123.222

image-20250716115003435

为了测试用户电脑与机器人内置电脑是否正常连接,可在终端中输入

1
ping 192.168.123.161

进行检测,出现下图类似内容即为连接成功。

image-20250716115051744

安装网络工具

1
sudo apt install net-tools

查看 123 网段对应的网卡名字,通过 ifconfig 命令查看 123 网段的网卡名字,如下图所示:

image-20250716114651010

图中 IP 为 192.168.123.222 对应的网卡名字为 enp60s0

用户需要记住此名字,在运行例程时其将会作为必要参数。

远程连接

1
ssh unitree@192.168.123.164

密码123

机器人中有两个PC,IP为

  • pc1:192.168.123.161
  • pc2:192.168.123.164

注意:

我们发送指令是要发送到161上。

我们的程序是要部署在164上。

能提供远程连接和配置的也只有164。

164在配置为wifi的时候只能通过连接屏幕键盘鼠标使用图形化操作设置wifi,不能使用命令行操作。