解读 170 · xl320 案例研究
解读对象:
bam/bam/params/xl320/(m1.json–m6.json 六档,m6.json 共 17 个字段)
需要的前置:解读 169(xl330 逐字段基准)· 解读 80(字段含义速查)
1. 型号是谁
Robotis Dynamixel XL-320,bam/README.md 已辨识模型库里的"上一代小球形舵机"——XL330 的
前辈。BAM 侧是 dynamixel/actuator.py 的 XL320Actuator:台架电压 vin=7.5 V、固件 P 增益
kp=32(xl330 是 400,口径完全不同)、error_gain=0.05048199(注释:示波器实测)、max_pwm=1.0。
它的辨识范围也为它单独定制:R 上限放宽到 40 Ω(其他电压舵机 ≤10),max_load_friction
放宽到 1.0(默认 0.5)。额定电压窗口、尺寸、重量等规格:参数库外信息,待验证。
2. m6.json 逐字段 + 与 xl330 基准对比
17 个字段(xl330 有 18——xl320 没有 command_delay,缺的字段加载时回落初始值 0.0,
即拟合时没辨识延迟;是当年流水线版本差异还是刻意为之,待验证):
| 字段 | xl320 | xl330 | 对比 |
|---|---|---|---|
kt |
1.009 | 0.346 | ×2.9 |
R |
31.59 | 2.50 | ×12.6,一整个量级(范围 3–40) |
armature |
0.00116 | 0.00157 | ×0.74 |
q_offset |
−0.0212 | 0.0150 | 台架误差,只说明它家台架装偏方向相反 |
friction_base |
4.3e-07 | 0.0119 | 几乎为零:库仑底没了 |
friction_stribeck |
0.0163 | 0.00085 | ×19:停转阻力全走 Stribeck 通道 |
load_friction_motor |
3.1e-06 | 0.228 | ≈0:电机侧载荷摩擦消失 |
load_friction_external |
0.158 | 0.107 | 外载侧扛大旗 |
load_friction_*_stribeck |
6.0e-09 / 0.245 | 1.5e-08 / 0.142 | 同上,外载侧主导 |
load_friction_*_quad |
0.00362 / 0.00471 | 0.00527 / 0.00299 | 同量级 |
dtheta_stribeck |
2.30 | 0.261 | ×8.8,"多慢算慢"门槛宽 9 倍 |
alpha |
1.71 | 8.53 | 峰又宽又平 |
friction_viscous |
0.00723 | 0.00579 | ×1.25 |
画像:XL-320 的 R=31.6 Ω 意味着堵转电流只有 7.5/31.6≈0.24 A,kt·vin/R≈0.24 N·m
的电压堵转力矩——比 xl330 的 1.04 N·m 弱 4 倍,和"上一代更弱"的直觉自洽。摩擦结构则
整个换了形状:xl330 是"有库仑底 + 电机侧载荷摩擦主导",xl320 是"无库仑底 + 外载侧
主导 + 宽而平的 Stribeck"。同一套 M6 模型,两组参数形状完全不同——这就是为什么不能拿
一颗舵机的 json 改个文件名冒充另一颗。存疑点:dtheta_stribeck=2.30 超出当前代码上限 1.0,
应是拟合时旧版范围不同所致(推断,待验证)。
3. 如果用它换掉 xl330:五落点具体值
按 解读 79 的落点:① microduck_constants.py 改
motor_name="xl320";kp_fw 口径换到 32 一族(不能照抄 200);vin_range 按实测窗口填
(额定值待验证,BAM 台架口径 7.5 V);延迟按 json 缺失回落 0.0 或台架重测。②
friction_dr_bam.py:forcerange 按 0.24 N·m 量级重估——低于决策树"0.5 N·m 量级"的
第二道门(解读 73),力矩先行一票否决,大概率走不到重训那步;
摩擦辨识值直接指向 params/xl320/m6.json。③ 回差角台架实测。④ 随机化范围按自己台架
离散度。⑤ assets 质量(单只重量:参数库外,待验证)。
你带走的收获
- xl320 的字段集比 xl330 少一个
command_delay:json 里缺什么也是信息,缺的字段加载时回落初始值。 - R=31.6 Ω / kt·vin/R≈0.24 N·m:用两个电机参数就能算出"这颗舵机弱不弱",先过力矩门再谈别的。
- 同一 M6 模型下,两代舵机的摩擦预算"形状"完全不同(库仑底有无、电机侧 vs 外载侧)——
参数不能跨型号照抄的最硬证据。 - 辨识值超出当前代码上限(dtheta_stribeck 2.30 > 1.0)提示 json 出自旧版流水线,读参数库
要连着 git 历史读。