3D手眼标定
为什么叫3D手眼标定? 因为工业视觉上,有个常用标定算法叫“九点标定”,那个算法比较简单,求解的“平面上的映射关系”。本文的3D手眼标定既可以用于2D,也可以用于3D。
一般来说,手眼标定之前,已经做好了相机标定,我这里将手眼标定和单目标定放在一起做。因为手眼标定需要知道相机相邻两帧的位姿,我这里直接用OpenCV单目标定API: calibrateCamera可直接输出相机位姿;也就是做手眼标定的同时,也将单目标定做了。你可能会说:手眼标定一般采集20组数据就够了,而单目标定需要将近一百张棋盘;其实,如果用高精度定制的标定板,20张棋盘也足够了(无论是Halcon、Matlab标定工具箱、还是OpenCV标定,经过我实践,精度都可以到达0.0x个像素级别;其中,Halcon精度是最高的,它用的不是张正友棋盘法,是TSAI两步法。TSAI这个人比较叼,在下文的手眼矩阵求解过程中,还会见到他)。
有关于提前做了相机标定,再做手眼标定也是可以的。这情况下,也可以借助棋盘求解相机位姿,其实就是构建PNP问题。好了,先看以下三幅图,了解下手眼矩阵 AX=XB (眼在手上)的推导:
完整PPT:链接:https://pan.baidu.com/s/1pmRkmbsvR6CiVjm2cLOKuQ 提取码:l94b
到此,应该知道,手眼标定的核心问题就是求解矩阵:AX=XB,其中A是从示教器上读取的位姿并作compose,B与相机运动位姿有关。如下图,是一张从机械手臂示教器上读取的数据,(x y z A B C) 表示机械手臂末端到基坐标系的位姿;其中 x y z表示位移, A B C表示姿态,这里用的是欧拉角(旋转次序ZYZ,ZYZ是什么鬼次序,参考:https://blog.csdn.net/uranus1992/article/details/85788205),不同品牌机械手臂可能姿态形式不同,不过最终都要依据相应公式转为旋转矩阵。
好了,我们已经知道公式,现在开始可以撸代码了,这里适用OpenCV、Eigen等库进行。
标定算法(TSAI、Navy)对比,代码实现:链接:https://pan.baidu.com/s/1NlZ_3HkrZdyrSEz8__kpyw 提取码:a0wf 复制这段内容后打开百度网盘手机App,操作更方便哦
参考资料:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!