倒地起身与搬运操作说明
功能概述
倒地起身和搬运模式通过北通遥控器的 LB+RB 组合键操作,互为关联:
- 倒地起身:机器人倒地后,分两步自动起身恢复站立
- 搬运模式:机器人进入搬运姿态后全身电机锁死,可安全抬起移动
倒地起身(LB+RB+X)
机器人从倒地状态恢复到站立,共 5 个阶段:
FALL_DOWN(倒地) → INTERPOLATING(插值) → READY(等待) → STAND_UP(起身) → STANDING(站立)
软起身(从正常状态进入倒地再起身)
| 步骤 | 操作 | 机器人行为 | 前提条件 |
|---|---|---|---|
| 第1按 | LB+RB+X | 自动重启进入倒地状态,然后插值到起身初始姿态 | 未在 MPC 运行态(否则需先 START+BACK 终止) |
| 第2按 | LB+RB+X | 执行起身动作,完成后自动站立 | 机器人已躺平(肚皮法线与重力夹角 < 15°),灵巧手已握拳到位 |
硬起身(搬运 ACTIVE 状态直接起身)
| 操作 | 机器人行为 | 前提条件 |
|---|---|---|
| LB+RB+X | 自动切换倒地起身控制器 → 插值 → 执行起身 → 恢复站立 | 当前在搬运 ACTIVE 状态,机器人已躺平 |
搬运中倒地(ACTIVE B 长按 2s)
| 操作 | 机器人行为 |
|---|---|
| LB+RB+B(按住 ≥2s) | 瘫软倒地,之后走软起身流程恢复 |
传感器保护
为防误操作,以下操作前会检查机器人姿态:
| 操作 | 检查条件 | 拒绝后果 |
|---|---|---|
| 硬起身 | 肚皮法线与重力夹角 < 15° | 提示未躺平,不执行 |
| 软起身第2按 | 肚皮法线与重力夹角 < 15° | 提示未躺平,可重试 |
| 搬运退出 | 躯干直立(< 5°)+ 双脚着地(合力 > 88N) | 提示不满足条件,不退出 |
搬运模式(LB+RB + Y/A/B)
搬运模式分 4 个阶段:
INACTIVE(正常) → INTERPOLATING(插值,~1s) → READY(姿态就绪) → ACTIVE(锁死可搬运) → 退出
按键操作
| 按键 | 阶段 | 操作 | 机器人行为 | 前提条件 |
|---|---|---|---|---|
| LB+RB+Y | INACTIVE | 进入搬运 | 躯干插值到搬运姿态,灵巧手握拳 | 当前为 MPC stance 或 AMP |
| LT+RB+A | READY | 锁定 | 全身关节锁死,进入可搬运状态 | 保护窗已过(进入后 5s),灵巧手已握拳到位 |
| LB+RB+A | READY | 取消 | 移交管理权,恢复原控制器 | — |
| LB+RB+A | ACTIVE | 退出 | 移交管理权,恢复原控制器 | 躯干直立(< 5°)且双脚着地 |
保护机制
- 5 秒保护窗:进入搬运后自动启动,期间禁止除 LT+RB+A 以外的所有操作,防止搬运过程中误触
- 灵巧手握拳:进入搬运时自动握拳,READY→ACTIVE 锁定前必须握拳到位(或超时 2s),保护手指不被夹伤
- 退出门控:ACTIVE 退出时必须机器人已直立且双脚着地,防止悬吊或倒地状态意外退出
搬运中的倒地起身
ACTIVE 状态下可以:
- LB+RB+X:硬起身,自动走完倒地→起身→退出搬运全流程
- LB+RB+B 长按 2s:瘫软倒地,之后走软起身流程
ROS 服务接口
搬运模式
| 服务 | 命令 | 功能 |
|---|---|---|
/humanoid_controller/transport_mode_command | ENTER(1) | 进入搬运(INACTIVE→INTERPOLATING) |
| LOCK(2) | 关节锁死(READY→ACTIVE) | |
| EXIT(3) | 最终退出(HANDING_OVER→INACTIVE,Joy 内部用) | |
| FALL_DOWN(4) | 瘫软倒地,切倒地起身 | |
| HAND_OVER(5) | 移交管理权,退出搬运 |
倒地起身
| 服务 | 命令 | 功能 |
|---|---|---|
/humanoid_controller/fall_stand_command | PREPARE(1) | 插值到起身初始姿态 |
| STAND_UP(2) | 执行 RL 起身轨迹 | |
| RESET(3) | 复位状态机 |
监控话题
| 话题 | 值含义 |
|---|---|
/humanoid_controller/FallStandController/fall_stand_state_ | 0=倒地 1=插值 2=就绪 3=起身中 4=已站立 |
/humanoid_controller/transport_mode_state_ | 0=正常 1=插值 2=就绪 3=锁死 4=退出中 |
/humanoid_controller/is_stance_mode_ | MPC 是否站立(0/1) |
/humanoid_controller/is_rl_controller_ | 是否 RL 控制模式(0/1) |