在上一个视频中,我们谈到了激光雷达的基本工作原理, 自动驾驶汽车最受欢迎的传感器选择之一。 在接下来的两个视频中,我们将学习如何使用 LIDAR 生成的点云 传感器为我们的自动驾驶汽车进行状态估计。 在本视频结束时,您将能够描述基本的点云数据 用于存储 LIDAR 扫描的结构。

描述点云上的常见空间操作,例如旋转和缩放。 并使用最小二乘法将平面拟合到点云中,以便 检测道路或其他表面。

首先,回想一下 3D LIDAR 传感器返回距离测量值, 它扫描的每个点的仰角和方位角。 我们知道如何将这些球坐标转换成笛卡尔坐标 x, y, 使用逆传感器模型得到 zed 坐标,所以 我们可以使用 LIDAR 扫描的所有测量结果构建一个大型点云。

对于某些 LIDAR 设置,这并不少见 这些点云包含超过一百万个点或更多。

那么我们能做什么这些巨大的点云呢?

让我们考虑一个我们可能在现实世界中遇到的点云的例子。

假设我们的 LIDAR 扫描路边的一棵树,然后 产生一个看起来像这样的点云。

我们只看到面向我们的树部分的点,因为树和 叶子反射红外线。

您可能会问的第一个问题是我们如何跟踪所有这些点? 我们应该使用什么样的数据结构来处理它们?

一种常见的解决方案是为每个点分配一个索引, 说点1到点n,并存储x,y, 每个点的 zed 坐标为 3 x 1 列向量。 从那里,您可以考虑将这些向量中的每一个存储在一个列表中,或者 你可以将它们并排堆叠成一个矩阵,我们称之为大 P。 这样做可以更轻松地使用标准线性代数 库,比如 Python NumPy 库,它可以让我们利用快速 矩阵运算而不是迭代列表和 独立处理每个向量。

那么我们在谈论什么样的操作呢? 三种基本的空间操作对于 用点云进行状态估计。

平移、旋转和缩放。 我们将依次讨论这些。

当我们考虑点云上的空间操作时, 我们的直觉可能是从物理上操纵点云的角度来思考 而我们的参考系保持固定。

但是对于状态估计, 换个角度思考问题更有用。

世界上的物体大多停留在参考系 附着在车辆上的人从不同的角度移动和观察世界。

所以让我们考虑一下如何转换我们的参考系,比如说,通过驱动 十米会影响我们对点云中单个点的感知。

我们可以从传感器框架的原点开始绘制矢量, S,在某种程度上,P。

现在,考虑第二个框架,S-prime, 由于车辆的运动,其原点已相对于 S 平移。

请注意,帧 S-prime 的基向量与基向量相同 帧 S。 只有原点移动了。

我们可以从 S-prime 的原点到 P 点绘制另一个向量。

我们立即注意到结果向量, 这里指出,只是其他两个向量的尖端到尾部的总和。

这些向量只是几何对象,直到我们将它们表达为 一个坐标系。 我们所追求的是 S-prime 帧中点 P 的坐标。 我们可以通过减去帧到帧来轻松获得这些 来自 S 帧中 P 坐标的平移向量。 通过简单的平铺,这很容易扩展到全点云上的批处理操作 大矩阵 R 中的帧到帧平移,以及 从点云矩阵中减去它。

根据您使用的语言或线性代数库, 您可能不需要明确构建这个 R 矩阵。 例如,在 Python 中,NumPy 库足够智能,可以重复 使用广播语义隐式地进行帧到帧转换。

现在,让我们考虑一下如果旋转我们的参考系而不是旋转我们的参考系会发生什么 翻译它。

再次记住,我们不会改变物理点 P, 只是我们的看法而已。 所以在这种情况下, 我们只需要考虑从帧 S 的原点到 P 的一个向量。

在这种情况下发生的变化实际上是我们使用的一组基向量 表示向量 S 到 P 的坐标。

请记住,旋转矩阵 C 告诉我们如何找到向量的坐标 在从原始帧中向量的坐标旋转的帧中。

所以如果我们知道从 S 帧到 S-prime 帧的旋转矩阵, 我们所要做的就是将它与 S 帧中 P 的坐标相乘 得到帧 S-prime 中 P 的坐标。 要确定整个旋转点云的坐标,操作是 完全一样,这要归功于矩阵乘法的特性。

最后要考虑的空间操作是缩放, 它的工作原理与旋转非常相似。 但不是改变我们的基向量的方向 坐标系,我们正在改变它们的长度。

在数学上,这只是意味着预先乘以坐标 每个点由一个对角矩阵 S 的非零元素 只是沿每个维度所需的缩放因子。

通常但不总是这些比例因子是相同的, 矩阵乘法相当于乘以一个定标器。

在这些情况下,我们说缩放在每个方向上都是各向同性的或相等的。

我们可以对单个点或对于 整个点云,就像我们为旋转所做的那样。

通常,我们感兴趣的转换是 平移和旋转,有时缩放。

例如,我们经常对估计翻译和 旋转最适合点云,所以 我们可以估计我们的自动驾驶汽车的运动。

我们将在下一个视频中讨论如何做到这一点。

对我们来说幸运的是,很容易将所有三个操作组合成一个 equation 通过首先平移每个向量, 然后旋转到新框架中,最后应用任何缩放。

当然,此操作也扩展到批处理案例。

所以我们已经看到了如何将基本的空间操作应用于点云。 我们将在下一个视频中看到我们如何使用这些概念进行状态估计 用于自动驾驶汽车。

但在我们到达那里之前,还有一个更重要的操作需要讨论,并且 那是平面拟合。 平面拟合最常见和最重要的应用之一 自动驾驶汽车正在弄清楚路面在哪里,并且 随着汽车继续行驶,预测它会在哪里。

如果你回想起你的高中几何课, 您可能还记得 3D 平面的方程。 Zed 等于 a 加 bx 加 cy。 这个方程告诉你平面的高度 z 当您在 x 和 y 方向上移动时会发生变化。 它取决于三个参数 a、b 和 c,它们告诉您斜率 每个方向上的平面以及 zed 轴与平面相交的位置。

所以在我们的例子中,我们有一堆 x、y 和 从我们的 LIDAR 点云中获取 zed,我们想要找到参数 a 的值, b 和 c 为我们提供了通过这些点的最佳拟合平面。

为了做到这一点,我们将回到我们选择的工具的模块一, 最小二乘估计。

我们将首先为点云中的每个点定义一个测量误差 e。 而 e 只是预测值之间的差异 我们的因变量 zed-hat 和 zed 的实际观察值。

我们只需插入我们对参数 a-hat 的当前猜测,就可以得到 zed-hat, b-hat 和 c-hat,以及 x 和 y 的实际值。

在这种情况下,我们正在考虑的误差 e 是针对崎岖路面的, 例如。 即,不完全是平面的表面。

目前,我们忽略了 LIDAR 测量中的实际误差 自己,这也有影响。

我们可以将所有这些误差项叠加成矩阵形式 我们有一个很大的系数矩阵,称为 a。

乘以我们的参数向量 x,减去我们的堆栈测量值 b。

你可以自己计算矩阵乘法,看看我们得到 回到我们开始时使用的相同测量误差方程。

现在,我们要做的就是最小化这个误差的平方,然后 我们会有我们的解决方案。

这与我们解决的电阻问题完全相同 模块一。

我们可以从乘以平方开始得到矩阵多项式 参数向量 x。

从那里,我们取平方误差函数的偏导数 到参数向量 x 并将其设置为 0 以找到最小值。 这给了我们需要解决的线性系统以获得最终的 最小二乘估计。

我们可以使用有效的数值求解器来求解这个线性系统,例如 Python NumPy 的求解函数。 或者只是使用伪逆来获得我们对平面参数的最终答案。

这里要注意的一件重要事情是我们没有考虑 我们的 x、y、zed 测量中的传感器噪声。

我们所做的就是通过一组点找到最适合的平面。

当然可以用更复杂的方式来设置这个问题 这确实考虑了传感器噪声。

您可以使用类似于我们刚刚讨论的批处理方法,或者 您甚至可以考虑在列过滤器中包含道路参数以 当传感器数据进来时,对它们进行动态估计。

最佳解决方案 您的自动驾驶应用程序将取决于您对 LIDAR 数据的信任程度以及 您想对路面的不确定性给予多少思考。

现在,虽然我们在这里描述的所有操作都可以轻松实现 使用 NumPy 或任何其他线性代数库, 有一个很棒的开源工具叫做点云库,或 PCL, 它提供了各种有用的功能来处理点云。 事实上,它是如此有用,以至于您在工业中随处可见。 核心库是用 C++ 构建的,但是 也有非官方的 Python 绑定可用。

如果您想详细了解 PCL 的功能, 我强烈建议访问 pointclouds.org 并环顾四周。

回顾一下,我们已经看到点云是一种捕获所有 来自 LIDAR 扫描的测量结果。 它们通常存储为一个大矩阵。

我们看到了如何使用线性代数对点云进行有用的操作, 比如平移、旋转和缩放。

我们还看到了如何使用最小二乘算法 将 3D 平面拟合到点云以找到路面。

点云库或 PCL 实现了一系列有用的工具 在 C++ 中使用点云。 PCL 中最有用的算法之一称为迭代最近点 算法或ICP,这是一种常用的方法 使用两个 LIDAR 点云估计自动驾驶汽车的运动。 我们将在下一个视频中讨论 ICP 的工作原理。

激光雷达传感器模型和点云

要了解有关 LIDAR 传感器模型和点云的更多信息,请查看以下资源:

  • 阅读Timothy D. Barfoot, State Estimation for Robotics (2016)(免费提供)的第 6 章第 1 节和第 2 节。

  • 在http://pointclouds.org/探索点云库 (PCL) 中可用的功能。

参考

https://www.coursera.org/learn/state-estimation-localization-self-driving-cars/lecture/Huunu/lesson-2-lidar-sensor-models-and-point-clouds

自动驾驶 11-2: 激光雷达传感器模型和点云 LIDAR Sensor Models and Point Clouds相关推荐

  1. 【智驾深谈】自动驾驶潜在突破点:传感器与车载集成系统(万字干货)

    近来,采埃孚(ZF)收购激光雷达公司Ibeo的40%股权,Velodyne旗下激光雷达公司Velodyne LiDAR获福特汽车和百度联合注资1.5亿美元.Mobileye宣布终止与特斯拉的合作,不再 ...

  2. 实时自动驾驶车辆定位技术都有哪些?(视觉/Lidar/多传感器数据融合)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨汽车人 来源丨自动驾驶之心 编辑丨3D视觉工坊 点击进入->3D视觉工坊学习交流群 1摘要 ...

  3. 论文阅读综述:自动驾驶感知的多模态传感器融合Multi-modal Sensor Fusion for Auto Driving Perception: A Survey

    题目:Multi-modal Sensor Fusion for Auto Driving Perception: A Survey 用于自动驾驶感知的多模态传感器融合:综述 链接:https://a ...

  4. 重磅!国内首个面向自动驾驶领域的多传感器数据融合系统课程

    应用背景介绍 多传感器融合是一项结合多传感器数据的综合性前沿内容,主要包括Camera.激光雷达.IMU.毫米波雷达等传感器的融合,在自动驾驶.移动机器人的感知和定位领域中占有非常重要的地位: 随着A ...

  5. 【自动驾驶传感器融合系列】02自动驾驶中的多传感器同步理论

    [自动驾驶传感器融合系列]02自动驾驶中的多传感器同步理论 文前白话 1.传感器时空同步概念 2.传感器时间同步 · 时间硬同步 · 时间软同步 3.传感器时空同步 文前白话 同步理论整体架构: 1. ...

  6. 自动驾驶平台,阵营, 主要传感器与场景联系

    自动驾驶平台,阵营, 主要传感器与场景联系 自动驾驶平台和阵营 表1. 自动驾驶平台 表2. 自动驾驶阵营 自动驾驶常用架构 图1. 三层架构 主要传感器与场景联系 超声波+侧向毫米波----泊车 长 ...

  7. 基于自动驾驶车辆的激光雷达与摄像头之间的在线标定算法

    原文首发于微信公众号「3D视觉工坊」--基于自动驾驶车辆的激光雷达与摄像头之间的在线标定算法 本文英文名为<Automatic Online Calibration of Cameras and ...

  8. 基于Matlab/simulink的自动驾驶车道保持adas辅助模型

    基于Matlab/simulink的自动驾驶车道保持adas辅助模型 需要版本Matlab2021a ID:6949665214165236乔治在柬埔寨debug

  9. 索尼将开发应用于机器人和自动驾驶汽车的新型传感器技术

    据外媒报道,索尼方面宣布称,截至3月份的营业利~润预计同比增长近一倍,主要由图像传感器业务组成的芯片部门则成为了集团最大的增长动力. 近年来,索尼在消费电子产品领域连年亏损,然而图像传感器领域销售势头 ...

  10. 如何将一个向量投影到一个平面上_自动驾驶视觉融合相机校准与激光点云投影...

    点云PCL免费知识星球,点云论文速读. 标题:自动驾驶视觉融合-相机校准与激光点云投影 作者:williamhyin 来源:https://zhuanlan.zhihu.com/p/136263753 ...

最新文章

  1. 天体运行轨迹_海王星轨道外发现139个新天体, 能揭开太阳系第九颗行星奥秘?...
  2. VTK:Points之DensifyPoints
  3. 分布式数据库数据一致性的原理、与技术实现方案
  4. 草稿--Windows消息机制
  5. oracle9i 恢复数据库,Oracle9i RMAN备份及恢复步骤(zt)
  6. 开源协议神图介绍 MIT 与 Apache 等
  7. abd shell关闭所有程序_第十六章 Shell编程
  8. java子线程切换到主线程_Android子线程切换到UI线程方法总结
  9. JQ 按钮实现两种功能
  10. python解释器 pip安装_Windows下安装Python解释器并配置pip
  11. 安装2000服务器显示文件挂起,MS sql server 2000安装中的提示挂起的解决方案。
  12. 2021年01月18号学习产品经理之电商项目从0-1
  13. vulnhub——XXE练习
  14. 海洋cms标签-海洋cms模板标签手册-海洋cms模板标签全套
  15. 从ADS到RealView MDK
  16. 服务器故障英文邮件,全球邮
  17. 【电子数据取证】8个门道儿
  18. 数澜科技X浙江优创:推动平台应用双向融合,共建金融生态合作新标杆
  19. linux安装trac+svn+apache+wike,搭建apache+svn+trac平台
  20. java JDK各版本的变化及区别

热门文章

  1. java 原型模式_原型模式
  2. springboot怎么返回404_springboot异常处理之404
  3. JUC和线程池的详细讲解
  4. 2021-02-02 安卓闪退问题
  5. pythonrequest函数怎么编写出来的_python requests包的request()函数中的参数-params和data的区别简介...
  6. 总结接口和抽象类的异同
  7. CentOS 快速安装ftp
  8. 英特尔® 实感™ SDK 架构
  9. 如何在一台window系统上演示Erlang分布式程序
  10. 《Python核心编程》第二版第八章练习题答案 第三部分