SCS0009 網頁控制
本頁是網頁控制的 SCS0009 序列匯流排版專用說明。通用介面、啟動方式、預設姿態、攝影機遙操作見 網頁控制總覽。
伺服馬達映射
資料來源:AmazingHandControl/hand_logic.py 的 DEFAULT_HAND_SERVOS 與 docs/zh-hans/CONFIG_FORMAT.md。
| 手指 | 右手 ID | 左手 ID |
|---|---|---|
| 無名指 | 5, 6 | 11, 12 |
| 中指 | 3, 4 | 13, 14 |
| 食指 | 1, 2 | 15, 16 |
| 拇指 | 7, 8 | 17, 18 |
兩個伺服馬達共同差動驅動一根手指 ⚠️
每根手指的兩個伺服馬達並排安裝、轉軸在同一條線上,不是「一個伺服馬達管屈伸、一個管側擺」,而是兩個伺服馬達共同驅動同一根手指:
- 兩個伺服馬達同向旋轉 → 手指左右側擺(收展)
- 兩個伺服馬達反向旋轉 → 手指伸直 / 彎曲(屈伸)
- 兩個伺服馬達同時帶有同向和反向分量 → 屈伸與側擺疊加
側擺(同向) 屈伸(反向)
軸1 ↻ 軸2 ↻ 軸1 ↻ 軸2 ↺介面上顯示的是兩個控制軸,不是兩個伺服馬達:
屈伸 = (servo1 + servo2) / 2
側擺 = (servo1 − servo2) / 2反過來,程式把控制軸換算成兩個伺服馬達的目標角度:
servo1 = 屈伸 + 側擺
servo2 = 屈伸 − 側擺這裡的
servo1/servo2是軟體目標角度(偶數 ID 已按反向安裝取反),不是伺服馬達輸出軸的物理方向。判斷兩個伺服馬達在實際機構上是否同向/反向,要看輸出軸,不能直接對比這兩個數值。例:只給側擺
+20時,軟體值為servo1 = +20、servo2 = −20;偶數 ID 再取反後,兩個伺服馬達實際同向旋轉。
「手指張不開 / 合不攏」是側擺控制量為 0,或兩個伺服馬達沒有形成差動 —— 比如剪刀手那種 V 字,靠的是食指側擺 +17、中指側擺 −30(一正一負)。
範圍(統計官方 19 個姿態 + 中位得出):
| 軸 | 範圍 | 說明 |
|---|---|---|
| 屈伸 | −50 ~ +90 | 張開(負) ↔ 握緊(正) |
| 側擺 | −45 ~ +45 | 併攏(負) ↔ 張開(正) |
兩條 ID 約定(錯了會燒伺服馬達或動作反向):
- 奇數 ID 是每根手指的第一個伺服馬達,偶數 ID 是第二個。 兩邊都成立 (左手 11/12、13/14… 也是奇偶交替)。第二個伺服馬達是反向安裝的,換算時要取負。
- 左手 ID 不是 9–16,是 11–18 且按「無名指優先」編號。 按 1-8 順延接一定錯。
物理方向與中位:從右往左數,右邊奇數、左邊偶數。右手中位順序(raw 0–1023)451,571,451,571,451,571,451,571;左手 571,451,571,451,571,451,571,451。

換算公式
與 AmazingHandControl 的 apply_pose() 完全一致(已逐姿態比對驗證):
1) mirror_pose 為真時,先交換每根手指兩個伺服馬達的值
2) servo_deg = (ID 奇數 ? +1 : -1) × (姿態值 − angle_offset_deg)| 手 | angle_offset_deg | mirror_pose |
|---|---|---|
| 右手 | 0 | 是 ⚠️ |
| 左手 | -35.16 | 是 |
-35.16° 是左手伺服馬達臂相對右手錯開半格的物理差值,由官方設定實測得出。
關於
mirror_pose—— 本機與官方不同官方參考件只有左手是
true。本機右手模組的伺服馬達對也是反裝的,所以右手同樣設成true。這個交換在數學上只翻側擺、不動屈伸:
base = (a+b)/2交換後不變,side = (a−b)/2變號。 所以「某隻手的側擺整體反了」時,第一個要看的就是這個開關。
姿態陣列固定 8 個值,順序 [無名指, 中指, 食指, 拇指],每根手指 2 個值 —— 與官方 data/hand_config.yaml 逐位元組一致,方便對照。
實測換算結果
| 姿態 | 右手 | 左手 |
|---|---|---|
open [-35]*8 | ID5 −35 / ID6 +35 | ID11 +0.16 / ID12 −0.16 |
close [75]*8 | ID5 +75 / ID6 −75 | ID11 +110.16 / ID12 −110.16 |
中位 [-17.578]*8 | ID5 −17.58 / ID6 +17.58 | ID11 +17.58 / ID12 −17.58 |
注意左手
close需要 ±110.16°,比右手大一截。所以config.json的限位放到 ±120°(SCS0009 滿量程約 ±150°)。限位設成 ±90 會把左手的握拳削掉。
SCS0009 常見問題
動作方向反了 → 檢查接線是否按「奇數 ID 在前」;左手還要確認 angle_offset_deg = -35.16。
左手握拳幅度不夠 / 伺服馬達叫 → 限位可能還是 ±90,檢查 config.json 裡是否已放到 ±120。
手指不動 / 報「需要 N 個馬達偵測到 M 個」 → 執行 tools/scan_servos.py;左手 ID 最容易接錯。
中位不對 → 中位值 -17.578125 由官方 raw 451/571 換算而來;按自己的機械裝配標定就改 config.json 的 middle.positions。

