跳至正文

控制器文件与电机配置

已核对 2026-11-01

结果: 为您的手臂准备完整的配置。控制器文件选择端口、电机和工作流程;配置文件设置一台电机的控制参数。这些文件不会取代编码器校准或保存的行程限制。

创建本地文件

对于命名姿势重放,请从示例开始:

macOS / Linux
cp tools/poses/replay.example.json tools/poses/controller.local.json
cp host/arm-control/profile.example.json tools/poses/motor-1.local.json
Windows PowerShell
Copy-Item tools/poses/replay.example.json tools/poses/controller.local.json
Copy-Item host/arm-control/profile.example.json tools/poses/motor-1.local.json

编辑本地副本。示例 controller.local.json 仅包含 电机 1 。添加手臂的所有记录 ID。创建单独的 motor-2.local.json 、 motor-3.local.json 和其他配置文件,每个配置文件都对其联合进行审查。

下面的六电机结构说明了格式,而不是普遍安全的设置。将 /dev/ttyUSB0 替换为实际端口,例如 Windows 上的 COM3。终端的 SERVO_PORT 变量不会自动替换为 JSON 。

{
  "followerPort": "/dev/ttyUSB0",
  "baudRate": 1000000,
  "maxAgeMs": 100,
  "acceleration": 1000,
  "rampTimeMs": 50,
  "profiles": {
    "1": "motor-1.local.json",
    "2": "motor-2.local.json",
    "3": "motor-3.local.json",
    "4": "motor-4.local.json",
    "5": "motor-5.local.json",
    "6": "motor-6.local.json"
  },
  "replay": {
    "speed": 500,
    "holdMs": 1000,
    "repeat": 1,
    "moveTimeoutMs": 30000,
    "toleranceCounts": 10
  }
}

将此 JSON 保存为 tools/poses/controller.local.json ,旁边有 motor-1.local.json 到 motor-6.local.json 。对于不同的 ID,一致地更新配置文件密钥、姿势记录和连接的设备。

个人资料设置

完整的源示例是:

{
  "kpQ8": 256,
  "kdQ8": 32,
  "kiQ8": 0,
  "integralLimit": 0,
  "effortLimit": 100,
  "velocityLimit": 500,
  "velocityFilterQ8": 64,
  "gravitySlewEffortPerS": 1000,
  "velocityFeedforward": {
    "positiveGainQ8": 0,
    "negativeGainQ8": 0,
    "effortLimit": 0
  }
}
设置 解读
kpQ8、kdQ8、kiQ8 增益乘以256:256表示1.0,32表示0.125
integralLimit 仅积分贡献限额
effortLimit 总产出限制,1 – 1000 PWM 电机输出指令单位;既没有扭矩也没有安培
velocityLimit 该电机的最大速度(计数/秒)
velocityFilterQ8 1 – 255 ;值越大响应越快,但过滤的噪声越少
gravitySlewEffortPerS 重力作用变化的速率限制;它本身并不启用模型
velocityFeedforward 两个非负方向增益和输出上限;将三个全部归零以禁用

共享的acceleration和rampTimeMs属于控制器文件。电机配置文件可以使用 accelerationLimit 和 rampTimeMs 覆盖它们。有关范围和关系,请参阅 配置寄存器 。

路径和 ID

  • 配置文件路径和 gravityModel 相对于 控制器文件 ,而不是工作目录。
  • 调整计划的 config 路径相对于 计划文件 。
  • 命名姿势提供电机 ID;该重播不需要 joints 。
  • 调谐和配置文件应用需要 joints: [{"followerId": 1}, …] 覆盖每个受控电机。
  • 实时远程操作和会话重放需要 leaderId、followerId 和 mapping。

在目录之间移动示例时检查路径。在命名姿势重放示例中,故意省略了 joints 数组。

应用设置

配置文件被写入 Extension RAM,并且必须在复位后重新应用。 EEPROM 校准和行程限制是分开的。 Replay 自动应用其配置。更改的配置文件会短暂禁用该电机;全新启动可以释放所有配置的电机。

提供的 host/arm-control/profiles/so101/ 和 so102/ 设置来自带有空夹具的特殊直立臂。 SO-101 曲线保留了未解决的 M1 振荡和较慢的 M2 偏移;快速 SO-102 配置文件仍需要硬件验证。它们不是通用的首次运行默认值。

检查: 有效 JSON、现有相关文件、每个电机一个配置文件以及针对机构审核的设置。然后执行 重播预览 。有效的文件不会建立安全的硬件行为。


文档主页 · 源版本: a995f77 。 Extension 9.0 。