赞
踩
纠偏思路:机器人坐标系下的仿射变换
1.下相机进行九点标定,输出矩阵 ==》注意高度统一
2.下相机创建模板,模版可以从放料位吸取过来,然后创建模板,使用中心移动法,使得模板中心更加准确。再根据九点矩阵求出模板中心在机器人下的实际坐标位置,并且记录下来(之后要用)
3.记录拍照位置,每次都在拍照位置拍照。
4.模板旋转,得到实例。并求出实例的中心位置,根据九点矩阵求出模板中心实际位置。
5.计算实例到模板的矩阵关系==》输出矩阵H vector_angle_to_rigid
6.求等效拍照点--点的仿射变换
等效拍照点=拍照位*矩阵H
因为这里我们从上相机提取像素坐标后,可能提取的位置有偏差,如果还是直接去放料位的话,这样会放不准,所以我们这里求一个等效拍照点。
7.求等效点与模版中心的实际偏差
偏差=等效点-模版中心
角度=-(查找模板输出的角度) ==>转度,因为模板匹配输出的角度是模板转向实例的角度,这里需要实例转向模板,所以角度前面加个负号。
8)发给机器人偏差值,X Y 角度
需求分析:
上相机拍照后,输出物体行列坐标,机器人来抓取,到达下相机拍照位,进行纠偏,然后到达放料位。
图像处理类:
封装俩个显示图像的方法,在UI层进行调用显示
封装上相机像素提取,提取到物料行列坐标。
封装下相机像素提取,查找模板,输出实例中心X Y,根据九点矩阵,调用点的仿射变换,将行列转为实际坐标。计算实例到模板中心的矩阵H
求等效抓点,输出 X Y 角度 ,存到实体类的对象中
封装方法上下相机显示区域,轮廓等
业务层:
定义俩个人工事件对象,分别处理上下相机俩个线程 下相机默认无信号
上下相机矩阵读入
下相机模型句柄读入
开启俩个线程,一个上相机采集处理,输出物料中心实际坐标,这里和机器人协商沟通,最后一个数据是1 则是上相机数据,2则是下相机数据。
上相机线程:
等待信号---人工事件对象循环等待信号 WaitOne()
1.采集图像
2.显示图像
3.提取像素坐标
4.显示提取的区域区域
5.转实际坐标
6.通过socket对象进行发送Encoding.Default.GetBytes(send)
7.无信号等待 ---人工事件对象置为无信号
下相机线程
等待信号---人工事件对象循环等待信号 WaitOne() ---这里只有机器人收到了线程1发送的数据,返回OK1的时候,信号才为真,才能进入线程2采集图像
1.采集图像
2.显示图像
3.提取像素坐标
4.显示提取的区域区域
5.将偏差值 X Y 角度拼接成字符串
6.通过socket对象进行发送Encoding.Default.GetBytes(send)
7.无信号等待 ---人工事件对象置为无信号
在通讯类中,接收线程中,当接收到OK1,上相机线程人工事件对象有信号,当接收到了OK2的时候,下相机人工事件对象有信号。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。