高层运动控制服务
约 4242 字大约 14 分钟
2025-01-27
提供机器人系统高层运动控制服务,通过 HighLevelMotionController 可以通过 RPC 通信方式实现对机器人的步态、特技、遥控的控制。
⚠️
接口定义
HighLevelMotionController
是面向语义控制的高层运动控制器,支持如行走、特技等控制操作,封装底层细节以供上层系统调用。
HighLevelMotionController
— 高级运动控制器
项目 | 内容 |
---|---|
类名 | HighLevelMotionController |
功能概述 | 面向语义控制的高层运动控制器,支持行走、特技等控制操作 |
主要功能 | 步态控制、特技执行、摇杆命令发送 |
使用场景 | 机器人高层运动控制、特技表演、遥控操作 |
initialize
项目 | 内容 |
---|---|
方法名 | initialize |
方法声明 | bool initialize() |
功能概述 | 初始化控制器,准备高层控制功能。 |
返回值 | true 表示成功,false 表示失败。 |
备注 | 首次使用前必须调用。 |
shutdown
项目 | 内容 |
---|---|
方法名 | shutdown |
方法声明 | void shutdown() |
功能概述 | 关闭控制器并释放资源。 |
备注 | 配合 initialize 使用。 |
set_gait
项目 | 内容 |
---|---|
方法名 | set_gait |
方法声明 | Status set_gait(GaitMode gait_mode) |
功能概述 | 设置机器人步态模式(如位控站立、力控站立、慢跑等)。 |
参数说明 | gait_mode :步态控制枚举。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口,支持多种步态模式切换。 |
get_gait
项目 | 内容 |
---|---|
方法名 | get_gait |
方法声明 | GaitMode get_gait() |
功能概述 | 获取机器人步态模式(如位控站立、力控站立、慢跑等)。 |
返回值 | 当前步态模式,失败返回 GAIT_NONE 。 |
备注 | 阻塞接口,获取当前步态模式。 |
execute_trick
项目 | 内容 |
---|---|
方法名 | execute_trick |
方法声明 | Status execute_trick(TrickAction trick_action) |
功能概述 | 执行特技动作(如扭屁股、趴下等)。 |
参数说明 | trick_action :特技动作标识。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 阻塞接口,需确保机器人当前处于可执行特技的状态。 |
注意事项: 特技动作必须在 GaitMode::GAIT_STAND_R(1) 位控站立步态下才能执行
send_joystick_command
项目 | 内容 |
---|---|
方法名 | send_joystick_command |
方法声明 | Status send_joystick_command(JoystickCommand command) |
功能概述 | 发送实时摇杆控制指令。 |
参数说明 | command :包含摇杆坐标的控制数据。 |
返回值 | Status::OK 表示成功,其他为失败。 |
备注 | 非阻塞接口,建议发送频率为 20Hz。 |
枚举类型定义
GaitMode
— 步态模式枚举
枚举值 | 数值 | 描述 |
---|---|---|
GAIT_PASSIVE | 0 | 被动模式 |
GAIT_STAND_R | 1 | 位控站立 |
GAIT_STAND_B | 2 | 力控站立 |
GAIT_RUN_FAST | 3 | 快速奔跑 |
GAIT_DOWN_CLIMB_STAIRS | 4 | 下楼梯 |
GAIT_TROT | 5 | 小跑 |
GAIT_PRONK | 6 | 跳跃 |
GAIT_BOUND | 7 | 跳跃前进 |
GAIT_AMBLE | 8 | 漫步 |
GAIT_CRAWL | 9 | 爬行 |
GAIT_LOWLEVL_SDK | 10 | 低级别 SDK 步态 |
GAIT_WALK | 11 | 行走 |
GAIT_UP_CLIMB_STAIRS | 12 | 上楼梯 |
GAIT_RL_TERRAIN | 13 | 强化学习地形 |
GAIT_RL_FALL_RECOVERY | 14 | 强化学习跌倒恢复 |
GAIT_RL_HAND_STAND | 15 | 强化学习手倒立 |
GAIT_RL_FOOT_STAND | 16 | 强化学习脚倒立 |
GAIT_ENTER_RL | 17 | 进入强化学习 |
GAIT_DEFAULT | 18 | 默认步态 |
GAIT_NONE | 19 | 无步态 |
TrickAction
— 特技动作枚举
枚举值 | 数值 | 描述 |
---|---|---|
ACTION_NONE | 0 | 无动作 |
ACTION_WIGGLE_HIP | 1 | 扭屁股 |
ACTION_SWING_BODY | 2 | 摇摆身体 |
ACTION_STRETCH | 3 | 伸展 |
ACTION_STOMP | 4 | 跺脚 |
ACTION_JUMP_JACK | 5 | 开合跳 |
ACTION_SPACE_WALK | 6 | 太空步 |
ACTION_IMITATE | 7 | 模仿 |
ACTION_SHAKE_HEAD | 8 | 摇头 |
ACTION_PUSH_UP | 9 | 俯卧撑 |
ACTION_CHEER_UP | 10 | 加油 |
ACTION_HIGH_FIVES | 11 | 击掌 |
ACTION_SCRATCH | 12 | 抓痒 |
ACTION_HIGH_JUMP | 13 | 高跳 |
ACTION_SWING_DANCE | 14 | 摇摆舞 |
ACTION_LEAP_FROG | 15 | 青蛙跳 |
ACTION_BACK_FLIP | 16 | 后空翻 |
ACTION_FRONT_FLIP | 17 | 前空翻 |
ACTION_SPIN_JUMP_LEFT | 18 | 左旋转跳 |
ACTION_SPIN_JUMP_RIGHT | 19 | 右旋转跳 |
ACTION_JUMP_FRONT | 20 | 前跳 |
ACTION_ACT_CUTE | 21 | 卖萌 |
ACTION_BOXING | 22 | 拳击 |
ACTION_SIDE_SOMERSAULT | 23 | 侧翻 |
ACTION_RANDOM_DANCE | 24 | 随机舞蹈 |
ACTION_LEFT_SIDE_SOMERSAULT | 25 | 左侧翻 |
ACTION_RIGHT_SIDE_SOMERSAULT | 26 | 右侧翻 |
ACTION_DANCE2 | 27 | 舞蹈2 |
ACTION_EMERGENCY_STOP | 28 | 紧急停止 |
ACTION_LIE_DOWN | 29 | 趴下 |
ACTION_RECOVERY_STAND | 30 | 恢复站立 |
ACTION_HAPPY_NEW_YEAR | 31 | 新年快乐 |
ACTION_SLOW_GO_FRONT | 32 | 慢速前进 |
ACTION_SLOW_GO_BACK | 33 | 慢速后退 |
ACTION_BACK_HOME | 34 | 回家 |
ACTION_LEAVE_HOME | 35 | 离家 |
ACTION_TURN_AROUND | 36 | 转身 |
ACTION_DANCE | 37 | 舞蹈 |
ACTION_ROLL_ABOUT | 38 | 翻滚 |
ACTION_SHAKE_RIGHT_HAND | 39 | 摇右手 |
ACTION_SHAKE_LEFT_HAND | 40 | 摇左手 |
ACTION_SIT_DOWN | 41 | 坐下 |
数据结构定义
JoystickCommand
— 摇杆命令结构体
字段名 | 类型 | 描述 |
---|---|---|
left_x_axis | float | 左侧摇杆的 X 轴方向值(-1.0:左,1.0:右) |
left_y_axis | float | 左侧摇杆的 Y 轴方向值(-1.0:下,1.0:上) |
right_x_axis | float | 右侧摇杆的 X 轴方向值(旋转 -1.0:左,1.0:右) |
right_y_axis | float | 右侧摇杆的 Y 轴方向值(暂未定义用途) |
遥控器示意图
- 左右摇杆 x 轴和 y 轴的取值范围为 [-1.0, 1.0];
- 左右摇杆 x 轴和 y 轴的方向上/右为正,如示意图所示;
高层运动控制机器人状态介绍
机器人的运动包含位控站立、力控站立、基础运动、特技动作状态,机器人在运行过程中,通过状态机在不同状态之间进行切换,以实现不同的控制任务。各个状态的解释说明如下:
- 位控站立:在位控站立状态下,可调用 SDK 的各部分接口实现机器人的特技动作和基础运动控制。
- 力控站立:在力控站立状态下,可以用于姿态展示。
- 基础运动:在运动执行过程中,可调用 SDK 接口,让机器人进入不同的步态。
- 特技动作:当进入特殊动作执行状态后,其他运动控制服务会先被挂起,等待当前动作执行完毕并进入平衡站立状态后再生效。
机器人状态切换机制;
高层运动控制接口
机器人的高层运动控制服务可分为基础运动控制和特技动作控制。
- 基础运动控制服务中,可调用相应的接口,根据不同的地形场景和任务需求切换机器人的行走步态。
- 特技动作控制服务中,可调用相应的接口,实现机器人内置的特殊特技,比如扭屁股、趴下等。
步态切换
机器人当前步态 | 步态切换流程 | 示意图 |
---|---|---|
力控站立 | ![]() | ![]() |
慢跑模式 | ![]() | ![]() |
小跑模式 | ![]() | ![]() |
特技执行
机器人特技 | 特技执行流程 | 示意图 |
---|---|---|
扭屁股 | ![]() | ![]() |
伸懒腰 | ![]() | ![]() |
跺脚 | ![]() | ![]() |
开合跳 | ![]() | ![]() |
太空步 | ![]() | ![]() |
摇头 | ![]() | ![]() |
俯卧撑 | ![]() | ![]() |
加油 | ![]() | ![]() |
击掌 | ![]() | ![]() |
挠痒 | ![]() | ![]() |
后空翻 | ![]() | ![]() |
旋转左跳70度 | ![]() | ![]() |
旋转右跳70度 | ![]() | ![]() |
前跳0.5米 | ![]() | ![]() |
打拳 | ![]() | ![]() |
转圈 | ![]() | ![]() |
跳舞 | ![]() | ![]() |
握右手 | ![]() | ![]() |
握左手 | ![]() | ![]() |
坐下 | ![]() | ![]() |