如何构建自动驾驶仿真系统呢?目前主流的实现方式是通过游戏引擎来模拟真实环境,通过 CarSim 等软件构建汽车的动力学模型来实现自动驾驶仿真。 本文来源:DataFunTalk 如何构建自动驾驶仿真系统? 仿真最主要的目的是:通过模拟真实环境和构建汽车模型,找出自动驾驶过程中可能出现的问题。 那么如何构建自动驾驶仿真系统呢?目前主流的实现方式是通过游戏引擎来模拟真实环境,通过 CarSim 等软件构建汽车的动力学模型来实现自动驾驶仿真。下面我们先看下自动驾驶仿真系统的整体结构。 我们需要自动驾驶仿真系统满足:
场景 首先我们关注仿真器本身,仿真器无非是模拟支持各种场景,其中场景分为:可以定义的场景和随机场景。可以定义的场景又分为:单元场景和真实场景。 下面我们分别介绍下这几种场景:
我们可以看到不管是哪个场景,都是'地图+车+行为'的模式,场景的需求复杂多变,因此能够灵活的加载地图,车和行为就成为仿真器易用性的关键。 我们的需求是能够根据不同的要求创建不同的场景,动态的添加地图,车和行为。场景生成器是一个框架,支持通过不同的配置,动态创建不同的场景,来满足我们的要求。除了场景生成器,我们还需要仿真器具备以下几个基本功能:
有了这些基础功能还不够,我们还需要关心具体的场景,下面我们分别对地图、车以及行为来详细描述需要实现的具体功能: 地图 地图是场景中第一个需要考虑的,地图包括2部分,其中一部分是游戏中的模型,另外一部分是这些模型的高精度地图。换一种说法就是,首先我们需要在游戏中构建一个1:1的虚拟世界,然后再绘制出这个世界的高精度地图。其实游戏中的模型是游戏引擎的需求,游戏引擎是根据模型来渲染游戏画面的,没有模型也就渲染不出地图。而高精度地图是自动驾驶系统所需要的,高精度地图可以采用根据现场绘制的地图,也可以先得到游戏模型,然后在模型中绘制。 下面是游戏中的地图和高精度地图的对应关系。 1. 真实场景地图生成 ① 地图模型制作: 游戏中地图模型的制作相对来说是工作量比较大的工作,涉及到以下2点:
② 高精度地图制作:
关于真实场景的地图生成,目前还没有一个比较完美的解决方案,都需要大量的工作。下面我们再看下虚拟场景的地图生成。 2. 虚拟场景地图生成 虚拟场景的道路生成就比较简单,主要的应用场景是一些园区,或者一些测试场景。这一部分完全可以制作一个地图编辑器,类似游戏中的地图编辑器,玩家可以根据自己的需求创建游戏中的地图,然后再由脚本动态的生成高精度地图。这部分的功能主要是对标 Carsim 等仿真软件的地图编辑功能。 说完了地图,接下来看下车。 车 车主要分为2部分:车的动力学模型,以及传感器。接下来我们详细分析下这2部分:
行为 现在我们加载了地图,车辆,接着我们需要定义一些行为来模拟真实世界。 1. NPC NPC 包括行人和车辆。
2. 天气 天气主要是影响传感器的感知,最主要的就是摄像头。对 LIDAR 的影响由于目前没有阅读相关平台是否有加入噪声,这里就先不展开了。
3. 红绿灯 这一部分可以归纳为交通信号的行为,其中分为:
关于仿真器就介绍完毕了,那么我们如何控制仿真器来实现这些呢? API 目前主要是通过 python API 的方式来控制仿真器加载模型,控制仿真器的行为。好处是不用图形界面手工操作,可以实现自动化部署。API 的主要是根据上述所说仿真器的功能实现统一的接口,实现交互。 部署 为了提高测试效率,我们还需要大规模部署,一个比较好的方式是通过容器化的方式部署。针对于多台机器,一个显而易见的需求就是创建一个管理平台来实现对仿真器的管理。容器部署平台可以监控对应仿真器的状态,并且提供可视化的配置界面,生成和部署不同的场景。
总结 最后根据功能划分,我们可以单独仿真自动驾驶系统的规划控制模块,也可以单独仿真感知模块,可以仿真传感器校准,也可以端到端的仿真所有模块。可以仿真单个受限的场景,也可以仿真整个地图。总之,仿真系统需要提供灵活的场景生成框架,统一的 API 接口,以及大规模部署的能力。 参考资料 openscenario http://www. |
|
来自: taotao_2016 > 《物理》