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

SCS0009 網頁控制 ​

本頁是網頁控制的 SCS0009 序列匯流排版專用說明。通用介面、啟動方式、預設姿態、攝影機遙操作見 網頁控制總覽。

伺服馬達映射 ​

資料來源:AmazingHandControl/hand_logic.py 的 DEFAULT_HAND_SERVOS 與 docs/zh-hans/CONFIG_FORMAT.md。

手指右手 ID左手 ID
無名指5, 611, 12
中指3, 413, 14
食指1, 215, 16
拇指7, 817, 18

兩個伺服馬達共同差動驅動一根手指 ⚠️ ​

每根手指的兩個伺服馬達並排安裝、轉軸在同一條線上,不是「一個伺服馬達管屈伸、一個管側擺」,而是兩個伺服馬達共同驅動同一根手指:

  • 兩個伺服馬達同向旋轉 → 手指左右側擺(收展)
  • 兩個伺服馬達反向旋轉 → 手指伸直 / 彎曲(屈伸)
  • 兩個伺服馬達同時帶有同向和反向分量 → 屈伸與側擺疊加
text
側擺(同向)          屈伸(反向)
軸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 約定(錯了會燒伺服馬達或動作反向):

  1. 奇數 ID 是每根手指的第一個伺服馬達,偶數 ID 是第二個。 兩邊都成立 (左手 11/12、13/14… 也是奇偶交替)。第二個伺服馬達是反向安裝的,換算時要取負。
  2. 左手 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。

Both_Hands-IDs


換算公式 ​

與 AmazingHandControl 的 apply_pose() 完全一致(已逐姿態比對驗證):

1) mirror_pose 為真時,先交換每根手指兩個伺服馬達的值
2) servo_deg = (ID 奇數 ? +1 : -1) × (姿態值 − angle_offset_deg)
手angle_offset_degmirror_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]*8ID5 −35 / ID6 +35ID11 +0.16 / ID12 −0.16
close [75]*8ID5 +75 / ID6 −75ID11 +110.16 / ID12 −110.16
中位 [-17.578]*8ID5 −17.58 / ID6 +17.58ID11 +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。

相關頁面 ​