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

作者:刘少山,PerceptIn联合创始人。加州大学欧文分校博士,研究方向包括智能感知计算、系统软件、体系结构与异构计算。现在主要专注于SLAM技术及其在智能硬件上的实现与优化。曾负责百度无人车系统架构与产品化。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》

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

无人驾驶模拟技术

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

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

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

模拟器的组成元素

首先,无人驾驶汽车模拟器中包含了车的动态模型,用来加载测试无人车驾驶系统,并模拟无人驾驶汽车自身的行为。其次,需要模拟的是外部环境,包括静态和动态的场景。静态场景中包括各种静态的交通标志,例如停止线、交通指

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值