发布询价单
您的位置:首页 > 资讯 > 综合资讯 > 正文

基于Spark与ROS的分布式无人驾驶模拟平台

2016-09-15 12:44 性质:转载 作者: 刘少山 来源:CSDN
免责声明:无人机网(www.youuav.com)尊重合法版权,反对侵权盗版。(凡是我网所转载之文章,文中所有文字内容和图片视频之知识产权均系原作者和机构所有。文章内容观点,与本网无关。如有需要删除,敬请来电商榷!)
本文是无人驾驶技术系列的第四篇,着重介绍基于Spark与ROS的分布式无人驾驶模拟平台。无人驾驶的安全性和可靠性是通过海量的功能和性能测试来保...

  本文是无人驾驶技术系列的第四篇,着重介绍基于Spark与ROS的分布式无人驾驶模拟平台。无人驾驶的安全性和可靠性是通过海量的功能和性能测试来保证的。无人驾驶系统是一个复杂的系统工程,在它的整个研发流程中,测试工作至关重要同时也繁重复杂。显然将全部测试工作都集中在真车上进行是一种成本异常高昂且安全系数非常低的方案。通过综合考虑测试中各种可能发生的正常或异常状况,软件模拟成为了面向无人驾驶系统的更安全且更经济有效的替代测试手段。

  无人驾驶模拟技术

  无人车驾驶系统由感知、预测、决策、控制等众多功能模块组成,每个模块都各自拥有复杂的结构和算法。绝大部分情况下,系统开发人员在测试过程中很难对海量的输出参数作评价。同时,开发人员不仅需要单独测试一个功能模块,也需要集合联调多个模块。因此,系统开发人员所需要的模拟器必须能够直观正确地反映出输出参数的意义,同时还要既能对各个模块进行单一的测试,又能将各个模块按照不同需求组合后进行集成测试。

  模拟器技术主要有两种:第一种是基于合成数据对环境、感知以及车辆进行模拟,这种模拟器主要用于控制与规划算法的初步开发上;第二种是基于真实数据的回放以测试无人驾驶不同部件的功能及性能。在本文中,我们主要讨论基于数据回放的模拟器。

  出于需尽量真实地模拟真车环境的需求,我们的模拟器采用了和真车相同的机器人操作系统ROS。ROS是一种基于消息传递通信的分布式计算框架。这种框架方便开发人员进行模块化编程,这一特性对于模拟器来说至关重要。在无人驾驶系统中,每一个功能模块在ROS中都部署在一个节点上,节点间的通信依靠事先定义好格式的message完成。在模拟器中开发人员只需要使用相同的通信格式,针对每个功能模块制作模拟模块,然后根据测试需求搭配真实功能模块和模拟模块。例如,如果想进行决策模块和控制模块的功能联调,我们需要将决策模块、控制模块搭配其他的模拟模块,安装到模拟器中进行测试。如果决策模块需要单独测试新的决策算法,我们可以只将新的决策模块搭配其他的模拟模块安装到模拟器上,这样的测试结果就是只针对决策模块的。

  模拟器的组成元素

  首先,无人驾驶汽车模拟器中包含了车的动态模型,用来加载测试无人车驾驶系统,并模拟无人驾驶汽车自身的行为。其次,需要模拟的是外部环境,包括静态和动态的场景。静态场景中包括各种静态的交通标志,例如停止线、交通指示牌等;动态场景主要指车周围的动态交通流模型,例如车辆、行人、交通灯等。所有这些元素构建了与现实环境相对应的模拟世界。

  模拟器的应用

  无人驾驶汽车真实上路后所要面临的外部环境是复杂多变的。模拟器在模拟测试中需要做的就是将复杂的外部环境拆解成最简单的元素,然后重新排列组合,生成各种测试用例。

图1 模拟器应用

  拿一组简单的测试用例举例。图1是一个简单的直线行驶的车道,需要测试的是无人驾驶汽车对于一辆障碍车的反应。按照障碍车可能出现的起始位置划分,它可能出现于无人驾驶汽车的左前、左中、左后、前、后、右前、右中、右后总计八个位置。按照障碍车和无人驾驶汽车的相对速度,可分为比无人驾驶汽车快、和无人驾驶汽车速度相等以及比无人驾驶汽车慢三类。按照障碍车的行为划分则分为直行、向左变道和向右变道三种。将这些变量相乘,再去掉其中不需要的个例,就得到了一组我们需要的测试用例。

  模拟器面临的问题

  模拟器的核心问题在于“真”上,人工模拟的场景和真实场景多少会有差异,真实场景中仍然会存在许多令人想象不到的突发事件。因此,如果能采用真实的行车数据复现真实场景,就会得到比人工模拟的场景更好的测试效果。但采用真实数据复现的方案带来的问题就是海量数据的处理。如果我们想在模拟器上复现真实世界中每一段道路的场景,就需要让无人驾驶汽车去采集每一段道路的信息,这些海量的信息是单机无法处理的,而且在每个场景下拆解元素重新排列组合生成测试用例的做法会使计算量翻倍。因此,将模拟器搭载到分布式系统上就成为了无人驾驶模拟测试的最佳选择。

上一页123

网友评论
文明上网,理性发言,拒绝广告

相关资讯

推荐图文

关注官方微信

手机扫码看新闻