🧪 新教程持续更新中 · 从机械臂到传感器,跟着教程从零搭建
跳到主要内容

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 操作步骤 ​

  1. 电池 + Type-C 都接上(舵机要有电),在 SR-Support 目录、已激活 .venv 的 终端里运行:

    bash
    python 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)
  2. 用方向键摆臂:↑/↓ = 大臂 ±0.05 rad,←/→ = 小臂 ±0.05 rad (按住 Shift = ±0.20),摆到目测竖直、两臂成一条线;

  3. 按 z,固件打印:

    text
    zero set: shoulder XXXX us, elbow XXXX us (current pose is now q = 0)
  4. 顺手验证:按 n 回中,再小幅摆动后回中,手臂应准确回到刚才的视觉中位。

5.3 固化(确认好用后必做) ​

z 只改内存,重启即恢复旧零点。确认姿态满意后:

  1. 把打印的两个 µs 写回 config.h (SERVO_SHOULDER_CENTER_US / SERVO_CENTER_US);
  2. 把固件 EXEC_REF* 与 training/b_line/getup_reference_b39.py 的全部路点按相同差值平移 (肩/肘各 −Δ rad);
  3. 重新烧录,复测四个方向(07 页)。

误按 z 没有破坏性:重新摆好再按一遍即可覆盖。

5.4 相关命令 ​

命令作用
z当前姿态设为两关节 q=0,打印新中位脉宽(仅内存)
k读取当前中位脉宽(肩/肘 µs)
o / p肩中位 ±10 µs 运行时微调(重启恢复)

← 返回教程目录