目录

基本情况:

摘要

I. 引言

A.相关工作

II. 平台

III. 相机内参标定

IV. 相机外参标定

A. 单目 VO

B.Camera - Odometry Transform的初始估计

1)找到俯仰-滚动(pitch-roll)四元数

2)找偏航-yaw四元数、尺度-scales、平移translation hereto

C. 3D 点的三角化

D. 查找局部相机间特征点对应关系

E. Loop Closures

F. Full Bundle Adjustment

V. 试验和结果

VI. 结论

参考文献


基本情况:

  • L. Heng, B. Li and M. Pollefeys, "CamOdoCal: Automatic intrinsic and extrinsic calibration of a rig with multiple generic cameras and odometry," 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems, 2013, pp. 1793-1800, doi: 10.1109/IROS.2013.6696592.

摘要

对于自定驾驶的设备,一般wheel Odemetry都是可用的,所以可以作为相机位姿估计的先验(背景)。所以此时,一个准确的extrinsic calibration是很重要的。到目前为止,还没有关于通用摄像机的自动内参校准的已知工作,更重要的是,也没有多个通用 camera and odometry的自动外参校准。所以我们提出:一个易于使用的自动化pipeline,处理内参和外参校准;我们不假设有重叠的视场

  • 在开始阶段,我们对每个普通相机进行内参校准。内在校准是自动的,需要一个棋盘格。随后,我们运行外参校准,找到所有的 camera-odometry变换。
  • 外参校准是无监督的,使用自然特征,只需要驾驶车辆运动(be driven around)很短的时间。
  • 在外部校准的最后一个光束调整(Bundle Adjustment)步骤中,对内参数进行了优化
  • 此外,该pipeline生成一个全局一致的稀疏地标地图,可用于视觉定位。该pipeline作为一个独立的c++包公开可用。

I. 引言

在机器人和人类驾驶的车辆上使用相机已经爆炸式增长。 从机器人的角度来看,相机提供了丰富的视觉信息来源,与激光雷达线扫描仪相比,大大增强了机器人的感知能力; 计算硬件的最新进展有助于实时图像处理。 从汽车角度来看,多个摄像头对于有助于改善道路安全的驾驶员辅助应用非常有用。 在车辆上使用多个摄像机的图像处理应用需要每个摄像机的精确的内在校准和精确的外在校准。 精确的固有相机校准包括相机投影模型的最佳参数集,该相机投影模型将2D图像点与3D场景点相关联; 这些最佳参数对应于最小重投影误差。 精确的外部校准对应于相对于车辆上的参考框架(通常是里程表框架)的精确相机姿态。 精确的校准允许将来自一个相机的特征点重投影到另一个相机中,具有低重投影误差,此外,测程数据可以与相机外部一起使用,以有效地计算相机姿态的良好初始估计,然后可以通过局部捆绑调整以最小的校正进行微调。

我们使用Mei等描述的统一投影模型。 在[1]中,它在常规,广角,鱼眼和屈光相机的实践中工作得很好。 该模型与Scaramuzza等人提出的统一泰勒模型不同。 [2]在Mei的模型是参数形式并明确建模通用相机的方面,而Scaramuzza的模型由任意泰勒多项式表示。 因此,可以使用Mei的模型制定封闭形式的Jacobian矩阵(a closed-form Jacobian matrix,但不能用于Scaramuzza的模型。 与MEI应用于鱼眼相机的模型精度有限的说法相反,我们从实验数据中发现MEI的模型在实践中对鱼眼相机非常有效。

我们的管道有两个阶段:内在(内参)和外在(外参)校准。 在内参校准阶段,我们需要一个大棋盘格,其中所有方块都具有相同的已知尺寸。 对于每台相机,棋盘以各种姿势保持,我们使用自动棋盘角检测器在每张图像中查找棋盘上的所有内角点,直到我们累积最少数量的角点。 然后,我们使用估计的角点坐标系(the set of estimated corner coordinates)通过生成固有参数(内参)的初始估计,并通过非线性优化,细化参数来找到MEI模型的参数; 分析Jacobian用于显着加快优化速度。

在外部校准阶段,我们为每个相机单独运行带有滑动窗口束调整(bundle adjustment, BA)的单眼(单目)VO。 VO可能偶尔在纹理不良的区域中断。 然而,我们使用所有VO估计值(相机的位姿)来找到每个摄像机的摄像机-历程计变换(camera-odometry transform )的初始估计; 每组VO估计值具有不同的尺度。 我们使用初始的 camera-odometry transforms 和 odometry data,对由单眼VO对应生成的内联(inlier)特征点进行三角测量。 然后通过Bundle Adjustment对得到的稀疏图进行优化; 在优化所有3D场景点和摄像机-历程计变换的同时,保持测程计姿态(odometry poses)固定。 此时,摄像机-历程计变换变得更加准确; 然而,它们对于将特征点从一个相机重投影到另一个相机、具有亚像素重投影误差的重投影,仍然不够精确。为了解决这个问题并且仍然坚持没有重叠视野的假设,我们找到了不同相机的特征点对应关系。 从第一个测程姿态(first odometry pose)开始,我们为每个相机维护局部帧历史记录,我们找到每个相机当前帧与每个其他相机帧历史记录中的每个帧之间的特征点对应关系。 对于每个帧对,我们在公共图像平面上校正两个图像,该图像平面对应于两个相应相机的平均??旋转(the average rotation)。 这种校正大大增加了点特征对应的数量; 我们在几何验证后获得有效的特征点对应子集。 对于每个特征点对应,我们在地图中绘制现有的3D场景点,并在校正图像上的相应相机中看到,并将每个特征点与投影图像点最接近该特征点且距离为2像素的3D场景点相关联。

为了确保地标稀疏地图的全局一致性,我们使用词汇树(a vocabulary tree)来使用来自所有相机的所有帧检测循环闭合。 我们运行与前面描述的类似的另一个捆绑调整,但它还优化了所有相机内参,和里程计位姿 (odometry poses),以获得每个相机的一组内参,一组camera-odometry transforms,以及全局一致的稀疏地标地图。

我们的方法是新颖的,因为我们是第一个开发该 full automatic pipeline 的:用于通用相机的内参校准和具有多个通用相机和测距仪的外参校准,而无需全球定位系统,如GPS/INS和Vicon运动捕捉系统。 我们使该pipeline能够对在低纹理区域发生的单眼视觉测程的中断具有鲁棒性。

A.相关工作

关于手眼校准问题(hand-eye calibration)有很多研究[3],[4]。 通常,针对手眼校准问题发布的通用解决方案不适用于具有平面运动的车辆,因为相机相对于里程表的高度是不可观察的。 因此,相机-里程计校准(camera-odometry calibration)需要专用解决方案[5],[6]。

  • [5]为差动驱动机器人同时找到相机的外参、内参和 odometry 参数; 但是,需要一组已知的地标。 类似地,
  • [6]在不需要已知地标的情况下,找到差分驱动机器人的相机外参和里程表参数,但仅获得相机-里程表变换的3个自由度。

相比之下,我们的方法不需要已知的地标,并且为每个相机获得相机-里程表变换的全部6个自由度。 我们不尝试校准里程表参数,因为运动模型在车辆之间差异很大。

我们的方法与[7]和[8]的工作最相似。

  • 郭等 [7]通过使用一组相机和里程表运动,来找到最小二乘解决方案,估计一个相机和一个里程表的相机-里程表变换。 然而,单目VO具有姿态和尺度漂移,这在大多数自然特征与相机相当远的环境中加剧,并且因此,相机-里程计变换平移分量可能不准确。 此外,他们不使用视觉地标来进一步优化相机里程表变换。 我们的方法在车辆环境中使用自然特征来提高相机-里程计变换的准确性。
  • Carrera et等人[8]提出了一种多相机 rig 的外参校准,使用修改版本的MonoSLAM,为每个相机构建全局一致的地标稀疏地图,通过SURF描述符之间的阈值匹配找到每对地图之间的特征对应关系,并使用3D相似性变换RANSAC一起找到内部特征对应关系。最后,运行完整的捆绑调整以优化相机姿势,3D场景点和机器人姿势。

在这里,没有尝试校准与里程表帧相关的相机位姿;并且3D相似性变换步骤,可能在大多数自然特征位于远离相机的室外环境中失败,并且其估计的3D位置可能因此具有大量噪声,导致很少的内点。

此外,标定程序(the calibration procedure)要求车辆进行完整的360转弯,以便在数据收集结束时,每个相机观察在开始时看到的相同特征; 该要求是通过强制地图的全局一致性来确保3D相似性变换步骤可以正常工作。 对于杂乱环境中的大型车辆,此要求可能是禁止的。 相比之下,我们的外参校准在没有此要求的情况下工作良好; 我们只要求车辆进行广泛的转向更改以获得最佳校准精度。 此外,我们的外参校准过程同时优化了内参; 我们发现,如果内参矩阵作为捆绑调整的一部分未优化,则校准精度是次优的。

II. 平台

该平台是一款大众高尔夫VI汽车,在vCharge项目的支持下进行了视觉引导自动驾驶。 我们的两个平台如图1所示。 四个鱼眼相机安装在车上,如图2中的蓝色相机所示。 每台鱼眼相机的标称FOV为185,输出1280×800图像,速度为12.5 fps。 对于同步图像捕获,一台相机作为所有其他相机的主触发源。 单个PC时间戳触发图像和里程表数据。 测距数据不是与图像同时生成的; 对于每个图像,我们在时间里程表姿态缓冲区中找到两个里程表姿态,一个时间戳最接近图像时间戳之前,一个时间戳最接近图像时间戳之后。 我们执行线性插值以获得对应于图像时间戳的里程表姿态。 为了清晰起见,在随后的图中,我们将与前,左,后和右相机相关联的所有相机姿势和3D场景点分别颜色为红色,绿色,蓝色和黄色。

III. 相机内参标定

我们在速度和角落精度方面对[9]的自动棋盘角点检测方法进行了一些改进。 特别是,在检测到一组角点之后,我们使用基于样条的方法来检查检测到的角的位置的全局一致性。 我们通过每排角点拟合一条样条; 我们选择第一个,中间和最后一个角落作为控制点。 如果任何角与相应样条之间的最短距离超过某个阈值,则角集标记为无效。 此检查显着降低了误角检测率。 OpenCV棋盘角检测实现仅适用于普通和广角相机捕获的图像。 棋盘图像的检测到角的示例如图3所示。

除了相机姿态之外,我们还需要解决相机的内在参数[ξ,k1,k2,k3,k4,a,r1,r2,u0,v0]。 ξ代表镜像变换,[k1,k2,k3,k4]模型径向和切向失真,[a,r1,r2,u0,v0]是用于广义相机投影的标准针孔模型的参数,其中a是偏斜,r1,r2是焦距,[u0,v0]是主点。 在这里,我们假设所有像素都是正方形。为了进行初始估计,我们设ξ=1,k1=k2=k3=k4=a=0,和(u0,v0)为图像中心坐标。 要找到广义焦长r=r1=r2的值,我们在每个棋盘的每一行角上迭代; 在每次迭代中,我们使用[1]中的方法获得r的初始估计,通过校正角落的图像坐标从2D-3D对应物估计相机姿态,并计算重投影误差。 我们找到了与最佳初始估计对应的最小重投影误差。 我们通过使用非线性优化来微调固有参数(内参)的初始估计,以最小化所有图像上的重投影误差之和,以及鲁棒的损失函数以最小化外部效应。 为了更快地优化,我们推导并使用分析Jacobian,将优化时间减少了〜100的因子(reduce the optimization time by a factor of 100.)。 对于每个相机,我们通常从100个图像中获得 0.2到0.4像素之间的 平均重投影误差估计,以用于估计内参。

IV. 相机外参标定

A. 单目 VO

我们为每个相机运行单目VO,以便一起获得一组相机运动,这是计算外参的初始估计的后续步骤所必需的。 我们的单目VO步骤与[10]中的步骤相似,但为了实时性能,我们使用五点算法[11]而不是八点算法;同时,我们不是使用三视图三角测量,我们使用线性三角测量来三角测量最后两个视图中的特征点,并检查确认第一个视图中得到的3D场景点的重投影误差不超过一个阈值,在我们的情况下该阈值为3像素。 当相应的odometry pose 距离拍摄最后一组关键帧的odometry pose 至少0.25米时,我们从所有摄像机中提取一组同步的关键帧。 随后,我们使用OpenCV的GPU SURF实现,来提取特征点及其描述符,使用距离比度量(distance ratio metric来匹配特征点,并通过几何验证查找内部特征点对应关系。对于与先前初始化的3D场景点不对应的每个内点特征点对,我们对这样的点对进行三角化; 否则,我们将已经初始化的3D场景点与对应点相关联。 我们通过PnP RANSAC的迭代形式找到当前相机姿态;(RANSAC的)初始估计集为前一个相机姿态的旋转分量,乘以由五点算法在几何验证期间估计的前一个和当前相机姿态之间的旋转,以及前一个相机姿态的平移。 在单眼VO的每次迭代中,我们使用滑动窗口捆绑调整(BA); 窗口包含10帧,我们在前3帧中保持相机姿势固定。 我们分别在图4和图5中显示了四个鱼眼相机的inlier特征点轨迹和估计的相机姿态。

B.Camera - Odometry Transform的初始估计

我们扩展了[7]的方法,以鲁棒地估计特征差环境中的每个摄像机测程变换;VO估计偶尔会中断是很常见的,结果是来自至少一个相机的几个具有不同尺度的稀疏地图。在第一步中,我们的方法通过最小化最小二乘代价函数(by minimizing a least-squares cost function),来解决相机-里程计的旋转(camera-odometry rotation)的俯仰-pitch和滚动-roll分量,如[7]所示。 在第二步中,我们通过最小化另一个最小二乘代价函数来解决相机测程旋转的偏航-yaw分量,相机-里程计的平移和所有稀疏图的尺度。 由于车辆运动是平面的,因此相机测程平移(camera-odometry translation)的Z分量是不可观察的。

对于每个相机,在第一步中,我们估计q_yx,在第二步中,我们估计q_z,,s_j, 这里j=1,...m, 其中是将相机帧变换为里程计(odemetry)帧的旋转四元数平移,q_z对应于偏航-yaw四元数,q_yx对应于俯仰翻滚(pitch-roll)四元数,sj是m个稀疏图中每个稀疏图的尺度。 我们首先使用四元数表示从众所周知的手眼问题开始:

其中是将里程计帧i,旋转到里程计帧 i+1的单位四元数(the unit quaternion),是将相机帧i,旋转到相机帧 i+1的单位四元数(the unit quaternion),是将相机帧旋转到里程计帧的单位四元数。

1)找到俯仰-滚动(pitch-roll)四元数

为了估计q_yx,我们将代入方程(1),并使用围绕z轴旋转的事实得到:

可以写成矩阵向量方程:(四元数的左乘L(*) 右乘R(*))

其中我们称之为S的矩阵是4×4矩阵,并且

我们对未知的q_yx有两个限制:(四元数的性质)

给定n≥2个运动,我们构建4n×4矩阵:

在没有噪音的情况下,该矩阵的 rank =2。 我们找到奇异值分解; 最后两个右奇异向量v3和v4,它们是v的最后两列跨越t的零空间:

我们使用方程5的两个约束来求解λ1和λ2,因此获得q_yx。

2)找偏航-yaw四元数、尺度-scales、平移translation

鉴于相机测程平移的z分量由于平面运动而不可观察,并且从方程(2)中删除第三行,我们有:

其中 α 是偏航-yaw,是向量的前两个元素,表示向量 的前两个元素。 我们将方程(8)重新整理成为矩阵向量方程:

其中

对于分别具有n1≥2,...,n_m≥2个运动的m个VO段,,我们建造2n×(2+2m)矩阵

其中矩阵对应于第j个VO段中的第i个运动,并且

为此,我们使用最小二乘方法找到,sj和aj的解。 我们估计了每个VO段的比例Sj,以及平移; 但是,我们有α的m个假设。 我们选择最小化成本函数的最佳假设:

然后,我们通过使用非线性优化来最小化上面提到的成本函数C,对j=1,...,m的qyx,α和sj的估计进行微调。

C. 3D 点的三角化

  • 对于每个相机,我们迭代每一帧,并且在每一帧中,我们找到当前帧(current frame)和最后两帧(last frame / second last frame)中可见的所有特征,并且不对应于先前初始化的3D场景点
  • 我们使用线性三角化[12 即MVG]对最后一帧(last)当前帧中的每个特征对应进行三角化; 如果得到的3D场景点的重投影误差,在倒数第二帧(second last frame)中不超过3像素的阈值,则我们将3D场景点与倒数第二帧中的相应特征相关联。
  • 随后,每个特征轨迹(feature track)与前三个特征已经对应的相同3D场景点相关联。 我们使用Ceres Solver[13]运行捆绑调整(BA),该调整通过最小化所有相机的所有帧的图像重投影误差来优化外部和3D场景点。

D. 查找局部相机间特征点对应关系

我们按增加时间戳的顺序迭代每个里程表姿态(odometry pose),并为每个摄像机维护局部帧历史记录; 一个摄像机的局部帧历史记录的长度,由车辆移动的距离定义,这段距离发生在 当前帧中观察到的大量特征,逐渐被任何其他摄像机的帧中看到 之前。hereto

在每个里程表姿态下,对于每对可能的相机,我们将第一个相机当前帧中的特征与第二个相机帧历史中的特征匹配,并在历史中找到产生最高数量的内特征点对应的帧。 在特征匹配之前,图像对在公共图像平面上进行校正,该公共图像平面对应于第一相机姿态与第二相机姿态之间的平均旋转; 使用当前的外参估计里程表姿态计算相机姿态。 右相机和前相机之间的校正图像对的示例如图6所示。 该校正步骤是确保大量的内特征点对应; 相比之下,我们在失真和未校正的图像之间获得非常少的内部特征点对应关系。hereto

我们通过将对应于第一相机的地图中的3D场景点投影到第一校正帧中,并对第二相机执行相同操作,找到对应于地图中的3D场景点的Inlier特征对应的子集。 对于每个内部特征对应,我们找到最近投影的3D场景点对; 如果特征点与相应投影的3D场景点之间的图像距离超过2像素,我们将拒绝特征对应关系。 我们在图7中显示了与相关的3D场景点的内部特征对应的示例。

这一步对于找到在全球范围内彼此一致的所有最佳相机测程变换至关重要。

E. Loop Closures

F. Full Bundle Adjustment

V. 试验和结果

VI. 结论

参考文献

  • [7] C. Guo, F. Mirzaei, and S. Roumeliotis, An Analytical Least-Squares Solution to the Odometer-Camera Extrinsic Calibration Problem, In Proc. International Conference on Robotics and Automation, 2012. (本文就 相机对里程计的外参标定模块,拓展了该方法)
  • [10] B. Kitt, R. Rehder, A. Chambers, M. Schoenbein, H. Lategahn, and S. Singh, Monocular Visual Odometry using a Planar Road Model to Solve Scale Ambiguity, In Proc. European Conference on Mobile Robots, 2011.
  • [11] D. Nister, An Effificient Solution to the Five-Point Relative Pose Problem, In IEEE Trans. on Pattern Analysis and Machine Intelligence, 26(6):756-770, 2004.
  • [12] R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, Cambridge University Press, 2004.

CamOdoCal_2013-IROS_多个普通相机和里程计的内参和外参自动标定相关推荐

  1. 双目视觉惯性里程计的在线初始化与自标定算法

    标题:An Online Initialization and Self-Calibration Method for Stereo Visual-Inertial Odometry 期刊:IEEE ...

  2. 单目视觉里程计性能估计

    单目视觉里程计性能估计 D3VO: Deep Depth, Deep Pose and Deep Uncertaintyfor Monocular Visual Odometry 论文地址:https ...

  3. 【radar】毫米波雷达相关数据集(检测、跟踪、里程计、SLAM、定位、场景识别)总结(1)

    毫米波雷达相关数据集(检测.跟踪.里程计.SLAM.定位.场景识别)总结(1) Radar相关产品和链接 TI AWR2243 Arbe Phoenix Continental ARS 540 Ocu ...

  4. FAST-LIO2:快速直接的激光雷达与惯导里程计

    点云PCL免费知识星球,点云论文速读. 文章:FAST-LIO2: Fast Direct LiDAR-inertial Odometry 作者: Wei Xu∗1 , Yixi Cai∗1 , Do ...

  5. 面向固态激光雷达和惯导的里程计和建图

    点云PCL免费知识星球,点云论文速读. 文章:Towards High-Performance Solid-State-LiDAR-Inertial Odometry and Mapping 作者:K ...

  6. F-LOAM:基于激光雷达的快速里程计和建图

    文章:F-LOAM : Fast LiDAR Odometry and Mapping 作者:Han Wang, Chen Wang, Chun-Lin Chen, and Lihua Xie git ...

  7. 自动驾驶中高效的激光雷达里程计

    标题:Efficient LiDAR Odometry for Autonomous Driving 作者:Xin Zheng, Jianke Zhu, Senior Member, IEEE 排版: ...

  8. 基于平面几何精确且鲁棒的尺度恢复单目视觉里程计

    标题:Accurate and Robust Scale Recovery for Monocular Visual Odometry Based on Plane Geometry 作者:Rui T ...

  9. LIC Fusion 2.0:滑动窗口法平面特征跟踪的激光雷达惯性相机里程计

    点云PCL免费知识星球,点云论文速读. 标题:LIC-Fusion 2.0: LiDAR-Inertial-Camera Odometry with Sliding-Window Plane-Feat ...

  10. LIO-SAM: 紧耦合的激光与惯导里程计方案

    点云PCL免费知识星球,点云论文速读. 标题:LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 作者 ...

最新文章

  1. scrum回顾_Scrum和SAFe之间有什么不同
  2. npm 卸载_GitHub 收购 npm:天下开源是一家,有个爸爸叫微软
  3. 算法------------完全平方数(Java版本)
  4. 经典的Java面试题及回答集锦
  5. 【C++基础】自定义异常类与多重捕获
  6. C 语言 函数调用栈
  7. 吉士丁与新潮传媒达成亿级战略合作,打造国产奶酪新势力
  8. 原创《如何用vue来轻松的驾驭 html5 webapp的页面体验》
  9. netflix 开源_手工3D打印机,Netflix上的开源等
  10. 【agc004d】Teleporter
  11. pytorch框架快速测试你的模型结构是否存在问题并得到输出形状
  12. Linux下 vim代码编译器的使用
  13. php pdo查询sqlserver,php pdo sqlserver分页sql的处理
  14. DSA数字签名原理及python实现
  15. SAP中的client
  16. 断舍离------活成自己喜欢的样子
  17. 自发光材质、panner、sin——移动的光栅
  18. Solidity Integer Overflow and Underflow
  19. 楚留香 微信跟qq服务器,背靠QQ、微信的天刀手游,对上一梦江湖,赢面到底有多大?...
  20. 测试小故事83:世界很大

热门文章

  1. Binwalk 后门(固件)分析利器
  2. kafka 重新分配partition
  3. simple-word-Highlighter 支持网址正则表达式匹配
  4. navicate备份与还原数据库
  5. linux下GPIO的用户层操作(sysfs)
  6. RSA密钥的数据类型转换:由合法的string到PublicKey或PrivateKey
  7. Prism4翻译笔记(二)第二章:初始化Prism应用程序
  8. Linux 命令 速记
  9. 组合选择符 深入了解
  10. echart中线性渐变的应用