当前位置: 首页 > news >正文

基于MATLAB的激光雷达与相机联合标定原理及实现方法——以标定板为例

1.为什么要进行激光雷达和相机的联合标定?

       激光雷达和相机的联合标定是为了将两种传感器的数据统一到同一坐标系中,从而实现更准确的环境感知。激光雷达提供精准的三维距离信息,而相机捕捉丰富的纹理和颜色,通过联合标定可以结合两者优势,弥补单一传感器的不足。标定过程确定激光雷达与相机之间的相对位置和姿态,支持多传感器融合任务,如目标检测、三维重建和语义分割,提高系统的感知精度和鲁棒性,是自动驾驶和机器人导航中不可或缺的一环。

2.激光雷达和相机联合标定的原理是什么?

 

所以一般相机和激光雷达的联合标定就是要求其旋转矩阵和平移矩阵。大概就是这个过程,如果有不太清楚的,同时又想进一步研究的可以参考这个博客:激光雷达和相机联合标定_相机激光雷达联合标定-CSDN博客

3.该如何实现呢?首先打开MATLAB,点击APP-图像处理和计算机视觉-Lidar Camera Calibrator

4.关于标定板的制作 ,可以参考以下网址:Camera Calibration Pattern Generator – calib.ioicon-default.png?t=O83Ahttps://calib.io/pages/camera-calibration-pattern-generator

这里面可以设置标定板的格式以及大小: 

5. 关于数据的选择,这里以bag包为例首先将bag包转换成png图片和pcd点云文件,怎么转换可以参考另一篇博客:(二)利用Tools_RosBag2KITTI软件包将ubuntu当中自己录制的.bag文件转成.bin文件和.png文件(附修改后的代码)

6.接着点击 import data选择准换好的png和bin文件,这俩可以放在一个文件夹。

7.之后选择文件夹的路径以及标定板的大小:

8, 之后开始自动加载相应的文件内容:

9, 之后会提示找不到标定板数据,不要慌,这是正常的,裁剪设置之后就可以了。

10, 一方面可以降低DimensionTolerance'的值(即点云检测边框精度)来提高标定板检测成功率。

11.也可以点击Edit ROI编辑点云图像,只保留标定板,编辑好了一定要保存。

 12.操作可能有点不习惯,右上角第一个是旋转,第二个是移动,当两者都不亮时才是默认的拉伸,保存后退出,如下图所示:

13.接下来呢,选择Select Checkerboard进行标定板的选择,每一张图片都需要按照上以下步骤重复所有的操作

14.之后 点击手动选择标定板的区域保存,所有点云都需要这样操作:

15. 我标注的比较随意,大家好好标,因为标注的不行的系统识别不到,会拒绝,比如:

16.正确标注后,会在中间出现相应的图片和右侧的点云图:

17. 之后点击上面的calibrate会进行标定,如下为几个相应的重投影结果,以及三个误差分布图:

18.标定的结果怎么看呢, 点击export导出到工作空间:

19,打开该变量,其包含的4个参数如下:

20.参数含义为:

  • Dimensionality 维度,表示该刚体变换是针对几维空间的,说明是一个三维空间中的变换。

  • 变换矩阵(4x4 double),是刚体变换的齐次矩阵形式,包含旋转和平移信息。t3x1​: 平移向量,表示物体在三维空间的平移,R3x3​: 旋转矩阵,表示物体在三维空间的旋转。

  • Rotation 旋转矩阵(3x3),表示刚体的旋转部分,是一个正交矩阵,满足旋转矩阵将一个三维点绕原点旋转到新的位置。

  • Translation 平移向量(1x3),表示刚体在三维空间中的平移量。例如,这里的值为表示沿 x,y,z 轴的平移。

 21.我们需要的也就是旋转矩阵和平移矩阵:

22.至此,终于标定完了,附上一张自己标定一晚上的结果,眼都花了。

http://www.lryc.cn/news/487028.html

相关文章:

  • React(一)
  • Liunx-Ubuntu22.04.1系统下配置Anaconda+pycharm+pytorch-gpu环境配置
  • Postman之数据提取
  • selenium元素定位校验以及遇到的元素操作问题记录
  • 在AndroidStudio中新建项目时遇到的Gradle下载慢问题,配置错的按我的来,镜像地址不知道哪个网页找的,最主要下载要快
  • 用mv命令替换rm命令
  • 电解车间铜业机器人剥片技术是现代铜冶炼过程中自动化和智能化的重要体现
  • 【qt】控件2
  • Frida反调试对抗系列(四)百度加固
  • Redis 安全
  • 上交大与上海人工智能研究所联合推出医学多语言模型,模型数据代码开源
  • 网络安全:我们的安全防线
  • 理解 Python 中的 __getitem__ 方法:在自定义类中启用索引和切片操作
  • 【数据结构】【线性表】【练习】反转链表
  • vue2+3 —— Day5/6
  • 汽车资讯新视角:Spring Boot技术革新
  • 关于win11电脑连接wifi的同时,开启热点供其它设备连接
  • 【Apache Paimon】-- 2 -- 核心特性 (0.9.0)
  • golang对日期格式化
  • 【数据结构与算法】排序
  • 前端常见的几个包管理工具详解
  • PyAEDT:Ansys Electronics Desktop API 简介
  • 腾讯云存储COS上传视频报错
  • Tomcat(17) 如何在Tomcat中配置访问日志?
  • 根据频繁标记frequent_token,累加size
  • 2、计算机网络七层封包和解包的过程
  • 无人机飞手入门指南
  • Redis与IO多路复用
  • 基于Java和Vue实现的上门做饭系统上门做饭软件厨师上门app
  • spi 回环