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

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。

相关页面 ​