lidar camera calibration

news2024/9/30 19:26:31

1 Automatic Extrinsic Calibration Method for LiDAR and Camera Sensor Setups 2022

vel2cam
git

2 A Novel Method for LiDARCamera Calibration by PlaneFitting

本文介绍了一种使用带ArUco标记的立方体的3D-3D对应特征来校准LiDAR和相机的新方法。在LiDAR坐标系中,选择三个表面上的点数据分别拟合平面方程。通过这种方式,可以获得每个平面的顶点坐标和法向量。在相机坐标系中,通过相机的完整6D姿态估计使用ArUco标记可以获得每个平面对应点的坐标和法向量。通过上述数据,可以获得每个传感器的一组点云,然后可以使用Kabsch算法[1]计算刚性变换。实验表明,我们的方法可以获得比现有方法(Ankit的方法)更稳定的校准结果,并且不会损失精度。

介绍

传统机器只能执行一些简单的工作。我们必须通过将传感器集成到系统中来赋予它们理解环境的能力,使它们变得更加智能。随着传感器技术的发展,许多种类的传感器现在被用于自动驾驶、工业设备、SLAM等领域[2],[3]。每种传感器都有其优点和缺点。广泛使用的2D传感器,如CCD和CMOS,最重要的优点是图像包含颜色、纹理和几何信息。因此,相机在人、脸、交通信号灯等物体检测方面非常重要和有用。然而,相机受光线条件和天气影响很大。

3D传感器可以获取环境的点云数据等3D数据。它们可以根据有效距离分为两种。如微软Kinect、英特尔RealSense和华硕Xtion Pro等RGBD相机,其有效距离非常短,通常在四米内。英特尔RealSense R200的有效距离为0.51-4米。最新的RealSense深度相机D435根据校准、场景和光照条件的不同,最远有效距离约为10米。华硕Xtion Pro的有效距离为0.8-3.5米。ZED使用双目视觉,其有效距离为0.5至20米。然而,它依赖于NVIDIA GPU,并消耗大量计算机资源,因为ZED相机需要实时计算其两个RGB传感器捕获的两个图像并输出点云数据。因此,它也受光线条件和低能见度以及所有其他图像传感器的影响。长距离传感器主要是指激光雷达(LiDAR)。LiDAR系统基于飞行时间法来确定LiDAR和物体之间的距离。它是可靠、快速的,有效距离可高达200-300米。有许多LiDAR制造商,如Velodyne、Hesai、Ibeo等。它们的产品可以按通道或环数分为不同类型。单信道LiDAR只能扫描平面,因此非常适合所有种类的服务机器人来检测墙、桌子、椅子等。多通道LiDAR可以获取更多环境信息,因此在汽车和其他行业场景中更广泛地使用。RGBD相机可以收集2D和3D信息。但是,它的有效距离限制了其应用。LiDAR非常有用,但只能收集有关环境的3D距离信息。相机可以获得许多其他信息,如颜色、纹理和几何信息。但是,它不能收集3D信息,并且受光线条件和天气影响很大。为了增加有效距离并收集更多信息使机器更加稳定,常常将LiDAR和相机整合起来以发挥各自的优势。在这种情况下,数据是相对于每个传感器的参考坐标系进行测量的。它们应转换为某个参考坐标系以实现数据合并[4]。因此,校准LiDAR和相机以获取准确的环境测量非常重要。

相关方法

随着激光雷达的广泛应用,特别是在自动驾驶汽车领域,许多研究人员尝试对LiDAR和相机进行校准。估计平移和旋转参数的基本步骤是最小化在2D空间或3D空间中对应特征之间的距离。大多数校准方法可以分为2D-3D方法或3D-3D方法。这两种方法都需要先校准相机以获取相机坐标系中的准确坐标。

2D-3D方法中,相机特征直接在图像中检测。LiDAR特征在三维空间中检测,并使用相机矩阵投影到图像平面上。对应特征之间的距离被最小化以估计刚体变换。特征可以是点、校准器的边缘或平面。这种方法广泛使用,因为可以通过图像处理轻松地搜索特征。不同的校准器用于适应不同数量的LiDAR通道,根据校准器使用不同种类的特征。Liu和Yang使用V形校准器进行摄像机和单行扫描LiDAR的校准。由于单行扫描LiDAR使用红外光源,可以被红外相机捕捉,因此使用相机和红外滤镜直接观察LiDAR光束。通过这种方式,收集一组对应点(至少4个)以计算LiDAR和相机坐标系之间的刚体变换。Kiho Kwak等人使用类似的V形校准器,利用红外相机直接观察LiDAR光束,并使用不同的特征。然而,必须在一次校准中多次放置校准器以获得足够的数据。更常见的情况是在图像和LiDAR点云中分别检测校准器上的特征点。Xu和Li使用具有水平矩形孔的板作为校准器,将孔边缘附近的两个LiDAR点用于估计边缘上的中心点作为特征点。由于在边缘上替换点与两个其他点的中点之间的水平误差是不可避免的。使用球校准不同的LiDAR和相机,球面上被击中的LiDAR点被用来拟合球体以确定球心位置作为特征点。由于球只能提供一个特征点(球心),因此需要将球放置在多个位置,以获得足够的对应点。在我们的方法中,建议使用立方体作为校准器,可以仅使用一个帧数据获得足够的特征点。

3D-3D方法需要在三维空间中检测LiDAR和相机的对应特征。在获得相机内参数后,可以使用相机的外部参数将图像平面上的二维点投影到相机坐标系中的三维空间,并直接检测LiDAR中的特征或拟合三维空间中的线条和平面。这种方法需要额外的校准器,如棋盘或ArUco标记,以获取三维特征。

一种使用 3D-3D 对应点的方法由 Ankit Dhallet 等人提出9,ArUco 标记被粘贴在校准板上,以确定相机与标记之间的外部参数。通过这种方式可以获取相机坐标系中的特征点。通过拟合校准板边缘的线条确定 LiDAR 坐标系中对应点的位置。为了使用 Kabsch 算法计算刚体变换,特征点在相机坐标系和 LiDAR 坐标系中必须相同。提取边缘点和拟合线条方程时引入了额外的误差。此外,只使用了很少的点用于拟合线条方程,使得线条方程的可靠性更低。一个带 4 个圆形孔的板被用作校准标定器,用于校准立体相机和 16 层 LiDAR-(3),检测孔附近的边缘点以适应 LiDAR 点云和立体点云中的圆。三维空间中圆的中心点被用作特征点来估计刚体变换。为了拟合线或圆方程,需要提取一些边缘点[3,9]。但是,边缘点可能无法准确确定,这会导致严重的精度下降。

在本文中,我们提出了一种新的方法,使用带有 ArUco 标记的立方体作为标定器。在 LiDAR 和相机的 3D 空间中检测特征点。除了其他方法中的线拟合外,更多的点被用于拟合平面以减小误差。此外,该方法不依赖于边缘点,因此避免了额外的误差。实验表明,与现有方法(Ankit 的方法)相比,我们的方法可以获得更稳定的校准结果而不损失精度。

方法

为了利用 LiDAR 坐标系中更多的点以减少误差,使用立方体作为标定器,并使用属于每个平面的点来拟合平面方程。此外,立方体可以提供许多特征,使得在校准过程中不必移动标定器。我们还实现了 Ankit 的方法作为参考。标定器我们制作了两种标定器。Ankit 方法所用的标定器是两个 Yakeli 制成的 48 cm × 48 cm 正方形板,上面贴有 ArUco 标记。即使一个校准板就足以获取四个特征点,但为了减小误差,使用了两个板。我们方法所用的标定器是一个 40cm × 40cm × 40cm 的立方体,在三个表面上各有三个 ArUco 标记,如图1所示。相机坐标系中的3D点坐标对于两种方法,3D点的获取方式在相机坐标系中是相同的。我们可以使用 ROS 中的 aruco_ros 和 aruco_mapping 包获取相机相对于 ArUco 标记的姿态。然后将点的坐标转换为相机坐标系。
在这里插入图片描述
其中,xcamera 是相机坐标系中的坐标,xaruco 是 ArUco 标记坐标系中的坐标,矩阵是相机相对于 ArUco 标记的6D姿态转换而来。

对于线拟合方法,使用两个板作为标定目标,在相机和 LiDAR 坐标系中提供特征点。将板的四个角作为对应点。由于 ArUco 标记的大小和位置是已知的,可以确定角点在 ArUco 标记坐标系中的坐标。然后可以通过公式(1)计算出相机坐标系中的角点坐标。我们还使用两个板来获取八个对应点以减小误差。

对于平面拟合方法,使用三个 ArUco 标记来减小手动粘贴 ArUco 标记带来的误差。可以通过与线拟合方法相同的方式获取顶点的3D坐标。我们使用由 ArUco 标记提供的姿态获取顶点的坐标,可以计算出一个平均坐标。平均坐标与单独获取的坐标几乎相同。

在这里插入图片描述
图1. 线拟合方法和平面拟合方法中使用的标定器。ArUco 标记被贴在标定目标上。aruco_mapping 包提供了相机相对于 ArUco 标记的完整6D姿态。由于特征点在 ArUco 标记坐标系中的位置已知,可以使用相机的姿态计算出相机坐标系中特征点的三维坐标。

在这里插入图片描述

对于线拟合方法,所有标定板的边缘点都被提取并投影到图像中。应手动选择属于每个边缘的点以拟合边在板子上的三维空间直线方程。采用RANSAC算法来拟合线方程,如图2所示。两条线公共垂线的中点被认为是角点,可以作为LiDAR坐标系下相应点使用。

如图3所示,靠近边缘(白色框中的红色点)的点可能远离平面,但是板子中心的点(绿色和靛蓝色)只存在于有限距离内,因此使用中心点比使用边缘点更可靠。此外,由于LiDAR点云在水平方向上也很疏,因此准确提取边缘点是不可能的。因此,在拟合线方程时仅使用少数点。本文中,我们制作了一个立方体标定器,并使用命中表面的点来拟合平面。通过这种方式,我们可以利用更多的点进行误差减小,也避免了在边缘点检测过程中的误差。实验证明,平面法向量的变化小于线法向量的变化。

对于平面拟合方法,手动选择属于三个平面的LiDAR点,如图4所示,使用最小二乘法分别拟合每个平面的方程。然后通过求解方程组获得顶点的坐标。最后,可以使用每个平面的法向量和顶点坐标获得四个相应点。

为了确定相机和LiDAR之间的变换,对这些相应点进行PnP算法求解。

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

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

相关文章

安全响应中心 — 垃圾邮件事件报告(5.16)

2023年5月 第二周 一. 样本概况 ✅ 类型1:二维码钓鱼(QRPhish) 利用二维码进行的钓鱼、投毒,成为目前常见的邮件攻击手段之一,该类二维码主要存在于网络链接图片、邮件内容图片、附件图片中。 近日,安全团队捕获到一类基于员工…

什么是DevOps?如何理解DevOps思想?

博文参考总结自:https://www.kuangstudy.com/course/play/1573900157572333569 仅供学习使用,若侵权,请联系我删除! 1、什么是DevOps? DevOps是一种思想或方法论,它涵盖开发、测试、运维的整个过程。DevOps强调软件开…

三阶段项目相关内容

当虚拟网关和真实物理网关相同的时候,默认优先级是255 vrrp角色: 主路由器 备份路由器 虚拟路由器 计时器:发送hello报文的时间, 主网关:每隔1s会向备份发一次vrrp报文 备份网关:监听vrrp报文,主网…

【UE4】从零开始制作战斗机(上:准备模型、定义函数和变量)

资源连接:(链接) 步骤: 1. 下载完资源并解压,资源内容如下: 2. 将上图中所有的.fbx文件导入ue 使用默认的导入设置就行,直接点击导入所有 导入后内容如下: 将资源中的textures也导…

程序员必备的免费自然语言转SQL (摸鱼)工具,人手必备

程序员必备的免费自然语言转SQL (摸鱼)工具,人手必备 1、SQL查询中添加过滤 请对附加的SQL查询添加筛选条件,仅显示在加州居住且消费总额排名前10位的客户。 “SELECT customer_name, SUM(order_total) AS total_spent FROM orders GROUP BY customer…

web缓存—Squid代理服务

1.squid的相关知识 1.1 squid的概念 Squid服务器缓存频繁要求网页、媒体文件和其它加速回答时间并减少带宽堵塞的内容。 Squid代理服务器(Squid proxy server)一般和原始文件一起安装在单独服务器而不是网络服务器上。Squid通过追踪网络中的对象运用起…

一文搞懂Golang中的接口

目录 接口 接口介绍 接口定义 实现接口 空接口 实现空接口 类型断言 使用类型断言 结构体实现多接口 接口嵌套 结构体值接收者和指针接收者实现接口的区别 代码案例 接口 接口介绍 Go语言中的接口(interface)是一组方法签名的集合&#xf…

单片机--STM中断系统

目录 【1】中断系统 1.基本概念 2.中断的意义 中断提高了CPU效率? 3.中断处理过程 中断处理过程 4. 中断体系结构 5.NVIC NVIC主要功能 6.EXTI 【2】IIC IIC主要特点 【3】485 【1】中断系统 1.基本概念 在处理器中,中断相当于对于突发事件…

【Scala---02】Scala 类与对象 『 类 | 属性 | 访问权限 | 方法 | 继承 | 伴生对象伴生类』

文章目录 1. 定义类2. 属性3. 访问权限4. 方法4.1 方法 vs 函数4.2 方法重写4.3 方法重载4.4 构造方法(1) 构造器定义(2) 构造器的参数列表(3) 构造器私有化 5. 继承6. 伴生对象 & 伴生类6.1 伴生对象的由来6.2 伴生对象 & 伴生类 7. 后续 1. 定义类 Java文件&#xf…

JavaScript全解析——ES6函数中参数的默认值和解构赋值

本文为千锋资深前端教学老师带来的【JavaScript全解析】系列,文章内含丰富的代码案例及配图,从0到1讲解JavaScript相关知识点,致力于教会每一个人学会JS! 文末有本文重点总结,可以收藏慢慢看~ 更多技术类内容&#xf…

AI向百万薪资 高级原画师开刀?!爆Midjourney入局3D模型生成

来源 SoulofArt | ID Soul_Art 现在AI向高级原画师和3D开刀了? 网传爆料AI已入局3D模型生成... 这进化速度放在整个行业都十分炸裂 4月,Midjourney进一步宣布推出Niji-journey V5 这是MJ针对二次元动漫风格预训练好的模型 可在其中添加提示词直接调…

Android 广播使用详解(Broadcast Receivers)

Android 广播接收器(Broadcast Receivers) 广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图。例如,应用程序可以初始化广播来让其他的应用程序知道一些数据已经被下载到设备,并可以为他们所用。这样广播接收器可…

Kubernetes配置管理 ConfigMap

Kubernetes配置管理 ConfigMap 一、ConfigMap 1.1 什么是configmap kubernetes集群可以使用ConfigMap来实现对容器中应用的配置管理。可以把ConfigMap看作是一个挂载到pod中的存储卷 1.2 创建ConfigMap的4种方式 1.2.1 在命令行指定参数创建 通过直接在命令行中指定config…

新手玩转腾讯云轻量应用服务器搭建网站(保姆级教程)

腾讯云轻量应用服务器镜像选择宝塔Linux面板,然后在宝塔面板上安装LNMP网站所需的Web环境,在宝塔面板上新建站点,上床网站程序安装包到根目录,并安装网站全流程。腾讯云百科来详细说下腾讯云轻量应用服务器搭建网站全流程&#xf…

opencv显示图片

要使用OpenCV在Python中显示图像,您需要遵循以下步骤: 1. 首先,确保已经安装了OpenCV。您可以使用以下命令安装OpenCV: pip install opencv-python 2. 然后,编写一个简单的程序来读取并显示图像。以下是一个示例代码…

数据可视化之雷达图(Radar Chart)

什么是雷达图? 雷达图(Radar Chart)也称为蜘蛛图、网络图或极坐标图,是一种用于可视化多变量数据的图表。该图表由一系列从中心点向外辐射的辐条组成,每个辐条代表一个不同的变量。数据使用线或区域绘制在每个辐条上&#xff0c…

面试的水太深,年轻人你把握不住.....

前言 去阿里面试测试工程师,这里面水太深,什么未来规划,职业发展的东西都是虚拟的,作者还太年轻,没有那个经历,把握不住。项目只有几个,开心快乐就行,不PK,文明PK。 很…

Partial convolution Gated convolution

组会讨论帖 1. 图像修复 图像修复(Image Inpainting),顾名思义,就是将图像中损坏的部分修复起来,是一种图像编辑技术,可以应用在移除物体、修复老照片、图像补全(eg,地震插值)等等。…

【初始scrapy框架上】——全栈开发——如桃花来

目录索引 scrapy框架的介绍:scrapy第三方包的下载:常见的换源网址: scrapy的图示原理:或者:或者: scrapy原理流程:详细介绍:流程描述:scrapy中的三个内置对象&#xff1a…

open cv 4.6.0 导入maven库以及依赖包 安装教程

windows: 1.官网下载windows安装包 2.安装完成后,复制opencv\build\java\x64\opencv_java451.dll 到 C:\Windows 下 centos: 参考https://www.cnblogs.com/huizhipeng/p/12732019.html 1.先安装cmake3 参考https://www.jianshu.com/p/20…