本人实际测试Simulink R2024a与CarSim 2024.0联合,踩住过模型闭环误差正负8%死活没法压下去的坑,新手依照步骤一步步去操作,便能够轻松躲开这类常见问题。 步骤1 设置……
本人实际测试Simulink R2024a与CarSim 2024.0联合,踩住过模型闭环误差正负8%死活没法压下去的坑,新手依照步骤一步步去操作,便能够轻松躲开这类常见问题。
步骤1 设置求解器与步长
按照以下这样来操作,路径是,在Simulink菜单栏那里,找到Simulation选项然后点击,接着找到Model Configuration Parameters选项再点击,之后找到Solver这项。类型选择Fixed-step,步长填写为0.001s,这里是基于离散求解器ode3。误差主要源自连续求解器的变步长插值情况,固定步长会强制模型依照统一时间戳进行计算,进而从源头削减时间离散误差。
【新手避坑】
当步长≥0.01s的时候,报错“State derivatives not finite”常常会出现,之所以出现这种情况,是因为高速动态信号的采样点数不够。解决的办法是,先把步长降到0.0005s来运行一下试试,如果CPU负荷超过了80%,那就回调到0.001s,0.001s是推荐的最佳值,这样做能够兼顾精度和实时性。
步骤2 校准传感器噪声模型
行为:对CarSim里的传感器模块进行双击操作,进入Noise选项卡,完成勾选Enable stochastic noise这一动作,将白噪声强度调整为0.02(原本默认值是0.1)。缘由是:在仿真过程中所生成的传感器真值里面并不包含物理意义上的噪声,而在实际测量进行对标时出现的偏差大多是由于噪声模型偏大所造成的,0.02这个数值更贴近真实的MEMS陀螺仪水平。
【新手避坑】
通常出现的状况是,仿真曲线呈现出光滑的状态,然而实测数据却存在诸多毛刺,二者不相匹配。其根本缘由在于,噪声模型要么开启的程度过大,要么未曾开启。能够迅速达成解决的办法是,首先将噪声关闭,进而运行理想曲线,随后再逐步提升强度,直至与实测信号的RMS误差处于±0.3%以内。
步骤3 闭环误差补偿的两种方案对比
方案A:前馈补偿法,于控制器输出端添加修正矩阵,误差径直减去实测标定值,要去离线开展一回全工况标定,此过程需耗费3天时间,然而其具备最优的实时性。
方案B:在线卡尔曼滤波,把仿真值当作观测输入,进行估计的实时融合,(不需要进行离线标定,然而CPU占用率高15%)。
针对选法逻辑而言,台架测试的时候要选A,其目的在于追求那种能够将最真实误差予以压制的效果;而实车路试的时候则要选B,这是为了能够适应那些未知工况所产生的变化。
【新手避坑】
B方案当中出现了报错“Kalman filter diverged”,其缘由在于初始协方差矩阵被设置得太小,举例而言是0.001。存在一站式解决方案:将Q(过程噪声协方差)修改为0.1,把R(测量噪声协方差)变更为0.5,在运行10步之后会自动实现收敛。
将高频完整报错以及修复情况说明如下:对“Output of subsystem ‘Plant’ is not finite”进行报错,其修复原因常常是模型里除数快要接近零,就像车速处于0的时候去计算滑移率那样。修复的流程是这样的:要找到除法模块,在分母的后面串联一个饱和下限模块,这个饱和下限模块的Min下限是1e-6,如此一来输出马上就会恢复稳定。
那套位于上方的方法,于不含有高频冲击信号(像是路面突坎这类情况)的平常底盘仿真里,是极为有效的。要是你的模型牵涉到液压冲击或者齿轮敲击,误差便会再度出现。有个简易的替代方案:更换成来自Simscape的液压库模块,并且手动把事件检测散度设定为0.5。你在处理仿真误差之际,是对稳态漂移更为头疼呢,还是对瞬态尖峰更为头疼呢?在评论区讲讲你的场景,以便帮你进行针对性的调参。
微信扫一扫
还没有评论呢,快来抢沙发~