激光雷达(lidar)和相机(camera)联合标定调研(基于Autoware的详细步骤)

2023-05-16

简单记录一下使用Autoware对lidar和cam联合标定的步骤和一些注意事项。

首先,开源的lidar和cam标定方案不多,花了一天查资料大概有以下几个:

but_velodyne

https://github.com/robofit/but_velodyne

https://github.com/robofit/but_velodyne_lib

https://blog.csdn.net/learning_tortosie/article/details/82385394

这是一个最简单、最单纯的lidar和cam联合标定的方案,但是需要openCV2.4.9,我的当前版本为3.2,懒得重新装而且看博客感觉别人也没有成功,所以放弃了。

lidar_camera_calibration

https://github.com/ankitdhall/lidar_camera_calibration

https://blog.csdn.net/a2281965135/article/details/79785784

仔细看了一下,这个是基于深度相机/双目的标定方案。

https://github.com/beltransen/velo2cam_calibration

这个也是。

Autoware

https://github.com/CPFL/Autoware/wiki

https://blog.csdn.net/learning_tortosie/article/details/82347694

https://blog.csdn.net/AdamShan/article/details/81670732

这是日本开源的一个自动驾驶平台,其中也包含了lidar和cam的联合标定,适合于velodyne,看博客感觉效果还不错,需要的数据和材料也不麻烦,但是标定过程需要不断的手动把cam中的标定板在lidar点云中的位置圈出来,有点麻烦(也有点蠢...)。

apollo

https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide.md

https://blog.csdn.net/learning_tortosie/article/details/82351553

http://apollo.auto/index_cn.html

这是百度的阿波罗自动驾驶平台,其中包含了lidar和cam的标定方案,仔细看完感觉要求过高,不但需要普通的数据,还需要IMU、里程计等传感器数据,不太适合单纯的lidar和cam标定。而且需要较为精确的lidar和cam相对的初始安装角和广角相机,可以尝试先用Autoware标定一遍之后再用这个标定使得结果更精确。

 

综上所述,最后采用Autoware的标定方案。在开始简述一下其基本原理:

首先和普通cam标定一样,通过标定板的变化算出cam的位姿矩阵;然后再手动用小圈把点云中对应的标定板框出来,看下文介绍可以理解,小圈最少包含了两条点云线,两条线即可构成一个面,就是标定板所在的平面。我们就能通过lidar相对于这个面的角度推算出lidar的姿态,通过这个面点云的距离算出其位置,再和cam相对比,就能得到cam_lidar的外参矩阵了。

 

在安装中,建议选用第二个,一般来说ROS和OpenCV都是有的,再安装个Qt就可以了,很简单的。官网推荐的第一种方案需要固定的硬件配置,很麻烦。

具体标定方法可以看这个视频(需要翻墙)

https://www.youtube.com/watch?v=pfBmfgHf6zg

没条件的可以认真的看这个操作说明

https://github.com/CPFL/Autoware/wiki/Calibration

说一下可能存在的疑惑:

其中提到了rosbag的制作,之前在用Kalibr标定IMU和cam时有明确要求制作的rosbag的格式,包括照片的格式、命名要求,IMU数据格式、频率等,就很好奇Autoware标定的rosbag要求是怎么样的,但是官网没有说明。尝试发现,使用ros格式数据就可以了,比如点云为ros的PointCloud2,直接发布话题,然后用rosbag record /image /point_cloud 记录下rosbag就可以了。

在之后的输出用rosbag play /image:=image_raw /point_cloud:=points_raw,就可以将自己的topic名转换成Autoware标定程序需要的image_raw和points_raw。在rosbag play时可以按空格暂停。

标定界面

需要手动在右下方的图中,不断的把标定板对应的点云图给框出来,为了达到比较好的标定效果,需要的数据量越多越好,图中大概选了100张图,然后project检查效果的时候把不好的十来张删了,最后用了90张图。(一个个框出来还是很累的...总共花了一个多小时roz。

这里说一下数据采集和标定的时候的注意事项:

建议标定至少两次,首先第一次得看最后的标定效果,如图:

这是一次标定结果不是很好的情况,看2处就很明显image和pointcloud就没有对齐。

先说一下1.标定板要注意的,首先最好用官网给的尺寸,质地要比较硬,拿起来才不会弯曲;然后其原理是默认点云全是打在标定板上的,所以拿标定板的人最好能藏在标定板背后而且如果使用标定纸贴在一个硬纸板上的,那硬纸板的大小得和标定纸一样大,才能保证点云是打在标定板而不是后面加固的硬纸板上。

2.最好选一个前面空旷但周围有一点背景,能识别标定效果的地方。前面空旷是为了保证没有和标定板相近的点云对标定效果的干扰。还要注意lidar的线的距离,尽量能标定到最上面的和最下面的,本文使用的是VLP16,相比32线的站在5m,16线的开始稍微往前站一点。

3.标定前要测出相机视野的两端的位置,才能最大限度的提高标定结果。

 

4.标定的时候要注意这个小圈的垂直方向,这是最重要的。务必保证小圈的垂直轴垂直于标定板平面。

 

最后标定的结果文件:最重要的就是外参矩阵

补上最后的结果:

参考文献:https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Calibration

附:标定板文件生成方式

使用的是Kalibr生成PDF的标定板的,kalibr_create_target_pdf --type checkerboard --nx 6 --ny 8 --csx 0.108 --csy 0.108

也可以直接从我的资源处下载,我设置的是0积分的,不知道为什么CSDN有时候会设置成需要积分才能下载

参考文献:https://github.com/ethz-asl/kalibr/wiki/calibration-targets

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

激光雷达(lidar)和相机(camera)联合标定调研(基于Autoware的详细步骤) 的相关文章

  • Unity:从设备摄像头录制视频

    我想要一个插件或一个库或一种从设备摄像头统一 Windows 独立 录制视频 当然有声音 的方法 目前 我可以使用该相机进行屏幕截图 有人说我可以截取很多张屏幕截图并将其转换为一个视频文件 我在资源商店找到了一个名为相机拍摄 https a
  • 从 Exif 数据计算照度

    我如何通过iPhone相机计算勒克斯或照度 我已经计算了所有exif数据 如下所示 key FocalLength value 3 85 key MeteringMode value 5 key ShutterSpeedValue valu
  • 您可以从 Mobile Safari 访问 iPhone 相机吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有 JavaScript API 用于从 Mobile Safari 访问 iPhone 的相机
  • 是否可以使用 flutter 相机插件流式传输视频?

    我一直在使用相机插件 我知道可以通过CameraController与功能start stopVideoRecording 这些函数将采用文件的路径作为输入 我希望能够在录制时将该视频流式传输到服务器 是否可以通过相机插件的当前功能以某种方
  • 如何在Flutter中将CameraController的XFile转换为Image类型?

    扑动的CameraController has a takePicture 从相机拍照的方法 给出了类型Future
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • Android:访问硬件相机预览帧数据而不绘制它们

    根据 Java SDK 端的 android 相机文档 必须为相机预览帧提供一个要绘制的 可见且活动的 表面 以便访问帧数据 我已经链接了我在这里遇到的一些内容 我是新人 所以最多有 2 个超链接 但是在最终在这里发布我自己的问题之前 我查
  • 访问 iOS 6 新 API 以获取相机曝光和快门速度

    在苹果的iOS 6 0 功能页面 https developer apple com technologies ios6 过去常说 利用内置摄像头的高级功能 新的 API 可让您控制焦点 曝光和感兴趣区域 您还可以使用人脸检测 API 访问
  • OpenCV 中的相机标定和鸟瞰投影

    我已经完成了相机校准 现在我想获得棋盘图片的鸟瞰图 如下所示 但结果很奇怪 看起来不是一个正方形 你可以看到图3 每个正方形都是7 95x7 95 有人知道为什么吗 gpsPoints 0 Point2f gpsPoints 1 Point
  • Android 致命信号 11 (SIGSEGV) at 0x00000040 (code=1) 错误

    我正在开发一个 Android 应用程序 我正在其中获取用户照片图像 5张图像 使用opencv2 4 2具有面部检测功能的相机 并使用 Web 服务保存到服务器中的数据库中 为此 我使用 Opencv2 4 2 人脸检测示例 Ksoap2
  • 如何使用摄像头直播作为活动背景?

    我正在尝试制作一个应用程序 其中我需要使用相机实时馈送作为背景 我知道这是一件愚蠢的事情 但无能为力 这是客户的要求 我尝试过使用SurfaceView但到目前为止还没有成功 到目前为止 我在 Stack Overflow 上发现的更多内容
  • iOS:如何打开带有动画效果的相机?

    我想以动画效果打开相机 以便看起来相机仅在父屏幕中打开 我正在使用相机覆盖屏幕 在父屏幕中单击按钮事件时 相机覆盖屏幕正在打开 在相机覆盖屏幕中有一个取消按钮可以关闭相机 因此在再次关闭相机时我需要显示动画效果看起来现在相机在同一个父屏幕中
  • 上传前压缩相机图像

    我正在使用这段代码 来自www internetria com http www internetria com blog 2013 04 12 android enviar imagenes por webservice 拍照并上传到服务
  • 如何在SceneKit中实现逼真的景深效果?

    我正在尝试渲染具有真实景深效果的帧 我已经尝试过景深属性camera节点 但它不会产生可用的结果 是否可以切换到景深效果的最大渲染质量 性能不是一个因素 我只需要渲染一帧 用户可以等待它 SceneKit 中逼真的景深效果 在SceneKi
  • 是否可以使用 Google Glass 拍照而无需“点击接受”?

    我按照此处的代码使用 Google Glass 相机捕获图像 https developers google com glass develop gdk media camera camera capturing images or vid
  • iPhone 相机访问权限?

    我想知道如何访问 iPhone 相机并实时使用它 例如 仅在相机视图上绘图 另一个相关问题 可以显示吗同时 4 个摄像机视图就像 Mac 上的 Photo Booth 一样 您可以使用 AVFoundation 来做到这一点 void in
  • Actionscript 3主类是根,但不允许动画虚拟相机

    我最近开始使用 Actionscript 3 学习 Animate CC 我正在尝试使用 Animate 的 虚拟相机 功能 为我提供一个可以平移 旋转和缩放游戏的相机 当根没有子类时 很容易实现 Camera 例如 您可以在屏幕上放置一个
  • Marshmallow 中的手电筒控制

    我对最新 Marshmallow 版本中的相机 更具体地说是手电筒 有疑问 在任何棉花糖之前的版本上 我需要执行以下操作来打开 关闭闪光灯 private void turnFlashOn final Camera camera int f
  • PWA 可以访问联系人、GPS 或使用手机摄像头吗?

    PWA 可以访问联系人 GPS 或使用手机摄像头吗 这在任何系统 ios android 中都可能吗 是否有任何开发计划来实现这些功能 PWA 无法克服一些限制 you cannot访问电话上的联系人列表 另一方面 你can拍照并使用 GP
  • java.lang.RuntimeException:release()后调用的方法

    If i am 不使用 相机 release in 表面被破坏 then 无法从另一个 Activity 再次启动 CameraActivity 简而言之 得到不幸的是应用程序已停止 错误 即使不释放相机 但如果我确实点击了 主页 按钮 来

随机推荐

  • [ROS官方教程] catkin/CMakeLists.txt的使用

    目录 1 概述2 整体结构和顺序3 CMake版本4 功能包名称 package name 5 发现CMake Packages5 1 find package 做了什么5 2 为何将catkin packages指定为Components
  • C++工程:总结 CMake 添加第三方库依赖方式

    代码依赖 这种方式是把第三方库的完整代码直接添加到我们的项目中 xff0c 当做项目代码的一部分进行编译 xff0c 这种方式会把第三方代码和我们的代码混在一起 xff0c 并不推荐使用 首先我们需要到 jsoncpp 下载需要的头文件和实
  • 四款好看实用的CSS表格样式分享

    文章参考 xff1a https www w3cschool cn css css sfrk2opy html https www php cn css tutorial 375461 html https www laozuo org 2
  • 线程与进程,你真得理解了吗

    线程与进程 xff0c 你真得理解了吗 1 进程与线程的关系和区别2 并行与并发3 线程共享了进程哪些资源 相信大家面试时一定没少被一个问题刁难 xff0c 那就是进程和线程的区别是什么 xff1f 这个问题延申开来并不像表面那么简单 xf
  • Ubuntu18.04安装librealsense和realsense-ros

    目录 一 librealsense 1 二进制安装 2 源码安装 xff08 个人推荐 xff09 3 测试运行 4 报错 二 realsense ros xff08 2 3 0 xff09 一 librealsense intel rea
  • KaLibr校准 双目相机和IMU realsense D455

    kalibr安装参考我的另一篇博客https mp csdn net mp blog creation editor 117604718 除此之外 xff0c 需要自己准备棋盘 xff0c 以及棋盘的配置文件april 6x6 50x50c
  • ubuntu系统屏幕分辨率只有一个无法修改

    新装好的ubuntu系统 xff0c 如果没有办法调节适当的分辨率和刷新率 xff0c 多半是没有装显卡驱动 安装方法也很简单 xff0c 在software amp Update里面选择Additional Drivers 选择自己显卡的
  • mavros安装

    官方地址 xff1a https github com mavlink mavros 因为github有时侯不好上 xff0c 所以我自己弄了个gitee https gitee com qq408007026 mavros tree ma
  • ubuntu docker ROS主从机配置 screen ssh基本使用方法

    目录 1 docker安装 2 docker简单命令 3 镜像的使用 4 主从机配置 5 screen简单使用 6 SSH远程登录 7 docker进阶使用 部分参考https blog csdn net qq 42800654 artic
  • Ubuntu下VSCode配置Clang-format,并在保存时自动格式化代码的方法(带配置文件)

    花了一上午解决 xff0c google和百度查的还都有点奇怪 不能解决问题 xff0c 故Mark一下 Ubuntu环境中 xff0c 使用VSCode编译器 xff0c 在保存时自动格式代码还是很方便的 xff0c 有助于养成良好的编程
  • docker容器学习

    容器是什么 xff1f 容器是轻量级应用代码包 xff0c 它还包含依赖项 xff0c 例如编程语言运行时的特定版本和运行软件服务所需的库 镜像是什么 我们都知道 xff0c 操作系统分为 内核 和 用户空间 对于 Linux 而言 xff
  • 卷帘相机原理和卷帘门补偿(其中循环的理解)

    具体的这个文章讲的很清楚了 详细图解 xff0c 一眼就能看懂 xff01 卷帘快门 xff08 详细图解 xff0c 一眼就能看懂 xff01 卷帘快门 xff08 Rolling Shutter xff09 与全局快门 xff08 Gl
  • cartographer中分支定界法理解——为什么能保证上界

    定界原理 储存的不同分辨率栅格图 xff0c 为保证上边界正确性 xff0c 即高层中的评分一定高于其底层节点的评分 xff0c 压缩的地图并非直接从原图固定间隔采样 xff0c 而是将固定间隔中所有坐标概率值最大值作为低分辨率地图 理解
  • Matlab中Filter Builder的使用(以滤除音乐中的人声为例)

    Matlab中Filter Builder的使用 xff08 以滤除音乐中的人声为例 xff09 以matlab2017a为例 先设计一个带通滤波器 xff0c 修改如下参数为 Input sample rate 为信号采样率 xff0c
  • 批量解决word中行距设置为固定值图片显示不全的问题

    在写论文的时候 xff0c 很多学校要求正文行距为固定值 xff08 比如说23磅 xff09 xff0c 这时候在正文中的图片格式往往是嵌入式的 xff0c 也就被当做文本的一部分 xff0c 故其只能在word文档中显示出一小部分 解决
  • HoloLens原理分析和硬件拆解

    不同于Google Glass 等AR 产品只能在固定位置显示一个虚拟屏幕 xff0c HoloLens 能把全息影像和真实环境杂糅在一起 xff0c 使全息影像像真实物体一样摆放在一个固定位置 xff0c 并且能像真实物体在视觉上一样近大
  • Kalibr标定camera-IMU详细步骤

    Kalibr标定相机和IMU Camera IMU Calibration 基本情况 目的 我们进行camera IMU标定的目的是为了得到IMU和相机坐标系的相对位姿矩阵T和相对时间延时t shift t imu 61 t cam 43
  • catkin build和catkin_make的区别和使用

    网上找的资料都很碎 xff0c 最好的资料是官方github文档 xff1a https github com catkin catkin tools https catkin tools readthedocs io en latest
  • darknet_ros(yolo移植到ros系统)代码分析

    darknet ros就是darknet在ros操作系统下的版本 xff0c 即在ros下使用yolo进行目标检测 首先对其文件分类 xff1a launch文件是ros格式的roslaunch文件 xff1b src文件夹下的就是它的主要
  • 激光雷达(lidar)和相机(camera)联合标定调研(基于Autoware的详细步骤)

    简单记录一下使用Autoware对lidar和cam联合标定的步骤和一些注意事项 首先 xff0c 开源的lidar和cam标定方案不多 xff0c 花了一天查资料大概有以下几个 xff1a but velodyne https githu