来源:点云PCL
文章:A Graph-based Optimization Framework for Hand-Eye Calibration for Multi-Camera Setups
作者:Daniele Evangelista*, Emilio Olivastri*, Davide Allegro, Emanuele Menegatti and Alberto Pretto
代码:https://bitbucket.org/freelist/gm_handeye.git
摘要
手眼标定是估计参考坐标系(通常是机械臂或其夹持器的基座)与一个或多个摄像机的参考坐标系之间的空间变换的问题。通常这种标定被解决为非线性优化问题,但很少利用问题本身的潜在图结构。实际上手眼标定问题可以看作是同时定位与建图(SLAM)问题的一个实例。受到这一事实的启发,在这项工作中,我们提出了一种位姿图方法来解决手眼标定问题,该方法扩展了最近的一种先进解决方案,有两种不同的方式:
i)通过将解决方案应用于眼在手外的情况;
ii)通过涵盖多摄像头机器人设置,所提出的方法在模拟环境中针对标准手眼标定方法进行了验证。此外,还展示了一个真实应用。在这两种情景下,所提出的方法都优于其他替代方法。并且在本文中发布了一个用于多摄像头设置的基于图优化的开源实现框架。
主要贡献
稳健地感知周围环境对于工业中智能机器人工作单元的开发和部署至关重要。在工业机器人应用中,感知设备(例如摄像头)被广泛用于执行涉及机器人臂的复杂任务,如视觉检查]和抓取物体。然而,摄像头提供的信息通常是相对于它们自己的坐标系表示的。为了能够基于这种视觉信息控制机器人臂,首先需要精确计算摄像头相对于机器人夹持器、机器人基座或工作单元的位置。这个过程被称为手眼标定,被定义为确定机器人参考坐标系(例如机器人基座或末端执行器坐标系)与摄像头参考坐标系之间的空间变换的过程。手眼标定问题可以分为两类:
• 眼在手上(Eye-in-hand):摄像头被刚性安装在机器人手腕上;
• 眼在手外(Eye-on-base):一个或多个摄像头固定,而机械臂在移动(例如,图1)。
图1. 多摄像头眼到基座标定配置示意图。所提出的手眼标定的目标是计算每个摄像头在参考坐标系𝑊中的位置,即图中的变换𝑊𝑇𝐶1...𝐶3。
有各种各样的方法可以解决这个问题,其中许多基于全局优化,以最小化特定数量,例如几何量(如平移和旋转误差)或视觉误差(如重新投影误差)。然而,很少有人利用图优化结构。
图2. 眼在手外标定设置。在这里,手眼标定的目标是计算摄像头在参考坐标系𝑊中的位置,即图中的变换𝑊𝑇𝐶。
本工作的主要贡献如下:
(i)所提出的方法通过实现一个基于图优化的解决方案来扩展最近的一种先进方法,以解决眼在手外的配置(图2);
(ii)我们的方法还涵盖了多摄像头设置(图1);因此,实现了一个通用和统一的基于图优化的手眼标定框架;(iii)对所提出方法进行了详尽的评估。评估主要在模拟环境中进行,可以测试对视觉和几何噪声的稳健性。
所提出的方法优于几种常用的标定方法,证明在标定数据中高噪声水平下具有鲁棒性。我们还在实际设置中测试了我们的方法,确认了在模拟中获得的令人信服的结果;
(iv)本文提供了所提出的手眼标定方法的开源实现,可以在以下网址找到:https://bitbucket.org/freelist/gm_handeye
内容概述
这里介绍了所提出方法的细节概述。如前所述,本工作在两个主要方向上扩展了[8],这两个方向将在下文中进行解释:单摄像头和多摄像头的眼在手外的标定。通过这种方式,我们能够提供一个完整的框架,拥有必要的工具来满足机器人工业应用中出现的所有标定需求。
单摄像头眼在手外标定
在这里介绍符号表示:
• 𝑊:世界参考坐标系,通常位于机器人的基座上;
• 𝐻:手参考坐标系,位于机器人的末端执行器上;
• 𝐵:棋盘格参考坐标系;
• 𝐶:摄像头参考坐标系;
而变换为:
• 𝑊𝑇𝐻:表示末端执行器在世界参考坐标系中的位姿的等距变换;
• 𝐻𝑇𝐵:表示棋盘格在末端执行器参考坐标系中的位姿的等距变换;
• 𝐶𝑇𝐵:表示棋盘格在摄像头参考坐标系中的位姿的等距变换;
• 𝑊𝑇𝐶:表示摄像头在世界参考坐标系中的位姿的等距变换。
图3显示了基于图的基中之眼标定的结构。使用[8]中的符号表示:圆圈表示需要估计的状态变量,而六边形表示固定参数,如𝐾和𝑃1..𝑍,分别表示相机矩阵和棋盘格的角点在它们的参考坐标系中的表示。𝑀表示用于标定的观测次数,即用于标定的图像和机器人姿势。
图2:系统结构,有两个子模块:局部里程计(蓝色方框),与前一图像进行比较;闭环检测(黄色方框),与几乎所有前一图像进行比较,并通过阈值设定进行筛选(由黑色菱形表示)
多摄像头眼在手外标定
如果机器人被多个静态摄像头观察到,可以多次重复上述算法。另一方面,运行一个执行单摄像头标定的算法𝑁次,其中𝑁是工作区域中存在的摄像头数量,是一个次优解,因为在优化中,不同摄像头之间的交叉观察并没有被因式分解。考虑到工作区域中有𝑁个摄像头,如图1所示,需要引入一些更多的符号表示:
• 𝐶𝑑𝑇𝐶𝑎:表示第𝑎个摄像头在第𝑑个摄像头参考坐标系中的位姿的等距变换;
• 𝐶𝑎𝑇𝐵:表示棋盘格在第𝑎个摄像头参考坐标系中的位姿的等距变换;
• 𝑊𝑇𝐶𝑎:表示第𝑎个摄像头在世界参考坐标系中的位姿的等距变换。
多摄像头模型的起点仅仅是将单摄像头模型𝑁次堆叠,以表示摄像头的数量。在图4中,为了便于图形表示,一些顶点和边已经被分组在一起。
实验
我们通过在视觉和几何扰动下对提出的方法进行测试,展示了其健壮性和估计精度。特别是,我们对棋盘格角点的检测添加了噪声,从而模拟了标定图案的错误检测(例如,使用低分辨率摄像头时的情况),并且还对用于标定的机器人位姿添加了噪声。提出的方法已经与以下方法进行了对比。在图表中,我们通过报告每种方法的第一作者来命名它们。这些替代方法是通过分别对每个摄像头进行标定,然后对误差进行平均来进行测试的。采用这种实验方法是因为这些替代方法不能直接用于多摄像头标定。评估还重点关注了我们的多摄像头标定方法与将提出的单摄像头标定重复应用于各个摄像头的对比,这是为了证明多摄像头标定框架的健壮性和提高的准确性。
A. 人工合成数据的实验
我们采用了与[8]中提出的相同评估方法,在模拟条件下测试了我们的方法,使用了三种不同的噪声源:视觉、平移和旋转。这个评估协议旨在测试在受干扰的视觉条件下标定的健壮性(即,在标定图案的角点检测中引入噪声),并且还用于测试在机器人姿势中添加附加几何噪声时的优化准确性和收敛能力。使用了Gazebo2模拟器收集了模拟数据,在其中实现了一个模拟工作单元。所提出的工作单元由一个工业机器人组成,装载标定图案,并被五个外部摄像头包围,就像典型的多摄像头眼标定设置一样。通过随机采样机器人工作空间,选择了一组150个机器人姿势,以均匀地覆盖每个摄像头的视场。
这次评估的结果报告在图5和图6中。特别是在图5中,绘制了所有标定方法的性能,而在图6中仅报告了我们的单摄像头和多摄像头基于图形的标定方法的结果。结果显示,我们提出的方法在平移和旋转误差方面在强扰动条件下也能取得良好的结果,证明它与其他方法相比更为稳健。提出的基于图形的单摄像头眼标定(即图5和图6中的GRAPH SINGLE)通常优于所有其他测试方法。此外,我们的多摄像头标定手眼算法(即图5和图6中的GRAPH MULTI)是表现最佳的方法,特别是在标定数据中存在高水平的噪声时。
B. 实际环境的实验
我们还在真实的机器人环境中验证了所提出的算法。设置包括一个Franka Emika Panda3机器人机械手和三个Kinect2摄像头(仅使用RGB图像),如图7和图8所示。与模拟评估不同,模拟评估中有地面真实值可用,而在实际环境中,每个摄像头的绝对位姿事先是未知的。因此,在实际设置中进行测试时,采用了重新投影误差作为度量标准。
在表I中报告了所有方法的结果。我们的方法能够正确标定设置中的所有摄像头,甚至在具有挑战性的光照条件下,例如摄像头#1和#3(参见图7)。大多数经过测试的方法无法收敛到低的重新投影误差解,而我们的方法提供了明显更低的误差。
总结
本文提出了一种基于姿态图的解决方案来解决手眼标定问题,扩展了先前的最新工作[8],在两个不同的方向上进行了扩展:
通过对具有一个摄像头的基于眼到基座的设置的解决方案进行了构建;
通过将基于眼到基座的标定扩展到多摄像头设置。为了验证所提出的系统,我们采用了与[8]和[29]中提出的相同的实验协议。
所提出的方法在标定数据受到视觉和几何误差影响时表现出鲁棒性。与传统解决方案相比,实现的姿态图优化在几何误差方面(即平移和旋转)的精度更高。当在实际的手眼标定基准测试中进行测试时,所提出的方法也在鲁棒性和准确性方面表现出色,其中绝对的真实地面真值是不可用的,准确性是通过重新投影误差来衡量的。值得注意的是,所提出的方法,就像用于实验的其他手眼标定方法一样,没有考虑由重力、关节和连接部分的灵活性引起的动态效应的影响。这可能会影响机器人机械手的精度和精确性,并且必须采用适当的动态标定技术进行考虑。作者认为,这种类型的标定可以与所提出的手眼标定方法相同的基于图形的结构进行构建,而且可以作为未来工作的一部分,在这个领域中提出更通用的标定过程。此外,所提出的基于图形的形式化方法可以在未来的研究中进一步扩展,以解决更复杂的问题,如多机器人多摄像头设置的标定。
—END—高效学习3D视觉三部曲
第一步 加入行业交流群,保持技术的先进性
目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

第二步 加入知识星球,问题及时得到解答
针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」
学习3D视觉核心技术,扫描查看,3天内无条件退款
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行
如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com
基础课程:
[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]
工业3D视觉方向课程:
[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]
SLAM方向课程:
[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战
[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化
[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析
[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)
视觉三维重建
[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进)
自动驾驶方向课程:
[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)
[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程
[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)