CANoe中ADAS功能集介绍

描述

 

 高级驾驶辅助系统(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#等编程语言访问这些对象,以便进行分析、仿真或测试。

adas

2.

Scene窗口

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

adas

3.

Trace窗口

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

adas


 

应用举例

1.

CAPL访问ADAS对象

通过vCDL定义ADAS对象后,可以通过CAPL编程的方式来对其进行操作。

最常用的传感器对象的成员通过接口ISensor描述,ISensor接口中包含Data和Methods,如图所示:

adas

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窗口中直观显示出来。

adas

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

adas

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

adas

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

adas

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

adas

2.

总线数据转换

CANoe本身具有强大的总线数据处理的功能,可以非常便捷地获取CAN/Ethernet等总线报文中包含的传感器数据,然后通过CAPL编程的方式将报文中的数据映射到ADAS对象上,以便更直观地分析,或是进行进一步的测试等。

对于CAN总线上的数据,可以通过事件捕获目标报文,在事件中使用读取当前报文中的信号,并将值赋给目标ADAS对象,即可实现传感器或检测对象的数据从CAN报文到ADAS对象的转换。这里需要注意的是,由于单个CAN报文的数据长度较小,同一对象的数据可能分散在多个报文中,无法在一个事件中完成赋值。这种情况可以通过ISensor接口的BeginUpdate()、SetDetectedObjectCompleted()以及Update()方法实现等待所有数据都赋值完成后才更新并发送ADAS对象信息。

adas

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

adas

3.

基于Scenario Editor的场景仿真

CANoe中自带一个简单的场景仿真工具Scenario Editor,可以通过图形界面创建场景,实现加载地图、定义车辆及行驶轨迹、定义传感器等功能。场景中的车辆、传感器可与vCDL中定义的ADAS对象直接对应,配合编程语言便于仿真一些简单的测试场景。

场景中的车辆与vCDL中的IGeoObject接口对象直接通过名称关联,如下图黄色高亮所示,车辆上的传感器则通过SensorID与ISensor接口对象关联,如下图中红框所示。完成映射后,ADAS对象会按照场景中设定的路径、时间轴执行相应动作。

adas

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

adas


 

总结

CANoe中的AFS为用户提供了ADAS分析、仿真、测试所需要的窗口、对象、接口等。除文中介绍的内容外,还提供与其他工具交互、在虚拟环境中使用等功能,并且随着CANoe版本的不断更新还会添加新的功能并完善已有功能。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分