2D/3D相机手眼标定总结

news/2024/7/21 4:16:13 标签: 图像处理

1. 九点标定

在这里插入图片描述

九点标定法的本质: 无需进行相机内参标定,只能识别x,y坐标,属于2D平面标定,在标定过程中z是未知的
该算法的核心是仿射变换,即图像坐标系机器人坐标系2D仿射变换(注意这里并不是RT的刚体变换)。

由上篇文章射影变换的一种解法,可知仿射变换的基本公式:
在这里插入图片描述
有6个自由度,至少需要3组点才能解决,超过3组点,可以用非线性最小二乘优化。
无论是眼在手上,还是眼在手外,标定的步骤都是一样的:

  1. 相机拍摄一幅9点的图片,眼在手外时相机固定好直接拍摄,眼在手上时,控制机械手移动的固定位置(9点标定板正上方)进行拍摄;
  2. 求出标定点在图像坐标系的坐标 ( u , v ) (u,v) (u,v)
  3. 控制机械手,分别移动到9个点上,记录9个点的坐标 ( x , y ) (x,y) (x,y)
  4. 进行求解,halcon中使用vector_to_hom_mat2d算子,opencv可使用estimateRigidTransform接口。

求解后,就可以根据给出的像素点,得到机械手的点坐标,进而可以控制机械手去相应的位置了。

2. 2D传统手眼标定

2.1 原理

如下图所示,图(a)是眼在手上,图(b)是眼在手外。(图片来自《机器视觉算法及应用》)

  • 眼在手上,标定板放置在自由位置;
  • 眼在手外,标定板放置在机器人末端,和机器人绑定在一起。

在这里插入图片描述
上面的俩个图中,实线是已知的变换关系,虚线是未知的变换关系。
要求解的关键:

  • 眼在手上,求解的是相机末端工具(注意不是末端)的位姿变换关系,即 c t T _{c}^{t}\textrm{T} ctT,整体位姿关系为:
    o b T _{o}^{b}\textrm{T} obT = t b T _{t}^{b}\textrm{T} tbT c t T _{c}^{t}\textrm{T} ctT o c T _{o}^{c}\textrm{T} ocT
  • 眼在手外,求解的是相机基座的位姿变换关系,即 c b T _{c}^{b}\textrm{T} cbT,整体位姿关系为:
    o t T _{o}^{t}\textrm{T} otT = b t T _{b}^{t}\textrm{T} btT c b T _{c}^{b}\textrm{T} cbT o c T _{o}^{c}\textrm{T} ocT

注意,上面两个变换关系的公式有共同形式:
Y Y Y = A X B AXB AXB,这里A为工具和底座的变换关系,B为相机和标定板的关系,未知为X,即眼在手上的 c t T _{c}^{t}\textrm{T} ctT和眼在手外的 c b T _{c}^{b}\textrm{T} cbT,而Y在两种情况中是不变的
取两组不同的位姿,可以得到两个等式 Y Y Y = A i X B i A_{i}XB_{i} AiXBi Y Y Y = A j X B j A_{j}XB_{j} AjXBj,消除Y后,可得

A i X B i A_{i}XB_{i} AiXBi= A j X B j A_{j}XB_{j} AjXBj

变换位置:
A j − 1 A i X A_{j}^{-1}A_{i}X Aj1AiX= X B j B i − 1 XB_{j}B_{i}^{-1} XBjBi1,即AX = XB
如何解?
opencv:

void cv::calibrateHandEye (InputArrayOfArrays R_gripper2base, 
		InputArrayOfArrays t_gripper2base, 
		InputArrayOfArrays R_target2cam, 
		InputArrayOfArrays t_target2cam, 
		OutputArray R_cam2gripper, 
		OutputArray t_cam2gripper, 
		HandEyeCalibrationMethod method = CALIB_HAND_EYE_TSAI )

halcon:

calibrate_hand_eye()

2.2 用途

通过手眼标定拿到了相机和机械手的相对位姿变换关系,最后用来做什么呢?

对于引导或抓取场景,通过单目相机,我们是无法拿到物体的3D空间位姿的,也就不能做3D引导。但是某些情况下,可以做【2.5D引导】,比如halcon的find_planar_calib_deformable_model平面形变匹配算子,可以计算出平面物体在透视情况下的空间位姿。当然用的最多的还是上面的九点标定,,进行2D引导。

halcon的find_planar_calib_deformable_model算子,首先将标定板放到物体旁边,用CAD模型注册的边缘模板进行匹配,计算当前物体相对于相机的位姿。后续就可以进行匹配了。
在这里插入图片描述
匹配到的工件:
在这里插入图片描述

基本原理:
在这里插入图片描述

3.3D相机手眼标定

将下图中的标定板换成其他标定物,就可以进行3D手眼标定了。
在这里插入图片描述

3.1 结构光/双目/RGBD等相机

参考《机器视觉算法及应用》最后一章。

这种类型的相机进行手眼标定时,一次拍照就可以拿到物体的3D点云信息,可以通过点云匹配来获取物体相对于相机的位姿,也就是 o c T _{o}^{c}\textrm{T} ocT是可以通过点云匹配拿到的。

标定物的选取:

  • 已知实际尺寸的CAD标准标定物,通过拍摄得到的点云,和标准点云匹配;
  • 抓取场景可以用实际要抓取的物体去制定模型模板,然后进行匹配。

比如halcon中的find_surface_model就可以进行点云匹配。

之后的过程和上面的传统相机手眼标定是一样的,需要进行多个位姿的拍照来进行计算。

3.2 线激光轮廓相机

线激光轮廓相机和上面的结构光等相机获取点云的原理是不一样的,需要进行多次扫描才能拿到物体的点云信息。
进行手眼标定时,具目前的资料,有三种方法进行手眼标定:

  1. 和结构光一样,扫描模板标定物进行点云匹配,求 o c T _{o}^{c}\textrm{T} ocT,注意需要用不同的位姿拍摄扫描多组;
  2. 本思路未验证)类似上面的9点标定,可以扫描一个9点(或多点)的标定物获得点在相机坐标系中的坐标(注意上面是像素坐标系),然后用机械手的工具针碰触9个点,拿到空间坐标,最后解3D空间的仿射变换。
  3. 拍摄标准球,使用两步法计算,精度应该是比较差的(未验证)。参考论文《基于线激光轮廓仪的机器人3D视觉定位系统设计 ——周泽西》。

http://www.niftyadmin.cn/n/5408650.html

相关文章

【Leetcode每日一题】 前缀和 - 寻找数组的中心下标(难度⭐)(28)

1. 题目解析 题目链接:724. 寻找数组的中心下标 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于计算题目所给数组是否存在某一个元素左边的和等于右边的和,存在返回那个元素下标即可,不…

我的第②个出海工具站 - 2024年50个出海工具站计划

为了大家更好的使用各种出海工具。我上线了一版 出海工具导航 站点,经常使用的可以收藏下,我文内使用的网站都集成在了这里,非常使用。 随着AIGC的到来,2024年到了海外工具回暖的一年。今年计划上线50款出海工具站计划&#xff0c…

【学习心得】响应数据加密的原理与逆向思路

一、什么是响应数据加密? 响应数据加密是常见的反爬手段的一种,它是指服务器返回的不是明文数据,而是加密后的数据。这种密文数据可以被JS解密进而渲染在浏览器中让人们看到。 它的原理和过程图如下: 二、响应数据加密的逆向思路 …

Python爬虫实战第三例【三】(下)

零.前情提要: 没有看上一章的小伙伴,建议先去看上一章,避免有些知识点不连贯 地址:Python爬虫实战第三例【三】【上】-CSDN博客 在上一章,我们经过分析.m3u8文件和.ts文件后,成功爬取到了所有.ts文件的文…

8、Redis-Jedis、Lettuce和一个Demo

目录 一、Jedis 二、Lettuce 三、一个Demo Java集成Redis主要有3个方案:Jedis、Lettuce和Redisson。 其中,Jedis、Lettuce侧重于单例Redis,而Redisson侧重于分布式服务。 项目资源在文末 一、Jedis 1、创建SpringBoot项目 2、引入依赖 …

Spring启动后默认注入的ConfigurableEnvironment,可用于获取系统属性

ConfigurableEnvironment对象 Spring Boot在启动时会自动注入默认的ConfigurableEnvironment对象。ConfigurableEnvironment是Spring Framework中的接口,它代表了Spring应用程序的环境配置,包括配置属性、配置文件等信息。 在Spring Boot应用程序启动时,Spring Boot会自动创…

无人机/飞控--ArduPilot、PX4学习历程记录(1)

本篇博客用来记录个人学习记录,存放各种文章链接、视频链接、学习历程、实验过程和结果等等.... 最近在整无人机项目,接触一下从来没有接触过的飞控...(听着就头晕),本人纯小白。 目录 PX4、Pixhawk、APM、ArduPilot、Dronecode Dronekit…

小迪安全32WEB 攻防-通用漏洞文件上传二次渲染.htaccess变异免杀

#知识点: 1、文件上传-二次渲染 2、文件上传-简单免杀变异 3、文件上传-.htaccess 妙用 4、文件上传-PHP 语言特性 #详细点: 1、检测层面:前端,后端等 2、检测内容:文件头,完整性&#xff0c…