zoukankan      html  css  js  c++  java
  • 激光雷达应用技术分析

    激光雷达应用技术分析
    激光雷达简介

      激光雷达,是以发射激光束探测目标的位置、速度等特征量的雷达系统。其工作原理是向目标发射探测信号(激光束),然后将接收到的从目标反射回来的信号(目标回波)与发射信号进行比较,作适当处理后,就可获得目标的有关信息,如目标距离、方位、高度、速度、姿态、甚至形状等参数,从而对飞机、导弹等目标进行探测、跟踪和识别。它由激光发射机、光学接收机、转台和信息处理系统等组成,激光器将电脉冲变成光脉冲发射出去,光接收机再把从目标反射回来的光脉冲还原成电脉冲,送到显示器。

    激光雷达最大的优点在于它能直接提供距离信息。平常我们看到的照片或者视频是一个平面,这是XY二维空间,但是驾驶员最关心是距离,即Z坐标,这就属于三维。

     

     

    1.  车载激光雷达

    目前,全球最大的车载激光雷达公司——Velodyne LiDAR 的前身是硅谷科技公司 Velodyne,它在 Google 布局无人驾驶汽车之前就开始在车载激光雷达产业发力,之后与 Google 合作,成为了车载激光雷达产业的龙头。其包含了专注于音频设备的 Velodyne Acoustics 公司和专注于海洋问题解决方案的 Velodyne Marine 公司,同样地,Velodyne 在 2016 年将 Velodyne LiDAR 作为一家独立的公司剥离出来,这时正处于世界范围内车载激光雷达相关技术飞速发展时期。其旗下的 HDL-64E 型机械激光雷达被广泛采用于自动驾驶车辆的测试中,不过其高昂的价格和低生产率也提醒各个科技巨头车载激光雷达的低成本化和量产化相当关键,这也正是 Tesla 一直不采用这种『3D 激光雷达』方案,而是坚持采用『毫米波雷达 + 摄像头』方案的原因。目前 Velodyne LiDAR 已经推出成本更低、线数更多的 128 线的 VLS-128 型固态激光雷达,这意味着这款激光雷达有更高的分辨率、安全性以及更低的成本,并且可以实现量产。然而,『3D 激光雷达 + 高精度导航地图 + 云计算』被认为是未来理想的综合性解决方案,也就是说,从发展趋势看,就汽车智能驾驶领域,『毫米波雷达 + 摄像头』方案终将随着车载激光雷达的成本下降而被逐渐取代。
    不过,在 Velodyne 推出 VLS-128 之前,整体车载激光雷达市场上的趋势都是往低线束化、固态化发展,也就是往减少激光雷达线束发展,同时也从机械型转为固态型,比如 Quanergy 公司就在 2016 年 CES 展会上推出了与 Delphi 公司共同研发的新产品 S3,号称全球首款固态激光雷达,就连 Velodyne 公司本身也在推出混合或固态的低线束激光雷达。因为这样做可以降低成本,但是需要用数量来弥补线数的不足,也体现出未来的技术路线未定,产业龙头 Velodyne LiDAR 也不能确定到底是多线束激光雷达还是多激光雷达耦合。Velodyne LiDAR 认为对于一辆在复杂环境中高速行驶的自动驾驶汽车来说,HDL-64 的性能还不够保证安全,更高线程的激光雷达不仅可以配合一些必要的设备保证安全,还可以让自动驾驶汽车将不再需要任何其它探测障碍的传感器。但是 Velodyne LiDAR 的竞争对手 Luminar 公司也在做低线束固态激光雷达,其认为由于激光扩散的原因,距离越远,精准度越低。所以,绝大多数的自动驾驶公司在使用最先进的激光雷达的情况下,还是会选择添加其他种类的传感器。各大车载激光雷达公司之间的争论也是行业的技术现状之一,至于车载激光雷达技术之后如何发展,还需要看各科技公司的研发情况以及实际测试的结果。
    从以上对国外车载激光雷达技术现状的分析中能够得到的统一趋势有低成本化、固态化、量产化,但是 Velodyne LiDAR 推出更高线束的激光雷达和其他科技厂商推出低线束激光雷达的行为并不矛盾,他们的整体方向依然是要实现激光雷达的更高分辨率和精准度,进一步保证无人驾驶的安全性,只不过前者倾向于使用更强大的设备,后者倾向于使用多激光雷达耦合并降低成本。同时,低线束激光雷达对高线束激光雷达可以起到补充的作用。
    实际上国内车载激光雷达的发展不比国外起步晚,北科天绘于 2005 年成立于北京,和 Velodyne 的激光雷达计划几乎同时开始,然而目前来看,国外的车载激光雷达水平较高。尽管自动驾驶市场需求量极大,激光雷达仍面临着成本高、量产难的问题。制造门槛高,且应用领域较窄(汽车、资源勘测),使该类产品供应商相对较少,缺乏针对车规级的成熟量产方案。要推动激光雷达解决方案落地,供应商势必要完整掌握硬件的核心技术,以便控制成本,并以配套的算法推动市场接受其方案。目前,实现激光雷达低成本的路线有:牺牲一定的精度,使用全固态、低线束激光雷达降低制作成本;提高生产率,通过量产带来的规模效益摊薄产品成本。速腾聚创、禾赛科技等公司均提供自动驾驶的『硬件 + 算法』一体化解决方案,希望以低线束、低成本、量产化的激光雷达产品打通市场;用于机器人、无人机的激光雷达产商北醒光子、思岚科技也在向自动驾驶布局。尽管部分厂商已有成品,并与其它初创公司达成合作,但能否打通主机厂和 Tier1(一级供应商)尚存疑。相较而言,在2016年,全球顶尖厂商Velodyne-LiDAR在中国的销售额已达到 1500 万美元。

    2. 激光雷达技术分析

    2.1 激光雷达分类
    对于激光雷达,可以分别按照探测体系、应用方向、线束、基于机械/电子部件分类如下:

    图 2-1 激光雷达分类图
    2.2 激光雷达工作原理
    LiDAR,是英文 Light Detection And Ranging 的缩写,中文名称为激光雷达。激光雷达作为在激光测距雷达基础上发展起来的一项主动成像雷达技术,如图3-2 所示,通过发射和接收激光束,分析激光遇到目标对象后的折返时间,计算出到目标对象的相对距离,并利用此过程中收集到的目标对象表面大量密集的点的三维坐标、反射率和纹理等信息,快速得到出被测目标的三维模型以及线、面、体等各种相关数据,建立三维点云(Point Cloud)图,绘制出环境地图,以达到环境感知的目的。由于光速非常快,飞行时间可能非常短,因此要求测量设备具备非常高的精度。从效果上来讲,激光雷达维度(线束)越多,测量精度越高,安全性就越高。
    相比于可见光、红外线等传统被动成像技术,激光雷达技术具有如下显著特点:一方面,它颠覆传统了二维投影成像模式,可采集目标表面深度信息,得到目标相对完整的空间信息,经数据处理重构目标三维表面,获得更能反映目标几何外形的三维图形,同时还能获取目标表面反射特性、运动速度等丰富的特征信息,为目标探测、识别、跟踪等数据处理提供充分的信息支持、降低算法难度;另一方面,主动激光技术的应用,使得其具有测量分辨率高,抗干扰能力强、抗隐身能力强、穿透能力强和全天候工作的特点。

    图 2-2 激光测距原理

    大多数激光雷达系统主要包括四部分:激光器、光学扫描器,光电检测器,导航系统。本节将简单说明各部分的原理、功能以及技术指标。
    2.2.1 激光器
    激光和发光二极管都起源于 20 世纪 60 年代,激光是受激辐射的光放大而来,两者都使用二极管产生不同形式的光,当电通过发光二极管时,发出非相干的可见光,光射向所有的方向;激光器使用高度专业化的二极管,其在电磁光谱的光学部分处或附近产生能量。当这种能量对人眼可见时,我们将其称为“光”,当不可见时,我们将其称为“辐射”,这与放射性物质的辐射不同。来自激光器的能量通过称为受激发射的原子过程被放大到极高的强度,最后将能量变成高度定向的波束,意味着所有的单个能量波被对齐,变为“同相”并且沿相同的方向移动。举个例子的话,发光二极管的能量就像在游乐场的保险杠车;而激光的能量就像赛车,并且它们会同时向同一方向冲出去。发光二极管照明广泛,而激光精确定位,最适合需要聚焦和精确度的任务。

    根据激光输出功率和波长、脉冲持续时间的不同,国际电工委员会(IEC)将激光分为 4 类:
    Category 4 是最高强度的激光,可以造成火灾以及对皮肤造成伤害,同时存在漫反射危险,也就是说激光表面的脉冲反射也是危险。
    Category 3 同样对人类有危害,但是在长时间直射眼睛的情况下才是有危害的,一般人眨眼的频率会保证眼睛在短时间内直射不会受害。但是不会造成火灾以及对皮肤造成伤害。
    Category 2 肉眼可见,但是通常直射眼睛会不舒服,长时间直射也不安全。
    Category 1m 是第二安全的类型,如果观察者使用望远镜等光学放大装置直接观察到直径为 1m 的光束就不安全了。
    Category 1 最安全的激光类型,这个类别包括所有的激光或激光系统,它们的光辐射水平在任何曝光条件下都不会高于眼睛的暴露极限。
    2.2.2 光学扫描器
    激光雷达成像的速度取决于外部反射的光子经光学扫描部件进入系统的速度。市场上存在许多扫描的方法以改变方位角和仰角,如双振荡平面镜、双轴扫描镜、多面镜等。光学扫描器决定了激光雷达的分辨率和检测范围(角度)[2]。图 2-3 表示 HDL-64E 的光学扫描部件的结构。

    图 2-3 激光雷达光学扫描器部分
    2.2.3 光电检测器
    光电检测器即读取和记录反射回到激光雷达的信号的设备。主要有两种光电检测技术,分别为固态检测器(Solid State Detector)和光电倍增管[2]。
    2.2.4 导航系统
    当激光雷达安装在移动的平台,如卫星和飞机上时,它需要其它设备的协助以确定设备当前的位置和转向信息,这样才能保证激光雷达测量数据的可用性。卫星导航系统(GNSS, Global Navigation Satellite System)可以提供准确的地理位置信息,惯性测量单元(IMU, Inertial Measurement Unit )则记录当前位置激光雷达的姿态和转向信息。GNSS 和 IMU 配合使用,可以将激光雷达测量点由相对坐标系转换为绝对坐标系上的位置点,从而应用于不同的系统中[2]。
    2.3 激光雷达技术指标
    2.3.1 线束
    为获得尽量详细的点云图,激光雷达必须要快速采集周围环境的数据。一种方式是提高发射机/接收机的采集速度,每个发射机在每秒内可以发送十万以上组脉冲,也就是说在 1 秒内,有 100,000 组脉冲完成一次发射/返回的循环。复杂的激光雷达有高达 64 组发射机/接收机,组就是线(Channel)的意思,线表示激光雷达系统包含独立的发射机/接收机的数目。多线的配置使得激光雷达在每秒内可构建高达百万的数据点。
    图 2-4 示例多线激光雷达扫描的点云,图中每个同心圆表示一组激光器扫描的点云。对于两组相邻的激光器而言,其垂直间隔角为常量(下文“垂直角分辨率”将介绍到)。因此距离越远,相邻激光器扫描的点云同心圆间隔越大。也就是说,距离越远,数据的保真度越低。激光雷达对于近处的物体有更高的分辨率[2]。

     2-4 Velodyne HDL-64 激光雷达系统扫描的点云图

    2.3.2 方位角
    方位角(Field of View, FOV)包括水平方位角和垂直方位角,指的是激光雷达在水平和垂直方向的检测角度。
    上面提到线的概念,然而在实际应用中,64 线对于构建周围环境精确的点云是远远不够的,它只能在有限范围内达到足够的精度。但是在制造工艺上,把线数提高到 64 组以上,将大大提高设备的成本,因此不少激光雷达系统采用旋转镜头,如图 2-5,激光雷达的主体部分固定在旋转马达的基座上,工作时不断旋转,即可对周围 360°进行扫描,也就是说这些激光雷达的水平方位角为 360°。
    垂直方位角指的是激光雷达垂直方向的检测角度,一般在40°以内[2]。VelodyneHDL-64E 几个激光发射单元之间有一定间隙,如图 2-6 所示。

     图 2-5 Velodyne HDL-64E 水平扫描示意图

     图 2-6 Velodyne HDL-64E 垂直扫描示意图

    2.3.3 扫描帧频
    激光雷达点云数据更新的频率。对于混合固态激光雷达来说,也就是旋转镜每秒钟旋转的圈数,单位 Hz 。例如,10 Hz 即旋转镜每秒转 10 圈,同一方位的数据点更新 10 次[2]。
    2.3.4 角分辨率
    角分辨率分为水平角分辨率和垂直角分辨率。水平角分辨率是指水平方向上扫描线间的最小间隔度数。它是随扫描帧频的变化而变化,转速越快,则水平方向上扫描线的间隔越大,水平角分辨率越大。垂直角分辨率指的是垂直方向上两条扫描线的间隔度数[2]。
    2.3.5 测量精度
    激光雷达的数据手册中的测量精度(Accuracy)常表示为,例如 ±2 cm 的形式。精度表示设备测量位置与实际位置偏差的范围[2]。
    2.3.6 探测距离
    激光雷达的最大测量距离。在自动驾驶领域应用的激光雷达的测距范围普遍在100~200 m 左右[2]。
    2.3.7 数据率
    激光雷达每秒钟生成的激光点数,例如:40 线扫描帧频为 20 Hz 的激光雷达,水平角分辨率是 0.45°(每一圈每束激光扫描 800 次)。因此每秒钟生成的激光点数和为:4020800 = 640, 000 points/sec[2]。
    2.4 激光雷达测试分析
    市场上车载激光雷达种类、型号繁杂,其中 Velodyne HDL-64E 是最受欢迎的激光雷达之一,其所使用的激光是 Category 1 类型,以大约 10 赫兹的频率快速旋转。同时,每个激光脉冲的波长为 905 纳米,平均功率为 2 毫瓦,相当于是标准 10 瓦 LED 大灯泡在近光灯设置下的功率输出的 0.02%。这意味着任何单个激光束将在大约 1 毫秒内扫过眼睛,平均功率小于普通的激光指示器。并且由于每个单独的激光器以不同的方向和角度安装,所以多个激光器不能一次同时直射眼睛并增加功率。即使行人有意盯着 Velodyne 传感器,低功耗和快速旋转的组合情况下也是 Category 1 级,十分安全。
    另外,它由激光发射机、光学接收机、转台和信息处理系统等组成,激光器将电脉冲变成光脉冲发射出去,光接收机再把从目标反射回来的光脉冲还原成电脉冲,送到显示器。
    其基本参数、实际输出数据格式和结构如表 2-1、表2-2 和图 2-7 所示:
    表 2-1 Velodyne HDL-64E型激光雷达参数:

     

     表 2-2 激光雷达输出数据格式表:

     

     

     图 2-7 Velodyne HDL-64E 激光雷达组成示意图

    利用有幸从别处取得的 HDL-64E 的数据,绘制得到点云图的其中一幅如下:

     

     图 2-8 HDL-64E 实际数据所绘制的点云图 

    根据表 3-2 可得,HDL-64E 所输出的数据为点的 X,Y,Z 坐标,激光强度以及激光器的编号,由于对激光雷达的仿真不需要模拟出激光强度的效果,所以只需要对其他四个数据进行获取。
    至于点云图的绘制,是对实际数据处理之后按照 Z 轴坐标的不同显示,不过实际数据和仿真采集数据的不同在于,实际数据中的点的坐标都是符合激光雷达数据规范的,仿真需要考虑的是将采集到的点筛选出符合规范的,再显示出来。下一节将会分别对模块仿真、数据处理、数据仿真进行详细说明。 

    3. 仿真测试与数据处理

    3.1 模块仿真
    实际的激光雷达是先发射激光束再接收返回的激光束而获取到点的坐标,并且其中还要依靠光学扫描器和光学检测器才能完成这一复杂的过程,而仿真的激光雷达只需要模拟激光器,也就是激光发射装置,进而获取到点的坐标,最后绘制成图即可。根据仿真经验,可以考虑使用 OpenGL 中透视投影的一点透视的方式设置相机视角,然后通过编写 shader 从相机中获取点数据。如图 3-1 所示,透视投影的视线(投影线)是从视点(观察点)出发,所有视线从视点出发,视线是不平行的。所以可以用 OpenGL 的配置透视投影的相机来充当激光雷达的观察方式,然后从相机中设法取出在该视角下观察场景的位置信息即可完成激光雷达的模拟。那么如何设置相机呢?首先,在使用 OpenGL 的透视投影的方式获取点的数据时,根据 HDL-64E 的水平方位角为 360°,垂直方位角为 26.8°,扫描最长距离为 120 m,考虑使用四个相机拼合的方式实现,其中每个相机上仰角度为 2°,下俯角度为 24.9°,水平张角为 90°,远处裁剪处为 120,然后获取数据。

     

    图 3-1 透视投影原理

    根据以上的分析,大致可以将激光雷达的仿真分为两个模块,一是激光发射模块,其中包括了对获取到的数据的处理过程(筛选过程);二是建模模块,用于对激光雷达仿真的精度测试和算法验证。
    3.2 数据处理
    由于本文只对于仿真激光雷达提供一个方向,具体的实现方法是多元的,接下来只对其中一种方法在仿真 HDL-64E 时的实现过程作大致说明。由于我们需要取出点的位置信息,而在 shader 关于顶点信息的只有 gl_Vertex 这个内置变量。经过用例检测后,发现 gl_Vertex 的顶点信息是该点相对于当前模型的相对坐标,若想将其变化为我们需要的位置信息还需进行矩阵变换。
    根据公式:相对位置 = 相机的模型矩阵 × 模型的模拟矩阵 × 目标点相对模型的相对坐标。
    将模型的投影矩阵右乘 gl_Vertex,再右乘传进的相机的投影矩阵,便得出此点相对于相机视点(即激光雷达的位置)的相对坐标。值得注意的是,由于本算法是在 OSG 中运行的,因为 OSG 中矩阵的右乘等于 OpenGL 的左乘,故造成这里的公式和上文提到的公式不同。
    3.3 数据传输
    数据传输的方法有很多种,比如共享内存、以文件形式输出、利用网络传输等,本节只对实现数据传输的其中一种的实现过程加以说明。一般来说,激光雷达仿真需要实现动态的实时场景显示和点云图显示。动态的实时场景显示,可以考虑多加一个相机进行显示。而点云图的绘制可以根据四个相机取到的数据,不以文件形式输出,而是将数据写进内存,直接从内存里获得点数据信息并利用 OpenGL 绘制出来。从内存里直接取数据则需要做到共享内存,也就是要满足进程间的通信,在渲染场景时将数据写在一个内存地址里,绘制点云图时利用这个内存地址找到点数据的存储地址并取出数据,这样的方式可以使得渲染和绘制的效率都提高,要做到动态绘制时也更为方便,但进程间的先后关系需要做一定的控制,否则容易出现绘制时内存地址里没有数据或者是错误数据的情况。

  • 相关阅读:
    C#操作SQLite 报错 (Attempt to write a readonly database)
    JS判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
    JueryUI插件的简单应用(一):介绍及第一个示例
    在VS2008(Winform)中使用WebService
    Oracle触发器使用
    C# 创建Windows服务。服务功能:定时操作数据库
    aspnet前后台条件下根目录的读取
    xshell实现端口转发
    (转)使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果
    D3D坐标系统和几何DirectX Griaphic学习
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/13111914.html
Copyright © 2011-2022 走看看