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。

