大家好,我是李慢慢。
花了一周时间学习SCANeR Studio这个仿真软件,勉强搞懂了这个软件的操作,也运行了一两个简单实例,忍不住来记录下,希望能给初次接触这个软件的道友一些直观的印象,最主要的,也是帮自己梳理下知识体系,好在今后查漏补缺。
SCANeR studio中的仿真场景示例
目录:
1、软件功能简介
2、软件背景介绍
3、软件界面
4、仿真小实例
5、脚本控制
6、外接接口-协同仿真
7、一点题外话
1、软件功能简介
摘录一段来自北京锋大科技对它的介绍:“SCANeR™studio是一个全面的软件套件,致力于汽车和交通模拟解决测试和驾驶的ADAS、自动驾驶汽车、HMI和大灯用例。SCANeR™studio提供了构建超真实虚拟世界所需的所有工具和模型:道路环境、车辆动力学、交通、传感器、真实/虚拟司机、车头灯、天气条件和场景脚本。它远非一个“黑匣子”工具,而是一个真正的模块化仿真平台,灵活、可扩展、开放,满足了研究人员和工程师的需求。它的通用性使一系列完整的设置成为可能:驱动模拟器、模型在环MIL、软件在环SIL、硬件在环HIL。”
总的来看,在功能上,这个软件和目前的流行软件(PreScan,CarMaker,VTD等)是没有多大区别的,功能十分强大。能否在市场持续存在,就靠更新速度和营销力度了。
2、软件背景介绍
SCANeR™studio来自法国的一家名为AVSimulation的公司,这家公司是2017年由OKTAL公司(SCANeR™studio的母公司)与雷诺公司强强联合而成的合资公司,但SCANeR™studio这个软件本身已经有30多年的历史,在全球拥有众多的客户和合作伙伴,底蕴雄厚。可以通过下图来简单感受下:
上图来自AVSimulation公司官网:https://www.avsimulation.com
3、软件界面
虽然软件集成了很多模块,但我依然发现整个布局逻辑性很强,在TERRAIN界面下做创建路面环境(如下图1),在VEHICLE界面下做车辆建模(如下图2),在SCENARIO界面下作场景组合配置(如下图3),在SIMULATION界面下做仿真运行(如下图4),在ANALYSIS界面下做分析(如下图5)。所以学习起来也没那么吃力,加上很多东西(如车辆、行人、路标等)都是拖拽式一键生成,所以按照路面->车辆->场景->仿真->分析的步骤来建模,很快就能做一个小实例出来。对于新手来说,学习可以很快。
图1:TERRAIN界面
图2:VEHICLE 界面
图3:SCENARIO界面
图4:SIMULATION界面
图5:ANALYSIS界面
4、仿真小实例
干说不练假把式,我们来简单地建立一个场景吧,看看整个流程。
4.1、首先切换到TERRAIN界面创建一条简单的不能再简单的道路:直道。在这个界面中,最左侧是道路描绘功能,最右侧控制道路的显示类型(上)和对道路进行参数化定义(下),中间就是绘图创作区域了。这里我激活直线功能,在绘图区画了一条直线,选择显示方式为逻辑内容,放大后,就能看到我们创建的道路的样子了。然后将道路保存。
4.2、跳过第二步的VEHICLE建模,我们这里不创建车辆,直接到下一步中直接调用SCANeR studio自带的车辆模型。
4.3、切换到SCENARIO模式下,打开上上一步保存的道路模型,然后从右侧的资源库里拖动一辆车到道路中。(右侧的资源库十分强大,啥都有,各种车,各种人,各种道路设施,各种传感器、各种外部脚本接口等等。)车辆拖到道路中后需要设置下车辆的驾驶行为,双击车辆即可打开车辆模型的设置窗口,为了简单,我将其设置为自动驾驶模式。
4.4、切换到SIMULATION界面,我简单加载了一个TRAFFIC进程(自动驾驶需要),和一个VISUAL进程(后续观看车辆行驶需要),还有一个RECORD(后续分析车辆数据需要),然后点击上方的运行按钮即可开始仿真了。
运行起来后如下所示。
4.5、这样我们就简单跑起来了一个车辆模型,结束仿真后,切换到ANALYSIS界面下,可以找到我们仿真中录制的结果,可以重复观看车辆行为,也可以打开数据窗口,查看各种参数。如下图,就简单地查看了下车辆的行驶速度曲线。
以上就是这个软件的大概的仿真流程了。有木有很简单?不过我省略了很多描述,很多细节都采用了默认设置。想要真正用好这个软件,还是有很多很多细节需要抠的。
5、脚本控制
脚本控制,用来控制一些特殊的触发条件,非常适用。比如什么时候报警、什么时候亮灯、什么时候下雨、什么时候刹车等,编程并不难,因为软件本身自带了很多函数API,只需要调用并组合就可以了。比如我简单通过距离条件设置了一个下雪天路面积雪的深度的案例。
这个只是一个非常简单的应用,我也见过官方自带的场景库里对街边路灯和车灯有非常酷炫的控制。炫酷不炫酷其实不重要,重要的是要能搭建出真实场景。真实的物理世界千变万化,要能反应出来需要软件提供相当大的自由度。好在这个软件在建模方面本身自由度已经很大(抠细节抠的不要不要的),然后加上还有脚本控制,就相当全面了。
6、外接接口-协同仿真
SCANeR studio提供外部程序接口,只需要定义好要调用的程序,就可以使用外部的程序或者软件,来达到自己的目的。这种调用,在我看来可以是单向的,比如VISUAL进程,就是单纯的只能看SCANeR的视频输出画面;也可以是双向的,比如外接的SIMULINK,SIMULINK程序能获得仿真车辆的输出参数作为输入,再通过自己的某种算法得出结果并将结果输出反馈给SCANeR来进一步控制车辆,形成一个双向的回路。
配置好SCANeR和Simulink之间的通信之后(此处省略一万字。。。),我做了一个目标速度控制的模型,如下所示。首先搭建一个如下的Simulink模型,左侧橙色部分是将SCANeR中的车辆的输出信号取出,在中间通过一个PID控制,使得速度稳定达到100,再将实时控制速度输出给右侧蓝色部分(相当于SCANeR的接收器),用于控制SCANeR中的车辆的速度。这样就构成了一个速度控制的回路。
然后,将Simulink模型和SCANeR中的仿真场景都运行起来(如下),两者之间的通信就开始了。
随后模型跑起来,就能看到自己加入“算法”后的效果了。如下。
7、一些题外话
本次分享的这点内容实属简单,其目的也只是为了普及下这个软件,也帮助自己梳理出个基础的认知。学习过程中在网上能到的有用的资料真不多,全靠软件自带的帮助文档了。另外,在宏景智驾兼职的这段时间,蹭上宏景的wifi才有机会使用这个软件一段时间,也多亏了唐唐的诸多指导,才勉强学了下来,在此真心表示感谢。
学习过程中也遇到一些问题,留待以后再解决吧。
vx公众号 -车路慢慢
路慢慢兮,绵绵用力,久久为功。
版权声明:本文系个人原创,图片多为软件截图,欢迎转载。如有侵权,也请后台联系本人处理,谢谢。