本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。
此专栏是关于《自动驾驶汽车定位技术》书籍的笔记.



2.高精度地图关键技术

2.3 同步定位与地图构建

  • 同步定位与地图构建(Simultaneous Localization And Mapping,SLAM):指机器人从未知环境的未知地点出发,在运动过程中通过观测到的环境特征定位自身位置和姿态,再根据自身位置构建周围环境的地图,从而达到同时定位和地图构建的目的;
  • SLAM主要解决两个问题:“我在哪里"和"我周围是什么”,前者对应自身定位问题,后者对应地图构建问题;
  • 现有发展情况下,SLAM有两种实现形式:一是以激光雷达为主的激光SLAM;二是以摄像头为主的视觉SLAM;
    • 激光SLAM:主要通过激光雷达获取自动驾驶汽车周围环境的激光点云数据,激光雷达能以很高的精度测量出汽车周围物体的角度和距离,从而很方便实现SLAM及避障等功能;
    • 视觉SLAM:主要通过摄像头采集的数据进行同步定位与地图构建;视觉传感器采集的图像信息要比激光雷达得到的信息丰富,更有利于后期处理;视觉SLAM主要有两种实现路径:一是基于深度摄像头,如Kinect;二是基于单目、双目或鱼眼摄像头;
  • 激光SLAM及基于深度摄像头的VSLAM通过收集到的激光点云数据,能直接计算障碍物距离;基于单目、双目、鱼眼摄像头的VSLAM,利用多帧图像来估计自身的位姿变化,再通过累计位姿变化来计算物体的距离,并进行定位与地图构建;

2.3.1 SLAM的经典框架

整个SLAM系统要实际解决的问题:如何通过传感器数据来估计自身状态(状态即位姿);状态估计可视为一个数学建模过程,即如何通过带有噪声的测量数据,估计自身状态。即:
xk=f(xk−1)+uk−1(1)x_k=f(x_{k-1})+u_{k-1}\tag{1} xk​=f(xk−1​)+uk−1​(1)

yk=h(xk)+vk(2)y_k=h(x_k)+v_k\tag{2} yk​=h(xk​)+vk​(2)

其中:

  • 式(1)为运动方程,表示在kkk时刻,机器人的位姿xkx_kxk​由k−1k-1k−1时刻的位姿f(xk−1)f(x_{k-1})f(xk−1​)决定;实际环境总会引起误差,因此添加一个噪声量uk−1u_{k-1}uk−1​对状态变化形成一定约束;
  • 式(2)为观测方程,表示kkk时刻的传感器观测值yyy,由当前时刻机器人的位姿h(xk)h(x_k)h(xk​)决定;实际环境的影响,带入一定的观测误差,即vkv_kvk​;
  • 运动方程描述了状态xk−1x_{k-1}xk−1​是如何变化到xkx_kxk​的,观测方程描述了怎么从xkx_kxk​得到观测数据yky_kyk​;

  • 传感器数据

    传感器数据在视觉SLAM中主要是相机图像信息的读取和预处理,在激光SLAM中主要是激光点云数据的读取与预处理;

  • 前端

    视觉SLAM中,前端相等于视觉里程计(Visual Odometer,VO),主要研究帧与帧之间的变换关系;先提取每帧图像特征点,利用相邻帧图像进行特征点粗配准,然后利用算法去除错误匹配,进一步进行精配准得到一个位姿信息,同时可以将其与IMU提供的位姿信息进行融合;视觉里程计每次估计两帧图像之间的运动时会出现误差,这个误差会不断累积导致漂移现象;漂移现象通过回环检测和后端优化解决;

    激光SLAM中,前端扫描匹配是核心步骤,工作内容是已知前一帧位姿并利用相邻帧之间的关系估计当前帧的位姿;激光SLAM主流的前端扫描匹配算法主要有迭代最近邻算法及变种、相关性扫描匹配(Correlative Scan Matching,CSM)算法、正态分布变换算法、基于特征的匹配(Feature-Based Matching,FBM)算法等;

  • 后端

    后端主要是对前端输出结果进行优化,利用滤波理论或优化理论进行树或图的优化,最终得到最优的位姿估计;主要方法有:基于贝叶斯滤波器的卡尔曼滤波、扩展卡尔曼滤波和粒子滤波等滤波理论方法,基于图优化的光流法、密集跟踪与映射(Dense Tracking And Mapping,DTAM)、大范围单目(Large-Scale Direct Monocular SLAM,LSD-SLAM)法和半直接(Semi-Direct Monocular Odometry,SVO)法等优化理论方法;

  • 回环检测

    回环检测主要解决位置估计随时间漂移的问题,要求机器人或任何使用SLAM技术的设备具备识别出曾经到过的场景的能力,主要通过判断图像间的相似性来完成回环检测;如果检测成功,则把检测结果传给后端,后端根据这些信息重新调整行进轨迹和已构建的地图;

  • 地图构建

    地图输出形式:度量地图、拓扑地图;度量地图强调精确地表示地图中的物体的位置关系,根据点云数据量分为稀疏地图和稠密地图;稀疏地图有选择性地忽略一部分信息,将所有物体进行一定程度的抽象,从而只保留部分具有意义的东西;稠密地图偏向于保留所有信息,将所有看到的东西进行建模;使用稀疏地图进行自动驾驶汽车的定位,稠密地图进行导航;2D的度量地图由小格子(Grid)组成,3D的度量地图由小方块(Voxel)组成;每个栅格通过占据、空闲和未知3种状态表达该栅格内是否有物体;拓扑地图强调地图内物体之间的相对关系,去掉细节问题;

2.3.2 SLAM方案对比

  • 成本

    激光雷达成本高,几万元到几十万元不等;视觉SLAM使用的摄像头成本低;

  • 应用场景

    激光SLAM主要应用于室内及范围较小的环境;视觉SLAM应用场景更广泛,更能适应室外环境,但对光的依赖性强,在光线暗或无纹理区域无法工作;

  • 地图精度

    激光SLAM构建的地图精度较高,达到厘米级,能直接用于定位导航;视觉SLAM构建的地图精度较低;

  • 易用性

    激光SLAM和基于深度摄像头的视觉SLAM是通过直接获取环境中的点云数据,根据生成的点云数据估计障碍物及距离等信息;基于单目、双目摄像头的视觉SLAM不直接获取点云数据,而是通过摄像头获取灰色或彩色图像,完成特征点的提取与匹配等工作,然后利用各种测距方法得到障碍物的位置信息;

2.4 高精度地图云端服务体系

2.4.1 高精度地图OTA服务

  • 空中下载技术(Over The Air Technology,OTA)是通过移动通信(GSM、CDMA等)网络空中接口对数据及应用进行远程管理的技术;
  • OTA最常用的功能是手机获取推送信息升级系统,这样手机系统更新可以通过无线下载方式进行,短时间内就可完成所有升级工作,无须备份数据可完好无损地保留所有数据,基本流程:生成更新包、传输更新包、安装更新包;
  • 汽车业中,OTA分为:固件在线升级(Fireware Over The Air,FOTA),即通过空中接口给电子控制单元(Electronic Control Unit,ECU)等车载设备下载完整的固件镜像,或修补现有固件、更新内存;另一类为软件在线升级(Software Over The Air,SOTA),即应用程序和地图数据等的更新;

2.4.2 传感器数据回传及更新技术

  • 基于OTA衍生的传感器数据回传及更新技术可将终端采集的数据(包括车端状态、道路、路面标志等)回传到云端,在云端进行数据预处理、数据规格化、数据生产和数据发布;
  • 传感器数据回传的内容包括:APP运行数据、汽车状态数据、车身传感器数据及地图采集数据;
    • APP运行数据:指APP的运行日志、崩溃日志、API调用等信息;
    • 汽车状态数据:指汽车的定位数据、速度、航向和数据置信度等信息;
    • 车身传感器数据:指通过传感器获取的雨刷速度、电量、胎压和车内温度等数据;
    • 地图采集数据:指传感器结合高精度地图所采集到的图像、视频及识别出的结构化数据等;
  • 传感器数据回传的策略包括:主动上传和任务上传;
    • 主动上传:指当APP的状态、汽车行驶状态、道路状态发生变化时主动上传数据;
    • 任务上传:指满足任务要求,如当汽车到达指定区域时、当前状态与定义状态相同时上传数据;
  • 传感器数据回传协议包括:传输协议、数据协议、缓存策略协议;
    • 传输协议:采用HTTP和MQTT协议;
    • 数据协议:采用SensorIS和SFCD协议;
    • 缓存策略协议:指上传流量限制机制、网络异常检测机制、数据量过小检测机制等;

学习笔记4--高精度地图关键技术(下)相关推荐

  1. 深入浅出MFC学习笔记:MFC六大关键技术仿真之RTTI运行时类型识别

    RTTI(运行时类型识别) 参考文献:深入浅出MFC-侯捷 怎样去构造类别型录网? 一.定义数据结构: 其中pFirstClass指针属于痊愈变量,所以它应该以static修饰之. 而且我们最终希望达 ...

  2. 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

  3. Intel VT学习笔记(四)—— VMCS(下)

    Intel VT学习笔记(四)-- VMCS(下) 要点回顾 VM-Exit Information Guest state fields 代码实现 参考资料 要点回顾 在上一篇中,我们了解了如何设置 ...

  4. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

  5. 系统工程(SE)学习笔记(三)——需求工程(下)

    系统工程(SE)学习笔记(三)--需求工程(下) 零. 回顾 壹. 三问需求分析 贰. 什么是好的系统需求 叁. 总结 在需求工程(上)中,我们聊过了STH(stakeholder)和STH Req( ...

  6. Windows phone 8 学习笔记(8) 定位地图导航

    Windows phone 8 学习笔记(8) 定位地图导航 原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控 ...

  7. 《疯狂Java讲义》学习笔记 第六章 面向对象(下)

    <疯狂Java讲义>学习笔记 第六章 面向对象(下) 6.1包装类 基本数据类型 包装类 byte Byte short Short int Integer long Long char ...

  8. Windows phone 8 学习笔记(8) 定位地图导航(转)

    Windows phone 8 学习笔记(8) 定位地图导航(转) Windows phone 8 已经不使用自家的bing地图,新地图控件可以指定制图模式.视图等.bing地图的定位误差比较大,在模 ...

  9. ArcGIS JS 学习笔记4 实现地图联动

    原文:ArcGIS JS 学习笔记4 实现地图联动 1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而 ...

最新文章

  1. NDK 高级编程(笔记)
  2. 不再有神的概念,将所有存在称之为文明,这很有意思
  3. 具有用户定义类型的format的示例用法
  4. C#中JSON和对象之间互相转换功能示例
  5. 如何手写代码进行页面布局
  6. UVALive 8518 - Sum of xor sum
  7. [html] 当页面中使用application/xhtml+xml会出现什么问题吗?
  8. c语言万年历的设计任务,万年历设计报告
  9. RNN调试错误:lstm_cell = tf.contrib.rnn.core_rnn_cell.BasicLSTMCell(lstm_size) 方法已失效
  10. c语言怎样得到函数内参数的值_MySQL之自定义函数
  11. mysql replace update_mysql的replace,存在更新,不存在插入
  12. 通过两个小栗子来说说Java的sleep、wait、notify、notifyAll的用法
  13. 《Linux内核设计与实现》学习笔记之“Linux进程管理机制”
  14. char wchar_t ascii unicode 之旅
  15. DeepMind论文三连发:如何在仿真环境中生成灵活行为
  16. P1_C1-3:系统分析与设计概要
  17. 机器学习入门实战加州房价预测
  18. UBUNTU环境下编译的openwrt
  19. WIN7截图工具灵活使用
  20. MHA binlogserver

热门文章

  1. 2020年阿里社招的笔试题目2--社招居然也让我笔试醉了
  2. Excel坐标自动在AutoCad绘图_4
  3. python图形界面化编程GUI(五)坦克大战(一)
  4. nnU-Net v2的环境配置到训练自己的数据集(详细步骤)
  5. openwrt下挂载硬盘实现网络共享
  6. 分式型函数的相关知识
  7. VINS-Mono之IMU预积分,预积分误差、协方差及误差对状态量雅克比矩阵的递推方程的推导
  8. 课程标准模板 java,实训(Web)课课程标准模板
  9. 35、公众号(订阅号)消息列表
  10. error LNK2001: 无法解析的外部符号 解决方法