自动驾驶感知——激光雷达基本概念|激光雷达点云|激光雷达的标定

news2024/11/21 1:45:47

文章目录

  • 1. 激光雷达基本概念
    • 1.1 激光雷达特点
    • 1.2 激光雷达测距原理
      • 1.2.1 系统组成
      • 1.2.2 激光雷达测距原理
    • 1.3 常见的激光雷达
      • 1.3.1 机械旋转式激光雷达
      • 1.3.2 Velodyne HDL-64E
      • 1.3.3 固态激光雷达
      • 1.3.4 Flash型固态激光雷达
      • 1.3.5 相控阵固态激光雷达
      • 1.3.6 MEMS型固态激光雷达
      • 1.3.7 总览
    • 1.4 激光雷达性能指标
  • 2. 激光雷达点云(Point Cloud)
    • 2.1 激光雷达点云定义
    • 2.2 激光雷达点云表示方法
  • 3. 为什么要选择激光雷达?
    • 3.1 传感器之间的互补性
    • 3.2 不同级别自动驾驶系统的需求
  • 4. 激光雷达的标定
  • 参考文献
  • 声明

1. 激光雷达基本概念

1.1 激光雷达特点

激光探测及测距系统(Light Detection and Ranging,LiDAR)

  • 激光雷达是一种通过发射激光束探测目标的位置、速度等特征量 的雷达系统
  • 激光波段位于0.5μm-10μm,以光电探测器为接收器件,以光学望远镜为天线。

在这里插入图片描述

特点
• 角分辨率、距离分辨率高
• 抗干扰能力强
• 三维坐标、反射率
• 车体积小、质量轻

1.2 激光雷达测距原理

1.2.1 系统组成

在这里插入图片描述

1.2.2 激光雷达测距原理

TOF飞行时间法

  • 脉冲测距:通过测量激光脉冲在雷达和目标之间来回飞行时间获取目标距离的信息。在这里插入图片描述 d = c ⋅ Δ t 2 d = \frac{{c \cdot \Delta t}}{2} d=2cΔt

  • 相位测距:通过测量被强度调制的连续波激光信号在雷达与目标之间来回飞行产生的相位差获得距离信息。在这里插入图片描述 d = c ⋅ Δ φ 4 π f d = \frac{{c \cdot \Delta \varphi }}{{4\pi f}} d=4πfcΔφ

1.3 常见的激光雷达

1.3.1 机械旋转式激光雷达

    机械式激光雷达是指发射系统和接收系统存在宏观转动,通过不断旋转发射头,将速度更快、发射更准的激光从线变成面,并在竖直方向上排布多束激光,形成多个面,达到动态扫描并动态接收信息的目的。

1.3.2 Velodyne HDL-64E

在这里插入图片描述

1.3.3 固态激光雷达

  • 严格意义上是指自身不存在任何移动部件的激光雷达,如Flash型激光雷达、相控阵激光雷达。
  • 近年来,一些非完全旋转的激光雷达也被统称为“固态激光雷达”,它们具备了固态激光雷达的一般性能特点,如分辨率高、有限水平FOV(前向而不是360°)等,但这些技术方案会有一些微小的移动部件,如MEMS型激光雷达。

1.3.4 Flash型固态激光雷达

  • 激光直接向各个方向漫射,一次记录整个场景。
  • 分辨率越高,激光之间干扰越强,精度降低。

1.3.5 相控阵固态激光雷达

  • 通过控制光源阵列中各光源发光时间差,合成具有特定方向的 主光束,实现对不同方向的扫描。
  • 精度高、体积小、生产成本低,但研发成本高。

1.3.6 MEMS型固态激光雷达

  • MEMS(Micro-Electro-Mechanical System)激光雷达是指在机械旋转式激光雷达的基础上,采用MEMS微镜替代机械 式扫描单元进行扫描模式动态调整的激光雷达。
  • MEMS微镜指采用光学MEMS技术制造的,把微光反射镜与MEMS驱动器集成在一起的光学MEMS器件。
    在这里插入图片描述

1.3.7 总览

激光雷达是当前高级别自动驾驶最主要的传感器之一,感知能力强。
在这里插入图片描述

1.4 激光雷达性能指标

    从传感器的角度,激光雷达的主要指标包括线束、出点数、精度、测量距离、垂直视场角、垂直角分辨率、水平视场角、水平角分辨率、出点数、通信接口等。

2. 激光雷达点云(Point Cloud)

2.1 激光雷达点云定义

    点云是激光雷达获取的三维场景信息的数据存储形式,不同于图像数据,点云由空间中一系列离散的点组成,并记录了这些点相对于激光雷达自身坐标系的三维坐标与反射率在这里插入图片描述

  • 一帧点云数据(包含N个点)可表示为 { x i , y i , z i , r i } i = 1 N \{ {x_i},{y_i},{z_i},{r_i}\} _{i = 1}^N {xi,yi,zi,ri}i=1N
  • 其中 ( 𝑥 𝑖 , 𝑦 𝑖 , 𝑧 𝑖 ) (𝑥_𝑖, 𝑦_𝑖, 𝑧_𝑖) (xi,yi,zi)第个点在激光雷达坐标系下的坐标, 𝑟 𝑖 𝑟_𝑖 ri
    该点的反射率。

2.2 激光雷达点云表示方法

  • 点视图 (Point View, PV)
    原始的点云集合
  • 俯视图 (Bird’sEyeView,BEV)
    将点云量化为2D/3D网格
  • 前视图 (Range View, RV)
    将点云投影到图像平面
  • 多种视图融合
    俯视图+点视图
    俯视图+前视图

     L. Fan等人 [ 1 ] ^{[1]} [1]对这方面的介绍比较详细。PS:文末参考链接无法查看论文的话,可以选择这个链接

在这里插入图片描述

3. 为什么要选择激光雷达?

3.1 传感器之间的互补性

❖摄像头
★ 优点:丰富的纹理和颜色信息,适用于目标的分类
★ 缺点:3D信息的感知能力较弱,受光照条件影响较大
❖激光雷达
★ 优点:精确感知目标的3D信息,不受光照影响
★ 缺点:成本较高,量产难度大,受天气影响较大

3.2 不同级别自动驾驶系统的需求

❖ L2级:自适应巡航 + 车道保持
★ 可以采用纯视觉系统来进行目标检测和距离估记
❖ L3级:拥堵辅助,领航辅助
★ 至少配备前向的激光雷达
❖ L4级:RoboTaxi
★ 多个激光雷达提供360度视场,以及系统冗余

激光雷达在自动驾驶中可以进行物体检测、3D场景语义分割以及定位与建图。

4. 激光雷达的标定

4.1 激光雷达参数

内参
内部激光发射器坐标系与雷达自身坐标系的转换关系,厂家提供。

外参
激光雷达坐标系与车体坐标系的转换关系,需要标定。

4.2 单线激光雷达

在这里插入图片描述    车体坐标系以车辆后轴中心作为原点, X v X_v Xv指向车辆的前方, Y v Y_v Yv指向车辆的左侧, Z v Z_v Zv指向车辆的上方。由于激光雷达的坐标系与车体坐标系存在一定的夹角, X l X_l Xl X v X_v Xv存在 α \alpha α的角度偏差, Y l Y_l Yl Y v Y_v Yv存在 γ \gamma γ的角度偏差,所以需要标定。

4.2.1 γ \gamma γ侧偏角的标定

在这里插入图片描述     γ \gamma γ侧偏角的标定需要用到矩形板ABCD。如图所示,矩形板ABCD平行于Z轴,且位于激光雷达的前方。激光束扫描的点构成了EF直线段,EG直线段为AB的平行线。
    想要求得 γ \gamma γ侧偏角,可以利用 γ = arccos ⁡ ( l E G l E F ) = arccos ⁡ ( l A B l E F ) \gamma = \arccos (\frac{{{l_{EG}}}}{{{l_{EF}}}}) = \arccos (\frac{{{l_{AB}}}}{{{l_{EF}}}}) γ=arccos(lEFlEG)=arccos(lEFlAB)得到。 L A B L_{AB} LAB可以由矩形板的边长大小得知, L O F L_{OF} LOF已知, L O E L_{OE} LOE也可以通过激光雷达的数据得到,因此可以求得 L E F L_{EF} LEF,最后求得 γ \gamma γ侧偏角。

4.2.2 α \alpha α俯仰角的标定

在这里插入图片描述
    ;首先不考虑侧偏角 γ \gamma γ。激光雷达的Y轴垂直纸面向外,X轴呈如图所示方向,Z轴竖直向上。首先在1处放置一块标定板,激光雷达在标定板上扫描的位置为A,接着移动标定板置B处,过B作平行于地面的平行线,得到BC,即可求得 α \alpha α俯仰角。
在这里插入图片描述    在实际过程中,需要考虑侧偏角。如图所示,在1处放置一块等腰三角形的标定板,同之前的步骤,将标定板移至2处,由图可知, ∠ F 1 E 1 D 1 \angle {F_1}{E_1}{D_1} F1E1D1 ∠ F 2 E 2 D 2 \angle {F_2}{E_2}{D_2} F2E2D2为侧倾角。在这里插入图片描述
    过 D 2 D_2 D2作地面的平行线交于G点,可知 ∠ G D 2 D 1 \angle GD_2D_1 GD2D1即为要求的 α \alpha α俯仰角。易知 α = arctan ⁡ ( D 1 G D 2 G ) = arctan ⁡ ( D 1 G B 1 B 2 ) \alpha = \arctan \left( {\frac{{{D_1}G}}{{{D_2}G}}} \right) = \arctan \left( {\frac{{{D_1}G}}{{{B_1}{B_2}}}} \right) α=arctan(D2GD1G)=arctan(B1B2D1G) D 1 G = B 1 D 1 − B 2 D 2 D_1G=B_1D_1-B_2D_2 D1G=B1D1B2D2 B 1 D 1 = B 1 C 1 − C 1 D 1 B_1D_1=B_1C_1-C_1D_1 B1D1=B1C1C1D1 C 1 D 1 = E 1 D 1 C_1D_1=E_1D_1 C1D1=E1D1 E 1 D 1 = E 1 F 1 c o s ( γ ) E_1D_1=E_1F_1cos(\gamma) E1D1=E1F1cos(γ)    从而可以求得 α \alpha α俯仰角

4.3 多线激光雷达

在这里插入图片描述    如图所示:
车体坐标系:
O v , X v , Y v , Z v O_v,X_v,Y_v,Z_v Ov,Xv,Yv,Zv
激光雷达坐标系:
O l , X l , Y l , Z l O_l,X_l,Y_l,Z_l Ol,Xl,Yl,Zl
    假设车体坐标系一点 P = ( X , Y , Z ) P=(X,Y,Z) P=(X,Y,Z),其在激光雷达坐标系中为 P ′ = ( X ′ , Y ′ , Z ′ ) P'=(X',Y',Z') P=(X,Y,Z),于是有以下关系: [ X Y Z ] = R [ X ′ Y ′ Z ′ ] + T \left[ {\begin{array}{ccccccccccccccc}X\\Y\\Z\end{array}} \right] = R\left[ {\begin{array}{ccccccccccccccc}{X'}\\{Y'}\\{Z'}\end{array}} \right] + T XYZ =R XYZ +T     R R R为激光雷达坐标系到车体坐标系的旋转矩阵, T T T为激光雷达坐标系到车体坐标系的平移向量在这里插入图片描述

4.3.1 纸箱法

在这里插入图片描述

  1. 在水平地面上摆放正方体纸箱,采集激光雷达数据
  2. 获得纸箱顶点的激光雷达坐标系坐标
  3. 通过测量得到纸箱顶点的车体坐标系坐标
  4. 用纸箱顶点的坐标代入坐标变换方程,求出旋转矩阵和平移向量

4.4 相机与激光雷达联合标定

在这里插入图片描述

将雷达点云向图像融合
在这里插入图片描述
将图像像素向雷达点云融合

    通过融合的方式,可以弥补单个传感器的不足,可以更好地环境感知。因此,就需要对相机和激光雷达进行联合标定。

标定内容:标定从激光雷达坐标系到相机坐标系的空间变换关系。
在这里插入图片描述在这里插入图片描述

在这里插入图片描述    对于单线激光雷达,选择标定箱上的两个端点
在这里插入图片描述    对于多线激光雷达,选择标定箱上下边沿的左右端点。在这里插入图片描述    获取像素雷达点对之后,结合相机内参,求解关于旋转矩阵和平移向量的线性方程,即可标定。在这里插入图片描述

参考文献

[1] L. Fan, X. Xiong, F. Wang, N. Wang and Z. Zha
ng, “RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection,” 2021 IEEE/CVF International Conference on Computer Vision (ICCV), Montreal, QC, Canada, 2021, pp. 2898-2907, doi: 10.1109/ICCV48922.2021.00291.

声明

本人所有文章仅作为自己的学习记录,若有侵权,联系立删。本系列文章主要参考了清华大学、北京理工大学、深蓝学院、百度Apollo等相关课程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NX二开ufun函数UF_MODL_create_surf_from_cloud(使用现有点创建B曲面)

本节主要讲使用现有点创建B曲面的ufun函数UF_MODL_create_surf_from_cloud,这些点可以按任何顺序出现,但是必须有足够的点来定义平面。 先看实例效果图: 1、函数结构 int UF_MODL_create_surf_from_cloud ( int point_cnt&#…

双栏Latex模板插入多个图片的各种排布

目录 问题描述: 问题解决: 1. 插入一个图片 示意图如下: 2.插入2x1两个图片:2x1 示意图如下: 3. 插入1x2两个图片:1x2 示意图如下: 4.插入2x2两个图片:2x2 示意图如下&…

shell脚本set -eu引起的学习笔记

本文将介绍Bash中 set -euxo pipefail 大佬的文章学习膜拜体验,它们可以帮助你写出更容易维护也更安全的脚本。这也是Bash脚本的终极调试手段,希望你以后在自己的脚本中加上这么一行,头顶也能少秃一点 今天打开一个脚本《JetsonNano使能SPI总…

00后真的是躺平的一代吗?已经被公司新来的00后卷哭了

2023年开年了,公司也来了许多新面孔,其中居然有一个是00年的,虽然也给公司带来了一些新的血液,但也让我意识到,自己年级确实不小了。这小老弟是去年毕业的,在某软件公司干了半年,现在跳槽到我们…

java常用类: String,StringBuffer和StringBuilder的底层区别

java常用类型: Ineteger等包装类 String类,StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录String介绍String创建细节String s…

大数据技术架构(组件)13——Hive:字符串函数

1.4.7、字符串函数1.4.7.1、asciiselect ascii(a);1.4.7.2、base64-->Hive0.12.0select base64(cast(abcd as binary));1.4.7.3、character_length-->Hive2.2.01.4.7.4、chr-->Hive1.3.01.4.7.5、concatselect concat(1,1,2,a),concat(1,a,null);1.4.7.6、context_ngr…

【JavaSE】ArrayList的扩容机制源码分析

文章目录1. ArrayList概述2. ArrayList构造方法源码分析3. ArrayList.add()源码分析4. ArrayList.addAll()源码分析5. 总结1. ArrayList概述 ArrayList是Java集合框架中比较常用的一个数据结构了,它底层是基于数组实现的。数组是固定大小的,但是ArrayLi…

禾川HCQ+X3E ModBUS 电机远程启动

前面讲过了 通过EtherCat总线级联X3E控制伺服电机,这次使用ModBus总线远程控制该电机启停。 硬件: HCQ0 1100/1200D X3EB 驱动 SV系列电机,主机电脑或者主PLC,硬件连接:电脑网口连HCQ0 port1 port2 连X3EB,软件需要用到TCP调试工具。 步骤一通讯: 1建立工程,修改本机地…

1月31日 : 读书笔记

为了让操作系统能够使用32位模式,需要对CPU做各种设定 最近的操作系统能同时运行多个程序,如果内存地址的使用范围重叠了怎么办?解决这个问题的方法就是分段。 什么是分段? 打个比方,将4GB的内存分成很多块&#xff0c…

【Mysql第五期 排序与分页】

文章目录案例使用的数据脚本1. 排序数据1.1 排序规则1.2 单列排序1.3 多列排序2.分页2.1 需求2.2 实现规则3.课后习题扩展分析原因问题解决总结案例使用的数据脚本 1.mysql脚本下载链接https://download.csdn.net/download/qq_43674360/87408079 2.或者自己新建一个sql后缀文本…

京东数据分析(竞品监控):飞利浦王牌产品在中国失利

近日,飞利浦集团发布了2022年第四季度及全年的业绩报告。根据报告显示,第四季度集团销售额达54亿欧元,可比销售额增长3%,可比订单量减少8%。 而全年业绩数据显示,集团销售额为178亿欧元,可比销售额下降3%&a…

sql进阶,多表及关联

–odps sql –– –author:宋文理 –create time:2023-02-01 16:24:24 –– – 创建非分区表 CREATE TABLE csxx_ffq( rq STRING COMMENT ‘日期’, xh BIGINT COMMENT ‘序号’, sj STRING COMMENT ‘数据’ ) COMMENT ‘测试数据(非分区表)’; – 创建分区表 CRE…

ModuleNotFoundError: No module named ‘jnius‘

在termux中安了 ubuntu22.04 ,在其中中使用apt install python3-pip 后运行pip3出错 Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/_vendor/platformdirs/android.py", line 85, in _android_folderfrom jnius import au…

call,apply,bind的使用及原理

call,apply,bind的使用方法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…

StarRocks市场渗透率跻身Top10!

近日&#xff0c;国内著名的研究咨询机构艾瑞咨询发布了《2022年中国数据库研究报告》&#xff08;以下简称“报告”&#xff09;。报告指出&#xff0c;目前数据库产品的国内渗透率达到前所未有的高度&#xff0c;且头部效应明显。其中&#xff0c;StarRocks以“极速统一”的性…

java常用类:日期类Date,Calender和LocalDateTime

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录引言日期类Date(第一代)时间戳转字…

缓存更新策略分析

缓存常用于读多写少的场景&#xff0c;用于缓存结果数据&#xff0c;降低响应时间&#xff0c;提高服务性能。通常缓存与数据库一起使用&#xff0c;数据库负责持久化&#xff0c;缓存负责高性能。数据库无法同时满足持久化与高性能&#xff0c;所以引入缓存解决高性能问题。缓…

SwiftUI 文本框TextField添加清除按钮

这里写自定义目录标题前言/背景实现参考前言/背景 使用SwiftUI框架&#xff0c;希望在文本框TextField控件中输入内容后显示一个清除按钮,可以清空内容,像这样&#xff1a; UIKit 框架的 UITextField可以配置clearButtonMode,但是SwiftUI框架里的TextField没有这个&#xff…

javaScript常用语法

一、数据类型1. 原始数据类型(7个)number, string, boolean, undefined, null, symbol, bigint1.1 number包括以下三种浮点和整型数字(如3.1416926和3)NaN(not a number)不是数字infinity超出js数字范围的数值2. 引用数据类型(3个)object, array, function2.1 特殊类型RegExp, …

MySQL Performance Schema知识点

MySQL Performance Schema知识点 程序插桩&#xff08;instrument&#xff09;。程序插桩在MySQL代码中插入探测代码&#xff0c;以获取我们想了解的信息。 消费者表&#xff08;consumer&#xff09;&#xff0c;指的是存储关于程序插桩代码信息的表。如果我们为查询模块添加…