Apollo进阶课程 ② | 开源模块讲解(上)

目录

1)无人驾驶车介绍

2)高精地图

3)定位

4)感知

5)轨迹规划

6)控制

7)云端


原文链接:Apollo进阶课程 ② | 开源模块讲解(上)

Apollo自动驾驶进阶课程是由百度Apollo联合北京大学共同开设的课程,邀请百度Apollo开放平台研发团队的中美专家联合讲授。

上一期,我们为大家推送了课程第①讲——《自动驾驶行业概述》。本周,阿波君根据Apollo产品负责人David.Zhou所讲授的第二课《Apollo开源模块讲解(上)》进行了要点整理,方便更多未到现场/没有时间观看视频的老铁们阅读。

话不多说,欢迎各位开发者一起进入进阶课程第二期。


1)无人驾驶车介绍

无人驾驶对安全精度和各种复杂技术的集成程度要求非常高,因此到目前为止,在民用领域里,无人驾驶车辆的技术难度之高是数一数二的。

做一辆无人驾驶车肯定要比做一个手机APP要复杂很多倍。无人驾驶车到底包括哪些核心技术呢,接下来我将为大家一一讲解。

备受大家热捧的无人驾驶车并不是一辆普通的车,因为无人驾驶的车一定要是线控车。所谓线控(by-wire),就是说这个车是能被电脑控制的。车的方向盘和轮子之间是有电机连接的,方向盘传动到电机上,然后电机去控制车轮,这样的话电脑就可以通过控制电机的方式来控制这个车轮。

为了保证无人驾驶车的安全性,当它在路上行驶的时候,必须做到它跟云端是有连接的。无人驾驶车并不需要时时跟云端汇报接下来会如何处理,而是要告诉云端它的位置以及行驶规划。


2)高精地图

对于无人驾驶来说,在马路上行驶一定要有高精地图,这里所说的高精地图跟我们平时开车用的导航地图有什么不同呢?

所谓的导航地图就是我们平时使用的百度地图、谷歌地图等,在导航地图上,它会告诉你怎么从A点到B点,然后有几条路,预计需要用多长时间等信息。

而高精地图相对于导航地图来说,最大的特点就是高精度,它是需要做到车道线级别的。也就是说,高精地图不光要知道你在哪条路上,还需要知道你在这个路的哪条车道线上,因为只有这样才能准确地告诉无人驾驶车应该在哪个车道行驶,接下来应该怎么拐。

高精地图对于无人车来说,具有非同寻常的价值。

第一,高精地图能够给无人车很多预判的空间当无人车通过高精地图知道前方的路况和交通标识信息后,能够提前做行驶规划,保证了行车的平稳性和经济性。

第二,高精地图能够帮助无人车减少计算量当无人车需要通过路口时,它需要提前感知前方信号灯的状态,这时高精地图就可以帮助它定位到信号灯所在的特定区域,从而有效降低了全范围扫描识别的计算量。

除此以外,高精地图将道路及周围的所有静态障碍物进行收集,减少无人车对静态障碍物的算法处理


3)定位

无人车有了高精地图之后,还需要知道它在地图的什么位置,这里就需要使用定位技术。说到定位,很多人可能最先想到GPS。那么GPS定位的原理是什么呢?其实GPS定位原理实际上就是一个相对定位

每个卫星会不停地发电磁波,当收到电磁波信号之后,根据收到信号的时间与光速算出和卫星之间的距离。有了与四个卫星的距离之后,就可以解一个方程算出所在位置。但由于电离层、反射作用等因素的干扰,GPS定位是有误差的,它的精度只能达到米级对于无人车来说,米级的定位精度是不安全的,为了解决无人车定位问题,还需要其他技术。

GPS定位还有一个问题,它是跳动的GPS定位是每时每刻根据当前的时间去算的,容易出现计算结果不准的情况。为了抹平GPS的跳变,需要用到IMU(惯性导航),一般来说GPS和IMU是一块用的,GPS不停的去给IMU一个方向去校准,然后IMU再给GPS一个方向。

除此之外,无人车在接收不到GPS信号的情况下,需要用到另一个技术——几何定位

几何定位的原理和GPS原理差不多,就是在道路上选几个feature,根据这些feature计算无人车所在的位置。几何定位的精度很高,可以精确地算出无人车所在的位置。所以,目前比较流行的定位技术就是GPS、IMU和几何定位等一系列技术的融合。

为了提高GPS的定位精度,大家又在GPS的基础上发明了RTK技术。手机GPS定位中,手机就是一个移动站,它会经常变动位置。这里所说的RTK,是一个静止站,它同样也收到卫星的信号。无人车与RTK相隔不太远的情况下,对二者之间的干扰信号用差分抹平,就可以认为无人车和RTK收到的信号是一样的。

RTK的应用能让GPS的定位精度达到10厘米,但是RTK技术的应用有个限制,它要求基站与车的距离要在16公里以内。


4)感知

我们人类天生具备感知外界的能力,是因为我们具备各种“传感器”。

无人车想在道路上安全行驶,也必须具备属于它自己的各类传感器去感知外界环境。目前,无人车主要的传感器有摄像头(Camera)、雷达(Radar)和激光雷达(Lidar)。

对于无人车来说,观察信号灯以及一些交通标识都需要对颜色识别

摄像头恰能解决这个问题,它的主要优点是能够辨别颜色,但是它没有对距离的判断的能力因此,实现无人车对外界的感知还需要其他传感器的配合。

雷达是无人车比较重要的传感器之一,它是利用电磁波探测目标的电子设备。

雷达发射电磁波对目标进行照射并接收其回波,由此获得目标至电磁波发射点的距离、距离变化率(径向速度)、方位、高度等信息雷达的应用场景是全天候的,由于电磁波可以饶过一些东西,所以它的准确性并不太高。

雷达还有一个特点,它对于速度判断非常准,而对于静态物体的误报比较多。

激光雷达是目前无人车发展的一个比较核心的技术,它是以发射激光束探测目标的位置、速度等特征量的雷达系统。

激光雷达工作原理是向目标发射探测信号,然后将接收到的从目标反射回来的信号与发射信号进行比较,作适当处理后,就可获得目标的有关信息。

激光雷达的最大优点就是对距离的判断非常精准,但它也有个很大的缺点,就是对环境的要求非常高,比如在雾霾天气里激光雷达的精准度就会降低很多。

激光雷达是一个非常新的技术,在发展无人车之前,它并没有大规模的商业应用场景,因此它的价格非常昂贵。虽然目前激光雷达价格很贵,但它的种类还是挺多的。

大家可能见过无人车上有个不停旋转的Lidar,这种是机械雷达。由于它需要不停旋转,它本身也又大又重,机械损耗较大,容易出现问题。基于机械雷达,大家又发明了一些新的激光雷达,比如MEMS lidar、flash lidar等。

无人车收到各种传感器获取的信息之后,还需要做传感器融合。所谓传感器融合,就是要把每个传感器看到的东西全部都叠加在一起。当所有传感器看到的信息综合在一起,无人车才能够更加全面具体地感知外界环境。


5)轨迹规划

当车辆在路上行驶时,通过传感器获取了周围的信息,接下来就需要知道如何反应。

对于周围的车辆或其他障碍物,无人车是需要避让还是需要停下来,或者需要超越等等,这些都属于约束条件。无人车需要在所有的约束条件中,规划出一条可以走的路线。

无人车的轨迹规划:

一是要满足所有的约束条件。

二是要保证车辆运动的平滑。所谓平滑,是要保证车子的速度不能跳变。

在此基础上,车子的加速度也需要是平滑的。

最终目的是,在人类可感知的范围,车子行驶是顺畅的,没有不平滑不顺的情况。


6)控制

前面我们已经提到,无人车是线控车,而不是一个仅有齿轮组成的集合体。

实现对无人车的控制,我们需要知道踩刹车和减速的关系、踩油门和加速的关系等,当无人车拿到一些控制学参数后,就可以实现电脑对无人车的控制。


7)云端

想要保证无人车是非常安全的,我们必须做到让每一辆无人车成为“有经验的司机”。所谓有经验,就是见过很多路况并且知道如何处理这些路况。

百度在云端后台有个巨大的仿真空间,每一辆无人车可以将自己遇到的复杂路况上传到云端,因此网上就有了一个非常大的数据库。

当无人驾驶的算法有更新时,就可以在云端的仿真场景中跑一下,检验是否能够应对云端的这些路况。这个步骤,就是为了确保每个无人车都称得上是“有经验的司机”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由浅到深理解ROS(9)- 几个基本概念的理解 坐标系 包

1.坐标系 最常用的就是map,odom,base_link,base_laser坐标系,这也是开始接触gmapping的一些坐标系。 map:地图坐标系,顾名思义,一般设该坐标系为固定坐标系(fixed frame)&#xff…

计算机常用技巧

windows禁用自带键盘命令(笔记本) 禁用:sc config i8042prt start disabled 恢复:sc config i8042prt start auto锁屏 win l

【POJ - 1698】Alice's Chance(网络流最大流,建图)

题干: Alice, a charming girl, have been dreaming of being a movie star for long. Her chances will come now, for several filmmaking companies invite her to play the chief role in their new films. Unfortunately, all these companies will start mak…

由浅到深理解ROS URDF教程

创建自己的URDF文件 1.1创建树形结构文件 在这部分教程中要创建的将是下面的图形所描述的机器人的urdf文件 图片中这个机器人是一个树形结构的。让我们开始非常简单的创建这个树型结构的描述文件,不用担心维度等的问题。创建一个my_robot.urdf文件,内容如…

wireshark基本使用及介绍

Wireshark使用 注:本文中使用的wireshark是3.2.2版本 捕获过滤器表达式 下面是常用的捕获过滤器,wireshark中:捕获->捕获过滤器 除此外,还可以指明传输方向,如:src(源方向), …

1.2)深度学习笔记------神经网络的编程基础

目录 1)Binary Classification 2)Logistic Regression 3)Logistic Regression Cost Function 4)Gradient Descent 5)Logistic Regression Gradient Descent(重点) 6)Gradient …

CS231n Convolutional Neural Networks for Visual Recognition------Python Tutorial

源链接为:http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务!Python本身就是一种很棒的通用编程语言,但是在一些流行的库帮助下(numpy&…

【HDU - 3081】Marriage Match II(网络流最大流,二分+网络流)

题干: Presumably, you all have known the question of stable marriage match. A girl will choose a boy; it is similar as the game of playing house we used to play when we are kids. What a happy time as so many friends playing together. And it is …

IP、TCP、UDP、HTTP头部信息

IP头部信息 ip报文段格式 版本: 占4位,表明IP协议实现的版本号,当前一般为IPv4,即0100。报头长度 : 占4位,因为头部长度不固定(Option可选部分不固定),所以需要标识…

ROS技术点滴 —— MoveIt!中的运动学插件

MoveIt!是ROS中一个重要的集成化开发平台,由一系列移动操作的功能包组成,提供运动规划、操作控制、3D感知、运动学等功能模块,是ROS社区中使用度排名前三的功能包,目前已经支持众多机器人硬件平台。 MoveIt!中的众多功能都使用插件…

1)机器学习基石笔记Lecture1:The Learning Problem

网上关于机器学习的课程有很多,其中最著名的是吴恩达老师的课程,最近又发现了NTU林轩田老师的《机器学习基石》课程,这门课也很好。课程总共分为4部分,总共分为16节课,今天来记录第一节课。 When Can Machines Learn?…

MMS协议

MMS格式解析 简介: MMS是微软的私有流媒体协议。 它的最初目的是通过网络传输多媒体广播、视频、音轨、现场直播和一系列的实时或实况材料。 MMS建立在UDP或TCP传输/网络层上,是属于应用层的。使用TCP的MMS上URL是MMS://或者MMST://&#x…

【HDU - 6118】度度熊的交易计划(最小费用可行流,网络流费用流变形 )

题干: 度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区。 由于生产能力的区别,第i个片区能够花费a[i]元生产1个商品&#xff0…

老王说ros的tf库

ros的tf库 为了这个题目,我是拿出了挤沟的精神挤时间,是下了功夫的,线性代数、矩阵论复习了,惯性导航里的dcm、四元数也了解了,刚体力学也翻了,wiki里的欧拉角也读了,tf的tutorial、paper、sou…

Apollo进阶课程 ③ | 开源模块讲解(中)

目录 1)ISO-26262概述 2)ISO-26262认证流程 3)ISO-26262优点与缺陷 原文链接:Apollo进阶课程 ③ | 开源模块讲解(中) Apollo自动驾驶进阶课程是由百度Apollo联合北京大学共同开设的课程,邀请…

python 问题集

打开文件是报:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe9 in position 0: unexpected end of data UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xe9:unex 在open中加入encodingunicode_escape 如: with open(file_n…

【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)

题干: YJJ is a salesman who has traveled through western country. YJJ is always on journey. Either is he at the destination, or on the way to destination. One day, he is going to travel from city A to southeastern city B. Let us assume that A …

由浅到深理解ROS(5.1)- roslaunch 学习

oslaunch 用处&#xff1a;将多个rosnode 结合起来&#xff0c;一起运行。这样就不需要一个个的运行。 roslaunch格式 &#xff08;add_two.launch&#xff09; <launch> <arg name"a" default"1" /> <arg name"b&q…

CS231n Convolutional Neural Networks for Visual Recognition------Numpy Tutorial

源链接为&#xff1a;http://cs231n.github.io/python-numpy-tutorial/。 这篇指导书是由Justin Johnson编写的。 在这门课程中我们将使用Python语言完成所有变成任务&#xff01;Python本身就是一种很棒的通用编程语言&#xff0c;但是在一些流行的库帮助下&#xff08;numpy&…

【CodeForces - 1047C】Enlarge GCD(数学,枚举,预处理打表,思维)

题干&#xff1a; F先生有n个正整数&#xff0c;a1&#xff0c;a2&#xff0c;...&#xff0c;an 他认为这些整数的最大公约数太小了,所以他想通过删除一些整数来扩大它 您的任务是计算需要删除的最小整数数,以便剩余整数的最大公约数大于所有整数的公约数. Input 3 1 2 4…