🧪 新教程持續更新中 · 由機械臂到傳感器,跟隨教程從零搭建
跳到主要內容

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 執行時微調(重啟恢復)

← 返回教程目錄