| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 自动驾驶仿真(七)—— ADAS HIL仿真测试及基于CANoe的交通信号灯仿真 -> 正文阅读 |
|
[人工智能]自动驾驶仿真(七)—— ADAS HIL仿真测试及基于CANoe的交通信号灯仿真 |
自动驾驶仿真七——ADAS HIL仿真测试及基于CANoe的交通信号灯仿真博主前面的博文已经简要介绍了Carsim、Prescan 与 Simulink 在 “V”型开发中MIL、SIL的应用,对于同样重要的HIL硬件在环仿真测试,就在本篇博文来讲讲,这次主要介绍ADAS HIL仿真测试的相关知识,以及基于CANoe实现交通灯仿真的实例。 1. ADAS HIL仿真测试高级驾驶辅助系统(Advanced Driver Assistance System,ADAS)是一项重要的主动安全措施,在有效提高汽车安全性和舒适性的同时,也是向高阶汽车自动驾驶方向发展的基础。目前新的车型越来越多的都搭载了ADAS,如何确保ADAS的可靠性和安全性是需要关注的一个关键问题,因此对ADAS的测试是必不可少的部分,目前针对ADAS的测试主要包括实车测试以及硬件在环(Hardware-in-Loop,HIL)测试两种手段。 1.1 HIL仿真测试工具链参考博主公司实际ADAS HIL测试方案,其实简单的ADAS HIL测试方案的工具链可主要分为三类:自动驾驶仿真软件 prescan/carmaker/carsim、simulink、CANoe,以上三者进行联合仿真的,可以开展1V单摄像头的暗箱测试,或者是1V1R的同时带雷达的仿真测试。 3)Canoe中主要负责搭建CAN通信网络相关的仿真环境,将网络报文等发送给ADAS控制器与接收ADAS控制器发出来的控制信号等。 1.2 摄像头暗箱仿真测试就刚才提到的摄像头暗箱仿真测试,摄像头仿真有两种方法:视频暗箱和视频注入。两种方式各有优缺点,在视频注入模块,直接将系统仿真的视频信号通过视频注入模块传输到摄像头,这种方法的优点在于视频流信号可以不失真的传入摄像头,不受周边环境影响;缺点是需要定制的视频注入模块,成本较高。另外一种方式是直接让摄像头识别显示屏上的显示的系统仿真的视频,这种方法的优点在于不需要专门的视频注入板卡,成本较低,但是需要根据显示屏的大小,精确的设定摄像头的摆放位置和角度,同时显示屏的频率有可能会造成图像识别的延迟,这些也都是需要关注的点。 参见上图,视频暗箱主要由暗箱、滑轨、显示器、透镜、摄像头及相关支架、底座组成。前面已经提到在暗箱测试中,摄像头和显示器等的摆放位置和角度等是很重要的,这里就涉及到相关标定工作,摄像头标定分两步走:分别是粗标和细标。粗标是指视频暗箱里的显示器、透镜、摄像头位置和高度的标定,保持摄像头、透镜和显示器的中心在一条水平线上;细标是指交通场景中车辆运行摄像头拍摄道路车道线的标定。在实际的ADAS HIL测试中,是以实时处理器运行仿真模型,然后通过I/O接口与被测ADAS控制器通信,通过视频暗箱中的摄像头采集视频信号来模拟实车行驶环境,使控制器误以为处于实车环境中,从而达到对ADAS控制器测试的目的。 2. CANoe软件仿真德国Vector公司的汽车总线开发工具CANoe (CAN Open Environment), 是世界上公认的汽车总线开发、仿真、测试和诊断的工具。在当今的汽车工业领域,恐怕没有一款软件比CANoe更具有知名度和权威性,在国内的整车厂和零部件供应商范围内也都在广泛使用。 2.1 简单的开关和灯仿真实例《CANoe开发从入门到精通》这本教材不错,是苏州博世的杨金升老师编著,是国内第一本关于CANoe的图书。开篇小例子就是《canoe开发从入门到精通》书中的经典开关和灯的仿真实例了。CANoe仿真基本工程流程如下:
下面就开始讲解下主要的仿真流程,这里就正常创建一个CAN 500Baud 1ch的新建工程,然后新建两个ECU节点,名称分别改称Switch、Light。 然后是创建面板,建立开关和灯,并将系统变量关联绑定在一起,因为系统变量是panel和ecu联系的桥梁,panel必须与信号或系统变量绑定在一起,不然无法传递信息给到ecu。 CAPL编程:CAPL全称Communication Access Programming Language ,是Vector为CANoe开发环境设计的类C语言。CAPL要和CANOE中的一个节点绑定在一起。它的文件后缀是.can。CAPL语言的一大特点是有事件控制进行的,只有事件发生时,才会触发执行指定的程序。本例中主要是涉及的两类事件触发:系统变量sysvar和CAN报文message。 上面都完成后,就可以开始运行测试与查看Trace,可以通过鼠标左、右键来进行switch的开关控制。 以下为动画gif示意: 2.2 交通信号灯仿真实例上一个小节只是介绍了单个开关和灯的简单例子,如果大家思考下,基于上面的主要建模思想,去拓展到更贴近实际的应用实例场景,大家回想到什么呢?或许一千个读者就有一千个哈姆雷特,不过博主当时做这个拓展思考的时候,首先想到的就是流水灯,因为博主之前写过一篇嵌入式开发博文就是以流水灯做的示例。所以当时非常自然地想起来流水灯的改编拓展,感兴趣的小伙伴同样可以查看我前面的该片博文。 为了实现以上的程序逻辑,我们需要增加相应的信号量及系统变量等相应设置,以及CPAL控制程序的编程实现。本例中时间间隔设置:T1=2s,T2=2s,T3=1s。这与实际的交通信号灯的时间间隔不一样,在此仅作为仿真示例设置。以下为一些主要的仿真要点。 系统变量中同样增加三种信号灯的系统变量。 控制面板同样建立三类信号灯,然后关联上各自对应的系统变量。 最后就是关键的CAPL编程控制实现,实现交通信号灯开关控制的逻辑。 然后就是可以运行测试与查看Trace仿真情况。 同样给出动画gif示意: 3. 参考学习的书目教材
=文档信息= |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:51:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |