1. 六轮独立驱动AGV的冗余力分配挑战
在工业自动化领域,六轮独立驱动AGV(自动导引车)因其出色的负载能力和复杂地形适应性,正成为重载搬运场景的主流选择。但我在实际项目中发现,当AGV需要执行精确轨迹跟踪或应对突发负载变化时,传统均等分配策略会导致严重的轮胎打滑和能量浪费。
以我们去年部署的1.5吨级AGV为例,在车间环氧树脂地面(摩擦系数μ=0.3)运行时,当某个轮组突然遇到油渍导致附着系数下降30%时,采用简单平均分配力的方式会使整车出现明显偏航,最大横向偏移达到15cm。这正是冗余力分配策略需要解决的核心问题——如何根据实时工况动态调整六个电机的输出扭矩。
2. 系统架构设计与算法选型
2.1 动力学建模关键要点
建立平面运动动力学模型时,需要特别关注三个核心方程:
- 纵向动力学:ΣFx = m·ax + Fd (Fd为滚动阻力)
- 横向动力学:ΣFy = m·ay
- 横摆动力学:ΣMz = Iz·φ̈ (φ为横摆角)
在Simulink中实现时,我习惯用Matrix Concatenation模块将六个轮子的力/力矩向量组合成3×1的系统总需求向量。实测表明,这种处理方式比逐个信号连线节省30%的建模时间,且更便于后续算法迭代。
2.2 伪逆法与QP算法对比
通过大量仿真测试,我整理出两种算法的性能对比表:
| 指标 | 伪逆法 | QP法 |
|---|---|---|
| 计算耗时(1.5GHz CPU) | 0.02ms | 0.12ms |
| 力分配均衡度 | 55% | 88% |
| 打滑抑制效果 | 15%速度差 | 4%速度差 |
| 代码复杂度 | 10行 | 45行 |
虽然QP法计算量较大,但其通过引入权重矩阵P(通常取对角阵[1,1,0.5]),可以优先保证纵向力精度,适度放宽横摆力矩要求。这个技巧在我们处理重载启动工况时特别有效。
3. Simulink建模实战技巧
3.1 模型搭建避坑指南
在搭建QP求解器时,有几点经验值得分享:
- 使用MATLAB Function模块封装QP算法时,务必在属性中勾选"支持可变大小数组",否则会遇到维度报错
- 对于Hessian矩阵H,推荐用
H = blkdiag(2*P, 2*P, ..., 2*P)构建,比手动拼接效率高40% - 约束条件矩阵Aeq建议预计算后以Constant模块输入,减少实时计算负担
3.2 参数调试方法论
经过7个项目的积累,我总结出QP权重矩阵的调参口诀:
- 对角线元素:反映各自由度优先级,通常设[纵向权重, 横向权重, 横摆权重]=[1, 0.8, 0.5]
- 非对角元素:控制耦合强度,初期建议设为0,后期再微调
- 松弛变量系数:取0.01-0.1可有效避免无解情况
4. 典型工况仿真分析
4.1 斜坡启动测试
设置5°斜坡、1.5吨负载的极端工况时,发现:
- 伪逆法会导致后轮组过载(达到摩擦圆边界)
- QP法则自动将部分力转移到前轮,使各轮利用率保持在85%±3%
通过Scope捕获的电机电流曲线显示,QP方案峰值电流降低22%,这对电池续航至关重要。
4.2 单轮附着突变
模拟油渍污染场景(μ从0.3突降至0.18)时:
- 伪逆法需要200ms才能恢复稳定
- QP法通过实时调整分配比,仅用80ms就完成力重分配
- 配合打滑检测模块(建议阈值设为0.15rad/s轮速差),可提前50ms触发补偿
5. 工程落地注意事项
5.1 实车调试要点
在将模型部署到真实AGV时,必须注意:
- 电机响应延迟:实测伺服系统会有20-50ms滞后,需要在Simulink中加入Transport Delay模块验证
- 参数标定流程:
- 空载平地运行→记录各轮电流基准值
- 逐步加载至1.2倍额定负载→修正摩擦系数估计
- 故意制造单轮打滑→验证容错能力
5.2 计算资源优化
在低成本工控机上运行时,我采用以下优化策略:
- 将QP求解周期从1ms放宽到5ms(对1m/s以下车速足够)
- 使用定点数运算(特别是对权重矩阵)
- 禁用调试接口释放10%CPU资源
经过这些优化,整套算法在树莓派4B上也能流畅运行,CPU占用率稳定在65%以下。
6. 算法扩展方向
最近在探索三个改进方向:
- 预测性分配:结合路径曲率预判,提前调整权重矩阵
- 在线参数辨识:用RLS算法实时估计轮胎摩擦系数
- 混合分配策略:在正常工况用伪逆法,检测到异常时切换QP法
实测表明,混合策略可将平均计算耗时降低到0.07ms,同时保持85%以上的分配精度。这个方案特别适合需要同时处理多台AGV的中央调度系统。