关于标定,旋转标定,旋转纠偏

在这里插入图片描述

1、机器人吸取电路板,移动到拍照位置,并在电路板上找一个标记点,并且,通过机器人示教把当前电路板能够准确的放入到目标位置。

2、机器人吸取电路板吸取电路板,在x,y方向进行移动,总共移动4个位置,记录4个位置的机器人的坐标,以及拍摄图像
在这里插入图片描述

3、使用vp的CogCalibNpointToNpoint工具,并在蓝框填入标志点的像素坐标,红框填入对应的机器人坐标。

4.点运行完成标定功能。

5、完成标定后,整个流程如下
在这里插入图片描述

在模板匹配中把模板中心进行记录。然后,调整标定工具的校正原点
在这里插入图片描述

使得模板匹配的模板中心x,y坐标输出为0,0,表示当前吸取的电路板能够准确的放入模板位置

下次,再吸取电路板时,执行模板匹配后,输出的x,y坐标就是机器人应当移动的x,y的偏移量

这样x y 就计算完成了。

但往往,因为还有旋转。所以还要计算角度

机器人不用旋转中心进行标定
旋转中心标定方式的说明

在下面的图例中,红色为相机视野(FOV),黄色为工件,五星为Mark点。
在这里插入图片描述

(训练的标准位置)
在这里插入图片描述

(工件发生平移)
在这里插入图片描述

(工件发生旋转与平移)
在这里插入图片描述

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

方法 :计算工件实际发生的偏移量 和旋转,结合机器人的旋转中心进行二次补偿后 ,把补偿量 发送给机器人 ,然后机器人把补偿量进行抓取或放置即可。

计算 某个点绕另外一旋转定角度后的坐 标,如图 :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

在这里插入图片描述

下面的所有计算旋转与偏移量都是基于上面的公式。
在这里插入图片描述

{Cx,Cy } 旋转中心坐标; {Mx,My } 工件 Mark坐标。

{MDx,MDy},Mark偏移量。

{RDx,Rdy}, 发送给机器人的补偿量。

工件发生平移时,

在拍照位置进行拍照后 ,与开始训练标准位置时,Mark点成像会产生偏移。

Mark 偏移量 MDx =RDx;MDy =RDy ;

如上图即相机计算出的 Mark 点偏移量 ,可以直接补偿给机器人,然后进行抓取即可。
在这里插入图片描述

作为测试 ,可以机器人在拍照位置进行补偿后 ,Z轴不变然后再拍照 ,会获得和拍照位置一样的图像。

工件发生平移与旋转
在这里插入图片描述

工件发生平移和旋转时

在拍照位置进行后 ,与开始训练标准位置时 ,Mark 点成像会产生偏移;

Mark 偏移量 MDx #RDx, MDy#RDy ;如左上图即相机计算出的 MarkMark 点偏移量 ,不能直接补偿给机器人 ,需要计算出 RDx 和RDy,和RDr ,MDr 然后补偿给机器人 ,机器人补偿后才能进行抓取。

在这里插入图片描述

作为测试 ,可以机器人在拍照位置进行补偿后 ,Z轴不变然后再拍照 ,会获得和拍照位置一样的图像;

计算过程,旋转角度a
在这里插入图片描述

计算 CDx =Cx1– Cx0和 CDy =Cy1– Cy0

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

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

从公式中可以看出,补给机器人的偿量由:

旋转中心坐标( Cx0,Cy0 )

标准的工件 (Mark) 坐标点( X0,Y0)

工件移动后新的(Mark)坐标点

工件 (Mark) 旋转角度 a
在这里插入图片描述

所以利用旋转中心方法计算给机器人的补偿量时,首先要中心坐标,

但是在很多场景下计算旋转中心坐标时要么出了视野,要么转的角度范围太小等,拟合旋中心都存在误差,

导致补偿精不够

一定要计算旋转中心坐标吗?其实不需要。

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

实际操作的时候,感觉上面的文章有点难理解,就还是老老实实去算了圆心,例如让机器人旋转正15度,和负15度,得到两个新的坐标。3点求圆心坐标。

点求圆心:

struct POINT

{

public double X;

public double Y;

}

POINT RotateCenterCal(POINT p1, POINT p2, POINT p3, POINT ptCenter)

{

//将三点代入圆的方程

double a = 2 * (p2.X - p1.X);

double b = 2 * (p2.Y - p1.Y);

double c = p2.X * p2.X + p2.Y * p2.Y - p1.X * p1.X - p1.Y * p1.Y;

double d = 2 * (p3.X - p2.X);

double e = 2 * (p3.Y - p2.Y);

double f = p3.X * p3.X + p3.Y * p3.Y - p2.X * p2.X - p2.Y * p2.Y;

ptCenter.X = (b * f - e * c) / (b * d - e * a);

ptCenter.Y = (d * c - a * f) / (b * d - e * a);

return ptCenter;

}

之后可以根据圆心 以及当前取得到的坐标以及旋转量,倒推得到要旋转多少角度和移动多少坐标才能回正。
在这里插入图片描述

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

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

从公式中可以看出,补给机器人的偿量由:

旋转中心坐标( Cx0,Cy0 )

标准的工件 (Mark) 坐标点( X0,Y0)

工件移动后新的(Mark)坐标点

工件 (Mark) 旋转角度 a

代码: private void button3_Click(object sender, EventArgs e)

{ //根据圆心坐标 与角度, 以及原先的X,Y, 求旋转角度后的新坐标

POINT p1 = new POINT();

POINT p2 = new POINT();

POINT presult = new POINT();

p1.X = double.Parse(lastX.Text);

p1.Y = double.Parse(lastY.Text);

double jiaodu = double.Parse(lastjiaodu.Text);

jiaodu = -jiaodu;

// jiaodu = jiaodu * 180 / Math.PI; 无需转换成度数

p2.X = double.Parse(centerX.Text);

p2.Y = double.Parse(centerY.Text);

presult = FindNEWXandY(p1, p2, presult, jiaodu);

resultX.Text = presult.X.ToString();

resultY.Text = presult.Y.ToString();

}

POINT FindNEWXandY(POINT p1, POINT p2,POINT presult,double jiaodu)

{

//根据圆心坐标 与 原先的X,Y, 求旋转角度后的新坐标

//jiaodu = (Math.PI *jiaodu/180);

double mc = Math.Cos(jiaodu);

double ma = Math.Sin(jiaodu);

double a1 = (p1.X - p2.X) * mc;

double b1 = (p1.Y - p2.Y) * ma;

presult.X =Math.Round(a1 - b1 + p2.X,3);

double a2= (p1.Y - p2.Y) * mc;

double b2 = (p1.X - p2.X) * ma;

presult.Y = Math.Round(a2 + b2 + p2.Y,3);

return presult;

}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

因为当时使用的机器人精度较查,误差还是挺大的。如果项目成型,则会有最终解决方案,目前只是配合测试。先到此结束

  • 35
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
机器人标定旋转中心pdf是一种测量机器人旋转中心位置的方法。机器人的旋转中心是指机器人的关节轴心,确定了旋转中心的位置,可以使机器人准确地进行各种动作和姿态的调整。 机器人标定旋转中心的过程通常是通过测量机器人执行器的关节角度和末端执行器的位姿信息,然后通过计算得到机器人的旋转中心位置。标定旋转中心的目的是为了使机器人的运动更加准确和稳定。 在机器人标定旋转中心的过程中,首先需要准备一个标定器件,通常是一个具有已知尺寸和几何结构的物体。然后,将标定器件安装在机器人末端执行器上,并让机器人执行不同的动作和姿态,同时记录每个动作和姿态下的关节角度和末端执行器的位姿信息。 接下来,根据已知的标定器件尺寸和几何结构,可以通过计算和分析得到每个动作和姿态下的旋转中心位置。最后,通过对所有动作和姿态下的旋转中心位置进行整合和平均,可以得到机器人的准确旋转中心位置。 需要注意的是,机器人标定旋转中心的过程需要使用到一些专门的测量仪器和软件,以确保测量结果的准确性和可靠性。此外,标定旋转中心的精确度和稳定性也对机器人的运动性能和姿态调整有着重要的影响。因此,标定过程需要仔细操作并保证实验环境的稳定和准确。 总之,机器人标定旋转中心pdf是一种测量机器人旋转中心位置的方法,它通过测量和分析机器人执行器的关节角度和末端执行器的位姿信息,从而得到机器人的准确旋转中心位置,以提高机器人的运动准确性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值