仿真测试结果分析 3个步骤避开常见坑

发布于 更新于
1,139
3
详情介绍

我亲自测试Prescan 2024a版本,经历过数据与真值无法对应的情况,对于新手而言,依照步骤逐个进行操作,就能够轻易避开此类常见问题。

第一步 打开Log数据清洗模块

轨迹:模拟仿真之后进入会话界面,接着导出日志,后进行数据筛选。将“时间戳对齐”一项勾选上,将“速度阈值 0.5m/s”设定好。经过这一步骤,可以把处于静止状态时产生的噪声点去除掉,把有效的加减速片段留存下来。

【新手需避坑】,常见的会出现报错,即“导出的CSV文件当中时间戳出现重复”。其核心的原因就在于仿真步长跟记录步长并不一致。解决的办法是,回到Simulation Settings,把“Fixed step size”强制变更为0.01s,然后再重新去跑一次仿真。

第二步 调整关键参数并做方案对比

参数“横向加速度变化率”的推荐值设定为3m/s³哦 ,要是设得太低 ,比如说设成1 ,那就会致使转向响应变得迟钝呀 ,要是设得太高 ,比如说设成6 ,那么曲线就会出现很多毛刺呢 ,而且还没办法通过平滑性的测试。其理由在于 ,要兼顾实车体感以及控制器的稳定性。在这里提供了两组实操方案呢 ,方案A采用默认PID参数 ,方案B采用自整定LQR参数。在低速泊车场景下选择A ,在高速变道场景下选择B。取舍的逻辑是 ,A响应快可是存在超调现象 ,B平滑但计算延迟比较高。

针对新手的避坑提示是,遇到报错显示为“LQR输出饱和”,其原因在于权重矩阵Q和R的设置出现了失衡情况 ,快速解决办法是 ,首先恢复到出厂设置 ,让Q等于单位矩阵eye(4) ,R等于1 ,接着再逐步地调高R的值 ,直至抖动消失。

第三步 运行完整报错排查流程

较高频次出现报错:“在总线信号里无法找到变量‘vel_y’”。完整的、能实现一站式解决的流程如下:其一,检查Simulink信号线命名是不是带有下划线,其二,双击MATLAB Function模块,把vel_y改成vel_y_out,其三,在Signal Logging里重新映射总线信号。做完这三步之后再点击Run,报错便消失了。

新手要避免踩坑,要是仍然出现报错情况,那就表明模型引用路径是损坏的。用鼠标右键点击模块,接着选择Link Options,然后点击Break Link,随后再手动去保存模型,如此一来问题就能被彻底解决。

这个方法不适用的场景是:纯粹依靠视觉来进行感知的闭环情况,这种情况需要用到图像处理插件,还有硬件在环的实时仿真场景,这一仿真场景受到FPGA时钟的约束限制。有一个简易的替代方案是:转而采用PreScan的OSI接口去输出原始的点云数据。上面所提到的这些步骤全部都是基于纯软件在环的环境来进行验证的,要是你能够一步一步地照着去做,那么你同样是可以避开我曾经踩过的那些坑洞的。你在进行仿真运行的时候曾经碰到过因为“数据漂移”从而致使测试失败的状况吗?欢迎在评论区域交流相关的解决办法。

常见问题(FAQ)

为什么导出的CSV文件中时间戳会出现重复?
核心原因是仿真步长与记录步长不一致。解决方法:在Simulation Settings中将Fixed step size强制改为0.01s,然后重新运行仿真。
LQR输出饱和报错如何快速解决?
权重矩阵Q和R设置失衡导致。快速解决:恢复出厂设置,令Q=eye(4),R=1,然后逐步调高R值直至抖动消失。
总线信号中找不到变量'vel_y'怎么办?
完整排查流程:1. 检查Simulink信号线命名是否带下划线;2. 在MATLAB Function模块中将vel_y改为vel_y_out;3. 在Signal Logging中重新映射总线信号。若仍报错,则右键模块选择Link Options→Break Link,手动保存模型。
3 讨论
热门最新
总结
暂无总结

时间戳重复的问题我也遇到过,原来是步长不一致,下次直接改Fixed step size试试。

第三步的排查流程太实用了,之前遇到vel_y报错搞了半天,现在终于知道怎么解决了。

写得很详细,之前一直卡在LQR输出饱和上,按你的方法调了R值果然好了,感谢分享!

0 / 600