旋转机

Fred说机器人系列篇旋转中心标定

发布时间:2022/7/18 16:06:28   
北京治白癜风最好的医院 http://www.bdfyy999.com/index.html

问,

zhao:你好,Fred,讨教下,我通常用的visionpro做视觉定位,不论是眼在手外或许眼在手上,直接找多组点,便是九点标定法,就也许告竣视觉和板滞人标定了,当然我获得的是产物在板滞人坐标下的绝对坐标,你这篇文章提到要推算板滞人扭转中央,这个是甚么宗旨呢?

fred:看看上面的评释,是不是你想要的谜底。

01

为甚么要标定扭转中央

为甚么须要用到扭转中央呢?由于板滞人或许板滞轴汲取物料时,轴心和产物中央不一致,因此转θ角度后的地方须要扭转中默算出来。

然则必须要算扭转中央吗?原来也也许不须要。(这个原来也可之后续有机遇聊一下的,求扭转中央的思绪是先扭转theta告竣角度平行,尔后挪移XY告竣对位。不求扭转中感情路是,先挪移XY,再转角度。)

举个栗子来讲解

当日先来讲一个案例:在板滞视觉搭配板滞手行使,板滞手要抓取物料,然则物料屡屡的角度不相同,板滞手的末尾器材中央与其本身的扭转中央不重合,怎样办?原来假若想告竣这个抓取的劳动,咱们也许有两种处理计划:

TCP标定

正常板滞手都邑有竖立新器材坐标系的功用,不论哪家板滞品行牌的板滞手都如此。特为是咱们在进修板滞人的时分也被作育请求本人竖立器材坐标系,便于咱们的测试和后期的调试。

TCP标定的实质便是求旧的器材坐标系与新的器材坐标系的扭转平移矩阵。正常是界说新的器材编号,放一个参考点,屡次扭转U轴(扭转轴)(4次),尔后挪移X,Y(base下)使新器材坐标末尾瞄准参考点,对完之后再示教就好了。以上办法实用于大多半品牌的板滞人。

标定扭转中央和扭转半径

假若板滞人没有TCP标定的功用怎样办呢?原来这类几率对比低,由于墟市上险些悉数的板滞人都邑有这类功用了,那为甚么会还会涌现这个题目喃?上面的话我要冒犯人了,众人见责莫怪,先恕个罪!

大部份道理是由于操纵板滞人的工程师营业不敷纯熟,然则项目又不能不做啊,因此自但是然的就把这个职责交给视觉工程师了。

尚有其余一种状况,假若你行使的疏通机构是疏通掌握卡掌握的,这边咱们商议的是有扭转轴的机构,并且扭转轴上的器材末尾中央又和扭转轴不重合,这时分就不得不标定扭转中央和扭转半径了。

原来正常带有扭转轴的机构,咱们都邑标定扭转中央的,由于单靠板滞定位过错对比大,板滞视觉工程师要对最后的精度负责,那末标定扭转中央是须要的,要否则咱们要扭转轴干吗呢?

02

何如标定扭转中央

标定扭转中央的操纵环节

先来一张图,在扭转轴器材上安插一个标识点,扭转角度之后就也许得到三个点,三点拟合成圆,得到圆心坐标和扭转半径。(默许曾经做完九点标定,这三个点转为天下坐标后再推算圆心坐标和扭转半径)。

三点拟合圆心代码

在板滞视觉行业正常采纳FitCircle拟合圆的方法推算得出。或许经过3组或许3组以上坐标算出。

上面我来个推算的小道具,咱们求一下,就也许得到扭转中央和扭转半径。

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespace求圆心{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){double[]xy=newdouble[3];xy=RotateCenter(double.Parse(txtX1.Text),double.Parse(txtY1.Text),double.Parse(txtX2.Text),double.Parse(txtY2.Text),double.Parse(txtX3.Text),double.Parse(txtY3.Text));txtxcen.Text=xy[0].ToString();//Xtxtycen.Text=xy[1].ToString();//Ytxtrcen.Text=xy[2].ToString();//R}publicdouble[]RotateCenter(doublex1,doubley1,doublex2,doubley2,doublex3,doubley3){doublea,b,c,d,e,f;a=2*(x2-x1);b=2*(y2-y1);c=x2*x2+y2*y2-x1*x1-y1*y1;d=2*(x3-x2);e=2*(y3-y2);f=x3*x3+y3*y3-x2*x2-y2*y2;doublex=(b*f-e*c)/(b*d-e*a);doubley=(d*c-a*f)/(b*d-e*a);doubler=Math.Sqrt((x1-x)*(x1-x)+(y1-x)*(y1-x));double[]xyr=newdouble[3];xyr[0]=x;xyr[1]=y;xyr[2]=r;returnxyr;}}}

03

何如行使扭转中央机算偏移量

那末好戏来了,这一步便是这一步,最要紧的一步了,何如行使扭转中央和扭转半径来肯定偏移量呢?

已知:扭转中央坐标和扭转半径R

设:

由于三角形BAC和三角形OAD是类似三角形,因此:

求解上头方程:

解完这几个方程,OK,咱们就得到了由于扭转轴扭转致使的X、Y方位的偏移,咱们须要将这一部份值加到前方的X/Y偏移中去,如此就也许同时扭转平移抓到有角度的物料了。

那末你再想一下通常咱们做的贴合类项目是不是也是如此的道理!

Fred的产业之路

你的赞美对我很要紧!



转载请注明:http://www.aideyishus.com/lkzp/858.html

------分隔线----------------------------

热点文章

  • 没有热点文章

推荐文章

  • 没有推荐文章