无人驾驶——激光雷达篇

2023-05-16

激光雷达技术简介

无人驾驶技术是多项技术的集成,包括传感器、定位与深度学习、高精地图、路径规划、障碍物检测与规避、机械控制、系统集成与优化、能耗与散热管理等。无人车系统的感知端由不同的传感器组成,其中包括GPS(用于定位)、激光雷达(用于定位及障碍物检测)、RGB照相机(用于深度学习的物体识别),以及定位辅助。

在传感器采集到信息后,我们就进入了感知阶段,主要工作是定位与物体识别。在这个阶段,可以用数学的方法,比如卡尔曼滤波与粒子滤波等算法,对各种传感器信息进行融合,并得出当前最大概率的位置。如果使用激光雷达为主要的定位传感器,则可以将激光雷达扫描回来的信息跟已知的高精地图做对比,从而得出当前的车辆位置。如果当前没有地图甚至可以将当前的激光雷达扫描与之前的激光雷达扫描用ICP(Iterative Closest Point,迭代最近点)算法做对比,从而推算出当前的车辆位置。在得出基于激光雷达的位置预测后,可以用数学的方法与其他传感器信息进行融合,推算出更精准的位置信息。

最后我们进入规划与控制阶段。在这个阶段,我们根据位置信息及识别出的图像信息(比如红绿灯),实时调节车辆的行车规划,并把行车规划转化成控制信号去操控车辆。全局的路径规划可以用A-Star类似的算法实现,本地的路径规划可以用DWA等算法实现。

激光雷达基础知识

工作原理

激光雷达是一种光学遥感技术,它向目标物体发射一束激光,根据接收——反射的时间间隔确定目标物体的实际距离。然后根据距离及激光发射的角度,通过简单的几何变化推导出物体的位置信息。由于激光的传播受外界影响小,激光雷达能够检测的距离一般可以达到100m以上。与传统雷达使用无线电波相比,激光雷达使用激光射线,商用激光雷达使用的激光射线波长一般在600nm~1000nm,远远低于传统雷达使用的波长。因此激光雷达在测量物体距离和表面形状上可达到更高的精准度,一般精准度可以达到厘米级。

激光雷达系统一般可以分为三个部分:第一部分是激光发射器,发射出波长为600~1000nm的激光射线;第二部分是扫描与光学部件,主要用于收集反射点距离与该点反射的时间和水平角度(Azimuth);第三部分是感光部件,主要检测返回光的强度。因此,我们检测到的每一个点都包括了空间坐标信息 ( x , y , z ) (x,y,z) (x,y,z)及光强度 i i i。光强度与物体的光反射度直接相关,所以从检测到的光强度我们也可以对检测到的物体有初步判断。

img

激光雷达点云

无人车所使用的激光雷达并不是静止不动的。在无人车的行驶过程中,激光雷达同时以一定的角速度匀速转动,在这个过程中不断地发出激光并收集反射点的信息,以便得到全方位的环境信息。激光雷达在收集反射距离的过程中会同时记录该点发生的时间和水平角度,并且,每个激光发射器都有其编号和固定的垂直角度,根据这个数据就可以计算出所有反射点的坐标。激光雷达每旋转一周,收集到的所有反射点坐标的集合就形成了点云(Point Cloud)。

如图所示,激光雷达通过激光反射可以测出和物体的距离(distance),因为激光的垂直角度是固定的,记作 a a a,这里我们可以直接求出 z z z轴坐标为 s i n ( a ) ⋅ d i s t a n c e sin(a)\cdot distance sin(a)distance。由 c o s ( a ) ⋅ d i s t a n c e cos(a)\cdot distance cos(a)distance可以得到 d i s t a n c e distance distance X Y XY XY平面的投影,记作 x y _ d i s t xy\_dist xy_dist。激光雷达在记录反射点距离的同时也会记录当前激光雷达转动的水平角度 b b b,这样根据简单的几何转换就可以得到该点的 x x x y y y坐标,分别为 c o s ( b ) ⋅ x y _ d i s t cos(b)\cdot xy\_dist cos(b)xy_dist s i n ( b ) ⋅ x y _ d i s t sin(b)\cdot xy\_dist sin(b)xy_dist

image-20221020234250470

激光雷达的应用

高精地图的绘制

高精地图不同于我们日常使用的导航地图。高精地图是由众多的点云拼接而成的,主要用于无人车的精确定位。高精地图的绘制也是通过激光雷达完成的。安装激光雷达的地图数据采集车在想要绘制高精地图的路线上多次反复行驶,并收集点云数据。后期经过人工标注,首先将过滤一些点云图中的错误信息,例如路上行驶的汽车和行人反射所形成的点,然后对多次收集到的点云进行对齐拼接,形成最终的高精地图。

基于点云的定位

激光雷达会在车辆行驶过程中不断地收集点云来了解周围的环境。我们可以很自然地想到利用这些观察到的环境信息帮助我们定位。可以把这个问题简化为 :已知 t 0 t_0 t0时刻的GPS信息, t 0 t_0 t0时刻的点云信息,以及无人车 t 1 t_1 t1时刻可能在三个位置 P 1 P_1 P1 P 2 P_2 P2 P 3 P_3 P3。求 t 1 t_1 t1时刻车在这三个点的概率。根据贝叶斯法则,无人车的定位问题可以简化为下面这个概率公式:
P ( X t ) ≈ P ( Z t ∣ X t ) ⋅ P ( X t ) ˉ P(X_t)\approx P(Z_t|X_t)\cdot{\bar{P(X_t)}} P(Xt)P(ZtXt)P(Xt)ˉ
其中 P ( Z t ∣ X t ) P(Z_t|X_t) P(ZtXt)表示给定当前位置,观测到点云信息的概率分布。其计算方式一般分为局部估计和全局估计。局部估计较简单的做法就是通过当前时刻点云和上一时刻点云的匹配,借助几何上的推导,估计出无人车在当前位置的可能性。全局估计就是利用当前时刻的点云和上面提到过的高精地图做匹配,从而得到当前车相对地图上某一位置的可能性。在实际应用中一般会将两种定位方法结合使用。第二项 P ( X t ) ˉ \bar{P(X_t)} P(Xt)ˉ表示对当前位置的预测的概率分布,这里可以简单地用GPS给出地位置信息作为预测。通过计算P1,P2,P3这三个点的后验概率,可以估算出无人车在哪一个位置的可能性最高。通过对两个概率分布相乘,可以很大程度上提高无人车定位的准确度。

image-20221028151054107

障碍物检测

在机器视觉中,一个比较难解决的问题就是判断物体的远近,基于单一摄像头抓取的2D图像无法得到准确的距离信息,而基于多摄像头生成深度图的方法需要很大的计算量,不能很好的满足无人车在实时性上的要求。另一个棘手问题是光学摄像头受光照条件的影响巨大,物体的识别准确度很不稳定。

利用激光雷达生成的点云可以很大程度上解决上述两个问题,借助激光雷达本身的特性,可以反射障碍物的远近、高低甚至表面形状,做出较准确的估计,从而大大提高障碍物检测的准确度,而且其算法的复杂度低于基于摄像头的视觉算法,因此更能满足无人车的实时性要求。

激光雷达面临的挑战

技术挑战:空气中的悬浮物

激光雷达的精度会受到天气的影响,由于空气中的悬浮物会对光速产生影响。外部环境(大雾及雨天)也会影响激光雷达的精度。

计算性能挑战:计算量大

即使是16线的激光雷达,每秒要处理的点也达到了30万个。如此大量的数据处理是无人车定位算法和障碍物检测算法的实时性需要面临的一大挑战。例如之前所说的激光雷达给出的原始数据只是反射物体的距离信息,需要对所有产生的点进行几何变换,将其转换为位置坐标,其中至少涉及4次浮点运算和三次三角函数运算,而且点云在后期的处理中还有大量坐标系转转等更多复杂的运算,这些都对计算资源(CPU、GPU和FPGA)提出了很大的需求。

型号Channel数量每秒产生的点数
Velodyne HDL-64E64 Channels2200000
Velodyne HDL-32E32 Channels700000
Velodyne HDL-16E16 Channels300000

成本挑战:造价昂贵

上面提到的Velodyne VLP-16激光雷达官网税前售价为7999美元,而Velodyne HDL-64E激光雷达售价也在10万美元以上。这些成本要加在本来就没有过高利润的汽车价格中,无疑会大大阻碍无人车的商业化。

激光雷达的点云特性

无人驾驶对激光雷达提出了新的需求,核心指标是分辨率和探测距离,以及传感器的几何大小和成本,等等,点云分辨率和探测距离对激光雷达的应用效果有着决定性影响

多线扫描低分辨率激光雷达

以Velodyne为代表的多线扫描低分辨率雷达在自动驾驶系统中被广泛采用。这类激光雷达的典型架构如图所示。由多组光路延纵向排列构成,每一组光路有独立的发射接收光路,以覆盖纵向视场内的多个离散角度。整个系统绕纵轴360°旋转,覆盖横向视场的整个范围。纵向视场角内的线数通常在16线到64线之间。

e4b2df88-2be9-47ba-8657-1314c1953807

高分辨率近距离激光雷达

高分辨率图像级长距激光雷达

总结与展望

尽管无人驾驶技术渐趋成熟,但激光雷达始终是一个绕不过去的技术。纯视觉与GPS/IMU的定位及避障方案价格虽然低,却不成熟,很难应用到室外场景中。同时,激光雷达的价格居高不下,消费者很难承受动辄几十万美元定价的无人车。因此,当务之急就是快速把系统成本特别是激光雷达的成本大幅降低。其中一个交由希望的方法是使用较低价的激光雷达,虽然会损失一些精度,但可以用其他低价的传感器与激光雷达做信息混合,较精准的推算出车辆的位置。简而言之就是用更好的算法弥补硬件传感器的不足。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无人驾驶——激光雷达篇 的相关文章

  • 无人驾驶:Term-1-p2-traffic-sign-classifier

    简介 Term 1第二节课是进行交通标志分类 xff0c 数据集主要来自于German Traffic Sign xff0c 包含了42种交通标志 xff0c 通过深度学习网络进行分类 环境准备 python 2 7numpyscikit
  • 2、无人驾驶--路径规划算法:Dijkstra

    目录 2 Dijkstra2 1 算法简介2 2 算法思路具体流程 xff1a 2 3 算法具体实现2 3 1 程序详解 2 Dijkstra 声明 xff1a 本文是学习古月居 基于栅格地图的机器人路径规划算法指南 黎万洪 后写的笔记 x
  • python无人驾驶_无人驾驶技术入门(四):无人车传感器 IMU 深入剖析

    上一次的分享里 xff0c 我介绍了GPS的原理 xff08 三角定位 xff09 及特性 xff08 精度 频率 xff09 xff0c 同时也从无人车控制的角度 xff0c 讨论了为什么仅有GPS无法满足无人车的定位要求 为了能让无人驾
  • 无人驾驶-激光雷达与相机联合校准(Lidar Camera Calibration)

    1 激光雷达与摄像头性能对比 在无人驾驶环境感知设备中 xff0c 激光雷达和摄像头分别有各自的优缺点 摄像头的优点是成本低廉 xff0c 用摄像头做算法开发的人员也比较多 xff0c 技术相对比较成熟 摄像头的劣势 xff0c 第一 xf
  • 无人驾驶——激光雷达篇

    激光雷达技术简介 无人驾驶技术是多项技术的集成 xff0c 包括传感器 定位与深度学习 高精地图 路径规划 障碍物检测与规避 机械控制 系统集成与优化 能耗与散热管理等 无人车系统的感知端由不同的传感器组成 xff0c 其中包括GPS xf
  • 【无人驾驶】自动驾驶领域有哪些岗位可选?

    导读 想要进入自动驾驶这个领域 xff0c 便首先去调查了下这个领域的岗位 xff0c 希冀能从中找出自己最感兴趣且匹配度也比较高的方向 废话不多说 xff0c 见下 下图为自动驾驶方向的所有岗位 xff0c 总量的来说 xff0c 方向可
  • 2、无人驾驶--路径规划算法:Dijkstra

    目录 2 Dijkstra2 1 算法简介2 2 算法思路具体流程 xff1a 2 3 算法具体实现2 3 1 程序详解 2 Dijkstra 声明 xff1a 本文是学习古月居 基于栅格地图的机器人路径规划算法指南 黎万洪 后写的笔记 x
  • useful link for compiling segmap

    https www cnblogs com chenlinchong p 12576699 html ubuntu16 04编译segmap https blog csdn net weixin 42606990 article detai
  • 整理的apollo 入门课程

    转自 https blog csdn net weixin 36662031 article details 81081744 转载自 https mp csdn net postedit 81081744 自动驾驶系统主要包含三个部分 感
  • 百度无人驾驶apollo项目训练最佳算法模型改进

    百度无人驾驶apollo项目训练最佳算法模型改进 google的无人驾驶的最新算法训练模型 现在已经为外界熟知 使用了较为复杂的训练模型 当然了 google的无人驾驶也没有真正的落地实用化 所以google的算法也不是最终解决方案 百度a
  • Apollo如何通知/订阅主题topic

    转自 https blog csdn net u012423865 article details 80024870 How to advertise and subscribe a topic 导读 众所周知 Apollo是基于ROS开发
  • PaddleDetection的学习笔记

    1 PaddleDetection介绍 PaddleDetection是由百度推出的目标检测开源模型库 1 1 常见格式 pdparams 保存参数权重的文件格式 2 安装PaddleDetection Python版本 python lt
  • Apollo如何通知/订阅主题topic

    转自 https blog csdn net u012423865 article details 80024870 导读 众所周知 Apollo是基于ROS开发的 所以其底层也是基于消息的机制进行节点通信的 但是它在ROS的基础上做了一些
  • 【仿真】Carla介绍与使用 [1] (附代码手把手讲解)

    0 参考与前言 主要介绍无人驾驶的仿真环境CARLA 开源社区维护 以下为相关参考链接 Carla官方文档 建议后续找的时候 先按好版本号 有些功能 api 是新版本里有的 Carla官方github Youtube Python Wind
  • 机器人学习书籍

    1 概率机器人 2 机器人学的几何基础 3 Eigen学习 https blog csdn net u012936940 article details 79691911 eigen 使用手册 平时使用参考 4 opencv opencv
  • 汽车LiDAR的“先行者”——机械式LiDAR

    转自 http www mems me mems system integrator 201711 5547 html http www mems me mems system integrator 201711 5636 html 机械式
  • 无人驾驶论坛

    1 百度Apollo论坛 http www 51apollo com 2 人工智能中文资讯网 http www ailab cn
  • 线速度和角速度

    转自 https baike baidu com item E7 BA BF E9 80 9F E5 BA A6 1532652 fr aladdin https baike baidu com item E8 A7 92 E9 80 9F
  • 【自动驾驶技术】优达学城无人驾驶工程师学习笔记(六)——Github与Markdown相关教程

    Github与Markdown相关教程 本博文为笔者关于优达学城无人驾驶工程师课程中计算机视觉基础部分的学习笔记 该部分为实现车道线图像识别功能的基础课程 关于本课程的详细说明请参考优达学城官网 优达学城为学员提供了一个简短的Github教
  • 《学习篇》学会这18个常用ROS命令集合就能入门ROS了

    常用ROS命令概述 ROS常用命令可以按照其使用场景分为ROSshell命令 ROS执行命令 ROS信息命令 ROS catkin命令与ROS功能包命令 虽然很难从一开始就很熟练地使用所有的命令 但是随着使用的次数增多 你会发现常用的几个R

随机推荐

  • 30个实用VSCode 插件,让你的开发效率倍增!

    1 Image preview 通过此插件 xff0c 当鼠标悬浮在图片的链接上时 xff0c 可以实时预览该图片 xff0c 除此之外 xff0c 还可以看到图片的大小和分辨率 2 Auto Rename Tag 使用该插件 xff0c
  • OpenCV 4.5.0+conrtrib 已编译完成(附下载链接)

    OpenCV 4 5 0 43 conrtrib 已编译完成 xff0c 包含编译源码 平台 Windows 43 VS2015 百度网盘链接 提取密码 xff1a rdgh 源码下载 OpenCV源码下载链接推荐 xff08 包含匹配的c
  • 第一篇综述-无人车简介

    综述 无人车简介 xff08 1 xff09 1 1无人车的定义以及分级 1 2无人车的发展历程 参考链接 原文链接 xff1a https blog csdn net thomashtq article details 81161018
  • 在C#中使用Intptr究竟需不需要释放?

    只有是用Marshal 申请的 xff08 AllocHGlobal xff09 这种需要释放 xff1b 对于使用PInvoke 返回的IntPtr不用释放 xff1b 简单来说 xff0c 这个东西是你创建出来的你就得负责回收 xff0
  • .NET中Invoke和BeginInvoke

    在 NET中 xff0c 固定必须主线程才能操作UI界面 xff0c 如果在非主线程中强行对UI界面赋值 xff0c 则会报错 xff0c 跨线程操作UI 是不允许的 xff0c 需要使用Invoke或BeginInvoke xff0c 关
  • php 跨域解决方案

    设置允许访问的域名 xff1a 1 允许全部的域名访问 span class token function header span span class token punctuation span span class token str
  • WPF之转换器

    WPF是一个数据驱动模式 xff0c 开发中都是以数据为中心 xff0c WPF具有数据绑定机制 xff0c 数据有变化时 xff0c 会通知UI进行更新 WPF用的是MVVM模式 MVVM是Model View ViewModel xff
  • CS程序自动更新和手动更新的技术实现

    1 程序启动时检查更新 xff0c 如果可以更新 xff0c 则判断是否为强制性更新 xff0c 如果是则直接强制更新 xff0c 不是则不处理 xff0c 转为到程序更新模块中手动处理 xff0c 这是更新最基本的原理 检查更新 priv
  • 用MATLAB将矩阵数据写入txt文件中,打开乱码原因

    MATLAB将数据写入txt文件中乱码的原因 xff0c 是将数据按照二进制文件写入txt文件 xff0c 所以打开会出现乱码的情况 xff0c 只需要把 fid1 61 fopen 39 piture txt 39 39 w 39 换成
  • boost C++知识点(一)

    1 boost总览 xff1a Boost Any Boost Any 提供了一个名为 boost any 的数据类型 xff0c 可以存放任意的类型 例如 xff0c 一个类型为 boost any 的变量可以先存放一个 int 类型的值
  • python 函数里面直接修改函数外部的全局变量

    python函数内部对全局变量进行修改 全局变量为immutable 不可变的 全局变量为mutable 可变的 全局变量为immutable 不可变的 a span class token operator 61 span span cl
  • ubuntu20.04中安装ROS系统

    自从在自己的电脑上安装了ubuntu20 04 43 window10双系统之后 xff0c 为了下一步开展研究 xff0c 所以安装ROS系统 把安装过程记录下来 xff0c 方便以后学习 亲测有效 xff01 xff01 xff01 x
  • Linux编程的第三方库引用------gcc、pkg-config与CMake一文讲解

    众所周知 linux 下库文件编译三部曲 config make makeinstall configure过程中可能会遇到无法找到某些头文件和动态库 xff1b 原因有两个 xff1a xff08 1 xff09 系统没有这些头文件和动态
  • 论文阅读 Global Localization with Object-Level Semantics and Topology

    摘要 全局定位是SLAM的核心要素 基于外观的方法虽然很成功 xff0c 但是在视觉条件随时间变化很大的环境中仍然面临许多开放的挑战 xff0c 随着时间的变化 xff0c 外观会发生巨大的变化 在本文中 xff0c 我们提出了一种集成解决
  • DOCKER VNC

    reference https www bilibili com video av882822967 以及泡泡机器人公众号文章 泡泡机器人创建了docker镜像 xff0c 极大的提升了环境配置的效率 docker 简介 准备 安装dock
  • GTSAM:使用gtsam的C++

    GTSAM 是一个在机器人领域和计算机视觉领域用于平滑 xff08 smoothing xff09 和建图 xff08 mapping xff09 的C 43 43 库 它与g2og2o不同的是 xff0c g2og2o采用稀疏矩阵的方式求
  • ROS - 用POSE展示方向或向量 vector - pose

    昨天想在rviz里用pose表示一个vector xff0c 搞了半天 Pose的属性 xff0c point是起点 xff0c orientation是表示由坐标系原点将 1 0 0 这个向量旋转到想要显示的方向所需的旋转的四元数表示 假
  • 目录导读

    SLAM基础 xff1a SLAM基础 xff1a 计算相机运动 SLAM基础 xff1a 单目初始化问题 SLAM基础 xff1a 计算相机运动 3D 2D SLAM基础 xff1a 计算相机运动 3D 3D SLAM基础 xff1a I
  • 特定标志检测算法流程-棋盘格

    ROS标定工具是采用棋盘格 xff0c 具体实现是OPENCV 将输入图像降采样到大约VGA分辨率 xff0c 并在全尺寸图像中检测校准目标角点 结合这些明显正交的职责作为一个优化 棋盘式检测在大图像上太昂贵 xff0c 所以最好在较小的显
  • 无人驾驶——激光雷达篇

    激光雷达技术简介 无人驾驶技术是多项技术的集成 xff0c 包括传感器 定位与深度学习 高精地图 路径规划 障碍物检测与规避 机械控制 系统集成与优化 能耗与散热管理等 无人车系统的感知端由不同的传感器组成 xff0c 其中包括GPS xf