Apollo进阶课程 ⑬ | Apollo无人车自定位技术入门

目录

1.什么是无人车自定位系统

2.为什么无人车需要精确的定位系统

2.1 激光定位

2.2 视觉定位

2.3 惯性导航

2.4 多传感器融合定位


原文链接:进阶课程 ⑬ | Apollo无人车自定位技术入门

上周阿波君为大家详细介绍了「Apollo进阶课程⑫丨Apollo地图生产技术」

详细讲解了Apollo高精地图表征元素,车道模型和其他元素,并介绍了UTM坐标系,84坐标系,Track坐标系,Apollo OpenDRIVE规范,HDMAP引擎。最后说明了高精地图在我国政策上遇到的挑战。

定位系统可以与高精地图配合提供静态场景感知,可将感知得到的动态物体正确放入静态场景,而位置和姿态用于路径规划和车辆控制。因此定位系统对于无人驾驶至关重要

而要获得精确的定位,也面临诸多挑战譬如:定位需要非常高精度和高鲁棒性;GPS信号遇到阻隔会引起信号丢失;在复杂的城市环境中,由于建筑物和植物的存在,引起多镜效应导致定位不准;由于天气情况,或者人为修缮,会导致定位精度不高。

本周阿波君将与大家分享Apollo自定位技术详解之无人车技术入门。下面,我们一起进入进阶课程第13期。


1.什么是无人车自定位系统

                                                                                        图1.相对一个坐标系来确定无人车的位置和姿态

无人车的自动定位系统,简单来说,就是相对一个坐标系,无人车的自定位系统知道汽车的位置和姿态。

这个坐标系可以是一个局部的坐标系,比如一个园区.采集这个园区的一些地图,随便定一个原点,这个局部坐标系已经建好,相对于这个坐标系来得到车辆的位置和姿态。

坐标系也可以是一个全局的坐标系,比如全球坐标系,可以知道一个很精确的位置。

什么是位置姿态?位置和姿态分别有三个自由度

位置对应X,Y,Z,即相当于某个坐标系,汽车的平移是多少。

姿态是三个方向的一个旋转,一般会用欧拉角来表示。包括横滚、俯仰和航向,分别相对于X,Y,Z三个坐标轴

如果本地坐标系已经定义好,现在有一个车上的坐标系,它相对于本地坐标系的变化(即姿态的变化),就可用三个角度来表示,也就是本地坐标系的三个轴和相对坐标系的这三个轴之间的夹角。

                                                                                        图2、自定位系统需要的基础信息

除了位置和姿态这两个维度,自定位系统还要输出很多信息。除去速度、加速度和角速度外,自定位系统还需要对位置和姿态加上一个置信度,表示这次输出的定位结果好不好。

                                                                                        图3.自动驾驶汽车的定位系统指标要求

对于自动驾驶汽车,定位的指标要求大概分为三个部分:精度、鲁棒性、场景

定位精度必须控制在10厘米以内,才能使行驶中的自动驾驶车辆避免出现碰撞/车道偏离的情况。

鲁棒性一般情况下用最大值来衡量。也就是最大的误差不要超过30厘米。但是在有些时候,纵向误差稍微大一点点,只要没有偏离车道就没有太大影响。

超过30厘米的误差对前后距离的控制会有很大风险。

对于定位模块而言,需要覆盖很多的场景。例如:

白天、黑夜,不同的照明条件,定位的效果是否有区别?

春夏秋冬有落叶、雨雪天气等很多种极端情况,定位清晰度是否受到干扰?

城市场景下,遇到楼宇、林荫道、隧道、地下车库等对GPS信号有不同程度的遮挡,是否还能精准定位?

很多种这样的场景,对应模块是否能够完全地在这些场景当中工作,至关重要。因为L4和L5自动驾驶需要自定位系统在各种场景下面都能够工作。


2.为什么无人车需要精确的定位系统

                                                                                        图4.无人车需要精准的定位系统

无人车需要精准的定位系统否则,它无法获悉自己在什么地方,前方是什么情况,哪里是行驶区等。

感知和决策本身的能力并没有达到像人类这样聪明的程度,所以需要定位和地图。

定位模块还有一些其他的用处,比如速度,在开车的时候,人就看到前面有限速之类的路标,这时候我们马上就会慢一点。或者有最低限速,我们需要快一点。

对于车来讲,速度信息来源于定位模块。定位模块告诉车辆现在的速度是多少。

定位模块告知前面可能要开慢一点。控制模块接收到指令之后会控制车辆慢一点

此外,定位模块还输出加速度和角速度,加速度和角速度是相对于车体本身的,告知车辆当时瞬时的加速度和角速度,对人的乘坐体验非常重要。控制模块根据这些信息做一些控制上的优化,让人的体感更好。

定位的方法大体上可以分为三个部分:基于电子信号的定位、航迹的推算、环境特征的匹配。


基于电子信号的定位方法中最有特点的就是GNSS(全球导航卫星系统)。它的作用机制是通过一组卫星的伪距、星历、卫星发射时间等观测量,以及用户钟差,得知你现在大概的位置。

航迹推算最有特点的就是IMU航迹推算就是根据上一时刻“我“的”位置“和”姿态“,叠加一些测量信息可以知道现在的”位置“和”姿态“。

IMU是一个惯性测量单元。它包含了加速度计和陀螺仪。加速度计会输出加速度的信息。但是不止加速度,它还包含重力加速度。陀螺仪是一个旋转,即是前面所讲到三个轴上的一个旋转。

环境特征匹配相对较多,比如LiDAR的匹配。在建好了点云定位的地图,将LIDAR的数据和已建好的地图做匹配,以此来计算自己的位置。或者通过摄像头,知道了一些车道线,红绿灯的标志,然后确定自身的位置。

GPS手机定位的精度非常低。大概都是五到十米,好一点的话三四米。但是对于车辆定位,这远远不够。

因此现在有一些差分的技术,即卫星的实时动态差分技术可以弥补这些方面的缺憾。

差分技术分为物理差分和距离差分两种。距离差分又分为伪距差分和载波相位差分。

伪距差分的精度不会特别的高,大概在米级的这么一个量级,还不能满足要求。因此发展出实时动态的载波相位差分。

载波相位差分最主要的是要估计一个载波相位的一个整周,定位精确基本上是在厘米级(小于5厘米)。

                                                                                        图5.载波相位差分定位的优缺点

但是载波相位差分有一些缺点

它需要硬件成本。比如基站的设置,人力的维护。

它还需要对可视卫星的依赖。即在这个场景下面能看到的卫星是必须比较多的,否则就差分不出来误差。

另外,该方法也容易受到一些电磁环境的干扰。电磁环境不好会干扰精准度。

最后,如果在一下市中心楼宇比较多的地方,会引起一些多径效应,多次传播,计算出来距离的误差会很大。

在环境特征匹配里面,我们将选择激光定位和视觉定位进行讲解。


2.1 激光定位

                                                                                                图6.2D概率地图

激光定位是预先制作一个地图,不管是3D的Voxel地图或者是点云地图,又或者是2D的概率地图。

2D概率地图是把所有的这个点云数据铺到一块,压成了一个2D地图。2D地图分成很多小格子,每个格子里面存储了颜色信息,位置。位置上面可能只存Z的这个维度,因为2D地图有XY。

另外,还包括一些概率,概率和点云的数量以及分布相关。拿实时的激光点云和这个地图去做匹配。

举例而言,如图6左下角所示的搜索方式,选择了一个XY化的矩形或者正方形,在每个小格子里面去匹配。这个范围大概是几米乘几米。

每个里面会算一个匹配的概率,匹配可能会用实时点云里面的颜色值或者高度值的分部和2D地图去匹配,最后会得到一个概率图。根据该概率图,用加权平均会得到XY的位置。

这就是一个激光定位的例子。


2.2 视觉定位

                                                                                                图7.视觉定位

对于视觉定位如果照明环境变化越大,例如这次跑过去的光照度和下次跑过去的光照度不一样,视觉所受到的影响就越大。

所以基于这种特征点的定位,比如SLAM里面用Relocalization并不是很合适用于车的视觉定位。

为什么?因为下次可能检测不到那些特征,比如SIFT特征或者别的特征就会造成定位的失败

但是有一些特征具有明显Semantic意义,比如车道线或者旁边立的这些柱子,红绿灯的柱子或者红绿灯本身或者一些Traffic Sign之类的,对于定位而言非常有用。

                                                                                                图8.车道线检测

需要先做好这种高精度地图,它里面包含车道线的信息,然后把每个线段两个端点拿出来。

在第二幅图里面可以看到,在线去跑的时候,车上这个摄像头会用深度学习的方式检查出这些车道线。

车道线也是一段一段的,然后我们会去做匹配。匹配的方法有很多种。

这里介绍一种方法,两个线段怎么去匹配?简单地给一个Metric的方式,一个线段到另一个线段的投影的重合度怎么样?或者两个端点到你的距离大小怎么样?用这两个匹配的方式来度量匹配到底好不好。


2.3 惯性导航

                                                                                                图9.惯性导航

惯性导航是基于IMU的,里面包含有加速度计陀螺仪

加速度计会给提供瞬时的加速度,陀螺仪提供瞬时角速度。加速度计提供的不仅是加速度,还测量了重力加速度,所以用的时候需要先把重力加速度剔除掉。

IMU的价格分布非常的广,从手机上用到的几十块钱到几千万的,例如航海级别的。中间价格的分布很多,几千、几万和几十万的型号都有。

无人车现在使用的比较多的型号定价在一二十万。我们现在也在尝试一些万元左右的设备,这种设备都属于MEMS消费级。

图9给出来IMU的工作过程。首先是角速度通过积分后得到一个姿态,并把它应用到加速度上,对加速度积分得到速度,再得到最后的位置。

优点是可以得到一个六自由度的信息,不光是XYZ yaw之类,还有Roll和Pitch,是一个全量的信息。另外,它的短时精度非常高,比如十来万级别的设备,坚持五六百毫秒是没有问题的,它是很准的,包括在大机动的时候。

IMU的出频率非常的高,基本上都是200赫兹以上,这样有助于同步。因为它有精准的时间戳,它检测的数据传输过来之后可以精准知道它的时间戳,有精准的时间戳就可以给出精准的位姿,即它在全局坐标系下有自己的位置。

可以把它投到3D坐标系下,大家融合成一块。

IMU是一个很独立的一个设备,没有外部依赖,使用自己的输入就可以。但是缺点也很明显,例如十几万的设备也就坚持几百毫秒,对于自动驾驶汽车是远远不够的。

前面介绍了GNSS定位、激光定位、视觉定位还有惯性导航,这四种定位方式都有各自的特点。如果把它们放到一块就可以做到一个很好的系统——多传感器融合定位


2.4 多传感器融合定位

                                                                                                图10.多传感器融合定位

多传感器融合定位的核心是中间的卡尔曼滤波器,这是一个状态误差的卡尔曼滤波器。

该滤波器接收惯性导航输出的递推,作为它的时间更新,保证滤波器往前走和高频的输出。还接受GPS、激光点云定位,或者是视觉定位的输出去做低频的状态更新。

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

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

相关文章

一步步编写操作系统 08 bios跳转到神奇的内存地址0x7c00

为什么是0x7c00 计算机执行到这份上,bios也即将完成自己的历史使命了,完成之后,它又将睡去。想到这里,心中不免一丝忧伤,甚至有些许挽留它的想法。可是,这就是它的命,它生来被设计成这样&…

【2019牛客暑期多校训练营(第二场) - H】Second Large Rectangle(单调栈,全1子矩阵变形)

题干: 链接:https://ac.nowcoder.com/acm/contest/882/H 来源:牛客网 题目描述 Given a NMN \times MNM binary matrix. Please output the size of second large rectangle containing all "1"\texttt{"1"}"1…

Apollo进阶课程⑭ | Apollo自动定位技术——三维几何变换和坐标系介绍

目录 1.三维几何变换---旋转 2.三维几何变换----平移 2.1刚体的位置和朝向 3. 坐标系 3.1 ECI地心惯性坐标系 3.2 ECFF地心地固坐标系 3.3当地水平坐标系 3.4 UTM坐标系 3.5 车体坐标系 3.6IMU坐标系 3.7 相机坐标系 3.8 激光雷达坐标系 3.9 无人车定位信息中涉及…

一步步编写操作系统 09 写个mbr

有点不好意思了,说了好久,才说到实质性的东西,好了,赶紧给客官上菜。 代码2-1(c2/a/boot/mbr.S)1 ;主引导程序2 ;------------------------------------------------------------3 SECTION MBR vstart0x7c…

【2019牛客暑期多校训练营(第二场)- F】Partition problem(dfs,均摊时间优化)

题干: 链接:https://ac.nowcoder.com/acm/contest/882/F 来源:牛客网 Given 2N people, you need to assign each of them into either red team or white team such that each team consists of exactly N people and the total competi…

Apollo进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术

目录 1.百度无人车定位进化历程 2.百度自动驾驶应用的定位技术 2.1GNSS定位技术 2.2载波定位技术 2.3激光点云定位技术 2.4视觉定位技术 原文链接:进阶课程 ⑮丨Apollo自动定位技术详解—百度无人车定位技术 定位的目的是让自动驾驶汽车找到自身确切位置的方法…

一步步编写操作系统 10 cpu的实模式

cpu的实模式 由于mbr在实模式下工作……什么?什么是实模式?这时候有同学打断了我。我心想,这下好办了……哈哈,没有啦,开个玩笑而已。我们这里所说的实模式其实就是8086 cpu的工作环境、工作方式、工作状态&#xff0…

Ubuntu系统中使用搜狗输入法

今天介绍如何在Ubuntu中使用搜狗输入法。(Ubuntu版本为16.04) 1)登陆搜狗官网选择对应系统的搜狗输入法:http://pinyin.sogou.com/linux。 2)打开下载目录,命令行输入以下命令: sudo dpkg -i …

【2019牛客暑期多校训练营(第三场)- B】Crazy Binary String(思维,01串,前缀和)

题干: 链接:https://ac.nowcoder.com/acm/contest/883/B 来源:牛客网 ZYB loves binary strings (strings that only contains 0 and 1). And he loves equal binary strings\textit{equal binary strings}equal binary strings more, wh…

2.1)深度学习笔记:深度学习的实践层面

目录 1)Train/Dev/Test sets 2)Bias/Variance 3)Regularization(重点) 4)Why regularization reduces overfitting(理解) 5)Dropout Regularization(重点…

一步步编写操作系统 12 代码段、数据段、栈和cpu寄存器的关系

先说下什么是寄存器。 寄存器是一种物理存储元件,只不过它是比一般的存储介质要快,能够跟上cpu的步伐,所以在cpu内部有好多这样的寄存器用来给cpu存取数据。 先简短说这一两句,暂时离开一下主题,咱们先看看相对熟悉一…

【2019牛客暑期多校训练营(第三场)- F】Planting Trees(单调队列,尺取)

题干: 链接:https://ac.nowcoder.com/acm/contest/883/F 来源:牛客网 The semester is finally over and the summer holiday is coming. However, as part of your universitys graduation requirement, you have to take part in some …

Apollo进阶课程⑯丨Apollo感知之旅——感知概貌

原文链接:进阶课程⑯丨Apollo感知之旅——感知概貌 上周阿波君为大家详细介绍了「进阶课程⑮| Apollo无人车自定位技术入门」。 我们人类天生就配备多种传感器,眼睛可以看到周围的环境,耳朵可以用来听,鼻子可以用来嗅,…

一步步编写操作系统 13 栈

栈到底是什么玩意 cpu中有栈段SS寄存器和栈指针SP寄存器,它们是用来指定当前使用的栈的物理地址。换句话说,要想让cpu运行,必须得有栈。栈是什么?干吗用的?本节将给大家一个交待。 还记得数据结构中的栈吗?那是逻辑…

【2019牛客暑期多校训练营(第二场)- E】MAZE(线段树优化dp,dp转矩阵乘法,线段树维护矩阵乘法)

题干: 链接:https://ac.nowcoder.com/acm/contest/882/E?&headNavacm 来源:牛客网 Given a maze with N rows and M columns, where bijb_{ij}bij​ represents the cell on the i-row, j-th column. If bi,j"1"b_{i, j} …

Apollo进阶课程⑰丨Apollo感知之旅——传感器选择和安装

目录 1.激光雷达 2.相机 3.Radar毫米波 4.安装传感器 原文链接:进阶课程⑰丨Apollo感知之旅——传感器选择和安装 上周阿波君为大家详细介绍了「进阶课程⑯ Apollo感知之旅——感知概况」。 传感器是一种检测装置,能感受到被测量的信息,…

一步步编写操作系统 14 CPU与外设通信——IO接口 上

介绍显卡之前,必须得和大家交待清楚,那么多的外部设备,cpu是如何与他们交流。 大家都学过微机接口技术吧?没学过也没关系,反正我也只是笼统地说说^_^,保证大家一定能看得懂。 按理说,如果硬件…

2.2)深度学习笔记:优化算法

目录 1)Mini-batch gradient descent(重点) 2)Understanding mini-batch gradient descent 3)Exponentially weighted averages 4)Understanding exponetially weighted averages 5)Bias c…

【POJ - 2019】Cornfields(二维st表,模板)

题干: FJ has decided to grow his own corn hybrid in order to help the cows make the best possible milk. To that end, hes looking to build the cornfield on the flattest piece of land he can find. FJ has, at great expense, surveyed his square fa…

虚拟机安装Linux(vmware + ubuntu)

VMWare 提取码:7zph 建议官网下载比较新,还快一点 https://www.vmware.com/products/workstation-pro.htmlubantu 下载地址 安装过程都差不多可以参考 VMware下安装Ubuntu系统图文详细教程_master-CSDN博客_vmware安装ubuntu系统 出现蓝屏问题可以参考…