在自动驾驶开发过程中,需要在各种行驶条件下,对无人驾驶技术进行不断的验证测试,从而确保其安全程度能够高于人类驾驶员的操作。这意味着,在一些时候我们要在实际道路上对其进行测试。
然而很多情况我们是碰不到的。如大雨天,如大雪天,再比如很复杂的交通环境。这些都是平常不轻易碰到的。所以我们需要仿真去填补这方面的验证。仿真占无人车开发较多的时间。虚拟测试也是积累无人驾驶汽车测试里程的重要手段之一。
虚拟道路测试,能够有效对危险或不常见的驾驶场景进行测试。虚拟道路测试的灵活性和多用性,使其在自动驾驶技术开发中发挥着重要作用。
仿真顾名思义就是尽量的用电脑计算模型将现实世界中的物理模型表达出来。
仿真器并不是越复杂,结果就越准确。因为涉及到很多采集不到的物理参数。考虑这些不准确的物理因素的时候,可能对仿真结果产生负影响。
仿真模型确实是提供了很多方便,但是仿真有一个致命的问题。就是仿真器的数据模型太过理想化。因为仿真器提供的都是纯粹从数学模型导出来的东西,而且很多物理参数,实际上是基本得不到的。比如材质的应力啊, stiffness啊之类的。所以,通过仿真器得出的结果只能是当做参考。
要想让数字仿真技术在自动驾驶汽车的训练和测试中发挥高效发挥,我们得保证虚拟世界要和真实世界无限接近。在GPU的驱动下,细节逼真的图像以及鲁棒的物理引擎,为工程人员提供给了所需的有利条件。
当模拟环境成功创建之后,它必须要接入一套自动驾驶系统。
最终把算法在实车中进行验证才是最最保险的方法。所以一般的开发就是仿真跟实车测试反复循环。
一、Gazebo平台
Gazebo平台可以提供在复杂的室内和室外环境中准确有效地模拟训练机器人的能力。它拥有一个强大的物理引擎,高品质的图形,方便的编程和图形界面。最重要的是,Gazebo是一个充满活力的社区免费。三维机器人模拟器Gazebo一般结合机器人操作系统ROS来测试。
优点:
1.动力学仿真
可以连接多个高性能物理引擎,包括ODE,Bullet,Simbody和DART。
2.先进的3D图形
Gazebo利用OGRE提供逼真的渲染环境,包括高质量的照明,阴影和纹理。
3.传感器和噪音
从激光测距仪,2D / 3D摄像机,Kinect风格的传感器,接触式传感器,力矩等等生成传感器数据,可选的噪音。
4.插件
可开发机器人,传感器和环境控制的自定义插件。插件可直接访问Gazebo的API。
5.机器人模型
提供了许多机器人,包括PR2,Pioneer2 DX,iRobotCreate和TurtleBot。 或者使用SDF构建你自己的。
6.命令行工具
广泛的命令行工具有利于模拟内省和控制。
7.云模拟
通过运用Gazebo的功能来整合现有的模型和传感器。
二、Prescan平台
prescan原本是TASS INTERNATIONAL的产品。然后最近被西门子收购了。然后成为了西门子tass international 的prescan。
这软件提供ADAS仿真,环境仿真,Model in the loop,Software in the loop和Hardware in the loop 仿真。
prescan仿真过程的建立:
1.通过prescan提供的各种模型建立环境模型。如车道啊,车辆,行人轨迹及位置等等
2.把传感器放在车上。既然是无人车和adas仿真,那么各种传感器是必不可少的。prescan提供很多不一样的传感器,可以根据需求放到车上。不过可调整的参数很有限。但是相对于其他两个来说还是很好了。比如precan提供laser scanner的同时还可以设置laser的个数,扫描方式等等。
3 通过Matlab/SIMULINK 建立控制模型,也就是我们在开头说的各种计算就发生在这个阶段。感知,决策,执行都是在这个阶段通过simulink 平台完成的。
4 最后通过prescan和matlab/SIMULINK的耦合仿真来完成数据可视化,仿真数据可视化,驾驶环境可视化等等操作。实际上最后一步就是可视化的阶段。
总的来说,prescan的作用是快捷搭建的无人车测试平台。这个平台搭建好之后,我们就可以通过matlab进行控制模块的构建及仿真。
prescan的优点在于,方便,GUI简单明了,提供了很多种传感器供选择,提供很多可视化的行人模型和车辆模型,可控制天气环境可视化。而且因为主要控制模块都是基于matlab/SIMULINK的,所以可以直接利用很多matlab/SIMULINK的功能,比如可以直接调用matlab/SIMULINK的计算机视觉功能,机器人功能等等。同时matlab/SIMULINK的model based design还是ISO26262里规定的设计方法,所以设计的算法可以相对容易的转移到别的平台上或支持MBD的应用里面。
三、Carsim
CarSim是Mechanical Simulation Corporation推出的一款整车仿真软件,主要从整车角度进行仿真。这个软件比较“傻瓜化”,其本质上是一个模型库+参数库+求解器+后处理工具+配置界面。也就是说,这个仿真软件自身已经自带了相当数量的模型,并且这些模型都有一些“比较靠谱”的参数,用户免去了繁杂建模和调参数的过程,只要将已有模型“拼”在一起,调整参数即可进行仿真。
因为CarSim做的全是整车仿真,为了提升仿真的速度,所以CarSim里的模型都比较简单,通常就是简单的公式或者基于特性(查表)的模型,参数也比较少,但是从整车层面来看,其精度还是可以接受的。
对于一些将控制策略与整车结合在一起的仿真,用户不再需要自己建立整车和道路模型,所以实现起来相当方便。
CarSim可以把仿真结果生成动画,让用户非常直观的去理解仿真的结果。
另外CarSim也带有实时仿真所需的工具和联合仿真所需的接口,方便用户将CarSim与自己的软硬件平台进行集成。可以很便捷的实现驾驶模拟器等仿真平台。
Mechanical Simulation Corporation公司在CarSim之外还有面向卡车仿真的TruckSim和面向两轮车辆的BikeSim。
四、ADAMS
ADAMS是MSC Software推出的一个多体动力学仿真工具,其主要功能就是进行多体动力学建模和仿真。
那我们能不能用它去做整车仿真呢?当然是可以的,可以用多体动力学的方法去建立整车模型,然后进行仿真。但是这样的整车模型复杂度很高,仿真的速度可能会很慢。
同样,ADAMS也具有动画生成功能,可以把仿真的结果生成动画,方便用户观察复杂机构的运动情况。
由于ADAMS是多体动力学仿真工具,所以对于结构复杂,不能很直接得出其特性的机械结构,可以用这个工具进行分析,比如汽车的悬架。
ADAMS同样具有联合仿真接口,可以与其他仿真工具联合仿真。
五、Cruise
Cruise是AVL推出的一款面向动力总成的仿真工具,和CarSim类似,Cruise也内置了很多的模型,如果要是做一些简单仿真的话,动动鼠标,改改参数就可以让仿真跑起来。
不过Cruise是纯粹的“数据流”,并不会生成动画,只能通过曲线和数据来观察仿真结果。
Cruise同样具有联合仿真接口,也可以在实时平台上运行。
六、Simulink
之前介绍的三款软件都是面向个别专业领域的软件,而Simulink则是一个万能建模工具。从我个人的经验来看,对于工程领域问题的仿真,Simulink可以说是“只有你想不到,没有它做不到”。
Simulink的界面比较“不友好”,大量的工作都需要用户自己来完成,不再是“动动鼠标”那么简单。但是你完全可以通过Simulink完成整车建模仿真、多体动力学建模仿真、动力总成建模仿真等工作。
只要你肯动手,可以通过VRML来制作动画,让仿真结果更直观。
Simulink同样具有很完善的接口,方便与其他软件联合仿真,也可以实现实时仿真,搭建驾驶
模拟器之类的也是Simulink可以胜任的工作。