利用BP神经网络来预测不同工况下的轮胎侧向力从carsim中获得数据利用BP神经网络训练得到轮胎侧向力估计模型。 主要内容如下 1、在线计算k值可便于后续和别的控制器联合 2、利用BP神经网络对从carsim中获得的轮胎数据进行训练获得精准的神经网络模型并生成simulink模块 3、将生成的simulink模块和LQR控制器结合实时估计轮胎侧向力。 4、内含有帮助文档 图为108km/h下的单移线轨迹跟踪效果侧向力估计效果以及BP神经网络的预测误差轮胎侧向力预测效果还不错直接上干货这次咱们聊聊怎么用BP神经网络撸出一个能实时预测轮胎侧向力的模型再把它塞进Simulink里跟LQR控制器搞联合作战。搞过车辆动力学控制的都知道轮胎力这玩意儿比女朋友的心思还难捉摸传统数学模型在复杂工况下经常翻车这时候神经网络就该登场了。先从CarSim里薅数据建议直接怼个扫频工况把滑移率从-10%扫到10%侧偏角来个±5度套餐别忘了车速参数。导出来的CSV文件用MATLAB处理关键代码长这样rawData readtable(tiredata.csv); inputs rawData{:, [3,5,7]}; % 滑移率、侧偏角、垂向力 targets rawData.LateralForce; [inputn, inputps] mapminmax(inputs); % 数据归一化必须的 [targetn, targetps] mapminmax(targets);注意第三列垂向力别漏了这参数对侧向力影响比想象中大。数据打乱后用70%训练15%验证15%测试防止模型变成死记硬背的学渣。网络结构我试过5种组合最后发现12-9的隐藏层配置性价比最高MATLAB里搭起来像这样net feedforwardnet([12 9]); net.trainFcn trainlm; % Levenberg-Marquardt算法 net.divideParam.trainRatio 0.7; net.performFcn mse; [net,tr] train(net,inputn,targetn);训练时记得盯着验证集误差一旦连续5次不降就直接停防止过拟合。训练好的网络别急着用先用gensim(net)生成Simulink模块这时候你会得到个长得像俄罗斯方块的黑盒子输入输出端口记得改物理量纲。利用BP神经网络来预测不同工况下的轮胎侧向力从carsim中获得数据利用BP神经网络训练得到轮胎侧向力估计模型。 主要内容如下 1、在线计算k值可便于后续和别的控制器联合 2、利用BP神经网络对从carsim中获得的轮胎数据进行训练获得精准的神经网络模型并生成simulink模块 3、将生成的simulink模块和LQR控制器结合实时估计轮胎侧向力。 4、内含有帮助文档 图为108km/h下的单移线轨迹跟踪效果侧向力估计效果以及BP神经网络的预测误差轮胎侧向力预测效果还不错重点来了——在线计算k值。这个动态增益参数要跟上层控制器搞基所以在Simulink里做了个自适应模块function k update_k(vx,mu) k_base 1.2; k_adapt 0.3 * (vx/100)^2 * (mu/0.8); k min(max(k_base k_adapt, 0.8), 1.5); end这个非线性函数要配合车辆状态实时调整保证在108km/h这种高速工况下不会崩盘。跟LQR控制器对接时把神经网络模块的输出接到前馈通道。实测中发现采样时间设0.01秒刚好既能跟上控制节奏又不会让CPU冒烟。调试时盯着转向角阶跃响应发现神经网络估计器的延迟比传统模型小20ms左右这波血赚。最后说下预测效果在双移线工况下神经网络估计的侧向力跟CarSim真值误差基本控制在200N以内关键时候的峰值预测误差不超过5%。训练集MSE做到0.003以下就算成功注意别被测试集的漂亮数据骗了实车验证时多留20%安全余量。帮助文档建议用Live Script写把数据采集参数、网络结构示意图、接口说明打包成PDF。别忘了个彩蛋——在Simulink模块里右键点开有个隐藏的debug模式能实时看神经元激活状态调参时贼有用。整套东西跑起来后你会觉得轮胎突然变得听话了就像给车装了读心术。