关于双机械手的视觉定位

本文介绍了一个涉及双机械手的视觉定位项目,详细阐述了图像坐标如何经过三次转换来实现精确的定位:相机与机械手之间的转换、两机械手坐标转换以及角度转换。在标定过程中,需要注意机械手姿态的一致性。此外,还讨论了解决夹爪旋转导致的偏心问题的方法,通过夹持笔记录位置和角度来计算偏心半径和角度,以确保准确的物品放置。
摘要由CSDN通过智能技术生成

这几个星期在做一个视觉定位相机。

项目大概是这样的。两个机械手,其中一个连着相机,另一个机械手连着夹爪。相机拍照,另一个机械手去拿物品,物品有一个缺口,旋转一定角度,放到一定位置。

这个项目中,图像坐标需要进行3次转换。

第一次转换是,相机坐标跟与之相连的机械手之间的转换。具体是获得图像中的坐标与缺口角度。将这个坐标转换为,当坐标在图像中心时,相机机械手的坐标。
这里需要进行一次标定。具体是获得一定数量的坐标点(到少4个,弄够10个就是9点标定法了)。我弄了5个点,产品在图像中四角与中心时的坐标,还有对应的机械手的坐标位置。四角坐标减去中心坐标,得出差值(相机手同样)。然后使用vector_to_hom_mat2d,这个算子来计算变换矩阵。这样,在获得相机机械手与图像中物品的坐标后,可以求得,物品在图像中心时,机械手的位置。具体就是先用物品的坐标与图像中心的差值,计算出机械手所移动的偏差,再加上现在机械手的位置。

然后,需要进行第二次转换。就是两机械手坐标转换。就是上一次计算出的,图像在中心时,相机机械手的位置,与抓取机械手之间的转换。
这个标定和普通的9点标定法没多大区别。我自己也就用了边边四角的点作标定点。
其中,在做标定时,一定要注意,抓取机械手的姿态必需一样的。同样的角度,同样的垂直度。我这边是用六轴机械手的,具体来说,就是在世界坐标体系下,uvw三个参数保持不变的情况下做标定。

最后,还需要做一次角度的转换。机械手抓取物品,旋转一定角度,放到一定位置,有两个方法。
一个是固定的姿态下去抓取物品,然后旋转,再把物品放到一定位置。
另一个方法是,先按照一定角度先旋转机械手,下去抓取物品,然后旋转回固定角度,把物品放好。
两个方法的区别就是,旋转瓶子在抓取前还是在抓取后。
而我这次的项目。因为夹爪是左右两边,和放置的地方有些限位。所以只能用第二种方法。

而第二种方法,需要旋转。就需要进行一定的变换。理想的状态下,夹爪的中心就是机械手旋转的中心。但这个理想状态下,特别是,如果夹爪比较长的时候,夹爪的中心随着夹爪旋转而偏转,产品“偏心”的问题。
偏心这个问题怎么解决呢。首先,让夹爪夹住一支笔,画下一点。记下位置与角度(记为位置1)。然后机械手旋转180度,让笔尖,回到刚刚画下的那一点那里,记下位置2。然后两位置相减,得出dx与dy。勾股定理(d = 开方根(dxdx+ dydy))求得偏心圆的直径,而偏心的角度,只需要使用atan2(C#中有这个函数,其他的语言可能有差别。使用atan再变换)就可以求得偏心的角度。具体如下:

private void button_calibration3_calculate_Click(object sender, EventArgs e)
        {
   
            //计算偏心半径,与偏心角度
            PointD pos1 = new PointD(textBox_calibration3_fetch_hand_pos1_x.Text, textBox_calibration3_fetch_hand_pos1_y.Text);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值