解读 173 · mx64 案例研究
解读对象:
bam/bam/params/mx64/(m1.json–m6.json 六档,m6.json 共 16 个字段)
需要的前置:解读 169(xl330 逐字段基准)· 解读 73(四道门)
1. 型号是谁
Robotis Dynamixel MX-64,MX 系列中端型号。BAM 侧它和 MX-106 共用一个类
dynamixel/actuator.py::MXActuator(docstring:"Represents a Dynamixel MX-64 or MX-106
actuator"),初始化参数全一致:vin=15.0(MX 系列高压口径,额定窗口规格:参数库外待验证)、
kp=32、error_gain=0.158、max_pwm=0.9625——后两个注释都写明"用示波器在 MX 上测出":
固件极限占空比连 1.0 都不到,只有 96.25%,这个 4% 的折扣也是实测出来的。协议
Dynamixel 系(解读 77)。尺寸、重量、官方堵转力矩:参数库外
待验证——只说一句直觉:MX-64 的个头远超 20×34×26 mm 的 xl330,机械四道门的第三道基本过不了。
2. m6.json 逐字段 + 与 xl330 基准对比
16 个字段——没有 q_offset,也没有 command_delay(缺失=该次辨识没拟合这两项,
加载时回落初始值:q_offset=0.0、command_delay=0.0):
| 字段 | mx64 | xl330 | 对比 |
|---|---|---|---|
kt |
1.602 | 0.346 | ×4.6;恰好等于类里初始值 1.6 |
R |
2.32 | 2.50 | 同档 |
armature |
0.0123 | 0.00157 | ×7.8 |
friction_base |
6.2e-07 | 0.0119 | ≈0:库仑底没了 |
friction_stribeck |
0.123 | 0.00085 | ×144:停转阻力全走 Stribeck |
load_friction_motor |
0.311 | 0.228 | ×1.4,全库常规档最高 |
load_friction_external |
2.0e-08 | 0.107 | ≈0:外载侧消失 |
load_friction_motor_stribeck |
0.188 | 1.5e-08 | 电机侧主导 |
load_friction_external_stribeck |
0.0141 | 0.142 | ×0.1 |
load_friction_motor_quad |
0.00691 | 0.00527 | 同量级 |
load_friction_external_quad |
0.01000 | 0.00299 | 顶格(范围 0–0.01) |
dtheta_stribeck |
2.58 | 0.261 | ×9.9 |
alpha |
0.841 | 8.53 | 低于当前代码下限 1.0 |
friction_viscous |
0.0253 | 0.00579 | ×4.4 |
画像:kt·vin/R = 1.602×15/2.32 ≈ 10.4 N·m 的电压堵转力矩(模型口径,15 V 台架电压;
厂商标称待验证)。摩擦形状与 xl330 几乎互补:没有库仑底、没有外载侧,只有一条宽的
Stribeck 峰(dtheta 2.58、alpha 0.84 → 峰又宽又平)+ 强电机侧载荷摩擦。
存疑点(两处):alpha=0.841 低于当前 model.py 的范围下限 1.0、dtheta_stribeck=2.58
超出上限 1.0——这两份值不可能出自当前代码的范围设定,应是旧版 BAM 拟合(推断,待验证);
外载荷项顶格 0.01000 也提示二次项吃紧。
3. 如果用它换掉 xl330:五落点具体值
按 解读 79:① motor_name="mx64";kp_fw 换 32 一族口径;
vin_range 按 MX 额定窗口与你的电池实测填(15 V 是 BAM 台架值,别照抄进训练);延迟无
json 值,台架重测。② friction_dr_bam.py:forcerange 按 10 N·m 量级重估(如果机械真装得下
的话),摩擦值指向本 json。③ 回差角台架实测。④ 随机化按自己台架。⑤ assets 质量/惯量按
新舵机重算。现实检验按 解读 73 四道门:电压要高压电源、尺寸重量
推倒鸭身机械——MX-64 在这个库里的意义,更多是"高压中量级执行器的参照系",而非真要装进
Microduck(解读 84 的决策逻辑同样适用:先问为什么)。
你带走的收获
- kt=1.602 与类初始值 1.6 完全一致:初值选得准的参数,辨识就"原地不动"——初始值不是先验,
但好的初始值能让拟合省力。 - 无 q_offset/command_delay 的 json 提醒你:字段缺失是流水线版本痕迹,不是"零延迟"实测。
- alpha=0.841 低于当前代码下限:参数库要连 git 历史一起读,别拿现在的范围去否定旧数据。
- 摩擦预算可以整体换形状:mx64 是"宽 Stribeck + 电机侧载荷",xl330 是"窄峰 + 库仑底 +
双侧载荷"——模型档位相同,参数结构截然不同。