宇树机器人对接Python-语音识别(ASR)和文字转语音(TTS)

前言

SDK地址

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

上位机连接

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

高层运动

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

工单

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

高层运动服务接口的主要功能为机器人整机控制和上肢控制。

  • 整机控制可以控制机器人的模式切换与移动,提供 RPC 接口;

  • 上肢控制可以在运行机器人内置移动控制器的同时,单独控制上肢电机完成操作任务,提供 DDS 接口。

注意

DDS 接口支持上肢控制,仅能在锁定站立、运控 1 与运控 2 中使用。

整机控制

模式介绍

模式ID说明

ID 模式 备注
0 零力矩 无平衡控制
1 阻尼 无平衡控制
2 位控下蹲 无平衡控制
3 位控落座 无平衡控制
4 锁定站立 无平衡控制
706 站立 => 下蹲 有平衡控制 (也需要人员搀扶)
702 躺 => 站立 有平衡控制
500 常规运控 有平衡控制
501 常规运控-3Dof-waist -
801 走跑运控 有平衡控制

这里测试的G1 EDU版不能切换到501。

运动切换到500和801都没问题。

零力矩

零力矩模式(Zero Torque Mode)是机器人、机械臂等自动化设备运行中的一种特殊工作模式,在该模式下设备的关节或执行机构理论上不产生抵抗外部作用力的力矩。

  • 外力可自由驱动:这是零力矩模式最显著的特点。操作人员可以像操作没有动力的机械结构一样,轻松地用手推动或转动机器人的各个关节,使其达到任意位置和姿态。

  • 位置和力反馈仍存在:虽然关节不产生主动力矩,但设备的传感器仍然在工作,会持续反馈当前的位置、速度等信息。

    这些反馈数据可以用于监控和记录外部施加的运动轨迹,也为后续的操作提供基础。

阻尼模式

机器人的阻尼模式是一种特殊的工作模式,它主要是通过在机器人的关节或者运动部件上模拟出类似阻尼力的效果。

  • 运动阻力增加:当操作人员试图移动处于阻尼模式下的机器人时,会明显感觉到有一股阻力在阻碍运动,而且这种阻力会随着运动速度的增加而增大。

  • 自适应调整:阻尼力可以根据机器人的运动状态和外部环境进行自适应调整。

    比如,当机器人受到外部冲击时,阻尼力会自动增大,以减少机器人的晃动和振动。

模式转换

启动到运动

默认是零力矩模式

零力矩(0) => 阻尼(1) => 锁定站立(4) => 常规运控(500)

这样切换,是无效的:

阻尼(1) => 常规运控(500)

运动到零力矩

常规运控(500) => 站到躺 => 阻尼(1) => 零力矩(0)

如果机器人是吊着的 可以直接从常规运控 => 阻尼

这样切换,是无效的:

常规运控(500) => 零力矩(0)

躺倒开机

零力矩(0) => 阻尼(1) => 躺->站(702)(自动进入走跑运控801) => 演示 => 站->蹲(706)

蹲姿开机

零力矩(0) => 阻尼(1) => 蹲->站(706)(自动进入走跑运控801) => 演示 => 站->蹲(706)

座椅开机

零力矩(0) => 阻尼(1) => 锁定站立(4) => 走跑运控(801)=> 演示 => 落座(3)

下蹲到站立

1
2
3
4
5
6
7
if robot_state == 706:
sport_client.SetFsmId(1)
time.sleep(5)
sport_client.SetFsmId(4)
time.sleep(8)
sport_client.SetFsmId(500)
time.sleep(5)