加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

self_drive car_学习笔记

发布时间:2022-12-16 18:33:22 所属栏目:云计算 来源:互联网
导读: 前言:这节课主要介绍高精地图相关知识。个人水平有限,有理解错误地方,欢迎大大们批评指出。
CONTENTS:
1、 HD MAP OVERVIEW【高精地图介绍】
2、 OPENDRIVE PROTOCAL【路网协议,这里指

前言:这节课主要介绍高精地图相关知识。个人水平有限,有理解错误地方,欢迎大大们批评指出。

CONTENTS:

1、 HD MAP OVERVIEW【高精地图介绍】

2、 OPENDRIVE PROTOCAL【路网协议,这里指高精地图协议】

3、 CLOUD POINT MAPPING【点云地图】

4 、V2X【Vehicle-to-everything ,车用无线通讯技术】

1 高精地图

1.1无人驾驶软件框架

在这里插入图片描述

图中上:感知、决策规划、控制

图中下:高精地图、定位

感知:如人的眼睛,获取第一手信息的渠道;

决策规划:如人的大脑,决定怎么走,怎么躲避碰撞,从而高效到达目的地;

控制:接收来自决策规划的结果,控制模块上有刹车、油门、方向盘,跟踪上电脑给的轨迹,从而实现无人驾驶的能力;

高精地图:L4级别中,给感知很大支持以及补充,也给规划提供了很高效便利的能力支持,也支持定位达到高精水平;

定位:了解自身的基础模块,上述的感知、决策规划、控制无法进行

1.2 高精地图

在这里插入图片描述

在这里插入图片描述

【上面两个整合就是得到下面地图信息:点云+道路信息(融合得到)】

高精地图,就是将物理信息,动态细节、静态细节,都在地图中标注出来了:

黄色线表示人行道,然后地图会告诉图中基本信息如红绿灯、人行道的长度宽度,也告诉行人会告诉看哪个红绿灯;绿化带在哪,车道边沿在哪,车道线的软硬【软的可穿过,硬的不行,也可理解为虚实车道线】;绿色线是道路中介线

雷达点云信息,就是采图车【一种专门用于采集道路点云信息以制作高精地图的车辆】经过的路段点云,融合得到的整合点云,放置在高精地图备份信息中;其作用是,精确描绘地面位置,点云的每个坐标点大小、方向,方便定位过程中,采集到同一段路段点云信息时,起到校正作用

1.3 HD MAP(高精地图)VS NAVIGATION(导航地图)

在这里插入图片描述

高精地图,是采图车采集制作的;高精地图因为制作流程很漫长,所以更新比较滞后的;高精地图一般保存的是静态信息,动态信息会比较少;对于动态信息,会单独更新。

1.3 高精地图和定位关系

在这里插入图片描述

Self-localization(自定位):高精地图本身就是一个自定位系统:将自身的感知的区域和地图拼接,发现一致,同时根据高精地图厘米级精度,确定自身在高精地图位置,从而实现自身定位目的。

Camera&Point cloud(相机&点云):【上面的自身感知区域一般通过这两者获取】

----Pre-processing预处理:例如地图匹配时候,找一些标志性建筑物;剔除数据有问题的帧

----Coordinate transformation坐标变换:不同传感器数据需要进行坐标转换,目的在同一个坐标系下展现环境

----Data fusion数据融合:将传感器数据融合

High precision(高精度):高精度地图和高精度位置匹配,在现有的定位基础上,进一步缩小定位误差

1.4 高精地图和感知(perception)

在这里插入图片描述

1)High range visualization(超视距感知):高精地图存储静态信息,实现超视距感知(如图中的××交通灯,无人车无法识别,但是高精地图有保存,可以传给无人车,从而知道这两处交通灯,从而可以做更好更长远的决策与规划)

【强光环境,camera采集的数据直接报废;64线激光雷达有效可用的数据集在100m范围内;毫米波雷达距离远,但是噪声多,感知处理困难】

【对于遮挡类型障碍,感知是没有办法处理的】

【V2X也是超视距感知一种,可以将动态信息传给无人车;当V2X和高精地图组合,则可以达到实际意义的超视距感知,例如图森未来就是这么干的,号称感知范围可达1公里】

2)ROI:高精地图可以缩小感知的ROI(感兴趣区域),从而提高感知精度(感知区域缩小了,算法更好实现,如交通灯位置经过高精地图告诉无人车,只需要识别灯颜色就行,算法就相对简单可以实现了)以及加快感知速度(如,车道外的物体数据,根据高精地图反馈直接忽略掉,有更多的算力处理其他数据)【无人车感知至少10hz,也就是延迟最高不超过100毫秒,所以,ROI的缩小对提高感知速度非常重要】

3)Saving computation:节省算力(从上面ROI作用解析可以看出)

1.5 高精地图和规划(Planning)

在这里插入图片描述

图中,左侧是传统地图给的信息,右侧是高精地图提供的信息

1)Lane center(车道中心线):高精地图可以提供这些信息,使得无人车无需浪费算力在识别这些车道实线、车道虚线信息上,使得规划更快。

–Reference line参考线

–Boundary边界

2)Road network(道路网):比如,无人车需要右转,根据高精地图提供的车道网信息,提前变道到靠右的车道,也就是使得规划路线更加合理【为什么不用感知呢?因为旁边的车比较多,感知能力容易失效】

–Merging zone(合并区域,车道合并)

–Junction(路口)【对于预测比较重要】

3)Traffic information:提供一些交通信息给无人车,规划更合理

–Stop sign(停止标志,停车牌)

–Speed limit(速度限制,限速)

【高精地图提供的信息,有可能不依赖感知进行较好的路径规划】

1.6 高精地图产生

以APOOLO HD MAP为例

在这里插入图片描述

数据采集:采集车队走需要制作高精地图的区域,任何一个点都需要大量重复采集

数据处理:点云拼接、重复点云的拟和与滤除从而产生一个底图【底图满足在上面做标志的要求】

【点云信息是当前用的主要高精采集方式,信息容易处理,精度也较高,但是采集成本很高;也可以使用摄像头采集】

元素处理:主要是对道路属性的识别,主要针对的是摄像头设备,使用感知能力去识别路牌、标识线如车道线

–元素识别【主要针对摄像头,采集图时候就识别好车道线这些,不是到了无人驾驶时候才开始识别;驾驶时候识别会比较麻烦,耗费时间】、

–点云分类:将一些障碍物区分,如把道路上的动态汽车分类出来,后面剔除掉

元素识别、点云分类,是在不同任务上进行弥补和配合。

人工验证:校验车道线识别是否正确;信号灯、标志牌是否正确;虚拟道路、逻辑关系,这里是加入人类驾驶习惯进行处理的【比如,十字路口没有转弯线的,人工标注(根据人行驶习惯来拟合出转弯线)到高精地图里面】。

1.7 APOLLO HDMAP 高精地图制作之采集车

在这里插入图片描述

高精地图采集车的结构样式:相机、激光雷达、GPS差分定位;NVME SSD硬盘【存储采集的数据,这些数据是在采集结束了,再进行处理】、工控PC、主线、GPS接收器

【一辆采集车跑一天,大概产生28T数据】

1.8 采集的数据制作高精地图地图流程(与SLAM制图流程类似)

在这里插入图片描述

【slam就是,在环境不是很复杂,光线合适,动态障碍物较少的环境中使用的技术】

传感器数据->视觉里程计(->回环校验)->后处理优化->地图绘制

visual odometry视觉里程计:将传感器数据拼接起来,计算出无人车行驶轨迹,然后将每一帧的图组成局部环境分析;通过轨迹和局部环境分析,一张张图匹配,转移到一张完整的图上;这过程,相当于一个单相环境处理。但是,每帧处理会有漂移累计

回环校验,简单理解,无人车经过一圈,理论来说里程计得到的位置也是初始位置上,但是其得到的是另一位置,那么,将里程计的计算位置和初始位置匹配,对前面里程计误差进行修正,这过程就是回环校验。

回环校验作用:校正视觉里程计每帧处理产生的漂移误差,做到大图之间密切的吻合,避免出现缝隙和漏差情况【传统的slam只是靠视觉来做,但是,无人车大地图中,会使用RTK(高精度定位),并辅助点云信息来做】

后处理优化:进一步处理优化数据,如进一步修正误差

【通过多次的修正弥补,就可以制作大地图了】

地图绘制:局部图拼接,制作地图

1.9 HDMAP AI高精地图制作过程中使用的主流技术

在这里插入图片描述

1)多传感器标定:雷达、相机、IMU、GPS,将所有的传感器信息变换到同一个坐标系下进行融合起来【这个不算AI技术】

2)点云处理:运动补偿、三维模型–>特征提取、点云融合–>点云识别

3)视觉处理:图像识别,采用的是离线方式处理

4)多传感器融合:3D->2D 投影 ->元素跟踪/聚类(->过滤&补全)

【高精地图自动化生产是一个重要方向】

【采集车不一定要求每一条车道都要进行跑一遍,进行数据采集,只要精度合适了,就不需要;跑时候,采用车队的方式,从不同的角度来采集,从而从不同角度进行拟合云计算地图导航,找到最佳拟合】

【地图制作过程中,经过多次回环校验、后处理优化,达到了较好效果,才进行人工校验】

2 OPENDRIVE PROTOCAL(高精地图协议)

2.1 OPENDRIVE简介

在这里插入图片描述

OPENDRIVE是一个开源的,存放道路图像数据的文档,很好表示道路信息:

----包含真实道路网信息

----开源

----应用广泛

----从2006开始,有许多应用案例

将上述的demo放大的路口,效果图:【图中有很多细节】

在这里插入图片描述

2.2 opendrive 如何表示地图

在这里插入图片描述

1)两坐标系:

----Track co-ordinates(Frenet co-codinate):车道坐标系,如上图中s-t坐标系,其起点是某一段道路的原点

----Inertial co-ordinates:惯性坐标系(通常说的世界坐标系)

2)惯性坐标系

在这里插入图片描述

Yaw、pitch、roll符合右手准则

3)车道坐标系

在这里插入图片描述

S:沿车道中心线方向;T:表示道路左右两侧的方向;H:表示的是高度,如果在坐标原点的高处,则取正值。

S/T的正负,取决于坐标系的位置。

4)road道路

在这里插入图片描述

Opendrive就是将道路信息划分为下面三组:特征(道路上额外信息)、道路线信息(道路边界在哪,边界类型,道路中间线在哪,道路中间线距离边界多少等)、参考线(如车道坐标系提供的线)

2.3 opendrive 协议文件内容介绍

1)

【个人:文件格式,类似urdf文件格式xml,采用标签形式来填写各种信息】

基本概念:

opendrive格式xodr:基于xml的一种数据结构。

()

【这一节都是介绍该文件里面标签含义,看怎么描述道路网信息】

2)xodr文件所需要的依赖库:

----matplotlib,numpy

----lxml:解析xml的python工具库

----opendriveparser:opendrive解析库,将xodr转化为python数据结构【老师自己写的,这一部分可以借鉴而已,因为目前获取不到该文件,但是可以知道有这么一种思路方向参考吧】

3)编写xodr文件时候,使用jupyter工具【使用python编写函数,读取编写的xodr文件,相应的效果会显示出来】,检验编写文件实际效果

4)如何绘制参考线

4-1)

–Line:没有曲率

----Spiral:也称为欧拉螺旋形,曲率是线型变化的

----Arc:弧线,常量非0的曲率

----Cubic polynom:立方多项式,曲率不确定

4-2)

参考线本质上是一种坐标变换,从车道坐标系变换到世界坐标系

在这里插入图片描述

5)

计算出圆心角和半径

圆的半径是曲率的倒数:r=1/c (c是曲率)

s是弧长,s=2ΠrQ ,Q表示的是角度

三角公式计算出新的坐标点位置

车道线角度:h’=h+sc

【对于很弯曲的道路,一个三次多项式无法表达,可以拆分位多段,从而可以使用多个三次多项式来表示】

6)欧拉螺旋线绘制

计算很复杂,计算图形学里已经给出了合理的公式,可参考:

【介绍欧拉螺旋线】

【官方提供的绘制代码c实现;个人并没有找到】

【这一节就是实操怎么使用opendrive文件绘制地图的路网】

7)更多高精地图格式

LaneLet:

----定义一种更高效便捷的道路描述文件(ref: P. Bender, J. Ziegler and C. Stiller, “Lanelets: Efficient map representation for autonomous driving,” 2014 IEEE Intelligent Vehicles Symposium Proceedings, Dearborn, MI, 2014, pp. 420-425, doi: 10.1109/IVS.2014.6856487.)

----每个x、y点都进行了存储,边界的位置和曲率也重新定义了

----利用网格表述道路关系

在这里插入图片描述

【小插曲:无人驾驶商业化可能还要一定时间,但是,高精地图商业化会很快,由于其对于L2,L3级别的驾驶都是有需求的,百度地图、Google地图,四维图新都在做;由于高精地图涉及的地理细节信息很多,属于国家管控的,所以只有一些demo而已】

8)例子:Apollo OpenDrive

----更为复杂的路网情况,针对L4级别的自动驾驶进行优化,包含了更多道路类型:例如分叉汇入区域,环岛区域

----提供路标更多详细信息,减少在线计算,比如:路口红绿灯的精确位置,提供检测和识别区域的效率

在这里插入图片描述

直接将红绿灯位置信息保存到高精地图里面

3、CLOUD POINT MAPPING

3.1 Lidar&Image

1)传感器数据融合:camera-lidar-radar

----深度信息:XYZ

----图片信息:RGB

----关键对象分类与检测

2)iDAR:相机RGB+lidar的3D点云

3)Slam:传感器位置估计+粒子滤波校正

4)Mapping:重构全局地图

参看资料:

https://www.aeye.ai/idar/ 

F. Zhang, D. Clarke and A. Knoll, “Vehicle detection based on LiDAR and camera fusion,” 17th International IEEE Conference on Intelligent Transportation Systems (ITSC), Qingdao, 2014, pp. 1620-1625, doi: 10.1109/ITSC.2014.6957925.

在这里插入图片描述

3.2点云匹配

1)依赖库说明

----OpenCV3:目前最常用也是用途最广的图像处理依赖库,熟悉基本操作,比如cv::Mat、imread

----Eigen:C++下最常用的矩阵运算库,类似于Matlab,对矩阵的描述和计算都非常方便,任何计算都是矩阵

----PCL:Point Cloud Library,点云计算库,方便对点云进行操作和可视化

2)安装方法:

----Eigen库使用源码拷贝的方式或者apt-get安装

----Opencv安装可以用ppi源来安装,也可以用源码编译安装

----在Ubuntu下使用apt-get安装PCL

在这里插入图片描述

3)使用说明

代码库:JointMapping

–cmake .

–make

–./joinMap

–pcl_viewer ./map.pcd

3.3 基础概念

1)相机内参:描述了相机将外界物体如何成像为图片的内部参数(还有一个相机内部参数:畸变参数)

2)相机外参:描述了如何把点从世界坐标系转换到相机坐标系(坐标系很多,世界坐标系、车道坐标系、相机坐标系、车辆坐标系等)

3)像素坐标系:也叫图像坐标系,灰度图:0-255(8位),深度图:0-65535(16位),彩图:多通道(RGB、BGR、RGBA等等)

在这里插入图片描述

4)刚体运动方式:刚体运动是个六个自由度的运动,XYZ坐标平移,rpy选装(roll,pitch,yaw);相机运动就是一个刚体运动,其坐标系是一个移动坐标系

5)相机坐标系中的物体坐标pc,而在世界坐标系pw,如何转换?假设一个T来表示坐标系转换:

pc=Tpw

6)旋转坐标:

–两组坐标系的旋转是由两组坐标基的内积空间决定的,我们定义为R

在这里插入图片描述

----这里的e和t是两个空间坐标系的基坐标

----旋转矩阵其实描述的就是相机的旋转

7)平移坐标系:

----平移向量定义为t,因此坐标系之间的转换结合起来就可以表述为:

8)齐次坐标系、变换矩阵

----上述的线型表述形式虽然做到了坐标变换,但是这个形式非常不利于多次变换,无法做到矩阵计算,因此引入齐次坐标系:

至此,这里的T就和我们说的坐标变换T是同一个了,也称为变换矩阵;而增加了一个维度的坐标系[a 1]T (表示列矩阵)也简化为b,也称为齐次坐标系

9)欧拉角

----yaw:绕Z轴旋转

----pitch:绕Y轴旋转

----roll:绕X轴旋转

10)四元数(Quaternion)

其是一种扩展复数,用于解决紧凑性(不产生任何冗余)和奇异性(在空间任何情况下连续,比如经纬度在90维度时经度是有奇异的)的平衡,表述如下:

----s表示实部;v表示虚部;因此也就有了实四元数和虚四元数的区分

----直观理解:空间中所有旋转都可以用四元数来表示,对于I,j,k本身的几何意义可以理解为一种旋转,但不是简单的围绕XYZ轴旋转的,实部主要是用于消除奇异性

例子:

----某旋转单位向量

其四元数表达式为:

----旋转后的点P’可以表示为:

----用旋转矩阵表示为:

----因此,旋转矩阵和四元数是可以相互转化的

上述这些基本概念,是机器人学的一个空间基础

3.4 相机模型

1)相机成像的原理是针孔相机模型:

在这里插入图片描述

----P表示物理世界中的一个点;P’表示成像中模型中的位置;坐标分别为XYZ和X’Y’Z’

----相似三角形关系:

在这里插入图片描述

2)相机内参

将成像坐标P’切换到像素坐标系中,要进行两步转换:缩放和原点平移

假设P’的像素坐标为[u v]T(表示列矩阵),变换坐标就是:

在这里插入图片描述

把这个形式切换到齐次坐标系:

在这里插入图片描述

这里的K就是我们说的内参矩阵,也就是每个相机需要校准的内参

3)相机外参

注意一下,这里的P是相机坐标系下的位置,而其世界坐标系下的坐标Pw,可以根据旋转平移来得到:

----这里有齐次变换到非齐次坐标的变换

----因此,相机姿态R,T(t?是不是指的是上面公式的)又称为相机外参

----外参会随着车辆移动而移动,因此我们高精地图构建过程中就是需要去估计这个外参,同时也是车辆移动轨迹

4)数据结构

–PGM数据格式:Portable Gray Map,最简单的灰度图数据格式,这里我们拿来表示把点云压成平面的深度信息(0-65535),其中0表示没有检测到深度

–png:RGB信息的常用格式

–pose:5组7状态,txt文档,[x y z qx qy qz qw],平移向量和旋转四元数

5)代码示例:

–根据相机内参计算RGB和点云的对应关系

–根据各图相机外参把点云和RGB融合进行图片融合,构成全局地图

【源码是老师的,没有放到云端,下面就是部分截图,仅供参考】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过该函数,可以获取得到点云图

【下面偷个小懒,截个图算了,哈哈哈】

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、V2X

4.1对比

在这里插入图片描述

高精地图提供的是静态感知;而V2X,提供的是动态感知。

V2X:低延迟、强鲁棒性、动态网络、超远视距

4.2领域相关知识

在这里插入图片描述

C-V2X是中国指定的,杰出代表是大唐、华为;DSRC是美国日本制定的,杰出代表是Sony、AT&T

OBU指的是车载网络信号;路网信息、道路信息远程通过LET-V架构传给无人车;V2X局域网相对比较封闭,不是开放网络,所以安全性比较高

个人小结:这一节课,主要是介绍高精地图,介绍其和各个模块的作用,然后介绍怎么制作的。制作高精地图,需要使用opendrive协议的工具,里面价绍了一个比较难的知识点就是坐标转换。后面简单介绍一下可以提供动态信息的V2X。比较遗憾的是,代码没有搞到,只有部分截图。

#####################

不积硅步,无以至千里

好记性不如烂笔头

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!