当前位置: 首页 > news >正文

基于多控制策略的车辆路径跟踪仿真研究

基于前轮转向+转矩分配(AFS+DYC)+模型预测控制(MPC)+路径跟踪(PTC)+侧偏角软约束,目前的范例是72km/h,附着系数0.85双移线。 仿真使用的是MATLAB2020b版本和carsim2020。 MPC有两个:第一个为增量式方法编写,采用s-function实现,输入为跟踪误差、横摆角误差、侧向速度和横摆角速度,输出量为前轮转角和附加横摆力矩,仅考虑横向控制。 考虑了前后轮的侧偏角软约束,在侧偏角到约束边界时减小控制律,保证侧偏角的稳定。 第二个采用Apollo中的模型,基于MATLAB function编写,不包括侧偏角软约束,作为对比参考使用。 其中包含carsim的cpar文件、模型mdl文件、绘图m文件(运行后一键出图)、说明文档和中文文献。

最近在研究车辆控制相关的内容,基于前轮转向 + 转矩分配(AFS + DYC)结合模型预测控制(MPC)以及路径跟踪(PTC),还加入了侧偏角软约束,实现了一些有趣的成果,今天就来和大家分享分享。

基于前轮转向+转矩分配(AFS+DYC)+模型预测控制(MPC)+路径跟踪(PTC)+侧偏角软约束,目前的范例是72km/h,附着系数0.85双移线。 仿真使用的是MATLAB2020b版本和carsim2020。 MPC有两个:第一个为增量式方法编写,采用s-function实现,输入为跟踪误差、横摆角误差、侧向速度和横摆角速度,输出量为前轮转角和附加横摆力矩,仅考虑横向控制。 考虑了前后轮的侧偏角软约束,在侧偏角到约束边界时减小控制律,保证侧偏角的稳定。 第二个采用Apollo中的模型,基于MATLAB function编写,不包括侧偏角软约束,作为对比参考使用。 其中包含carsim的cpar文件、模型mdl文件、绘图m文件(运行后一键出图)、说明文档和中文文献。

本次仿真使用的是MATLAB 2020b版本搭配carsim 2020,这俩工具在车辆动力学仿真这块还是非常给力的。范例场景设定为车速72km/h,附着系数0.85的双移线工况,这个工况能较好地检验车辆在复杂转向情况下的控制性能。

MPC控制策略详解

这里面MPC有两种实现方式,挺有意思的,和大家唠唠。

增量式MPC(含侧偏角软约束)

第一种MPC采用增量式方法编写,通过s - function实现。它的输入参数包括跟踪误差、横摆角误差、侧向速度和横摆角速度,输出则是前轮转角和附加横摆力矩,主要专注于横向控制。

% 假设这里是s - function的部分关键代码框架 function [sys,x0,str,ts] = sfcn(t,x,u,flag) switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes; case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u); case {1,4,9} sys = []; otherwise DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag)); end end function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; % 设置输入输出端口数量等参数 sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 2; % 前轮转角和附加横摆力矩 sizes.NumInputs = 4; % 跟踪误差、横摆角误差、侧向速度和横摆角速度 % 其他参数设置... sys = simsizes(sizes); x0 = []; str = []; ts = [0 0]; end function sys=mdlOutputs(t,x,u) % 这里面根据输入的u(跟踪误差、横摆角误差、侧向速度和横摆角速度) % 通过MPC算法计算输出前轮转角和附加横摆力矩 tracking_error = u(1); yaw_error = u(2); lateral_velocity = u(3); yaw_rate = u(4); % 简单示意,实际MPC计算很复杂 front_wheel_angle = tracking_error * 0.1 + yaw_error * 0.2; additional_yaw_moment = lateral_velocity * 0.3 + yaw_rate * 0.4; sys = [front_wheel_angle; additional_yaw_moment]; end

这里还考虑了前后轮的侧偏角软约束。为啥要加这个呢?当侧偏角快到约束边界的时候,如果不做处理,车辆的稳定性就会受影响。加了软约束之后,一旦侧偏角接近边界,就减小控制律,这样能保证侧偏角稳定,车辆行驶也就更稳。

Apollo模型MPC(无侧偏角软约束)

第二种MPC采用Apollo中的模型,基于MATLAB function编写,这个就不包括侧偏角软约束啦,主要是作为对比参考用的。

function [front_wheel_angle, additional_yaw_moment] = apollo_mpc(tracking_error, yaw_error, lateral_velocity, yaw_rate) % 同样简单示意计算过程 front_wheel_angle = tracking_error * 0.15 + yaw_error * 0.25; additional_yaw_moment = lateral_velocity * 0.35 + yaw_rate * 0.45; end

通过对比这两个MPC,就能很直观地看出侧偏角软约束在车辆控制中的作用。

仿真资源说明

仿真项目里还包含carsim的cpar文件、模型mdl文件、绘图m文件(运行后一键出图,超方便),另外还有说明文档和中文文献。这些文件对于理解整个仿真流程和原理非常有帮助。比如说cpar文件里详细记录了车辆的各种参数,mdl文件搭建了整个仿真模型的架构,绘图m文件可以把仿真结果以直观的图形展示出来。

总之,通过这次研究,对基于多种控制策略的车辆路径跟踪有了更深入的认识,不同的MPC策略各有特点,侧偏角软约束也确实对车辆稳定性控制起到了关键作用。希望我的这些分享能给同样在研究相关方向的小伙伴一些启发。

http://www.jsqmd.com/news/518575/

相关文章:

  • 金融市场流动性风险度量
  • 从API消费者到贡献者:我在RapidAPI和国内平台(聚合数据/幂简集成)发布与管理API的实战心得
  • Token限制下的ChatGPT高效对话:如何优化Prompt长度与内容(含计算工具推荐)
  • 搞定芯片设计后仿:手把手教你在Linux上为Cadence配置QRC寄生参数提取工具
  • 大数据领域数据中台的元数据管理策略
  • 基于MATLAB的电流跟踪PWM控制三相逆变器系统设计:设计报告与仿真程序
  • 探索风光储微电网并网模型:技术与实践
  • Swift面试必备:10个高频问题解析与实战避坑指南
  • 终极指南:Apollo Save Tool - 简单高效的PS4游戏存档管理解决方案
  • CPFEM晶体塑性孪晶滑移子程序及视频
  • 技术分享】CarSim与Simulink联合仿真,实现超车换道的动态规划路径控制【附视频演示
  • leetcode 1457. Pseudo-Palindromic Paths in a Binary Tree 二叉树中的伪回文路径
  • Hackintool终极指南:从零开始轻松配置完美黑苹果系统
  • Gradle 7.1.1构建Flink项目报错?可能是你的IDEA版本太老了!
  • 从GMT到UTC:时间标准的演进与计算机系统的应用
  • COMSOL 光学 手性 BIC 仿真 光子晶体板中连续域束缚态 BIC 赋予的手性。 包含正...
  • leetcode 困难题 1458. Max Dot Product of Two Subsequences 两个子序列的最大点积
  • 用Go写个命令行AI客户端,到底值不值?
  • 告别Elasticsearch!用SkyWalking 10.0.1 + BanyanDB + Docker搭建新一代链路监控(含IDEA/Java-Jar双启动配置)
  • 基于同步旋转坐标系的高效无位置传感器永磁同步电机控制策略——采用三相电压重构,告别传统电压采集...
  • leetcode 1460. Make Two Arrays Equal by Reversing Subarrays 通过翻转子数组使两个数组相等-耗时100
  • 智能汽车视觉导航(4)——基于动态阈值的赛道中线精准定位
  • 国产电车的意外惊喜,油价将重回9元拯救电车,但无法指望海外
  • 告别普通CardView!用MaterialCardView这5个属性,让你的Android应用卡片颜值飙升
  • 别再只会git push了!用-u参数关联远程分支,让Git协作效率翻倍
  • 基于Simulink和Carsim的车辆主动悬架防侧翻控制项目报告
  • 解决前端TIFF预览难题:tiff.js与canvas/base64的完美结合
  • 编写程序让智能空气质量仪检测PM2.5,分等级显示空气质量,给出开窗通风的建议。
  • Element UI中el-tabs的before-leave钩子实战:如何优雅拦截未保存表单的切换请求
  • AI Agent框架选型:OpenClaw、LangChain、AutoGPT、CrewAI,到底该选哪个?