高级驾驶辅助系统(ADAS)在汽车中的应用日益增长,为了满足工程师对于ADAS的分析、仿真和测试等功能的需求,CANoe从15.0版本开始提供ADAS Feature Set(ADAS功能集,简称AFS)。AFS作为CANoe基础功能的一部分,不需要购买额外的Option即可使用。同时,CANoe本身的强大功能和开放接口使得结合总线通信,集成第三方工具,实现SIL/HIL等都变得更轻松。
功能概述
>
集成基于ASAM OSI规范的ADAS数据模型,可以通过CAPL/C#代码轻松地访问ADAS对象的信息,并实现与总线数据的交互;
>
能与第三方仿真环境通过MATLAB、C-API或FMU实现ASAM OSI数据流交互;
>
可通过Trace、Scene等分析窗口对ADAS对象进行可视化分析。
>
配合CANoe自带的场景编辑器Scenario Editor可进行简单场景仿真,也可以集成DYNA4或其他第三方工具用于更细致的场景仿真和车辆动力学仿真。
>
结合Communication Setup中的应用模型(基于CAPL/C#)以及测试API可实现闭环HIL系统验证。
>
可根据被测应用的接口生成SIL Adapter,实现对纯软件级别的被测系统的访问和数据交换,以便直接在开发环境中测试ADAS算法。
窗口介绍
1.
Communication Setup窗口
CANoe中ADAS对象是在Simulation -> Communication Setup窗口中通过vCDL(Vector Communication Description Language)文件添加的。在vCDL中使用语句导入ADAS模块后,即可按需定义ADAS对象。之后可在Application Models或是测试模块中通过CAPL、C#等编程语言访问这些对象,以便进行分析、仿真或测试。

2.
Scene窗口
Scene窗口是一个可以显示传感器、检测对象、真实目标等ADAS对象的可视化窗口。CANoe运行过程中,ADAS对象的位置、大小等信息会以三维图像的形式被绘制在窗口中,并与左侧列表中的对象通过颜色进行对应,以便更直观地观测ADAS对象。

3.
Trace窗口
Trace窗口是CANoe用户较为熟悉的一个分析窗口。针对ADAS应用,Trace窗口也扩展了数据分析功能。选择Layout为ADAS后,即可通过DO(Distributed Object)的方式显示和解析传感器和检测对象的相关参数。

应用举例
1.
CAPL访问ADAS对象
通过vCDL定义ADAS对象后,可以通过CAPL编程的方式来对其进行操作。
最常用的传感器对象的成员通过接口ISensor描述,ISensor接口中包含Data和Methods,如图所示:

Data中主要包含sensor_info,其中sensor_view_configuration和sensor_data主要是传感器本身的一些信息(例如id、检测范围、安装位置等),detected_objects则是传感器检测到的对象的列表;Methods中包含Create/Get/Set/Update/Remove等方法,可用于对检测对象进行创建/获取/设置/更新/移除等操作。
在使用CAPL设置ADAS对象时,通常情况下首先需要设置传感器自身参数,例如range表示检测的距离,field_of_view_horizontal表示水平方向上检测的角度,这些都可以在Scene窗口中直观显示出来。

然后,可使用GetOrCreateDetectedObject方法来添加指定trackingId的检测对象或是获取已有trackingId的检测对象的信息,例如:

检测对象根据定义可以是如下之一:

GetOrCreateDetectedObject方法的返回值为检测对象对应的名称,为该名称添加前缀后,可通过lookupDistObj在指定的检测对象类型中查找,并最终返回具体的某个对象,例如:

之后,即可用类似访问总线信号的方式,直接通过$符号来访问对象中的数据,例如:

2.
总线数据转换
CANoe本身具有强大的总线数据处理的功能,可以非常便捷地获取CAN/Ethernet等总线报文中包含的传感器数据,然后通过CAPL编程的方式将报文中的数据映射到ADAS对象上,以便更直观地分析,或是进行进一步的测试等。
对于CAN总线上的数据,可以通过事件捕获目标报文,在事件中使用读取当前报文中的信号,并将值赋给目标ADAS对象,即可实现传感器或检测对象的数据从CAN报文到ADAS对象的转换。这里需要注意的是,由于单个CAN报文的数据长度较小,同一对象的数据可能分散在多个报文中,无法在一个事件中完成赋值。这种情况可以通过ISensor接口的BeginUpdate()、SetDetectedObjectCompleted()以及Update()方法实现等待所有数据都赋值完成后才更新并发送ADAS对象信息。

对于Ethernet中的数据,同样可以通过、或是对于SOME/IP数据的OnSomeipProcessRxMessage()等事件/函数获取所需的目标数据,以便赋值给ADAS对象用于后续分析、测试等。

3.
基于Scenario Editor的场景仿真
CANoe中自带一个简单的场景仿真工具Scenario Editor,可以通过图形界面创建场景,实现加载地图、定义车辆及行驶轨迹、定义传感器等功能。场景中的车辆、传感器可与vCDL中定义的ADAS对象直接对应,配合编程语言便于仿真一些简单的测试场景。
场景中的车辆与vCDL中的IGeoObject接口对象直接通过名称关联,如下图黄色高亮所示,车辆上的传感器则通过SensorID与ISensor接口对象关联,如下图中红框所示。完成映射后,ADAS对象会按照场景中设定的路径、时间轴执行相应动作。

对于场景中的传感器在场景中检测到的对象,可以通过ISensor接口的GetDetectedObjects()方法直接获取,与案例1类似,通过lookupDistObj()找到对应的检测对象后,即可通过<$>访问检测对象的属性例如尺寸、速度等,用于后续的测试。

总结
CANoe中的AFS为用户提供了ADAS分析、仿真、测试所需要的窗口、对象、接口等。除文中介绍的内容外,还提供与其他工具交互、在虚拟环境中使用等功能,并且随着CANoe版本的不断更新还会添加新的功能并完善已有功能。
-
adas
+关注
关注
311文章
2299浏览量
211501 -
CANoe
+关注
关注
4文章
80浏览量
9533 -
驾驶辅助系统
+关注
关注
0文章
118浏览量
17191
发布评论请先 登录
CANoe:网络和ECU开发、测试和分析的专业工具
评估板EVAL-ADAS1000SDZ用于演示用于医疗仪器的ADAS1000集成ECG设备
ADAS技术介绍
ADAS最全功能介绍
ADAS有什么功能?ADAS的核心技术详细介绍。你是否需要一个ADAS?
Python与CANoe/CANoe4SW
CANoe仿真HTTP节点的实战秘籍大公开

CANoe中ADAS功能集介绍
评论