跳到主要内容

斜坡交互脚本说明文档

概述

singleStepSlope.py脚本基于单步控制6D接口创建。该控制器使用命令行交互,支持多种步态模式,包括上斜坡、下斜坡、转身、前进、侧移等动作,以及预设的复杂动作序列。

主要功能

1. 基础步态控制

  • 上斜坡:机器人沿斜坡向上行走
  • 下斜坡:机器人沿斜坡向下行走
  • 转身:机器人在原地进行转向动作
  • 前进:机器人向前或向后行走
  • 侧移:机器人向左右侧移动

2. 预设序列

  • 预设序列1:上斜坡 → 前走 → 下斜坡 → 前走 → 转身 → 前走
  • 预设序列2:前走 → 上斜坡 → 下斜坡 → 前走

运行步骤

  1. 启动机器人
    catkin build humanoid_controllers
    source devel/setup.bash(或zsh)
    roslaunch humanoid_controllers load_kuavo_real.launch
  2. 运行控制器:
    python3 ./src/humanoid_control/humanoid_controllers/singleStepSlope-roban.py
  3. 实物使用须知:

运行预设1时第一步执行上斜坡,需先将机器人放置到斜坡前方

运行预设2时会先执行前走,前走距离由参数PRESET_FIRST_FORWARD决定,目前设置为0.3m,可根据需要调节,将机器人调节至稍原一点的位置,使其执行完前走后脚掌前沿离斜坡下沿约1cm,这样上完斜坡后可以正好站在斜坡顶端,踩到边沿的概率减小

使用说明

启动界面

启动后,您将看到以下菜单:

==================================================
简化版6D步态控制器
==================================================
请选择要执行的功能:
┌──────────────────────────────────────────────┐
│ 1. 上斜坡 (slope) │
│ 2. 下斜坡 (downslope) │
│ 3. 转身 (turn) │
│ 4. 前走 (forward) │
│ 5. 横走 (strafe) │
│ 6. 预设1: 预设1: 上斜坡→前走→下斜坡→前走→转身→前走 │
│ 7. 预设2: 前走→上斜坡→前走→下斜坡→前走 │
│ 8. 退出 (quit) │
└──────────────────────────────────────────────┘

功能详解

1. 上斜坡 (slope)

  • 功能:机器人沿指定坡度的斜坡向上行走
  • 参数
    • 距离:0.9m
    • 步长:0.1m
    • 坡度:9°
  • 特点:自动调整躯干姿态,适应坡度,根据当前距离和坡度计算步数,最后一步会恢复姿态

2. 下斜坡 (downslope)

  • 功能:机器人沿指定坡度的斜坡向下行走
  • 参数:与上斜坡相同
  • 特点:特殊处理前几步,确保稳定性

3. 转身 (turn)

  • 功能:机器人在原地进行转向
  • 参数:可自定义转向角度(默认-180°)
  • 方向:正值向左转,负值向右转

4. 前走 (forward)

  • 功能:机器人向前或向后行走
  • 参数:可自定义距离(默认0.2m)
  • 特点:支持负值表示后退

5. 横走 (strafe)

  • 功能:机器人向左右侧移动
  • 参数:可自定义距离(默认0.0m)
  • 方向:正值向左,负值向右

6. 预设序列

  • 完整预设:包含6个动作的复杂序列
  • 简单预设:包含5个动作的简化序列
  • 特点:自动处理动作间的脚切换

参数配置

默认参数

SLOPE_FORWARD_DISTANCE = 0.9    # 斜坡前进距离
SLOPE_STEP_LENGTH = 0.10 # 斜坡步长
UP_SLOPE_ANGLE = 9.0 # 上斜坡角度
DOWN_SLOPE_ANGLE = 6.0 # 下斜坡角度,实物角度为9度,但下坡大角度会导致跺脚
TURN_ANGLE = -180.0 # 转身角度
PRESET_FIRST_FORWARD = 0.4 # 预设第一段前走距离
PRESET_MID_FORWARD = 0.1 # 预设中间前走距离
PRESET_LAST_FORWARD = 0.4 # 预设最后一段前走距离

时间参数

walk_dt = 0.6          # 行走步态周期
walk_ss_time = 0.2 # 行走支撑相时间
slope_dt = 0.7 # 斜坡步态周期
slope_ss_time = 0.3 # 斜坡支撑相时间

技术实现

核心类:SimpleSlopeController

主要方法

  1. plan_move_to_6d():规划6D移动轨迹
  2. plan_continuous_slope_movement():规划连续斜坡运动
  3. plan_turn_movement():规划转身轨迹
  4. plan_forward_movement():规划前进轨迹
  5. publish_trajectory():发布轨迹到ROS话题

消息格式

发布话题

  • 话题名/humanoid_mpc_foot_pose_6d_target_trajectories
  • 消息类型kuavo_msgs/footPose6DTargetTrajectories

消息内容

  • 时间轨迹:每个轨迹点的时间戳
  • 脚索引轨迹:每个时间点的脚索引
  • 脚姿态轨迹:6D脚部姿态序列
  • 摆动高度轨迹:摆动相的高度参数