半车悬架主动控制 mpc模型预测控制(工具箱)参数已经调好 主动控制效果如图

最近在研究半车悬架的主动控制,正好用到了MPC(模型预测控制)的方法。MPC控制策略在车辆悬架系统中的应用挺多的,尤其是主动悬架,因为它可以实时调整悬架参数,从而改善乘坐舒适性和操控稳定性。今天就来聊聊我是怎么调参的,以及得到了什么样的控制效果。

MPC的基本思想

MPC的核心思想是基于车辆悬架的动态模型,在每个采样时刻优化未来一段时间内的性能指标,从而得到当前时刻的控制输入。听起来有点高大上,但其实就是在每个时间点,根据当前状态预测未来可能的状态变化,然后选择一个最优的控制策略。

具体来说,半车悬架系统可以简化为二自由度模型,包含车体和车轮的垂直运动。MPC需要以下几个关键部分:

  1. 状态空间模型:描述悬架系统的动态行为;
  2. 性能指标函数:用于衡量控制效果,通常是加速度、位移等的平方和;
  3. 优化算法:在满足约束条件的情况下,最小化性能指标函数。

MPC在半车悬架中的实现

下面是一个简单的MPC控制逻辑框架:

% 1. 初始化车辆悬架模型参数
mass_body = 2000;          % 车体质量
mass_wheel = 400;          % 单侧车轮质量
spring_constant = 100000;  % 悬架弹簧刚度
damper_coeff = 1000;       % 悬架阻尼系数

% 2. 定义状态变量
% 状态变量包括:车体加速度、位移,车轮加速度、位移
states = [body_acc; body_disp; wheel_acc; wheel Disp];

% 3. 定义控制输入变量
% 这里假设主动悬架的控制输入为悬架阻尼力
control = damper_force;

% 4. 定义性能指标函数(加速度舒适性优化)
cost = sum(body_acc^2) + sum(wheel_acc^2) + ...
       0.1*sum(control^2);  % 加上控制输入的惩罚项

% 5. 优化求解
options = optimoptions('fmincon','Algorithm','sqp');
[control_opt, ~] = fmincon(@(c) cost_function(c, states, ...), initial_guess, ...
                              [], [], [], [], [], [], ...
                              @constraints, options);

参数调优经验

参数调优是MPC控制效果的关键。这里分享几个经验:

  1. 预测时域和控制时域:预测时域决定了模型对未来状态的预测范围,控制时域决定了当前优化的控制步数。一般来说,预测时域可以是控制时域的3-4倍,这样既能保证一定的预测能力,又不会增加过多计算负担。
  1. 权重矩阵:性能指标中的权重矩阵至关重要。这里需要在舒适性和控制输入能量之间找到平衡。比如,车身加速度的权重可以调高,因为舒适性通常更依赖于加速度的平缓;而控制输入的权重可以适当降低,但也不能太低,否则会导致控制力过大。
  1. 约束条件:现实中,悬架的控制力是有上限和下限的,这些硬约束必须在优化过程中考虑进去。

主动控制效果

经过多次迭代和优化,最终的主动控制效果如下图所示(虽然图没放上来,但效果还是很明显的):

  • 车身加速度:优化后的MPC控制使得车身加速度的幅值明显降低,频率也变得更加平缓。
  • 悬架力:控制力的变化更加平滑,同时保持了对车辆状态的实时响应。

总结

总的来说,MPC在半车悬架主动控制中的应用效果还是很不错的。当然,调参的过程确实需要一定的耐心和经验。不过,通过代码调试和效果验证,最终的控制效果还是让人满意的。希望这篇分享对大家有所帮助,如果有什么问题,欢迎随时交流~

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐