详解机器人标定

article/2025/9/22 2:54:13

相机固定不动, 上往下看引导机器人移动

机器人与视觉标定理论详解

相机固定不动, 上往下看引导机器人移动

1.相机非线性校正

使用标定板做非线性校正

2.相机与机器人做9点标定

可以使用机器人扎9个点,或者机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,然后标定

3.计算机器人的旋转中心

机器人抓取工件分别旋转三个角度摆放到相机视野内,相机可以得到三个坐标值,通过三个坐标值拟合圆获得圆心坐标即为旋转中心

4.相机通过公式计算得出最终的输出结果

(rx0, ry0)为旋转中心,( x, y)为被旋转的点,(x0,y0)旋转后的点

x0= cos (a) * (x-rx0) – sin (a) * (y-ry0) +rx0

y0= cos (a) * (y-ry0) + sin (a) * (x-rx0) +ry0

相机固定不动, 下往上看

1.相机非线性校正

使用机器人吸起标定板做非线性校正

2.相机与机器人做9点标定

可以使用实物标定,机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,然后标定。

参考上面的上往下看。

相机固定在机器人上,离旋转中心较近

1、相机非线性矫正

2、相机与机器人做9点标定

可以使用实物标定,机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,(机器人每次需要回到固定位置拍照),然后标定

3、计算机器人的旋转中心

机器人抓取工件分别旋转三个角度摆放到相机视野内,相机可以得到三个坐标值,通过三个坐标值拟合圆获得圆心坐标即为旋转中心

4、相机通过公式计算得出最终输出结果

相机固定在机器人上,离旋转中心很远

1、相机非线性矫正

2、相机与机器人做9点标定

3、计算机器人的旋转中心

4、相机通过公式计算得出最终输出结果

注:由于选择中心距离视野很远,通常拟合出来的旋转中心存在比较大的误差,给定位精度造成影响。

分离轴

分离轴的设计方式有很多,XY + θ, X+Y θ, X θ+Y….,具体状况具体分析,目的是要找到旋转中心,做好9点标定。

1.相机非线性校正

2.相机与机器人做9点标定

3.计算机器人的旋转中心

4.相机通过公式计算得出最终的输出结果

旋转中心标定说明

旋转中心方法用于所有机器人与视觉配合场景

方法:计算工件实际发生的偏移量和旋转量,结合机器人的旋转中心进行二次补偿后,把补偿量

发送给机器人,然后机器人把补偿量补偿后进行抓取或放置即可;

点坐标旋转方法

计算某个点绕另外一点旋转一定角度后的坐标,如图:

机器人与视觉标定理论详解

A(x,y)绕B(rx0,ry0)旋转a度后的位置为C(x0,y0),则有如下关系式:

x0= cos (a) * (x-rx0) – sin (a) * (y-ry0) +rx0

y0= cos (a) * (y-ry0) + sin (a) * (x-rx0) +ry0

下面计算所有的旋转和偏移量均是基于上面的公式

旋转中心标定说明

STD方法的计算:

CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0

CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0

X’= cos (a) * (X0-Cx0) – sin (a) * (Y0-Cy0) + Cx0

Y’= cos (a) * (Y0-Cy0) – sin (a) * (X0-Cx0) + Cy0

CDx=X1-X’

Cdy=Y1-Y’

这里是机器人在取料之前,先把自己的角度补正到与 物料当前角度一致,到(X’,Y’)位置处,然后移动 CDx,Cdy,与物料位置也重合,然后去取料。这样就保证了每次取料后,物料相对于机器人的位置 一致,因此直接往目标位置放就可以。这种方式由于是取物料的时候调整位置,因此适用于 相机固定在机械手上、相机固定安装从上往下看的方式。如果相机固定安装从下往上看,由于机器人这时候已经取完料了,就不适合使用了。

特别注意

这里计算到的Cdx和Cdy一定要补偿到机器人的取料位置里,不能补偿到 放料位置。旋转中心方法计算到的偏差可以直接补偿到放料位置。原因如下:

旋转中心法的计算:

(X,Y)是定位到的产品位置,(GX,GY)是标准模板位置,(X’,Y’)是补偿了角度后的新位置,则:

X’ = cos θ * (X-Xo) – sin θ *(Y-Yo) + Xo;

Y’ = cos θ* (Y-Yo) + sin θ* (X-Xo) + Yo;

Offset X=X’-GX

Offset Y=Y’-GY

Offset Theta= θ

求旋转中心方法

当相机FOV与旋转中心很近,可以用旋转3点以上拟合一个圆求圆心

当相机FOV与旋转中心很远,使用旋转3或多个点求圆心,准确性会很差。

解法

(X0,Y0)为旋转中心, (X1,Y1)及(X2,Y2)为工件在视野中旋转角度a的前后坐标,(Xt,Yt)为两点连线的延长。

d = √(X2-X1)^2 + (Y2-Y1)^2

角度a

R = d/2/sin(a/2)

R/d = (Xt-X1)/(X2-X1)

R/d = (Yt-Y1)/(Y2-Y1)

Xt = (1-R/d)*X1 + (R/d)*X2

Yt = (1-R/d)*Y1 + (R/d)*Y2

X0= cos (90-a/2) * (Xt-X1) – sin (90-a/2) * (Yt-Y1) +X1

Y0= cos (90-a/2) * (Yt-Y1) + sin (90-a/2) * (Xt-X1) +Y1

角度:X+  Y+ 为正,反之为负

旋转中心标定计算补偿

CDx Cdy计算过程,旋转角度a

机器人与视觉标定理论详解

CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0

= (cos (a) -1) * (Cx0-X0) – sin (a) * (Cy0-Y0) + MDx

= (cos (a) -1) * StDx- sin (a) * StDy+ MDx

CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0

= (cos (a) -1) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Mdy

= (cos (a) -1) * StDy + sin (a) * StDx + Mdy

从公式中可以看出StDx = Cx0-X0,StDy = Cy0-Y0是个常量,MDx和Mdy是每次拍照是工件(Mark)的坐标与标准位置工件(Mark)的差值;

StDx与StDy怎么计算呢?蓝色的为一个二元一次方程,我们需要旋转一个角度即可计算出;

如果计算出StDx和StDy则在运行时,直接带入上述公式,可以很快计算出CDx,Cdy这样给出Robot的偏移量了,而不需要计算旋转中心的确切坐标了;

如何求解StDx和StDy

StDx,StDy计算过程,首先Robot在拍照点旋转一定角度a(一定是Robot给出)

机器人与视觉标定理论详解

CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0

= (cos (a) -1) * (Cx0-X0) – sin (a) * (Cy0-Y0) + MDx

= (cos (a) -1) * StDx- sin (a) * StDy+ MDx

CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0

= (cos (a) -1) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Mdy

= (cos (a) -1) * StDy + sin (a) * StDx + Mdy

下面介绍如何求解StDx和StDy,旋转一定角度a后MDx和Mdy则为确定值,cos(a)和sin(a)为确定值

0= (cos (a) -1) * StDx- sin (a) * StDy+ MDx

0= (cos (a) -1) * StDy + sin (a) * StDx + Mdy

StDx = -0.5*(Mdx*(cos(a)-1)+Mdy*sin(a)) / (1-cos(a))

StDy = 0.5*(Mdx*sin(a)-Mdy*(cos(a)-1))/(1-cos(a))

a是旋转标准的角度

Mdx=X1-X0,即旋转后Mark坐标与训练模板的mark坐标

声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系。


http://chatgpt.dhexx.cn/article/JrQCTOGO.shtml

相关文章

标定系列二、9点标定以及5点圆心标定过程(代码详解)

一、九点标定过程 1.算法原理 9点标定就是通过9个点计算出相机坐标系到机械手坐标系下的一个仿射变换,(实际上空间中的二维平面的仿射变换只需要3个点就足够了)。在实际应用过程中,需要获取像素下特征点的坐标和对应机械手的坐标…

相机标定-张正友棋盘格标定法

目录 1.针孔相机模型 2.相机成像过程 2.1 各个坐标系之间的转换 2.1.1 图像坐标系到像素坐标系 2.1.2 相机坐标系到图像坐标系 2.1.3世界坐标系到相机坐标系 2.1.4世界坐标系到像素坐标系 3.畸变与畸变矫正 3.1 畸变 3.2 畸变公式 4.相机标定原理 5.张正友标定法介…

相机标定原理———标定原理介绍

声明:欢迎任何人和组织转载本blog中文章,但必须标记文章原始链接和作者信息。 本文链接:http://blog.csdn.net/li_007/archive/2010/10/30/5976261.aspx 开拓进取的小乌龟------->CSDN点滴点点滴滴Blog 由于在word中包含大量的公式和矩…

VisionMaster标定板标定

选择工具 标定板生成工具我比较喜欢用海康自己研发的标2定板 具体参数看自己需求 最后选择0 导出图像就行 一般不需要cad图纸 保存 去路径下打印看看你的按照路径 我的是D:\VisionMasterV4.2.0\VisionMaster4.2.0\Applications\Tools 找到这张图片 不要改变比例直接打印 …

9点标定方法

9点标定,旋转标定 1.9点标定2.旋转标定3.公式推导过程 1.9点标定 夹具夹取产品或者标定块,选取一个特征,开始进行标定 X轴、Y轴移动一个位置,记录轴的物理坐标:(Qx1,Qy1) 提取图像中…

相机标定(一)

相机标定 相机成像模型参考坐标系针孔模型畸变模型相机参数 相机成像模型 参考坐标系 通常畸变分为两种,径向畸变和切向畸变。 图像像素坐标系:表示场景中三维点在图像平面上的投影,其坐标原点在CCD图像平面的左上角,u轴平行于…

张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)

使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择…

标定工具介绍

作者 | WenDao_Engineer 微信公众号 | 闻道工程师之家 在前面标定相关的系列文章文对标定的基本介绍、标定的实现过程以及标定所涉及的相关协议都进行了介绍,从今天开始我们介绍一下标定实现过程中的标定工具相关知识。 标定系统组成 我们已经知道通过CCP或者XCP…

单目相机标定实现--张正友标定法

文章目录 一:相机坐标系,像素平面坐标系,世界坐标系,归一化坐标系介绍1:概述公式 二:实现1:整体流程4:求出每张图像的单应性矩阵并用LMA优化5:求解理想无畸变情况下的摄像机的内参数…

摄像机标定和立体标定

尝试用OpenCV来实现立体视觉也有一段时间了,主要的参考资料就是Learning OpenCV十一、十二章和OpenCV论坛上一些前辈的讨论。过程中磕磕碰碰,走了不少弯路,终于在前不久解决了最头大的问题,把整个标定、校准、匹配的流程调试成功。…

相机标定——张正友棋盘格标定法

目录 为什么需要相机标定? 相机标定可以做什么? 相机标定后可以得到什么? 什么情况下需要借助相机标定的方法? 相机标定的原理 实现相机标定的方法 为什么需要相机标定? 一个是由于每个镜头的在生产和组装过程中的…

标定方法——张正友标定法

标定 标定是联系世界坐标与像素坐标的环节,目的是求出相机和投影仪的内外参数,对于3D成像来说至关重要 张正友标定法 通过各种方法的对比,为了方便,我们采用的是张正友标定。我们主要对张正友标定法的原理进行介绍,…

笔记总结-相机标定(Camera calibration)原理、步骤

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

如何实现标定?

上一篇《什么是标定》对标定进行了初步的介绍,让大家有了一个感性的认识。标定是一项非常复杂的工作的,涉及方方面面的知识非常多,本文将对标定具体实现的过程进行介绍。 控制器对标定的支持 在前面的文章中介绍了控制算法是在软件编程的时候…

标定的分类(一)

关于标定的分类及说明(一) 现在工业机器视觉和计算机视觉大量应用标定算法,但是对于初学者来说,存在概念模糊,理论理解错误的现状,因此,需要对标定进行梳理,防止大家在学习过程中混淆各种标定概念。话不多…

什么是标定?

标定这两个字在汽车行业里的工程师基本都听过,但是在其他行业里大部分人都不知道什么是标定,甚至都没有听说过标定。什么是标定?举一个常见的例子,家里买了电视,连接网络就可以看节目了,与其他任何环境影响…

JMS及其API介绍

Java Message Service是java ee的规范之一,可以用来发送异步消息,在某些场景下,可以作为不同系统,或者不同模块之间的集成方式。 可以类比为通过数据库来集成的方式,模块A完成逻辑以后,往数据库插…

Springboot 整合 JMS

ActiveMQ JMS 仅支持 Java 平台。 由于 JMS 是一套标准,所以 SpringBoot 整合 JMS 必然是整合 JMS 的某一个实现。 Apache ActiveMQ 是一个开源的消息中间件,完全支持 JMS 1.1 规范,支持多种编程语言( C、C、C#、Delphi、Erlang、AdobeFla…

1.JMS规范介绍

目录 1.什么是JMS规范 2.什么是MOM 3.MOM的特点 4.JMS和MOM的关联 5.JMS的体系结构 6.JMS常见基本概念 7.JMS 的事务性会话和非事务性会话 8.JMS消息的可靠性机制 1.什么是JMS规范 Java 消息服务(Java Message Service)是 java 平台中关于面向消息…

JMS 示例

JMS 开发示例。 使用weblogic8作为jms server。 1、在weblogic中配置JMS。 配置JMS connection factory 配置JMS File Store 配置JMS Server 配置JMS destination 2、创建JMS Sender package jms; import java.util.Hashtable; import javax.jms.JMSE