上下相机纠偏思路

纠偏思路:机器人坐标系下的仿射变换

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的时候,下相机人工事件对象有信号。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值