2d 激光和相机之间的标定早在 04 年就出了成熟的论文和方法,17 年 ICCV, IROS,今年 IROS 等依然还有论文产出,具体的论文列表可以参考我的《论文阅读整理》博客。本篇博客主要讲述 04 年方法的原理以及代码的实现, 代码开放在我们的github上,在自己机器人上采集了多次数据进行标定,标定结果在 1cm 内浮动,均值附近正负几毫米。

标定原理

准备材料:标定板一个(平板上贴有棋盘格或者二维码,我使用的为 apriltag,apriltag 使用我们代码文件夹里提供的,直接打印成 A4 大小,特别注意自己在网上下载的 apriltag 大小各异,注意测量 apritag 的尺寸,我们的为0.1612m),已经标定好内参数的相机一个。

标定原理如下图所示,相机通过二维码估计标定板平面在相机坐标系下的平面方程,由于激光点云落在平面上,将点云通过激光坐标系到相机坐标系的外参数 TclT_{cl}Tcl​ 转换到相机坐标系,构建点到平面的距离作为误差,使用非线性最小二乘进行求解。

标定板平面在相机坐标系下的求解

假设通过二维码求解 Pnp 已经知道二维码到相机坐标系的变换矩阵 TcmT_{cm}Tcm​, 平面方程在二维码坐标系下为 Pm=[0,0,1,0]⊤P_m = [0,0,1,0]^\topPm​=[0,0,1,0]⊤。那么平面方程在相机坐标系为
Pc=(Tcm−1)⊤∗PmP_c=(T^{-1}_{cm})^{\top}*P_mPc​=(Tcm−1​)⊤∗Pm​平面方程在不同坐标系下的变换的公式推导,可以参看 stackoverflow 上别人的回答。

误差方程的构建和求解

平面在相机坐标系下的方程知道后,就能很快构建误差方程, 首先将激光点 plip^i_lpli​ 从激光坐标系转换到相机坐标系。pci=Tcl∗plip^i_c = T_{cl} * p^i_lpci​=Tcl​∗pli​ 然后,利用点到平面的距离方程构建误差,ri=d(pci,Pc)r_i = d(p^{i}_c,P_c)ri​=d(pci​,Pc​) 使用 ceres 对一堆点的误差进行非线性最小二乘求解。

改进

实际上标定时会采集很多时刻的数据,激光点云数据量加起来可能会很多,直接丢给 ceres 求解速度慢。对于某一时刻,由于点云噪声通常在几厘米跳动,所以我们可以先对该时刻的激光数据进行直线拟合,然后只利用直线上的两个点来构建约束,这样就能减少 ceres 的计算量。

标定工具的使用 (具体操作细节请从参考 github readme)

最近升级了代码,使用更加方便,标定结果更加稳定。主要改动如下:

  1. 能自动检测落在标定板上的激光点。
  2. apriltag 的代码支持利用多个 marker 估计相机到标定板之间的外参数 TcmT_{cm}Tcm​。

1. 数据的采集示例

2. 标定结果的评估示例

2d Laser 和 camera 标定工具原理及使用方法相关推荐

  1. 基于平面的约束2D激光雷达和相机的联合标定(2D Laser and Camera Calibration )原理及项目代码具体使用——旷视

    1 基于平面的约束2D激光雷达和相机的联合标定(2D Laser and Camera Calibration )原理 这是旷视做的一个关于2D激光雷达和相机的联合标定算法,在看这个标定算法之前,你可 ...

  2. 2d Laser 和 Odomter 内外参数标定工具原理及使用方法

    前言 两轮差速轮式机器人可以基于码盘数据和两轮间距以及车轮半径进行航迹推演,得到机器人的轨迹.激光雷达也可以利用 icp 等算法计算出两时刻间机器人的相对运动量.因此,可以利用两者数据进行融合定位,本 ...

  3. 摄像头Camera标定Calibration原理Theory

    摄像头Camera标定Calibration原理Theory cv2.cameraCalibration Pinhole camera calibration calls camera vision ...

  4. 标题 相机标定(Camera calibration)原理和步骤

    标题 相机标定(Camera calibration)原理和步骤 为什么要相机标定? 在图像测量过程和机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机 ...

  5. 相机标定(Camera calibration)原理、步骤

    这已经是我第三次找资料看关于相机标定的原理和步骤,以及如何用几何模型,我想十分有必要留下这些资料备以后使用.这属于笔记总结. 1.为什么要相机标定? 在图像测量过程以及机器视觉应用中,为确定空间物体表 ...

  6. 工业互联网(十四)——相机标定(Camera calibration)原理、步骤

    转载: 最详细.最完整的相机标定讲解 图像处理--相机标定(Camera calibration) 相机标定 相机标定(Camera calibration)原理.步骤 工业相机标定相关知识整理 相机 ...

  7. SLAM中常用的相机模型及标定工具

    最近一段时间准备作多传感器的SLAM研究,第一步是要解决传感器间的联合标定.所要开展实验的机器人平台配置了相机.单线雷达和IMU,自然而然地,首先是要先确定各个传感器的内参数,然后再确定传感器之间的外 ...

  8. 【动手学MVG】张正友标定法原理与实现

    文章目录 介绍 理论基础 棋盘格检测 TODO: 以后开单章去介绍标定中的角点检测算法. 基本符号 图像平面与棋盘格平面之间的单应矩阵 计算 A−TA−1A^{-T}A^{-1}A−TA−1 计算相机 ...

  9. 相机标定的原理及实现

    本文参考文档: 原理部分:https://blog.csdn.net/honyniu/article/details/51004397 代码部分:https://www.cnblogs.com/wil ...

最新文章

  1. Android P 图形显示系统
  2. 电气期刊论文实现:热电联产经济调度【有代码】
  3. python调参工作都是干啥的_Python中Gradient Boosting Machine(GBM)调参方法详解
  4. python3.6字典有序_为什么从Python 3.6开始字典有序并效率更高
  5. [html] 如何判断用户正在操作页面?当页面一个小时没有操作时跳转到指定页面如何做?
  6. linux传文件file,linux文件的传输与压缩快速入门
  7. 挖地雷(信息学奥赛一本通-T1262)
  8. Oracle 之instant client
  9. MFC开发IM-自绘按钮控件,给按钮设置背景图片
  10. python中不可以使用类名访问的是_如何在Python中访问当前执行的模块或类名?
  11. Building beautiful User Interface in Android
  12. html 之 img hspace 和 vspace 属性
  13. 企业微信 手机 接收的文件 存放路径
  14. 云虚拟主机搭建个人博客
  15. rsa签名算法c语言,数字签名算法rsa
  16. LINUX(socket)网络编程部分头文件归纳解释
  17. 计算机中基本磁盘分为几个区,电脑硬盘分几个区最好?电脑硬盘分区教程
  18. 移动支付申请所需材料及流程整理
  19. hash表(学习笔记)
  20. NASA12.5米高程DEM下载与5米等高线的提取方法

热门文章

  1. mysql 触发器 所有表_MySQL触发器可以与多个表或所有表相关联吗?
  2. python安装与使用Ta-Lib,获取金融技术面特征
  3. python pandas处理无限值inf
  4. Tensorflow federal learning 安装
  5. Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】
  6. Week4——Hello.java分析
  7. java多线程知识汇总(三)如何选择锁?如何加锁
  8. 项目管理学习 总结(一)
  9. jquery常用技巧及常用方法列表
  10. 评一本书:C#.net 手机动漫游戏设计教程 (一)