跳到主要内容

机器人移动与步态控制接口

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_xfloat: x轴方向线速度,范围 [-0.4, 0.4] m/s
linear_yfloat: y轴方向线速度,范围 [-0.2, 0.2] m/s
angular_zfloat: z轴角速度,范围 [-0.4, 0.4] rad/s
返回值bool: 控制成功返回 True,失败返回 False
注意1. 调用前机器人必须处于walk状态
2. 停止行走时建议先减速再停止

step_by_step

函数名函数原型
功能概述控制机器人单步行走到目标位置
参数
target_poselist: 目标位姿 [x, y, z, yaw](单位:米, 弧度)
dtfloat: 每步时间间隔,默认 0.4
is_left_first_defaultbool: 是否左脚先迈步,默认 True
collision_checkbool: 是否进行碰撞检查,默认 True
返回值bool: 控制成功返回 True,失败返回 False
注意1. 确保目标位置安全可达
2. 建议开启碰撞检查
3. 目标位姿必须包含4个元素

control_command_pose

函数名函数原型
功能概述在机器人坐标系下控制机器人位姿
参数
target_pose_xfloat: x方向位置(米)
target_pose_yfloat: y方向位置(米)
target_pose_zfloat: z方向位置(米)
target_pose_yawfloat: 偏航角(弧度)
返回值bool: 控制成功返回 True,失败返回 False

control_command_pose_world

函数名函数原型
功能概述在世界坐标系下控制机器人位姿
参数
target_pose_xfloat: x方向位置(米)
target_pose_yfloat: y方向位置(米)
target_pose_zfloat: z方向位置(米)
target_pose_yawfloat: 偏航角(弧度)
返回值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

函数名函数原型
功能概述控制机器人下蹲高度和俯仰角
参数
heightfloat: 相对于正常站立高度的偏移量(单位:米),范围 [-0.3, 0.0]
pitchfloat: 躯干俯仰角(单位:弧度),范围 [-0.4, 0.4]
返回值bool: 控制成功返回 True,失败返回 False

详细示例请参考SDK示例代码:

速度控制: <kuavo-ros-opensource>/src/kuavo_humanoid_websocket_sdk/examples/atomic_skills/motion_example.py

演示如何通过SDK控制机器人完成多种基础运动,包括站立、行走、转向、下蹲等。

支持前进、后退、原地转向、下蹲等动作,并实时输出位姿信息,适合测试机器人底盘和步态控制能力。

示例代码主要展示以下功能:

  1. 基础运动控制:

    • 站立:stance() 控制机器人站立
    • 行走:walk() 控制机器人前进/后退
    • 原地转向:通过 walk() 的 angular_z 参数控制机器人原地转向
    • 下蹲:squat() 控制机器人下蹲动作
  2. 运动参数设置:

    • 线速度:通过调整 walk() 函数的 linear_xlinear_y 参数控制前进/后退和左右移动速度
    • 角速度:通过调整 walk() 函数的 angular_z 参数控制转向速度
  3. 运动状态监控:

    • 通过 robot_state.odometry 实时获取机器人位置和姿态信息
    • 支持等待动作完成后再执行下一个动作
    • 按下 Ctrl+C 随时终止运动
  4. 运动示例:

    • 前进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() 函数实现机器人的精确步进控制。示例代码展示了:

  1. 确保机器人在站立状态
  2. 向前步进0.8米
  3. 等待机器人回到站立状态
  4. 再次步进0.2米并旋转90度

注意事项:

  • 步进控制只能在站立模式下使用
  • 每次步进后需要等待机器人回到站立状态
  • 可以设置超时时间等待状态转换