05 中位零点校准(方向键;DIY 必做)
出厂时零点与 IMU 加速度计零点均已标定并固化(逐台完成,成品可以直接使用、无需本页)。 DIY 组装则必做本页:手动装配后手臂几乎不可能正好落在中位。即使组装时舵盘没有按 固件零点装正,也可以在这里用方向键把手臂摆到目测竖直,按 z 把当前姿态定义为 q=0——z 不依赖 IMU,任意姿态、任意齿位都能定零。
需要重新定零的情况:重新给舵盘换齿、拆卸/重装过手臂、更换舵机、更换/重装 IMU (加速度计零点需重标),或扶正收臂后手臂不在正中竖直。
z只改软件零点,不改变齿位决定的行程分配(PWM 500–2500 µs)。若定零后发现某个 方向行程不够(舵机被 500/2500 µs 限幅、手臂到不了序列所需角度),需要拆下舵盘重新 调整齿位(肩舵机约错开 2 齿),再回来重新定零。
使用时机:整机组装完成并烧录主固件之后(DIY 路径为 03 → 04 → 05)。
5.1 原理
固件约定 q=0 = "手臂竖直、大臂小臂成一条线"的视觉中位。固件命令 z 是编码器式清零: 把当前两关节位置定义成 q=0,并打印对应的 PWM 中位脉宽。
5.2 操作步骤
电池 + Type-C 都接上(舵机要有电),在
SR-Support目录、已激活.venv的 终端里运行:bashpython tools/hw_shoulder_range.py运行前先关闭串口助手/其他监视器(会占用串口);下面界面的按键由这个工具读取, 不需要另开串口助手。串口工具/串口助手(含 Windows UartAssist 下载)见 03 页 3.3。
界面常驻四行、原地刷新:
Up/Dn=BigArm L/R=SmallArm Sh:fast z=SetCenter k=Read n=Home q=Quit SmallArm: +0.000 rad ( +0 deg) BigArm: +0.000 rad ( +0 deg)用方向键摆臂:
↑/↓= 大臂 ±0.05 rad,←/→= 小臂 ±0.05 rad (按住 Shift = ±0.20),摆到目测竖直、两臂成一条线;按
z,固件打印:textzero set: shoulder XXXX us, elbow XXXX us (current pose is now q = 0)顺手验证:按
n回中,再小幅摆动后回中,手臂应准确回到刚才的视觉中位。
5.3 固化(确认好用后必做)
z 只改内存,重启即恢复旧零点。确认姿态满意后:
- 把打印的两个 µs 写回
config.h(SERVO_SHOULDER_CENTER_US/SERVO_CENTER_US); - 把固件
EXEC_REF*与training/b_line/getup_reference_b39.py的全部路点按相同差值平移 (肩/肘各 −Δ rad); - 重新烧录,复测四个方向(07 页)。
误按
z没有破坏性:重新摆好再按一遍即可覆盖。
5.4 相关命令
| 命令 | 作用 |
|---|---|
z | 当前姿态设为两关节 q=0,打印新中位脉宽(仅内存) |
k | 读取当前中位脉宽(肩/肘 µs) |
o / p | 肩中位 ±10 µs 运行时微调(重启恢复) |

