
首先需要明确,J6的运动必然影响J5,这种影响来自物理结构本身,不是调参能消除的。想象J5是一个肘关节,J6是手腕关节,工具是手。
J5(肘) → 连杆 → J6(腕) → 工具(手)当J6旋转时,工具(手)相对于J5(肘)的位置发生了改变,重力对J5轴的力矩取决于J5后面所有东西的质量中心在哪里。当J6转动,工具和J6连杆的质量中心变了,所以J5感受到的重力力矩必然变。这件事无论如何都会发生, 区别只在于,是否主动去补偿这个变化。
对于J5的重力补偿,需要计算的是:

其中:
可以看到,θ6直接出现在 τg5的表达式中,这就是耦合。
正确理解:不是消除J6对J5的影响,而是在计算J5的重力补偿时,把J6的角度作为输入考虑进去。
三种处理策略:
策略 | 做法 | 优点 | 缺点 | 适用 |
|---|---|---|---|---|
联合补偿 | 每周期用当前 θ5,θ6计算 τg5(θ5,θ6)和 τg6(θ5,θ6) | 精确 | 需要标定耦合参数 | 推荐 |
静态近似 | 将 J6 固定在中位,只用 θ5计算 J5 的重力补偿 | 简单 | J6 偏离中位时 J5 会承受残余力矩 | 工具轻、J6行程小 |
完全忽略 | 不做任何重力补偿 | 最简单 | J5会下垂,导纳力控需要多出力 | 极轻量关节 |
对于清洁模组(工具相对轻,J6行程小):如果J6的总转动范围只有±15°,且工具重量<500g,那J6位置对J5的影响通常在10%~20%以内,静态近似(J6固定中位近似)是可行的,导纳外环会吸收这个小的误差。
但如果工具较重(>1kg)或J6行程大(>±30°),建议用联合补偿,把J6角度纳入J5的重力补偿计算。

原因:
假如把J6停在了行程的+15°端,但实际清洁时J6大部分时间在-5°附近工作,那么:
所以整定位置与实际工作位置一致,如果实际清洁时J6只在中点±10°内运动,那就在中点整定。如果实际清洁时J6偏在某个位置(比如为了贴合曲面需要J6长期偏+5°),那就在那个位置整定。
Kp/Kd取决于系统的有效惯量 Jeff和期望的阻尼比 ζ:

当J5在不同角度时:
在J5的三个典型角度(0°、+30°、-30°)各做一次阶跃响应测试,观察:
如果三个角度的响应曲线几乎一致,说明Kp/Kd可以全域复用,如果某个角度下出现了明显的超调或振荡,说明有效惯量变了,此时可在该角度微调Kd,或直接接受(因为导纳外环会兜底)。
Step 1: 确定J6的默认工作位置
θ6_default = 行程中点(或实际清洁时的典型位置)
Step 2: 在θ6_default处,手动标定J5和J6的重力补偿
- 让J5处于水平(最重载)姿态,调J5的τ_ff直到悬浮
- 让J6也处于水平(相对于其连杆),调J6的τ_ff直到悬浮
- 在不同θ5位置重复,得到重力补偿曲线
Step 3: 在θ6_default处,整定J5和J6的Kp/Kd
- 悬空摆动实验
- 阶跃响应测试
Step 4: 验证不同θ5下Kp/Kd是否可复用
- θ5在0°、±30°各做一次阶跃测试
- 响应一致→复用
- 偏差大→微调
Step 5: 在控制循环中,实时计算τ_ff
- 使用策略A(θ5+θ6联合重力补偿)或策略B(只θ5近似)
- 摩擦补偿按各自关节的dq独立计算