机器人移动与步态控制接口
KUAVO SDK 提供了全面的机器人移动和步态控制接口,支持多种运动模式和步态切换。这些接口被封装在 KuavoRobot
类中,为开发者提供简单直观的调用方式。
步态状态说明
机器人支持以下步态状态:
- stance: 站立状态
- walk: 行走状态
- trot: 小跑状态
- custom_gait: 自定义步态状态
- command_pose_world: 世界坐标系下的位姿控制状态
- command_pose: 机器人坐标系下的位姿控制状态
状态转换规则:
- stance <-> walk
- stance <-> trot
- stance <-> custom_gait
- stance <-> command_pose_world
- stance <-> command_pose
基础移动接口
walk
函数名 | 函数原型 |
---|---|
功能概述 | 控制机器人连续行走 |
参数 | |
linear_x | float : x轴方向线速度,范围 [-0.4, 0.4] m/s |
linear_y | float : y轴方向线速度,范围 [-0.2, 0.2] m/s |
angular_z | float : z轴角速度,范围 [-0.4, 0.4] rad/s |
返回值 | bool : 控制成功返回 True ,失败返回 False |
注意 | 1. 调用前机器人必须处于walk状态 2. 停止行走时建议先减速再停止 |
step_by_step
函数名 | 函数原型 |
---|---|
功能概述 | 控制机器人单步行走到目标位置 |
参数 | |
target_pose | list : 目标位姿 [x, y, z, yaw] (单位:米, 弧度) |
dt | float : 每步时间间隔,默认 0.4 秒 |
is_left_first_default | bool : 是否左脚先迈步,默认 True |
collision_check | bool : 是否进行碰撞检查,默认 True |
返回值 | bool : 控制成功返回 True ,失败返回 False |
注意 | 1. 确保目标位置安全可达 2. 建议开启碰撞检查 3. 目标位姿必须包含4个元素 |
control_command_pose
函数名 | 函数原型 |
---|---|
功能概述 | 在机器人坐标系下控制机器人位姿 |
参数 | |
target_pose_x | float : x方向位置(米) |
target_pose_y | float : y方向位置(米) |
target_pose_z | float : z方向位置(米) |
target_pose_yaw | float : 偏航角(弧度) |
返回值 | bool : 控制成功返回 True ,失败返回 False |
control_command_pose_world
函数名 | 函数原型 |
---|---|
功能概述 | 在世界坐标系下控制机器人位姿 |
参数 | |
target_pose_x | float : x方向位置(米) |
target_pose_y | float : y方向位置(米) |
target_pose_z | float : z方向位置(米) |
target_pose_yaw | float : 偏航角(弧度) |
返回值 | bool : 控制成功返回 True ,失败返回 False |
步态模式接口
stance
函数名 | 函数原型 |
---|---|
功能概述 | 使机器人进入站立模式 |
返回值 | bool : 切换成功返回 True ,失败返回 False |
注意 | 1. 可调用 KuavoRobotState.wait_for_stance() 等待进入站立模式2. 从walk状态切换时会先减速再停止 |
trot
函数名 | 函数原型 |
---|---|
功能概述 | 使机器人进入小跑步态 |
返回值 | bool : 切换成功返回 True ,失败返回 False |
注意 | 可调用 KuavoRobotState.wait_for_trot() 等待进入小跑模式 |
stop
函数名 | 函数原型 |
---|---|
功能概述 | 停止机器人所有运动 |
返回值 | bool : 控制成功返回 True ,失败返回 False |
注意 | 1. 紧急情况下应立即调用此函数停止机器人 2. 从walk状态停止时会先减速再停止 |
squat
函数名 | 函数原型 |
---|---|
功能概述 | 控制机器人下蹲高度和俯仰角 |
参数 | |
height | float : 相对于正常站立高度的偏移量(单位:米),范围 [-0.3, 0.0] |
pitch | float : 躯干俯仰角(单位:弧度),范围 [-0.4, 0.4] |
返回值 | bool : 控制成功返回 True ,失败返回 False |
详细示例请参考SDK示例代码:
速度控制: <kuavo-ros-opensource>/src/kuavo_humanoid_websocket_sdk/examples/atomic_skills/motion_example.py
演示如何通过SDK控制机器人完成多种基础运动,包括站立、行走、转向、下蹲等。
支持前进、后退、原地转向、下蹲等动作,并实时输出位姿信息,适合测试机器人底盘和步态控制能力。
示例代码主要展示以下功能:
基础运动控制:
- 站立:
stance()
控制机器人站立 - 行走:
walk()
控制机器人前进/后退 - 原地转向:通过
walk()
的 angular_z 参数控制机器人原地转向 - 下蹲:
squat()
控制机器人下蹲动作
- 站立:
运动参数设置:
- 线速度:通过调整
walk()
函数的linear_x
和linear_y
参数控制前进/后退和左右移动速度 - 角速度:通过调整
walk()
函数的angular_z
参数控制转向速度
- 线速度:通过调整
运动状态监控:
- 通过
robot_state.odometry
实时获取机器人位置和姿态信息 - 支持等待动作完成后再执行下一个动作
- 按下 Ctrl+C 随时终止运动
- 通过
运动示例:
- 前进8秒,速度0.3m/s
- 后退8秒,速度-0.3m/s
- 原地左转8秒,角速度0.4rad/s
- 原地右转8秒,角速度-0.4rad/s
- 下蹲-0.1m并保持2秒
- 返回原始高度并保持2秒
单步控制: <kuavo-ros-opensource>/src/kuavo_humanoid_websocket_sdk/examples/atomic_skills/step_control_example.py
演示如何通过步进方式控制机器人移动。
使用 step_by_step()
函数实现机器人的精确步进控制。示例代码展示了:
- 确保机器人在站立状态
- 向前步进0.8米
- 等待机器人回到站立状态
- 再次步进0.2米并旋转90度
注意事项:
- 步进控制只能在站立模式下使用
- 每次步进后需要等待机器人回到站立状态
- 可以设置超时时间等待状态转换