前言
仿真器仓库地址
https://github.com/unitreerobotics/unitree_mujoco
SDK地址
https://support.unitree.com/home/zh/G1_developer/sdk_overview
https://github.com/unitreerobotics/unitree_sdk2_python
上位机连接
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 | 
安装宇树SDK
https://github.com/unitreerobotics/unitree_sdk2_python
方式1
| 1 | pip3 install unitree_sdk2py | 
方式2 源码安装
克隆SDK项目
| 1 | git clone https://github.com/unitreerobotics/unitree_sdk2_python.git | 
报错
Error when
pip3 install -e .:
| 1 | Could not locate cyclonedds. Try to set CYCLONEDDS_HOME or CMAKE_PREFIX_PATH | 
This error mentions that the cyclonedds path could not be found.
编译安装cyclonedds:
| 1 | git clone https://github.com/eclipse-cyclonedds/cyclonedds | 
Enter the unitree_sdk2_python directory,
set CYCLONEDDS_HOME to the path of the cyclonedds you just compiled, 
and then install unitree_sdk2_python.
| 1 | cd ~/unitree_sdk2_python | 
mujoco-python
| 1 | pip3 install mujoco | 
joystick
| 1 | pip3 install pygame | 
验证安装情况
| 1 | pip3 list | 
测试
| 1 | cd ./simulate_python | 
在新终端运行
| 1 | cd ./simulate_python | 
程序会输出机器人在仿真器中的姿态和位置信息,同时机器人的每个电机都会持续输出 1Nm 的转矩。
| 1 | cd ./simulate_python | 
虚拟环境
安装
安装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 | 
测试
| 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,不能使用命令行操作。