06 调试与标定
成品用户可跳过本页:出厂已逐台完成标定与验证。仅在更换舵机/IMU、重新装盘、换齿, 或升级固件后怀疑标定漂移时,按本页顺序重新做一遍。
本页是装配、烧录、定零之后的整机功能检查与标定,按顺序做完即可投入使用。
调试时的供电:USB 只负责串口数据;
c标定只需要 IMU(舵机可以不上电),t/z/e需要舵机 5 V 有电。若不想让 ESP32 同时接两路电源,可断开 5 V→ESP32 的分支、让 ESP32 只由 USB 供电,5 V 电源继续供舵机——这是正常接法,详见 04 页 4.4。
6.1 打开串口、看遥测
在 SR-Support 目录、已激活 .venv 的终端里打开串口(COM27 换成实际串口):
pio device monitor --rts 0 --dtr 0 -b 115200 -p COM27(串口工具/串口助手(含 Windows UartAssist 下载)见 03 页 3.3。)
打开串口后,如果板子刚上电或按过 RST,会先看到启动日志;没有启动日志时按一下 RST 再看。之后每 250 ms 一行遥测:
IMU version 1.1.2
autorun on: get-up waits for a fall
up -0.01 +0.02 +1.00 | w 0.0 0.0 0.0 | q +0.00 +0.00 | qd 0.0 0.0 | run| 字段 | 含义 | 怎么读 |
|---|---|---|
up | 世界 up 向量在机体坐标下的分量(x 前、y 左、z 上) | 直立 (0,0,1)、tilt≈0°;躺姿见 6.5 表(如 (-1,0,0)=pitch_pos) |
w | 三轴角速度(rad/s) | 静止时≈0;扶正/翻滚时明显非零,跌倒门要求 ` |
q | 当前关节指令角(肩、肘,rad;无位置反馈) | q=0 手臂竖直;肩 + → 大臂向 −Y,肘 + → 小臂向 +X |
qd | 关节指令角速度 | 一般不用看 |
mode | 运行模式 | run / hold / manual / auto |
读数示例(hw_watch 窗口):
up x+0.00 y+0.00 z+1.00 tilt 0.0 # 直立
up x-1.00 y+0.00 z+0.00 # pitch_pos:顶部朝 +X
w +0.0 +0.0 +0.0 rad/s |w| 0.0 # 静止
q sh +0.00 el +0.00 mode hold # 手臂竖直、待命tilt 是 up 向量与竖直方向的夹角(由 up_z 算出),0° 表示完全直立。
数据一直滚动不好看时,用固定刷新窗口(命令照常输入):
python tools/hw_watch.py --port COM27窗口固定显示 up/倾角、角速度、关节角、模式与最后一条事件;在 cmd> 输入命令回车即发送, 事件同时写入 logs/hw_watch.log。跑完整扶正、需要保留每一行时,仍用 pio device monitor 或 tools/hw_monitor.py(后者每 5 秒把摘要写入日志)。
串口命令怎么发:保持监视器打开,直接输入命令并回车(单字符命令不用加引号)。 本页会用到的命令:
c # 陀螺 + 加速度计标定(站立水平、静止)
t # 舵机自检
k # 读两舵机中位脉宽
m 0.5 0 # 手动测试肩方向
i / j # 翻转 IMU X / Y 符号(只在方向相反时用)完整命令表见 03 页 3.4。
快速自检脚本(先关闭上面的串口监视器,避免占用串口):
python tools/hw_check.py --port COM27
python tools/hw_check.py --port COM27 --tilt 8第一条读取 0.6 秒遥测;--tilt 8 期间用手倾斜机器人,会打印 up/角速度范围与倾角变化, 用来确认 IMU 不是卡死或方向接反。
6.2 IMU 检查与标定
c 会做两件事:
- 陀螺零偏:静止采样 200 点(约 2 秒),取平均作为零角速度偏移;仅本次上电有效, 每次重启会自动重标;
- 加速度计零点:同一次采样取平均重力向量,要求机器人水平站立(重力全部在 +Z), 通过合理性检查后写入 NVS(重启自动加载)。
操作(舵机可以不上电):
先按 04 页 4.5 做机械方向自检(肩输出轴朝 IMU −Y、肘输出轴朝 IMU +X);
机器人直立、放在水平桌面,手离开,线不要拉;
在串口监视器或
hw_watch的cmd>里输入c并回车:textc保持静止约 2 秒,看到下面三行即成功:
textgyro bias (rad/s): ... accel bias (m/s^2): ... (saved) calibration done; hold若出现
accel cal rejected: |a|=...:说明没放平或还在动(重力模长偏离 9.8 超过 1.5 m/s²),零点保持不变,重新放稳再发c。
验证:
- 缓慢左右、前后倾斜,
up的 x/y 分量应跟手、无跳变;若方向相反,用i/j翻转 IMU 轴符号后重新c; - 放倒静置 2 秒,
up应与 6.5 的躺姿表一致(如(0,-1,0)= roll_neg)、底座面贴平; - 若躺姿下
up长期偏斜 5° 以上,通常是加速度计零点没标好,重做本节。
成品出厂已标定并写入 NVS,无需重做;仅在更换/重新安装 IMU、或躺姿明显倾斜时执行。
c只标 IMU,不改变舵机零点——舵机零点见 05 页。如果校准前用过手动命令(遥测末尾是
manual),c完成后会停在hold/manual, 跌倒门不会自动扶正;保持机器人直立后发送g恢复运行,或直接复位。
6.3 舵机检查与方向自检
| 检查 | 方法 | 预期 |
|---|---|---|
| 中位脉宽 | 发送 k | centers: shoulder 1681 us, elbow 1456 us(2026-11 视觉中位固化值;以 05 页 重新标定为准) |
| 肩中位微调 | o / p(每次 ±10 µs) | 手臂竖直时 q=0 |
| 方向 | m 0.5 0 / m 0 0.5 | 肩 + 使大臂向 −Y;肘 + 使小臂向 +X |
| 符号翻转 | v(肩)/ b(肘) | 方向反了才用 |
| 自检 | t | 两关节小幅动作后回中 |
| 回中 | m 0 0 或 r | 手臂竖直 |
关节限位(固件):
- 肩:手动命令
[-1.85, +1.82]rad;肘:机械±1.55rad(执行器内部可达); m手动命令的肘部限位为[-0.90, +0.70]rad;- PWM 输出范围 500–2500 µs,50 Hz。
在串口监视器/串口助手的发送框里逐条输入(每条回车发送):
t
k
m 0.5 0
m 0 0.5
m 0 0确认:肩 q>0 → 大臂向 −Y;肘 q>0 → 小臂向 +X; 方向反了用 v / b 翻转,或重装舵盘。
6.4 中位核对
出厂已固化(肩 1681 µs / 肘 1456 µs),成品可跳过。DIY 流程中这一步应已在 05 零点校准 完成并把脉宽固化回 config.h(改过就重烧);这里用 k 核对中位与固化值一致即可。仅当换齿、拆装过手臂,或收臂后不在正中竖直时,才需要回 05 页重新定零并重烧。
6.5 四种躺姿与跌倒门
| 姿态 | 监视器 up | 物理含义 |
|---|---|---|
pitch_pos | (-1, 0, 0) | 机体顶部指向 +X |
pitch_neg | (+1, 0, 0) | 机体顶部指向 −X |
roll_pos | (0, +1, 0) | 机体顶部指向 −Y |
roll_neg | (0, -1, 0) | 机体顶部指向 +Y |
跌倒门条件(固件):
up_z < 0.30 且 |ω| < 0.9 rad/s,连续 25 拍(0.5 s)满足后才会打印 getup start pose=... 并开始扶正。因此把机器人摆成躺姿后需要松手并 保持静止约 0.5 秒;放下后立即乱摆通常是手还在扶着或身体仍在滚动。
验证方法:分别把机器人摆成上表四种姿态,松手静止,观察串口是否在 0.5 秒内出现 getup start pose=<对应姿态>。
6.6 完成标准
- [ ]
c打印accel bias ... (saved); - [ ]
t两关节方向正确; - [ ]
k中位与固化值一致(或已按 05 页重新定零并固化); - [ ] 四个躺姿都能触发
getup start。

