
基于CANoe实现毫米波雷达数据的可视化展示
简介
CANoe是一种强大的总线测试、仿真、诊断的上位机软件,不仅可以满足客户在相关总线的开发验证的需求,随着这几年自动驾驶相关技术的兴起,CANoe还可以在ADAS相关领域提供相应的支持。
本篇文章所介绍的是通过CANoe对毫米波雷达的数据进行图形化显示。
设备及环境搭建
我们选择的毫米波雷达是一颗德国大陆公司所生产的“ARS408-21SC3”毫米波雷达设备,该雷达具有一定的普遍使用性,客户群体庞大。
先准备好该雷达所提供的DBC文件。
将DBC加载到CANoe的CAN通道上。
在CANoe中“Simulation”中有“System and Communication Setup”模块,在该模块中提供了“Application Models”接口,该接口可添加解释文件.cs文件,提供了可编辑的接口。
程序实现原理介绍
C#代码部分实现及解析
通过调用Vector提供的接口库,实现与CANoe之间的数据交互。
1、库文件引用
“Vector.CANoe.Runtime”为该程序与CANoe数据交互的接口,“NetworkDB”为程序引用DBC的接口。
2、创建“获取或创建移动目标的函数”
创建“GetOrCreateMovingObject”函数,通过“trackingId”来获取相关目标物信息。
3、处理“obj_0_Status”报文
DBC中报文“obj_0_Status”的“Obj_NofObject”为毫米波雷达所扫描到的目标。
创建第一个报文处理函数,用于处理报文“obj_0_Status”,在该函数里,通过获取总线上的报文解析出来的信号信息“(int)statusMsg.Obj_NorOBjects.Value”,统计出毫米波雷达所扫描到的物体数量。
Radar1为在CANoe Scene中所定义的Senser名称。
在第一条OnCANFrame函数中,定义好在“Scene Window”中目标的显示的距离及水平探测角度。通过“BeginUpdate.Call()”触发目标的实时更新,当目标超出探测范围之外通过“RemoveDetectObjects.Call()”将目标移除。
4、处理“generalMsg”报文
创建第二个报文处理函数,用于处理报文“generalMsg”,在该函数里,通过解析相关信号,获取目标物的x轴的位置及y轴的位置。
如下图所示,将解析的目标物x,y轴位置信息与所创建移动目标所关联。
5、处理qualityMsg
创建第三个报文处理函数,用于处理“qualityMsg”,在该函数中,通过解析“Obj_ProbOfExist”信号,获取该“trackingId”下目标物的存在概率,该概率值会影响到目标物在视图中的显示情况。
如下图所示:
6、处理“extendedMsg”报文
解析报文并供单个目标物显示。毫米波雷达提供了不同物体的探测信息。
通过获取总线上的目标宽度和长度信息确定目标物体在“Scene Window”中的显示大小,需要强调的是,毫米波雷达只能显示平面物体信息,并不能显示高度信息,因此在“Scene Window”中进行的3D显示,需要人为设定物体的高度。
通过上述方法显示扫描到的物体后,探测的物体数量的参数值需要进行处理,通过“SetDetectedObjectCompleted.Call()”实现对于目标物体的设置完成,并通过“Update.Call()”实现数据的更新添加新扫描的物体进行相关处理。
实车测试展示
在实车测试中设备安装情况如下:
实车测试时,CANoe “Scene Window”显示的毫米波探测的物体信息与双目摄像头播放的图像及相关的目标检测算法同步。
CANoe作为一种实力强大的总线分析、测试、仿真软件,具备很多的实用二次开发功能,请大家期待更多的CANoe有趣应用分享。
文章转载自公众号:东信创智
