静态场景的搭建说的直白一点就是生成地图,实际上生成地图包括2方面:
单独的只生成一部分都会对自动驾驶仿真的地图生成造成很大的工作量,举个例子,假如你获取了一个仿真器中的虚拟城市,而没有这个城市的高精度地图,那么你必须标注并且制作这个城市的高精度地图,大部分还需要人工完成,而自动驾驶系统需要高精度地图才能运行,因此这种方式不太适合。
还有一种就是根据真实的城市进行建模,这一部分的工作量主要体现在三维重建上,如何得到整个城市的模型,并且模型的真实程度都会影响到仿真的效果。稍微简单一点的方式就是通过导入高精度地图,生成相对真实的场景,现在很多模拟器也是这个思路。
动态场景的生成包括2方面:
1、微观的行人、车辆、天气等行为:
实际上目前基于真实统计数据进行仿真很大的一个缺陷是缺少互动,举个简单的例子,假如之前测试车辆是直行的,现在的测试场景中测试车却采取了变道的策略,这就导致之前的其他车辆的行为会受到影响,而目前的数据都是事先录制好的,不会因为上述行为而改变。
解决的办法是对其它的NPC车辆增加智能,比较简单的方式就是增加规则,比如发现前面有车辆就减速,遇到红灯就停车。复杂点的方式就是对NPC的行为建模,这样每一个NPC都是一个智能体。也就是说对行为的建模可以有2种方式,一种是基于规则的方式,一种是基于模型的方式。
总结:
基于模型对NPC进行建模的方式肯定是未来的趋势,仿真器中的每一个车辆和行人都可以训练为一个智能体,这样就可以完全模拟更加真实的场景,并且和环境产生互动。
2、宏观场景的构建
宏观场景的构建直白点说就是需要测试的各种场景,有主观设计的测试场景,也可以通过交通事故的数据构造一些场景,也可以基于真实场景进行组合,另外还有通过算法增加危险场景的比重,进一步提高测试效果。
这一部分的指标一是测试场景的完整性,也就是说尽可能的覆盖比较全的测试用例,保证在绝大部分场景(99%?)下不会出现问题。另一部分就是测试场景的泛化能力,也就是说测试场景当前车辆可能是20km/h,也可能是40km/h,还可能是80km/h,这时候不需要指定具体的速度,对应的场景可以在一定的范围内自动生成对应的参数,来应对真实场景中无穷的场景组合,减少了手工生成测试用例的难度。
总结:
测试场景的完备性相对容易保证,目前也有开源的组织在做,根据真实数据生成具体路段的测试用例反而是重点,即某条路段的特殊测试用例。场景的泛化能力目前我们团队可以根据当前场景的配置,在一定范围内自动修改参数,实现部分场景的泛化能力。
之所以叫真实数据模拟,主要的原因是因为无人驾驶车是通过传感器来感知周围的世界,通过汽车动力学模型和周围世界进行反馈。
首先我们看传感器的仿真。传感器的仿真目前都是基于游戏物理引擎实现的,比较成熟的是摄像头的仿真(深度图、彩色图、图像分割等),激光雷达的仿真和RADAR的仿真稍微偏弱一点,主要的问题还是对传感器的物理特性还没有完全实现模拟,拿激光雷达举例子,每秒采样的点很多(几百万个),另外多线激光雷达的线束角度也是不均匀分布的。而且当有多个传感器时候如何实时处理这么大量的数据也是问题。
最后看下车辆动力学的仿真,车辆动力学的仿真在一些传统的仿真软件里面已经做的非常好了,但如果是针对整个交通流的动力学模型可能就需要对仿真软件中所有的车辆建模,短期来看还是采用相对简单的车辆模型来模拟交通流会比较合适。
总结:
仿真软件中车辆动力学模型的准确度还需要进一步提高,或者评估是否可以采用相对简单的模型。对传感器数据的真实程度,以及多个传感器时的数据处理能力,都会是未来的挑战。
自动驾驶模拟器还需要一个有效的评价系统,最直观的就是安全相关的评价,比如是否发生碰撞、是否开出路面、是否遵守交通规则等。然后是驾驶体验方面的评价,比如是否和其它车距离过近,是否加速太快等。最困难的是驾驶行为的评估,驾驶行为的决策是否合理,这一方面的评价目前还无法自动完成。
评价系统还需要考虑效率,采用比较合适的触发方式来检测比逐帧检测的效率会高很多,同时测试结果的保存,以及需要增加快照回放机制,都是评价系统需要考虑实现的。
最后我们还需要关注自动驾驶仿真的效率,当前采用的方式是把几百个用例分布式的发布到多台机器上运行,这可能是一个相对比较好实现的方案。
另外提到的是加快系统时间来提高测试效率,这在单独的某些测试环节是可行的,比如单独测试规划模块,我们可以对测试加速,时间调快,因为规划模块的算法可能很快就可以处理完成。但是测试整体模块,也就是说测试定位、感知、规划、控制等几个模块的时候,虽然我们可以提高仿真器的时间,但是自动驾驶系统的计算时间我们没有办法减少,因此加快系统处理时间的办法只能在某些场景下有效,在集成测试的时候我们只能多增加机器来减少测试时间。
总之,自动驾驶仿真面临着一系列挑战,主要的目的是场景更加真实,更加灵活和泛化,我相信在不久的将来,自动驾驶仿真一定会发挥更大的作用,为自动驾驶的安全保驾护航。