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也即将完成自己的历史使命了,完成之后,它又将睡去。想到这里,心中不免一丝忧伤,甚至有些许挽留它的想法。可是,这就是它的命,它生来被设计成这样&…

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 …

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感知之旅——感知概况」。 传感器是一种检测装置,能感受到被测量的信息,…

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…

Apollo进阶课程⑱丨Apollo感知之旅——传感器标定

目录 传感器标定 标定的目的 传感器标定算法 标定案例解析 3D标定间制作 Cmaera-to-Camera外参标定 Lidar-to-Camera外参标定 Lidar-to-Lidar外参标定 Lidar内参标定 Lidar-to-GPS外参标定 自然场景的Lidar-to-Camera外参标定 自然场景的Bifocal Camera外参标定 C…

一步步编写操作系统 15 CPU与外设通信——IO接口,下

既然都说到IO接口了,不知道各位有没有疑问,cpu是怎样访问到IO接口呢?肯定得有个链路吧?什么?有隐约听到有同学开玩笑说:cpu用无线访问其它设备。哈哈,不知道各位听说过没有,无线的终…

Telnet端口连接Linux服务器失败

在ubuntu写了个服务器端口号是666 ,ip地址是192.168.96.129 在windows用telnet无法连接上 首先检查windows telnet服务是否打开 Windows 10操作系统上使用telnet命令(图文)_时间-CSDN博客_windows使用telnet命令 测试网络是否通:…

重磅 | 完备的 AI 学习路线,最详细的资源整理!

本文转自微信公众号:Datawhale(强烈推荐) 原创: AIUnion Datawhale 今天 【导读】 本文由知名开源平台,AI技术平台以及领域专家:Datawhale,ApacheCN,AI有道和黄海广博士联合整理贡献…

Windows/Linux 下使用telnet发送消息

Windows下使用telnet 1.首先打开cmd命令行连接上服务器端口 连不上可以参考这篇 Telnet端口连接Linux服务器失败_m0_46480482的博客-CSDN博客 telnnt <ip地址> <端口号> 2. 连接成功后&#xff0c;会发现是一片黑的 按住 ctrl ] 可以招出提示 输入 &#x…