恭喜,你发布的帖子
发布于 2022-01-19 17:33:12
3楼
起初,我以为是我没能理解Tool坐标系的定义,即“工件”坐标相对于U轴中心@U=0°时的偏移。关于工件坐标系,我并不是从上面这张图去理解的,而是读完一楼的工具坐标系校准标准程序,它其实是将机器人U轴停留在任意角度时,根据相机视觉软件提供的工件坐标,用反三角和三角函数,反推工件相对于U轴在0°时的偏移量。那么,如果理解正确的话,我可以将机器人的U轴直接停在0°,或者90、180、270°这一类特定角度上,避免复杂计算。
这样一想,我就有了重构相机系统和机器人拍照程序的思路。
原来的相机系统设计为单个工件校准,同轴光源只略比单个工件面积大,不足以照射到三个工件;而且,相机的镜头选的是8mm焦距,视角虽大,视距却小,在整个视场中,边缘的畸变率也是比较大的。首先就是将8mm镜头更换为16mm镜头,把40mm*40mm同轴光源也换成80*80mm同轴光源。
一番捣腾安装之后,下对位相机采集到的3个工件图片是这样的:
3个工件所涵盖的面积,正好铺满相机视野的约2/3,且3个工件的反射面都具有典型特征值(明显的亮度区别),这就不需要再做图像增强处理,直接抓取特征值即可
圆形查找的半径125像素(工件物理直径7mm),圆形拟合误差0.45像素,相机视觉软件返回的结果是令人满意的。
做到这一步的时候,虽然机器人动作尚未编写,我其实已经知道方案是正确的,忽然就有一种“提刀而立,为之四顾,为之欣悦”的感觉,手动将机器人移动到相机中心,看到3个工件位于相机中的位置,它仿佛就是君临天下了,所谓王者之荣耀,不过尔尔!
机器人的动作终于是要编写出来的,在这之前,还要把相机视觉采集到的位置信息做个编码打包发送:
格式化通信编码的规则:第一位2100代表信道,表示发送给1#机器人;第二、三、四位数据分别表示3个工件识别结果,如果任意一个为0,机器人就要卸载掉工件,重新抓取一个工件再次拍照;第四位开始是3个工件的XY像素坐标值。位之间用逗号分隔。
接下来就是机器人的工件校准程序了,我为机器人设计了拍照时的pose,让U轴停留在180°,不需要使用三角函数去计算:
三个工件只需要运行一次校准程序,由于程序过于简单,都不需要写注释。
实际运行的结果:
说明机器人已经成功校准了3个工件,只待一声令下。
请填写推广理由:
分享
只看
楼主