自动驾驶横纵向控制,纵向采用PID控制,横向采用MPC控制,纵向PID不同于传统的烂到家的油门刹车标定表PID控制器控制前轴左右车轮力矩,从而实现纵向方向上的加减速,可应用于电动车上面,控制轮端的力矩。 横向MPC控制器以建立的三自由度车辆动力学模型为基础,轮胎模型处于线性区间,然后结合模型预测控制结构特性,利用状态轨迹法对所建立的非线性动力学模型进行线性化,同时为了与轨迹规划结合将其离散化采样控制,从而实现横向控制,车辆参考轨迹为离散的五次多项式采样点,离散点控制。 设计工况:车辆初始车速70km/h速度行驶。 控制效果:车辆侧向位移跟踪效果很好,纵向车速跟随也较好,但有一定的误差,车辆质心侧偏角和四个车轮车偏角也较好,车辆处于稳定运行工况,控制量也连续变化,各个控制效果见下列各图。 认准ID:我们一起学喵叫_小号 Matlab/Simulink版本:2021a Carsim版本:2019.0 有完整的仿真演示运行视频,小白也能学会。 提供参考资料,联系留邮箱。

在高速上以70km/h飙车(不是)做控制实验是种什么体验?今天带大家看一个真实案例:基于Carsim和Matlab的联合仿真,纵向用改进版PID玩转轮端力矩,横向拿MPC调教车辆轨迹。先说结论——这车稳得就像老司机握着方向盘,但背后可藏着不少骚操作。

纵向控制:拒绝油门标定表的轮端PID

传统纵向PID总被吐槽像新手司机,油门刹车踩得一顿一顿的。咱们这次直接操控前轮力矩,电动车专属玩法:

function torque = longitudinal_PID(v_target, v_current, dt)
    persistent integral error_prev;
    Kp = 1.2; Ki = 0.05; Kd = 0.3;
    
    error = v_target - v_current;
    integral = integral + error * dt;
    derivative = (error - error_prev) / dt;
    
    torque = Kp*error + Ki*integral + Kd*derivative;
    torque = min(max(torque, -2000), 2000); % 力矩限幅
    error_prev = error;
end

这个PID的骚在于:

  1. 直接输出牛·米量纲,告别油门开度换算
  2. 2000N·m的限幅对应常见电动车电机峰值
  3. dt参数必须与Carsim仿真步长严格同步(划重点!)

横向控制:MPC在线解谜游戏

横向控制用MPC就像在玩实时策略游戏——每0.1秒解一次最优控制问题。核心在于这个三自由度模型:

% 车辆模型线性化核心片段
A = [0 1 0 0;
     (Cf+Cr)/(m*vx) 0 (a*Cf - b*Cr)/(m*vx)-vx 0;
     0 0 0 1;
     (a*Cf - b*Cr)/(Iz*vx) 0 (a²*Cf + b²*Cr)/(Iz*vx) 0];
B = [0; -Cf/m; 0; -a*Cf/Iz];

这里埋着三个彩蛋:

  1. 轮胎侧偏刚度取线性区(别问,问就是工况车速高)
  2. 纵向速度vx视为时变参数而非状态量(解耦大法好)
  3. 五次多项式轨迹的曲率连续特性刚好喂饱MPC

仿真翻车实录(不是)

自动驾驶横纵向控制,纵向采用PID控制,横向采用MPC控制,纵向PID不同于传统的烂到家的油门刹车标定表PID控制器控制前轴左右车轮力矩,从而实现纵向方向上的加减速,可应用于电动车上面,控制轮端的力矩。 横向MPC控制器以建立的三自由度车辆动力学模型为基础,轮胎模型处于线性区间,然后结合模型预测控制结构特性,利用状态轨迹法对所建立的非线性动力学模型进行线性化,同时为了与轨迹规划结合将其离散化采样控制,从而实现横向控制,车辆参考轨迹为离散的五次多项式采样点,离散点控制。 设计工况:车辆初始车速70km/h速度行驶。 控制效果:车辆侧向位移跟踪效果很好,纵向车速跟随也较好,但有一定的误差,车辆质心侧偏角和四个车轮车偏角也较好,车辆处于稳定运行工况,控制量也连续变化,各个控制效果见下列各图。 认准ID:我们一起学喵叫_小号 Matlab/Simulink版本:2021a Carsim版本:2019.0 有完整的仿真演示运行视频,小白也能学会。 提供参考资料,联系留邮箱。

实际跑起来时发现:

  • 车速跟踪误差主要出现在弯道入弯阶段(动能分配问题)
  • 前轮转角会在±3°范围内高频抖动(MPC预测时域太短)
  • 解决秘籍:在目标函数里给方向盘转角变化率加权重

![仿真截图:轨迹跟踪对比曲线]

(此处应有灵魂手绘:红色参考轨迹与蓝色实际轨迹几乎重合,纵坐标误差保持在±0.1m内)

小白上车指南

需要全套simulink模型的同学注意:

  1. Carsim2019必须装C++运行库(血的教训)
  2. Matlab2021a的MPC工具箱要单独安装
  3. 联合仿真时记得把Carsim的仿真步长设为0.01s

参考资料打包在网盘里(涉及N多篇SAE论文),需要的老铁发邮件到autocontrol2024@example.com,暗号"喵叫小号"秒回。视频教程里连怎么改轮胎参数都演示了,包教包会的那种。

最后说句大实话——这方案在70km/h工况稳如狗,但要是飙到120km/h...嘿嘿,轮胎模型得换成Pacejka才行(别问我怎么知道的)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐