当前位置:网站首页>学习笔记5--高精地图解决方案
学习笔记5--高精地图解决方案
2022-07-05 09:43:00 【FUXI_Willard】
本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。
此专栏是关于《自动驾驶汽车定位技术》书籍的笔记.
3.高精度地图解决方案
3.1 高精度地图采集
- 采集车是数据采集的核心载体,其搭载全球导航卫星系统、惯性导航系统(Inertial Navigation System,INS)、激光雷达、摄像头等系统及传感器设备;
- 外业采集的数据包括行车轨迹、图像、激光点云等数据,拥有车道线、路沿、护栏、路灯、交通标志等信息;
- 采集过程中,采集员需要实时监控采集情况,不断确认采集设备是否工作正常,且需要根据天气和环境情况来选择不同的摄像头参数;
- 采集的数据经过数据自检、复制、备份后,进行回传,待数据入库检查无误后,保存至外业原始资料库;若数据自检和入库检查的过程中发现数据有问题,需要进行补充采集;
3.1.1 高精度地图采集设备
高精度地图主流采集设备:激光雷达、摄像头、IMU、GNSS和轮测距仪的组合;激光雷达和摄像头用于获取采集车周围环境数据,IMU、GNSS和轮测距仪用于获取采集车的绝对位置;
激光雷达(LiDAR)
- 激光雷达先通过向目标物体发射一束激光,根据发射到接收的时间间隔确定目标物体的实际距离;在单个发射器和接收器上在短时间内发射较多的激光脉冲,脉冲发射后,接触到需要被检测的物体并反射回接收器上,每次发射和接收都可以获得一个点的具体坐标,当发射和接收进行得足够多时,形成环境激光点云,从而将汽车周围环境量化;
- LiDAR系统一般分为三部分:一是激光发射器,发出波长为600~1000nm得激光射线;二是扫描与光学部件,主要用于收集激光发射点,获取该反射点发射到接收的时间差和水平角度信息;三是感光部件,主要检测返回光的强度,因此检测到的每个点都包括空间坐标信息及光强度信息;
摄像头(Camera)
摄像头以图像的形式捕捉汽车周围环境信息,通过对这些图像进行处理以提取道路关键信息,进而完成地图的初步绘制;
IMU(惯性测量单元)
一般使用6轴运动处理组件,包含3轴加速度计和3轴陀螺仪;加速度计是力传感器,可根据各方向受力情况计算每个轴上的加速度;陀螺仪是角速度检测仪,可根据每个轴上的角加速度得到各轴上的角度变化;
GNSS
GNSS接收机由储存的星历确定每颗卫星在各时刻的位置,再结合由接收机与卫星间的信号传输时间计算得到二者时间的距离,即可根据三球定位原理推算出接收机的位置;
3.1.2 数据模型
高精度地图要素的数据模型分为四大类:道路模型(Road Model)、车道模型(Lane Model)、道路标记模型(Road Mark)、基本对象模型(Object);
道路模型
- 道路几何形状:指数据制作时,形状点连接成的道路的几何形状;通过形状点描述道路的几何形状时,形状点以坐标形式进行描述,如道路中心线与道路拓扑等;
- 曲率:表示道路的弯曲程度,弯曲程度越大曲率值越大,弯曲程度越小曲率值越小;计算时,采取曲线拟合方法,得到各形状点所在的曲率半径的倒数,根据道路的几何形状,进行曲线拟合后计算出离散点的曲率值;
- 坡度:指道路纵向的起伏程度,道路起伏程度越大则坡度越大,道路起伏程度越小则坡度越小;计算时,对形状点高程差与水平距离取反正切计算得到坡度;
车道模型
- 车道类型:指地面道路上该车道的类型,主要包括:普通车道、入口车道、出口车道、进入匝道、退出匝道、应急车道、连接匝道等;车道类型会赋值在该车道上;
- 普通车道:指无特殊属性的车道,一般为主行车道;普通车道普遍指高速中的主路,按照实际的车道形态进行制作表达,并在右侧车道上赋值主路属性;
道路标记模型
- 道路标记模型:主要指车道线的形式,包括:无属性、单实线、长虚线、双实线、左实右虚线、右实左虚线、双虚线、路沿线、护栏线;道路标线会赋值在对应的车道线上;
基本对象模型
- 高精度地图中对象的类型包括:杆、牌、龙门架、地面标线等;杆类型包括:灯杆、基站杆、摄像头杆、交通标志牌依附的杆等;地面标线分为:地面箭头、地面文字、导流区、地面限速等;
3.2 高精度地图制作与编译
采集车采集到符合要求的数据并回传保存后,先进行数据处理,将各传感器数据进行融合以进行各种对象的识别及标注,针对其中的误差及错误进行人工检查并更正,之后编译成可供自动驾驶应用的符合格式规范的高精度地图。
3.2.1 高精度地图数据处理
- 数据处理:指对收集到的数据进行整理、分类和清洗以获得初始地图模板,其中不包括任何语义信息或注释,之后通过激光点云配准、激光点云识别和图像识别等AI技术,把不同传感器采集的数据进行融合,即把GNSS、激光点云、图像等数据叠加在一起,进行道路标线、路沿、路牌、交通标志等道路元素的识别及分类;
- 一般在制图过程中处理的数据以激光点云为主,小部分以视觉为主;在城市道路中采用实时动态差分技术(Real Time Kinematic,RTK)方案获取位置信息,但高楼遮挡或林荫路等场景对信号的稳定性影响无法避免,在采集到激光点云后需要借助SLAM或其他方案,对位姿进行优化,然后才能将激光点云准确拼接,形成一个完整的激光点云;拼接成高度精确的激光点云地图后,对其进行识别、标注来绘制高精度地图;
- 激光点云识别包括:基于深度学习的元素识别和基于深度学习的激光点云分类;
3.2.2 高精度地图编译及格式规范
- 高精度地图生成的最后一步是进行数据编译,将上述步骤中编辑好的高精度地图编译成可供自动驾驶应用且符合格式规范的高精度地图;
- 主流的通用格式规范:导航数据标准(Navigation Data Standard,NDS)和OpenDRIVE;
- 其他标准:JDRMA标准、KIWI格式标准、GDF标准、Etak标准、NavTech标准;
3.3 高精度地图质量控制与发布
3.3.1 高精度地图的质量控制流程
高精度地图质量要求贯穿整个地图生产过程,包含各个生成过程的检查方式、检查内容、成果质量评定标准;具体到地图生产的各环节,包括:高精度地图资料采集、实地外业数据采集、室内数据制作、地图编译、高精度地图产品测试和产品发布;
- 外业采集质控
- 一级质检:组长检验,主要进行有效性检验;
- 二级质检:质量控制检验,主要进行有效性检验和实地检验;
- 三级质检:质量部验收,主要进行有效性检验、室内检验和实地检验;
- 有效性检验:检验采集指引的完备性、有效性和正确性;检验方式:人工,根据城市采集指引及维护资料,对照外业采集成果进行检验;同时进行分城市、分区域、分要素的成果统计;
- 室内检验:检验采集成果的完整性、逻辑一致性及可用性;由检验人员以城市或区域为单位进行自动化处理,快速识别和检出有效问题点,通过人机交互方式快速识别和检验;
- 实地检验:检验相对于实地的完备性、正确性;检验方式:检验开始前,由检验人员根据城市重要区域、重要路段等挑选质检区域,然后按路线设计进行实际的采集检验,做问题记录;
- 室内制作质控
- 第一阶段:程序处理检验。检验方式:首先,检验开始前,由检验人员均匀抽取各种场景,然后,按规范标准要求,检验自动化处理数据的准召情况,输出准召率;
- 第二阶段:基础要素与高阶要素检验。检验方式:作业阶段进行自检、质检员进行抽检、质量保证验收;
- 第三阶段:数据接边检验及交付检验;
- 产品化质控
- 数据逻辑和阈值检验利用产品理论检查工具按照高精数据交换规格对数据连通关系、阈值等进行检验并输出结果;
- 数据一致性检验利用产品可视化检查工具,对高精产品数据与现实的一致性进行人工检查,并记录数据问题;
3.3.2 高精度地图的数据质量标准
高精度地图的数据质量控制目标分为:数据完整性、逻辑一致性、位置准确度、专题准确度、时间准确度;
高精度地图属性质量标准表:
要素 | 误报率标准 | 漏报率标准 |
---|---|---|
车道线几何 | 0.50% | 0.50% |
车道类型 | 0.30% | 0.30% |
车道通行状态 | 0.10% | 0.10% |
车道收费情况 | 0.10% | 0.10% |
车道线类型 | 0.20% | 0.20% |
车道线颜色 | 0.20% | 0.20% |
车道线粗细 | 0.10% | 0.10% |
路沿 | 0.50% | 0.50% |
护栏 | 0.50% | 0.50% |
限速 | 1% | 1% |
交叉点 | 0.50% | 0.50% |
3.3.3 地图引擎与发布
- "地图引擎"提供读写高精度地图数据的应用程序编程接口(Application Programming Interface,API);
- 从应用层看,"地图引擎"就是一套提供了驱动和管理地图数据,实现渲染、查询等功能的一套函数库,所有的应用层软件只需要调用"地图引擎"提供的API就能实现读取、增添、删除及修改高精度地图,从而保持车端地图的鲜度;
- "地图引擎"基于车端数据互传机制,采集车端状态和道路数据,通过地图更新、数据回传形成云端到车端的数据闭环,持续优化高精度地图。
边栏推荐
- MySQL数字类型学习笔记
- Wechat applet - simple diet recommendation (4)
- From "chemist" to developer, from Oracle to tdengine, two important choices in my life
- [C language] the use of dynamic memory development "malloc"
- 历史上的今天:第一本电子书问世;磁条卡的发明者出生;掌上电脑先驱诞生...
- Z-blog template installation and use tutorial
- Observation cloud and tdengine have reached in-depth cooperation to optimize the cloud experience of enterprises
- Flutter development: a way to solve the problem of blank space on the top of listview
- (1) Complete the new construction of station in Niagara vykon N4 supervisor 4.8 software
- Tianlong Babu TLBB series - single skill group injury
猜你喜欢
From "chemist" to developer, from Oracle to tdengine, two important choices in my life
Solve liquibase – waiting for changelog lock Cause database deadlock
Mysql80 service does not start
Design and Simulation of fuzzy PID control system for liquid level of double tank (matlab/simulink)
Kotlin Compose 多个条目滚动
To bring Euler's innovation to the world, SUSE should be the guide
mysql80服务不启动
Idea debugs com intellij. rt.debugger. agent. Captureagent, which makes debugging impossible
isEmpty 和 isBlank 的用法区别
如何写出高质量的代码?
随机推荐
Six simple cases of QT
Fluent development: setting method of left and right alignment of child controls in row
Hard core, have you ever seen robots play "escape from the secret room"? (code attached)
Flutter development: use safearea
MySQL字符类型学习笔记
面试:Bitmap像素内存分配在堆内存还是在native中
Data visualization platform based on template configuration
Kotlin compose and native nesting
ArcGIS Pro 创建要素
Baidu app's continuous integration practice based on pipeline as code
To bring Euler's innovation to the world, SUSE should be the guide
Optimize database queries using the cursor object of SQLite
[C language] the use of dynamic memory development "malloc"
Coordinate system of view
【OpenCV 例程200篇】219. 添加数字水印(盲水印)
Uni app running to wechat development tool cannot Preview
Node red series (29): use slider and chart nodes to realize double broken line time series diagram
[app packaging error] to proceed, either fix the issues identified by lint, or modify your build script as follow
Energy momentum: how to achieve carbon neutralization in the power industry?
Mysql80 service does not start