刘继业 2021-08-23发布 阅读:917次 ⋅ 数字孪生汽车  概念研究   ⋅

为了进一步推进城市和汽车的融合发展,数字孪生城市实验室和数字孪生汽车实验室共同开展了数字孪生汽车(Digital Twin Vehicles)概念验证工作,同期设计编辑平台开放标准和架构,实现人人可以参与的数字孪生汽车技术开源生态。

基于数字孪生汽车基础设施,研发团队开展了自动驾驶仿真软件LGSVL的试验,试验过程中遇到了两个问题:一是Apollo 5无法获取到仿真场景中的红绿灯图像,二是车辆沿直道行驶,方向不能保持,总是左右摇晃。

从操作系统监视看,Linux机器的4个内核占用率都到了100%,应该是因为CPU性能不够导致的延迟。而且Apollo官方建议也使用8核CPU,因此我打算升级下CPU再进行试验。监测GPU发现,GPU性能足够,还没有把GPU的性能完全使用上。

现在的CPU是i5 6500,CPU可以升级到i7 7700k 4核8线程的CPU,没有6核、8核CPU可用。通过采购i7 7700kCPU,由于7700K发热较大,还可能需要超频,原装散热风扇无法提供保障,于是还购买了好一些的散热风扇进行升级。

按照数字孪生汽车编辑器开发计划,采用了两种方法进行测试。一是分别在两台机器上运行Apollo 5程序和仿真器程序;二是使用Apollo 6作为自动驾驶计算软件。

按方案1试验时,车辆左右摇摆的问题依然存在,但红绿灯识别问题解决了,车辆可以正常通过路口,执行自动驾驶,但CPU的8个线程都达到100%,即便是超频到5.0GHZ,问题依然存在。

按方案2试验时,车辆左右摇摆的问题消失,车辆能够正常到达终点,虽然Apollo仍然报了IMU数据延迟的错误信息。

通过对比Apollo 5和6两个版本软件的运行配置,发现两者有比较大的区别。

Apollo在进行自动驾驶计算时,要开启很多线程,用来从仿真器获取传感器数据,并进行融合计算,因此对CPU要求很高。在Apollo 5中,开启了红绿灯、摄像机、IMU、感知、路由、规划等8、9项功能,才进行自动驾驶计算,计算量较多;而在Apollo 6中,系统对数据进行了整合,开启了5项功能,就可以进行自动驾驶,对CPU的要求就降低了。

自动驾驶仿真试验成功后,开始对仿真器的代码进行研究,目的是了解仿真器在环境、传感器、交通、地图方面的仿真方法、实现方法。通过研究发现,仿真器是一个Unity项目,可以用游戏软件与其对比来理解。

在游戏中,都会有一个地图和游戏角色(玩家控制),对应到仿真器中就是仿真场景和自动驾驶主车,在场景中,环境(光照、雨、雪等)信息都是由仿真器提供的,可以对应到游戏的环境信息,这些都属于Unity这个工具的基本功能,不需要进行开发,只需要使用即可,对于UE开发的项目也是相同的思路。

游戏角色是由玩家使用鼠标键盘等输入设备进行控制,而自动驾驶主车在场景中通过API接口与Apollo等自动驾驶系统通信,向其发送模拟出来的传感器数据并接受车辆控制信号,控制车辆运动。

自动驾驶中的其它车辆、行人也可以理解为游戏中的NPC、怪物,只不过车辆、行人基本上是在道路上运动,需要遵守一定的规则。

目前研究了环境、摄像机、场景地图的实现机制。环境、摄像机都是使用Unity这个游戏开发工具内置的组件实现的,这些功能属于游戏开发的基本功能,仿真器开发只需需要使用即可。场景地图也可以说是游戏的基本功能,在这方面LGSVL定义了一种地图格式,其中嵌入了OpenSCENARIO、OpenDRIVE标准,并且开发了一个场景编辑器来设计游戏地图。

其它传感器,如GPS、IMU、激光雷达,这些传感器仿真是仿真器自己开发的,Unity没有提供,这些都有公开的算法,集成到系统中即可,只要定时生成,通过接口发送给Apollo即可。

相关问题将逐步通过数字孪生城市实验室公众号发布。


作者:刘继业,翼络数字UXV实验室副主任


评论

您不能发表评论,可能是以下原因
1、登录后才能评论
2、作者关闭了评论