07 自扶正使用与监控
成品出厂前已逐台完成四方向扶正测试。首次使用时建议仍按 7.2 节把四个方向各验证一次, 确认运输后状态正常。
7.1 操作步骤
- 上电时保持机器人直立,等待串口出现
autorun on: get-up waits for a fall; - 把机器人放倒(任意方向),松手并保持静止约 0.5 秒;
- 串口出现
getup start pose=<姿态>后开始自动扶正; - 扶正完成后串口出现
standing -> executor done,执行器回到待命; - 若 14 秒内未完成,串口出现
executor timeout,1.5 秒冷却后跌倒门会再次触发重试。
7.2 四个方向的预期过程
| 姿态 | 机制 | 实机用时 |
|---|---|---|
pitch_neg(顶部朝 −X) | 肘部撑地 + 肩部回摆直接撬起 | ≈3 s |
pitch_pos(顶部朝 +X) | 直接撬起;若收臂时翻向对侧,姿态重规划接 pitch_pos 再扶正 | ≈5–6 s |
roll_pos(顶部朝 −Y) | 肩部大行程直接杠杆扶正 | ≈3 s |
roll_neg(顶部朝 +Y) | 全行程直接按压 → 肘部楔形泵 ×2 → 必要时鞭甩下砸重试;无需翻滚 | ≈2–6 s |
早期固件中
roll_neg需要"滚过顶部 + 姿态重规划"(5–14 秒);现版本已改为与 +Y 侧镜像的 直接按压机制,四方向动作对称、速度接近。若偶尔出现executor re-plan roll_neg -> ...,说明该次按压失败进入了兜底重试,属正常退路。
7.3 执行器逻辑(固件内)
- 每个参考路点 20 拍(0.4 s),线性插值;每拍输出限速 0.08 rad;
- 参考走完后以 0.033 rad/拍把手臂收回中立位;
up_z > 0.95且目标归零持续 50 拍 → 判定完成;- 身体停在另一躺姿轴(
up_z<0.6、|ω|<0.8持续 15 拍)→ 中立回撤后切换新姿态参考,最多 5 次; roll_neg参考带分阶段自适应保持:按压/泵阶段在up_z<0.92时保持(各阶段有上限拍数, 按压 40 / 泵 30 / 泵 30 / 鞭甩 40 / 收尾 90 拍);序列中途站起会立即跳到收臂阶段,避免站好后 再被后续动作打倒。
7.4 监控与日志
bash
python tools/hw_monitor.py COM27(在 SR-Support 目录、已激活 .venv 的终端里运行,见 02 页。 运行前先关闭串口助手/其他监视器;串口工具/串口助手(含 Windows UartAssist 下载)见 03 页 3.3。)
- 持续读取串口,每 5 秒汇总一次遥测,事件与摘要追加到
logs/hw_monitor.log; - 自动记录事件:
getup start、executor re-plan、standing、executor timeout、IMU lost等; - 自动检查舵机越界(肩
[-1.85,+1.82]、肘±1.55),越界时写!! VIOLATION; - 执行器运行期间每 0.2 s 输出轨迹:
text
executor pose=roll_neg ph=3 tick=9 tgt=(2.00,-0.80) up=(0.58,-0.24,-0.77) q=(2.00,-0.80) sw=0| 字段 | 含义 |
|---|---|
pose | 当前参考姿态 |
ph / tick | 当前路点相位 / 相位内拍数 |
tgt | 目标关节角 |
up | 当前 up 向量 |
q | 当前关节指令 |
sw | 已发生的姿态切换次数 |
监控程序打开串口会复位 ESP32;烧录前必须先关闭监控。
7.5 记录与复测
建议每次测试记录:姿态、是否 done、用时、切换次数、是否有越界。日志文件即为记录, 可直接用 logs/hw_monitor.log 的时间戳检索。

