1. 柔性关节人形机器人振动问题本质
人形机器人执行高动态动作时(比如快速挥手或抓取物体),经常会出现手臂抖动甚至全身震颤的现象。这种现象的根源在于我们通常假设机器人的关节是理想刚性连接,但实际机械结构中存在不可避免的弹性变形。
以谐波减速器为例,这种广泛应用于人形机器人关节的传动装置,其柔度特性就像在电机和负载之间安装了一组弹簧。当执行快速运动指令时,弹簧会先储存能量再释放,导致电机侧(驱动端)和连杆侧(负载端)产生相位差和能量振荡。这种现象在3自由度上肢机器人做±45°快速摆动时尤为明显,振动幅度可达±5°以上,严重影响操作精度。
关键认知:柔性关节不是设计缺陷,而是高功率密度驱动系统的必然特性。我们需要通过控制算法主动抑制振动,而非试图消除机械柔度。
2. 柔性关节动力学建模原理
2.1 二质量模型构建
采用Two-Mass Model建模时,我们将系统简化为:
- 驱动质量(电机转子+谐波减速器输入侧)
- 负载质量(连杆+末端执行器)
- 两者通过等效扭转弹簧连接
数学模型表达为:
code复制J_m·θ̈_m + b_m·θ̇_m + k(θ_m - θ_l) = τ_m
J_l·θ̈_l + b_l·θ̇_l + k(θ_l - θ_m) = 0
其中:
- J_m/J_l:驱动/负载转动惯量
- b_m/b_l:阻尼系数
- k:等效刚度
- θ_m/θ_l:驱动/负载角度
2.2 振动特性解析解
通过拉普拉斯变换可得系统特征方程:
code复制s^4 + (b_m/J_m + b_l/J_l)s^3 + [k(1/J_m + 1/J_l) + b_m b_l/(J_m J_l)]s^2
+ k(b_m + b_l)/(J_m J_l)s = 0
实部为负的共轭复根对应振动模态,其频率和阻尼比为:
code复制ω_n = √[k(J_m + J_l)/(J_m J_l)]
ζ = (b_m + b_l)/[2√(k J_m J_l (J_m + J_l))]
3. 振动抑制方案对比分析
3.1 被动式陷波滤波
- 原理:在指令通道叠加反相谐振频率信号
- 优点:无需额外传感器
- 缺点:仅对固定频率有效,参数变化时失效
3.2 加速度反馈主动阻尼
- 原理:通过电机加速度计检测振动,反馈到电流环
- 优点:自适应宽频带抑制
- 实现:在PD控制基础上增加加速度反馈项:
code复制τ = K_p(θ_ref - θ_m) - K_dθ̇_m - K_aθ̈_m
4. Simulink建模全流程解析
4.1 柔性关节子系统搭建
- 新建Subsystem模块
- 按二质量模型搭建:
- 用Integrator链实现角度/角速度积分
- 用Gain模块表示惯量/阻尼/刚度参数
- 用Add模块实现力平衡方程
参数设置技巧:先设刚度k=100Nm/rad,再调整惯量使谐振频率在5-10Hz范围(典型谐波减速器特性)
4.2 运动指令生成
采用Bang-Coast-Bang轨迹:
code复制if t < t1
θ_ref = 0.5a_max·t^2
elseif t < t2
θ_ref = θ_1 + v_max(t-t1)
else
θ_ref = θ_2 - 0.5a_max(t-t3)^2
end
建议参数:
- a_max = 300°/s²
- v_max = 180°/s
- 总行程45°
4.3 控制器实现细节
-
基础PD控制器:
- K_p = 0.8·k
- K_d = 2√(J_m·K_p)
-
加速度反馈:
- 通过电机编码器差分获取角加速度
- 二阶Butterworth滤波(截止频率50Hz)
- K_a = 0.2·J_m
4.4 可视化配置要点
- Scope模块监视:θ_m, θ_l, τ_m
- XY Graph绘制相平面图
- To Workspace导出数据用于FFT分析
5. 仿真结果与工程启示
5.1 振动抑制效果对比
| 指标 | 纯PD控制 | 加速度反馈 | 陷波滤波 |
|---|---|---|---|
| 稳定时间(ms) | 1200 | 400 | 800 |
| 超调量(%) | 25 | 8 | 15 |
| 残留振动(°) | ±3.2 | ±0.5 | ±1.8 |
5.2 关键工程经验
-
加速度信号处理:
- 必须用零相位滤波(filtfilt函数)
- 采样率至少1kHz
-
增益整定步骤:
- 先调K_p使系统稳定
- 再调K_d抑制超调
- 最后加K_a抑制残余振动
-
多关节耦合处理:
- 各关节独立设计控制器
- 通过动力学耦合项补偿交互影响
6. 进阶发展方向
6.1 自适应陷波滤波
实时识别谐振频率:
matlab复制[pxx,f] = pwelch(θ_err, [],[],[], fs);
[~,idx] = max(pxx);
f_res = f(idx);
6.2 多模态振动抑制
针对高阶弯曲模态:
- 增加应变片传感器
- 设计多通道反馈系统
6.3 全身协调控制
集成ZMP平衡算法:
- 振动抑制输出作为QP优化约束
- 运动规划器生成兼容指令
实际调试中发现,当机械臂负载变化超过30%时,建议采用增益调度策略。我的经验是建立Kp/Kd与负载惯量的查找表,通过在线估计实时调整参数。例如使用递归最小二乘法估计惯量:
code复制J_est = (τ - b·θ̇)/(θ̈ + g·cosθ)
对于需要更高精度的场景,可以考虑在连杆侧加装IMU传感器。但要注意传感器融合时的时延补偿,通常需要增加10-15ms的前馈补偿环节。具体实现时,建议先用白噪声激励辨识系统时延特性。