66python机器人编程——垃圾自动分类,在VREP环境中,UARM与摄像头联动,实现基于视觉识别的自动抓取(下)

本文介绍了一种使用单目摄像头和色彩识别技术实现机械臂自动分类垃圾的方法。通过坐标变换和物体识别,使机械臂能准确抓取并投放不同类型的垃圾。

前言

本篇我们在《python机器人编程——VREP数字孪生四轴机械臂联合仿真》的基础上,将引入单目摄像头(或视觉传感Vision_sensor),并在python侧获取摄像头的图像,并进行视觉处理,通过建立一个视觉抓取场景(三类垃圾的自动分类),利用色彩识别原理和二维码定位方法,用python创建识别模块对单目摄像头传过来的图像进行分析获取不同类型垃圾的位置坐标,并与UARM远程控制程序进行流程化集成,最终实现机械臂自动根据垃圾摆放场景,自动将三类不同的垃圾,准确抓取,并放入对应的垃圾桶中。

非绝对垂直摄像头图像的坐标变换

在上篇VREP仿真下面,我们增加的视觉传感(Vision_sensor)的位置其实是比较理想的,即镜头是水平的,成像的平面与水平面是平行的,下图中,我们已经看到在四个角上确定的位置放入了四个二维码,如果是没有旋转分量,可以看到摄像头的成像是绝对俯视图,如下图:
在这里插入图片描述
然而,在现实情况下,我们架设的摄像头(非工业摄像头)很难达到像仿真环境一下绝对的俯视,所以我们在仿真环境中加入适当的旋转分量,以模拟实际的情况,这样摄像头的成像不是100%俯视图了,就出现了一些偏离:
在这里插入图片描述
于是,摄像头所获得的图像和俯视图获得的图像出现了位置偏差,视觉抓取的第一步任务就是将这个图像的所有像素转换到世界坐标系下面,这里我们通过识别四个事先确定位置的二维码(从左上角顺时针号码分别是:0,1,2,3),来将图片进行转换,转换到绝对俯视图以解决摄像头有旋转的问题:
在这里插入图片描述

这个转换我已经在之前的博文里面详细介绍过了(机器视觉实用工具集NO.11——利用二维码实现免棋盘格标定的相机坐标转换简易工具)这里不再赘述。
效果如下():
在这里插入图片描述
变换成俯视图:
在这里插入图片描述
如上图,我们已经将原来图像转换成了俯视图,并且对四个二维码的距离也进行了调整(以1个像素代表1mm),这样就可以通过图像的像素坐标,进行平移转换就可以非常容易得到物体的实际坐标了。

物体的识别和坐标确定

(1)物体的识别

这里需要识别的垃圾是三种颜色,识别的方法是通过颜色查找,这部分已经在机器视觉实用工具集NO.4——颜色查找可视化工具,在HSV、LAB、RGB三个颜色空间轻松进行颜色查找python机器人视觉编程——入门篇(下)中有详细说明,这里也不赘述。

(2)坐标的确定

识别后进行坐标变换,如下图,世界坐标为黄色(x,y)坐标系,变换后俯视图为图像坐标系红色(u,v)(此处以0号二维码为原点),由于我们已经矫正了图像不用考虑旋转问题,两坐标系之间是简单的平移变换关系:
x=u
y=500-v
在这里插入图片描述
这样,当我们识别出物体的图像坐标(u,v),就可以马上求出该物体的世界坐标了(x,y),机械臂可以根据这个坐标就可以进行抓取了。

机械臂执行动作逻辑实现

至此,核心的问题解决后,就可以根据顺序抓取的逻辑,进行编程实现了,主要流程如下:
在这里插入图片描述

python源码

未完待续…

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机智新语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值