前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >直播回顾 | 关于Apollo 5.0控制在环仿真技术的分享

直播回顾 | 关于Apollo 5.0控制在环仿真技术的分享

作者头像
AI科技大本营
发布2019-08-12 19:31:14
1.6K0
发布2019-08-12 19:31:14
举报

Apollo 用于模型验证和测试的基于 Web 的仿真平台 Dreamland 已经更新到能使用更强大的场景编辑器和环控制模拟。

基于 Apollo 流水线和机器学习的动力学模型,复杂度较高,同时基于 AI 的全景数据建模,模型精细度高,误差比传统方式可减少近 80% 。这样,模型的通用性和可扩展性大幅提升,对于开发者来说,这是基于 Apollo 流水线的数据应用,大大降低了开发成本。

在本文本次分享中,我们将会讨论:

1.什么是控制在环仿真能力

2.Apollo 控制在环仿真使用方法和现有应用场景

希望 Apollo 开发者和合作伙伴可以参考学习并顺利完成高超的百度 Apollo 控制在环仿真技术。

TIPS

本次分享,我们有幸请到百度资深架构师——罗琦详细讲解百度 Apollo 控制在环仿真技术

罗琦,百度资深架构师,百度 Apollo PnC 负责人。机器人与自动化方向博士,拥有多年机器人开发经验。曾在通用汽车,罗克韦尔自动化等公司工作,2016年加入百度自动驾驶。

以下,ENJOY

7月,Apollo平台迎来5.0的发布升级,从感知控制,进而延伸到云端都进行了整体升级,而其中的新特点之一就是控制在环仿真。追溯一下,关于Simulation在2017年与Apollo平台同时开放,在历次Release中都进行了比较大规模的升级,现在5.0的版本中突出的创新点都在Simulation上,在此之上进行开发,充分测验之后才会进行Coder Release,下一步真正进入测试。

▲模拟概述

简单来说在5.0版本中,升级了Simulation,增加了Dynamic Model,使得控制可以入环仿真,做到由原来的决策-运动规划-完美控制闭环升级到现在的决策-运动规划-控制-动力学模型

在5.0版本之前,Simulation主要服务于Routing,也就是针对Global的PassPlanning进行服务,还会涉及Prediction和Planning model,也就是关于预测模块决策模块以及轨迹生成模块等.

5.0版本之后,加入了 一个车辆动力学模型,平台第一次成功把控制引入了仿真;另外一个大的进步则集中在Function level以及Coverage方面。

从Control-in-the-loopSimulation的架构出发,可以看到在5.0版本之前,Simulation的架构图中所有边界是黑色的,也就是说原来有一个决策,随后会进行轨迹规划,轨迹规划后进行完美的PlanningTrajectory,规划出来的轨迹再完成VehicleStatus转换

▲Control-in-the-loopSimulation架构

所谓完美控制的闭环,作为Simulation的一个Callback,需要完成VehicleStatus的一些输出,例如车辆的速度、加速度、车辆转角、油门、刹车等信息,再反馈给Decision,然后提供给Planning进行使用,这就是之前说到的Decision、Planning、Perfect Control的闭环 。

之后在5.0版本中的主要升级则集中在控制端,主要在Simulation后端加上一个DynamicModel车辆动力学模型,这样就把之前Perfect Control的闭环变成了如今的PlanningTrajectory,控制模块会根据Planning指令和车辆来下发控制命令,由DynamicModel车辆的DynamicModel新生成VehicleStatus

为什么要这么做?其中最重要的原因之一是可以让控制模块进行仿真入环,在开发调试效率上得到很大提升,进一步摆脱对上车调试的依赖,极大提高整个算法的效率。

Apollo开放的控制在环仿真具体具备怎样能力呢?如果对于Apollo代码以及Apollo仿真环境比较熟悉的话,就可以发现,左边是显示页面,右边是PNCMonitor,也就是对于车辆信息进行的画图。

例如,左边是一个行人在通过道路、横穿道路的场景,针对这个场景,DynamicModel能够支持EgoCar,在行人过马路时真正刹车,着重体现的是纵向控制能力。着重需要看的是右边PNCMonitor的图,Planning浅蓝色,然后是PlanningTrajectory,了解Planning发出的轨迹之后,按照时间生成真正控制跟随的目标指令,这里的浅色就是所谓的目标指令。此外蓝色代表实车速度,控制命令经过Intelli-Sim转化成被下发的命令,通过引入Intelli-Sim成功将控制入环,这里主要讲的是一个纵向的模拟LongitudinalControl能力

▲Control-in-the-loopSimulation典型场景

因为在Apollo5.0中新增加了两个Planning跟控制的Scenarion,一个是Parking的升级与补足,另外一个是靠边停车的升级和补足,两个情况下都需要对倒车场景进行模拟。值得强调的一点,Intelli-Sim完全基于数据驱动以及Learning的模型。

首先解决了为什么做DynamicModel的问题,也就是增加了PNC的开发以及迭代效率,包括重复验证的效率;下一个问题是为什么要用,为什么建立一个基于学习以及数据驱动的模型Learing-BasedModel,而不是像车厂一样建立ManufactoryModel。

▲车辆动力学模型仿真对比

首先与传统车厂相比,Learing-Based数据模型精度相对较好。车厂模型因为有深厚积累,其动力学模型开发周期在半年或一年甚至更长,相对来说它的精度还不错但相比ManufactoryModel来说稍有不足。

其次对于模型来说,都知道Apollo平台支持了很多种类的车型,与车厂动力学模型相比具有的模型通用性较好,在开发周期的费用相对较低,当然确实需要相关新的数据采集,涉及到一部分采集工作量,但开发的工作量确实下降很多。此外值得强调的一点,针对Apollo 平台来说,模型的灵活程度泛化程度是十分重要的特质。

为什么花费很大精力讲到模型?这里我们把不同Development分成几个级别,首先是车端的Vehicles&DataGeneration以及Vehiclecollection;其次是Offline,也就是DataPipeline,在车端采集相应需要用来做模型训练以及做模型Validation需要的数据,由此把它输出到数据流水线。首先是Feature Extration特征值的抽取,然后是ModelTraining,简单来说就是机器学习的训练过程:得到ModelOutput之后,会有一个自动的Model Grading与Selection,这样根据结果自动Trigger Feature Extration以及 ModelTraining。

▲车辆动力学模型仿真网页

值得介绍的是,Model Output支持External Partners或者Developers的Contribution,不管是车厂的动力学模型还是自己不同的Learning-Based模型,会做同样的Grading,统一根据Grading高低进行Model Selection以及 ModelTraining的结果。具体应用会比较简单,直接在Simulation的下拉菜单中选择Simulation with Control-In-LoopSimulation with Intelli-Sim;然后提供了两种不同的模型,基于车厂的动力学模型以及自己的Learing-Based DynamicModel。

▲数据管道自动学习程序图

大家如果对Apollo的Source Code比较熟悉的话,会发现在5.0版本中新加了一个不同的Mode,如果选择这个Mode,就会把Data collection的Type打开。简单来说,把需要采集的数据,包括前项后项进行不同的切分,按照这样的Category进行自动录制数据,不同的Category会逐渐塞满,这就是针对需要训练的数据集进行采集完成,方便内部车辆运营的同学。

▲数据收集

当然如果数据量足够,就不需要专门的Data collection配置,可以从过往的自动驾驶数据里进行挖掘。针对数据采集过程我们也进行了相关实验,内部选择了两个车型,分别是开放的MKZ林肯数据集以及Ford Transit,虽然车的物理属性各有不同,但对于我们来说建模过程是完全一样的。

▲有选择性的学习结果

如果大家开发自己的Planning以及控制算法,可以提交到Simulation平台,通过检测右侧的PNCMonitor,看看自己的控制算法以及规划决策算法究竟效果怎样。如何利用Simulation后台来进行自己算法的调试这部分,其实更多是PNC,例如Planning模块、控制模块进行简单调整,可以在Simulation平台完成一个完美的复现或者测试。

我们需要明确的是,首先5.0模型可以极大提升PNC算法开发以及Debug的过程。其次现在的模型当然还有很多不足,未来会着重解决更细节的车辆延时,因为真正的车辆确实会有不同的车辆延时,延时细分还包括线控模型本身的传输延时以及油门、刹车、转向的延时等,确实应该对横纵向车辆物理延时进行分别的建模。

▲Apollo控制在环仿真技术出现的问题

其次是Vehicle Idling Speed,也就是车辆的怠速,很遗憾现在对于怠速的模型还没有做。此外,如今模型的输出纵向是加速度,但事实上如果看到定位模块的输出之后,会发现这个输出与Location并不是二次积分的关系,所以接下来需要把它表征成为一个更复杂的映射关系才行。

还有更重要的一点,但凡通过测量得到的东西都有误差,误差在实车上无处不在,也是影响车辆自动驾驶非常重要的部分。但在仿真中考虑的都是完美事件,所以仿真环境与实际环境还存在一个测量误差的Gap,也就是说,下一版DynamicModel会尽量在其中加入测量误差来测试,力求做到让测量值更接近实际的路测或者路跑值,其次通过这个机会测试PNC等。

如果大家对于Model本身Set up和更详细的性能分析有需求,可以看我们这篇paper:An Automated Learning-Based Procedure for Large-scale Vehicle Dvnamics Moding On Baidu Apollo Platform,到时候还会有更多技术细节可以分享出来。

▲详情参考论文

以上就是关于本次分享的全部内容。欢迎大家提出问题,关注【Apollo开发者社区】微信公众号,进入开发者社群进行交流。更多相关技术干货也可以继续关注后续的社区课程分享。

点击文章左下角『阅读原文』可看直播视频回放

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档