前言
仿真器仓库地址
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 | [[source]] |
安装依赖
1 | pipenv install |
验证安装情况
1 | pipenv run pip list |
进入虚拟环境
1 | pipenv shell |
查看生效的环境
1 | which python3 |
宇树SDK
克隆SDK项目
1 | git clone https://github.com/unitreerobotics/unitree_sdk2_python.git |
安装
1 | pipenv install unitree_sdk2py |
mujoco-python
1 | pipenv install mujoco |
joystick
1 | pipenv install pygame |
验证安装情况
1 | pipenv run pip list |
测试
1 | pipenv shell |
在新终端运行
1 | pipenv shell |
程序会输出机器人在仿真器中的姿态和位置信息,同时机器人的每个电机都会持续输出 1Nm 的转矩。
1 | cd ./simulate_python |
相关知识
控制命令
配置机器人的电机控制命令,其中涉及的属性含义如下:
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
。
为了测试用户电脑与机器人内置电脑是否正常连接,可在终端中输入
1 | ping 192.168.123.161 |
进行检测,出现下图类似内容即为连接成功。
安装网络工具
1 | sudo apt install net-tools |
查看 123
网段对应的网卡名字,通过 ifconfig
命令查看 123
网段的网卡名字,如下图所示:
图中 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,不能使用命令行操作。