DEEP 169 · 第十五辑 · 其他舵机案例库 · LEARN NOTES

收进学习手册 · 2026-09-11 · duck.whatled.com

解读 169 · xl330:m6.json 逐字段

解读对象:bam/bam/params/xl330/(m1.json–m6.json 六档,本文精读 m6.json,18 个字段)
需要的前置:解读 80(八型号速览)· 解读 56(M1–M6 各代表什么)

解读 80 用 xl330 当引子带过八个型号;本辑第一篇把它单独摊开——
Microduck 训练配置 motor_name="xl330", model="m6" 加载的正是这份 json,170–176 拿它当基准。

1. 型号是谁

Robotis Dynamixel XL330-M288-T(执行器选型.md 口径):18 g、减速比 288:1、额定 3.7–6.0 V、
官方堵转 0.52 N·m @5 V——Microduck 里被 2S 电池 6.6–8.2 V 超压驱动(解读 85)。
BAM 侧是 XL330Actuator:台架电压 vin=7.5 V、固件 P 增益 kp=400、PWM 上限 885、编码器
4096 counts/rev(error_gain 由 4096/2π ÷ (256×885) 算出,注释:KP 分母 256 实测,手册写 128)。
协议 Dynamixel TTL 半双工。

2. 18 个字段逐个看

分三类。第一类电机模型(范围由 XL330Actuator.initialize() 定;初始值只是拟合起点,不是先验):

字段 辨识值(初始/范围) 一句话含义
kt 0.346(1.6 / 0.1–3.0) 力矩常数 N·m/A:1 A 电流榨出多少 N·m,像杠杆力臂
R 2.50 Ω(2.6 / 2.0–5.0) 绕组电阻:水管阻力,定堵转电流 vin/R≈3 A
armature 0.00157(0.005 / 0.0001–0.05) 转子惯量折到输出端 kg·m²:轮子转起来沉不沉

第二类台架杂项(不是舵机属性):q_offset=0.0150 rad(±0.1,零位贴偏 0.86°);
command_delay=0.0102 s(0–0.05,发指令到出力的滞后,回放时平移目标)。

第三类摩擦预算(model.py 的 Parameter,M6 全开):

字段 辨识值(范围) 含义
friction_base 0.0119(0–0.2) 库仑静摩擦 N·m,只要转就有
friction_stribeck 0.00085(0–0.2) 近停转附加摩擦(静止全额,转快衰减)
load_friction_motor 0.228(0–0.5) 电机出的力矩里变成齿轮摩擦的比例
load_friction_external 0.107(0–0.5) 外载(重力)压紧齿轮产生的摩擦比例
load_friction_motor_stribeck 1.5e-08(0–1.0) 电机侧低速附加,几乎为零
load_friction_external_stribeck 0.142(0–1.0) 外载侧低速附加
load_friction_motor_quad 0.00527(0–0.01) 二次项:内外扭矩异号时启用(电机侧)
load_friction_external_quad 0.00299(0–0.01) 同上(外载侧)
dtheta_stribeck 0.261(0.10–1.0) "多慢算慢":Stribeck 特征速度 rad/s
alpha 8.53(1.0–10.0) Stribeck 衰减陡度
friction_viscous 0.00579(0–1.0) 黏性摩擦 N·m/(rad/s),像搅蜂蜜

另有 "model": "m6"、"actuator": "xl330" 标识字段,后者须对上 actuators.py 键名。

3. 数值的三个亮点

4. 换型号时的"旧值清单"

它就是五落点方法论(解读 79)里被替换的那一侧,旧值存档:
① microduck_constants.py:motor_name="xl330"、kp_fw=200.0、vin_range=(6.5,8.2)、
delay 3–6 步;② friction_dr_bam.py:forcerange ±0.96 N·m 与摩擦值;③ backlash.py:
±1.0° 回差;④ 域随机化范围;⑤ assets 质量。170–176 每篇给对应新值。

你带走的收获

延伸

什么鸭 WHATDUCK · 复刻学习笔记 ← 全部手册 · 首页