当前位置: 首页 > 编程日记 > 正文

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

640?wx_fmt=jpeg


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


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


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


1.什么是控制在环仿真能力2.Apollo 控制在环仿真使用方法和现有应用场景


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



TIPS


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


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




  以下,ENJOY  



640?wx_fmt=png


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


640?wx_fmt=png模拟概述


简单来说在5.0版本中,升级了Simulation,增加了Dynamic Model,使得控制可以入环仿真,做到由原来的决策-运动规划-完美控制闭环升级到现在的决策-运动规划-控制-动力学模型 在5.0版本之前,Simulation主要服务于Routing,也就是针对Global的PassPlanning进行服务,还会涉及Prediction和Planning model,也就是关于预测模块决策模块以及轨迹生成模块等.


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



640?wx_fmt=png


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


640?wx_fmt=pngControl-in-the-loopSimulation架构


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


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


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


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


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


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


640?wx_fmt=png


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


640?wx_fmt=png车辆动力学模型仿真对比


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


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


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


640?wx_fmt=png车辆动力学模型仿真网页


值得介绍的是,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。



640?wx_fmt=png


640?wx_fmt=png数据管道自动学习程序图


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


640?wx_fmt=png数据收集


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


640?wx_fmt=png
有选择性的学习结果


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



640?wx_fmt=png


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


640?wx_fmt=pngApollo控制在环仿真技术出现的问题


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


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


640?wx_fmt=png


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


640?wx_fmt=png详情参考论文
以上就是关于本次分享的全部内容。欢迎大家提出问题,关注【Apollo开发者社区】微信公众号,进入开发者社群进行交流。更多相关技术干货也可以继续关注后续的社区课程分享。
点击文章左下角『阅读原文』可看直播视频回放

相关文章:

eclipes 安装 pytdev,svn,插件

1, python pydevhttp://pydev.org/updates2, svnhttp://subclipse.tigris.org/update3, 推荐http://subclipse.tigris.org/update_1.10.x 转载于:https://blog.51cto.com/swq499809608/1240873

FFmpeg简介及在vc2010下编译步骤

FFmpeg是一个开源的多媒体库,最新版本是2.4.3,它的License是LGPL或GPL。FFmpeg可以用来记录、转换数字音频、视频,并能将其转换为流的开源计算机程序。它包括了音/视频编码库libavcodec。FFmpeg是在Linux下开发出来的,但它可以在包…

医院六级电子病历建设思路及要点

产生背景 在医院电子病历信息化发展的过程中,先后经历了纸质病历、电子病历、结构化电子病历以及具有全医疗过程管理能力的电子病历四个阶段。临床业务需求质量的逐步提升,标准规范的逐步细化,互联网战略的落地实施,无疑对目前电子…

上手必备!不可错过的TensorFlow、PyTorch和Keras样例资源

作者 | 黄海广来源 | 机器学习初学者(ID: ai-start-com)TensorFlow、Keras和PyTorch是目前深度学习的主要框架,也是入门深度学习必须掌握的三大框架,但是官方文档相对内容较多,初学者往往无从下手。本人从github里搜到…

Linux下gdb调试工具的使用

gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。 gdb主要完成四个方面的功能:(1)、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序;(2)、可让被调试的程序在你所指定的调试的断点处停住(断点可以是条件表达式)&#xf…

UESTC 1726 整数划分(母函数)

题目链接&#xff1a;http://222.197.181.5/problem.php?pid1726 题意&#xff1a;求n的划分数。一种划分方案中不能有相同的数字。 思路&#xff1a;(1x)(1x^2)(1x^3)……(1x^1000). int f[N];void init() {f[1]1;int a[N]{0};a[0]1; a[1]1;int i,j;for(i2;i<1000;i){for(…

JS nodeType返回类型

JS nodeType返回类型 前几天朋友正好问道 这个 js的nodeType是个什么概念&#xff08;做浏览器底层的&#xff09;正好遇到这篇文章可以向大家解释下 将HTML DOM中几个容易常用的属性做下记录&#xff1a; nodeName、nodeValue 以及 nodeType 包含有关于节点的信息。 nodeName …

C# 获取指定目录下所有文件信息、移动目录、拷贝目录

/// <summary>/// 返回指定目录下的所有文件信息/// </summary>/// <param name"strDirectory"></param>/// <returns></returns>public List<FileInfo> GetAllFilesInDirectory(string strDirectory){List<FileInfo&g…

文件夹浏览(SHBrowseForFolder)

from http://www.cnblogs.com/Clingingboy/archive/2011/04/16/2018284.html 一.首先要为SHBrowseForFolder准备一个结构体BROWSEINFO typedef struct _browseinfoW {HWND hwndOwner;PCIDLIST_ABSOLUTE pidlRoot;LPWSTR pszDisplayName; // Return display…

技术新贵:RPA与NLP技术的结合与应用

什么是 RPA&#xff08;Robotic Process Automation&#xff09;&#xff1f;机器人流程自动化&#xff08;RPA&#xff09;是一种自动化工具&#xff0c;用于创建软件机器人的虚拟劳动力&#xff0c;从而优化和降低企业中端到端业务流程的成本。RPA 可以翻译成机器人流程自动化…

API Sanity Checker在Ubuntu中的使用

API Sanity Checker是一个自动生成单元测试用例的工具&#xff0c;可用于链接测试。它可用于三大桌面平台&#xff0c;下面简单介绍它在Linux下的使用步骤&#xff1a;1. 从http://ispras.linuxbase.org/index.php/API_Sanity_Autotest 下载最新的api-sanity-checker-1.98…

手动脱壳—dump与重建输入表(转)

文章中用到的demo下载地址&#xff1a; http://download.csdn.net/detail/ccnyou/4540254 附件中包含demo以及文章word原稿 用到工具: Ollydbg LordPE ImportREC 这些工具请自行下载准备 Dump原理这里也不多做描述&#xff0c;想要了解google it&#xff01;常见的dump软件有Lo…

如何用RNN生成莎士比亚风格的句子?(文末赠书)

作者 | 李理&#xff0c;环信人工智能研发中心vp&#xff0c;十多年自然语言处理和人工智能研发经验。主持研发过多款智能硬件的问答和对话系统&#xff0c;负责环信中文语义分析开放平台和环信智能机器人的设计与研发。来源 | 《深度学习理论与实战&#xff1a;基础篇》基本概…

图像相似度计算之哈希值方法OpenCV实现

感知哈希算法(perceptual hash algorithm)&#xff0c;它的作用是对每张图像生成一个“指纹”(fingerprint)字符串&#xff0c;然后比较不同图像的指纹。结果越接近&#xff0c;就说明图像越相似。 实现步骤&#xff1a; 1. 缩小尺寸&#xff1a;将图像缩小到8*8的尺寸&am…

七夕大礼包:26个AI学习资源送给你!

整理 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;免费的在线学习课程一直是大多数人学习 AI 知识和技能的方式之一。今天&#xff0c;基于 Github 上一位小姐姐 Chip Huyen 分享的 10 门机器学习课程&#xff0c;AI科技大本营将这份收藏大礼包进…

HTML Inspector – 帮助你编写高质量的 HTML 代码

HTML Inspector 是一款代码质量检测工具&#xff0c;帮助你编写更优秀的 HTML 代码。HTML Inspector 使用 JavaScript 编写&#xff0c;运行在浏览器中&#xff0c;是最好的 HTML 代码检测工具。 您可能感兴趣的相关文章Metronic – 赞&#xff01;Bootstrap 响应式后台管理模板…

Git简介以及与SVN的区别

Git是由著名Linux内核(Kernel)开发者Linus Torvalds为了便利维护Linux而开发的。 Git是一个分布式的版本控制系统。作为一个分布式的版本控制系统&#xff0c;在Git中并不存在主库这样的概念&#xff0c;每一份复制出的库都可以独立使用&#xff0c;任何两个库之间的不一致之处…

java集合中某一个元素出现的次数

int count Collections.frequency(list, key); java的内置方法转载于:https://www.cnblogs.com/wysAC666/p/10252676.html

加密解密-DES算法和RSA算法

昨天忽然对加密解密有了兴趣&#xff0c;今天上班查找了一些资料&#xff0c;现在就整理一下吧&#xff1a;&#xff09; 一.DES算法 这种算法如图所示&#xff0c;这里将描述它的每一个步骤。这个算法进行了16次迭代&#xff08;圈&#xff09;&#xff0c;把各块明文交织起来…

开始Dojo之路

开始Dojo之路waiting……转载于:https://blog.51cto.com/frabbit2013/1242108

图像相似度计算之直方图方法OpenCV实现

操作步骤&#xff1a; 1. 载入图像(灰度图或者彩色图)&#xff0c;并使其大小一致&#xff1b; 2. 若为彩色图&#xff0c;增进行颜色空间变换&#xff0c;从RGB转换到HSV&#xff0c;若为灰度图则无需变换&#xff1b; 3. 若为灰度图&#xff0c;直接计算其直方…

黄皓之后,计算机科学上帝Don Knuth仅用一页纸证明布尔函数敏感度猜想

作者 | Freesia编辑 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;近日&#xff0c;美国艾默里大学计算机与数学科学系教授黄皓&#xff08;Hao Huang&#xff09;用一篇短短 6 页的论文证明了布尔函数&#xff0c;引发了计算机和数学领域社…

数位DP 不断学习中。。。。

1&#xff0c; HDU 2089 不要62 :http://acm.hdu.edu.cn/showproblem.php?pid2089 题意&#xff1a;不能出现4&#xff0c;或者相邻的62&#xff0c; dp[i][0],表示不存在不吉利数字 dp[i][1],表示不存在不吉利数字&#xff0c;且最高位为2 dp[i][2],表示存在不吉利数字 #i…

linux 性能 管理 与 优化

一、影响Linux服务器性能的因素操作系统级&#xff1a;CPU、内存、磁盘I/O带宽、网络I/O带宽程序应用级二、系统性能评估影响性能因素 评判标准 好 坏 糟糕 CPU user% sys%< 70% user% sys% 85% user% sys% >90% 内存 Swap In&#xff08;si&…

对称加密算法之DES介绍

DES(Data Encryption Standard)是分组对称密码算法。DES采用了64位的分组长度和56位的密钥长度&#xff0c;它将64位的输入经过一系列变换得到64位的输出。解密则使用了相同的步骤和相同的密钥。DES的密钥长度为64位&#xff0c;由于第n*8(n1,2,…8)是校验位&#xff0c;因此实…

200行代码解读TDEngine背后的定时器

作者 | beyondma来源 | CSDN博客导读&#xff1a;最近几周&#xff0c;本文作者几篇有关陶建辉老师最新的创业项目-TdEngine代码解读文章出人意料地引起了巨大的反响&#xff0c;原以为C语言已经是昨日黄花&#xff0c;不过从读者的留言来看&#xff0c;C语言还是老当益壮&…

fastJson结合Nutz.Mapl的进阶应用

为什么80%的码农都做不了架构师&#xff1f;>>> 今天要做一堆数据的序列化, 反序列化, 序列化没问题, 反序列化却遇到了点小意外, 这一堆数据不是一个类!!!!!!当然可以通过类内部的一个类型对象来判断, 但是fastJson并没有这个功能, 只能自己一个一个的遍历一个一个…

OpenCV实现遍历文件夹下所有文件

OpenCV中有实现遍历文件夹下所有文件的类Directory&#xff0c;它里面包括3个成员函数&#xff1a;(1)、GetListFiles&#xff1a;遍历指定文件夹下的所有文件&#xff0c;不包括指定文件夹内的文件夹&#xff1b;(2)、GetListFolders&#xff1a;遍历指定文件夹下的所有文件夹…

阿里、京东、快手、华为......他们是如何构建一个个推荐系统“帝国”的?

推荐系统在人们的日常生活中随处可见&#xff0c;成为我们生命中不可或缺的一部分。作为当今应用最为广泛和成熟的 AI 技术之一&#xff0c;它是信息生产者、传播者与用户之间的桥梁&#xff0c;可以让信息最精准、最高效地到达需求不一的用户面前。每天打开手机或电脑端的大部…

前端基础_ES6

声明 三大关键字声明变量&#xff1a;var &#xff08;ES5语法&#xff09; let &#xff08;ES6语法&#xff09;声明常量&#xff1a;const (ES6语法) var 声明变量特性1、支持 函数作用域2、支持 JS预解析 &#xff08;所谓变量提升&#xff09;3、支持 重复声明 &#xff…