当前位置:网站首页>学习笔记4--高精度地图关键技术(下)
学习笔记4--高精度地图关键技术(下)
2022-07-05 09:43:00 【FUXI_Willard】
本系列博客包括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系统要实际解决的问题:如何通过传感器数据来估计自身状态(状态即位姿);状态估计可视为一个数学建模过程,即如何通过带有噪声的测量数据,估计自身状态。即:
x k = f ( x k − 1 ) + u k − 1 (1) x_k=f(x_{k-1})+u_{k-1}\tag{1} xk=f(xk−1)+uk−1(1)
y k = h ( x k ) + v k (2) y_k=h(x_k)+v_k\tag{2} yk=h(xk)+vk(2)
其中:
- 式(1)为运动方程,表示在 k k k时刻,机器人的位姿 x k x_k xk由 k − 1 k-1 k−1时刻的位姿 f ( x k − 1 ) f(x_{k-1}) f(xk−1)决定;实际环境总会引起误差,因此添加一个噪声量 u k − 1 u_{k-1} uk−1对状态变化形成一定约束;
- 式(2)为观测方程,表示 k k k时刻的传感器观测值 y y y,由当前时刻机器人的位姿 h ( x k ) h(x_k) h(xk)决定;实际环境的影响,带入一定的观测误差,即 v k v_k vk;
- 运动方程描述了状态 x k − 1 x_{k-1} xk−1是如何变化到 x k x_k xk的,观测方程描述了怎么从 x k x_k xk得到观测数据 y k y_k yk;
传感器数据
传感器数据在视觉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协议;
- 缓存策略协议:指上传流量限制机制、网络异常检测机制、数据量过小检测机制等;
边栏推荐
- Swift uses userdefaults and codable to save an array of class objects or structure instances
- CSDN always jumps to other positions when editing articles_ CSDN sends articles without moving the mouse
- @JsonAdapter注解使用
- 面试:List 如何根据对象的属性去重?
- MySQL character type learning notes
- On July 2, I invite you to TD Hero online press conference
- Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on
- MySQL数字类型学习笔记
- Roll up, break 35 - year - old Anxiety, animation Demonstration CPU recording Function call Process
- ArcGIS Pro 创建要素
猜你喜欢
基于单片机步进电机控制器设计(正转反转指示灯挡位)
善用兵者,藏于无形,90 分钟深度讲解最佳推广价值作品
Roll up, break through 35 year old anxiety, and animate the CPU to record the function call process
把欧拉的创新带向世界 SUSE 要做那个引路人
Understand the window query function of tdengine in one article
Design and Simulation of fuzzy PID control system for liquid level of double tank (matlab/simulink)
The comparison of every() and some() in JS uses a power storage plan
Roll up, break 35 - year - old Anxiety, animation Demonstration CPU recording Function call Process
Is it really reliable for AI to make complex decisions for enterprises? Participate in the live broadcast, Dr. Stanford to share his choice | qubit · viewpoint
Node-RED系列(二九):使用slider与chart节点来实现双折线时间序列图
随机推荐
cent7安装Oracle数据库报错
盗版DALL·E成梗图之王?日产5万张图像,挤爆抱抱脸服务器,OpenAI勒令改名
Wechat applet - simple diet recommendation (2)
双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)
How Windows bat script automatically executes sqlcipher command
ArcGIS Pro 创建要素
Swift saves an array of class objects with userdefaults and nssecurecoding
Understand the window query function of tdengine in one article
Openes version query
On July 2, I invite you to TD Hero online press conference
Comment obtenir le temps STW du GC (collecteur d'ordures)?
Why don't you recommend using products like mongodb to replace time series databases?
Design and Simulation of fuzzy PID control system for liquid level of double tank (matlab/simulink)
Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 - 上
Tianlong Babu TLBB series - about items dropped from packages
Baidu app's continuous integration practice based on pipeline as code
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on
一个程序员的职业生涯到底该怎么规划?
How to get the STW (pause) time of GC (garbage collector)?
能源势动:电力行业的碳中和该如何实现?