目录

  • 前言
  • 非绝对垂直摄像头图像的坐标变换
  • 物体的识别和坐标确定
    • (1)物体的识别
    • (2)坐标的确定
  • 机械臂执行动作逻辑实现
  • python源码

前言

本篇我们在《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源码

未完待续…

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

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

    目录 前言 在VREP中加入视觉传感,用python侧获取图像 在VREP中布置垃圾分类场景 Step1:用三维软件造模型 Step2:导入到vrep Step3:关联shap.调整位置及贴图 测试一 ...

  2. python爬虫获取下一页_Python Scrapy 自动抓取下一页内容

    最近在学下Scrapy,抓取下一页的时候遇到了问题 import scrapy from crawlAll.items import CrawlallItem class ToutiaoEssayJo ...

  3. python机器人编程——四轴UARM机械臂的运动控制(逆解)原理及python实现(下)

    目录 1 概要 2 uarm机械臂运动控制程序的python实现 2.1机械结构的python表达 2.2 逆解算法的python表达 2.2.1 俯视图根据目标点(x,y)计算J1,L 2.2.2 ...

  4. python机器人编程——差速AGV机器、基于视觉和预测控制的循迹、自动行驶(下篇)

    目录 一.前言 二.基于轨迹与路面重心偏离度误差的预测自动差速小车循迹控制策略 三.轨迹图像的处理要点 四.本篇部分核心控制策略python代码: 五.结论 一.前言 基于最近的测试,得到了一种粗略控 ...

  5. python机器人编程——差速AGV机器、基于视觉和预测控制的循迹、自动行驶(上篇)

    目录 一.前言 二.视觉自动循迹的算法流程 (1)图像的获取 (2)图像的预处理 (3)目标轨迹的提取 (4)根据已知曲线进行预测控制 三.核心模块及要点 轨迹图像细化 小车轮距L的测量 预测轨迹变换 ...

  6. python编写微信自动抓取文件经历

    python编写微信自动抓取文件经历 背景 前期 写代码&坑 背景 近期疫情肆虐,老师全都线上教学,微信群里多出来一大堆乱七八糟的文件,烦死宝宝了,每次还要看,要是doc还得转换成pdf再放进 ...

  7. jupyter分割代码块_科研分享—Python根据关键词自动抓取Pubmed文献标题(附全部代码)文末有福利...

    写在前面:接触Python应该是8月初的一篇公众号文章,大致内容是使用py爬取数据库并汇总到本地.正好手头需要对某个领域的文献进行调研,不妨学习一下. 什么是Python? 百度说:Python (计 ...

  8. 利用 Python 自动抓取微博热搜,并定时发送至邮箱

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来. ...

  9. python 自动抓取分析房价数据——安居客版

    引言 中秋回家,顺便想将家里闲置的房子卖出去.第一次卖房,没经验,于是决定委托给中介.中介要我定个价.最近几年,房价是涨了不少,但是长期在外,也不了解行情.真要定个价,心里还没个数.网上零零散散看了下 ...

最新文章

  1. 95、Jenkins部署.net持续集成自动化测试环境
  2. javascript 常用方法
  3. 基础知识漫谈(1): 想到哪儿写到哪儿
  4. 2019标杆案例复盘(中):万物互联——智能电子篇
  5. C#9引入的自定义类型record
  6. GIT上传下载报错:[You do not have permission to pull from the repository]的解决方案!
  7. OpenCV辅助对象(help objects)(5)_DataType
  8. html css 命名规范,浅谈css命名规则(新手必看)
  9. Create a restful application with AngularJS and CakePHP (I)
  10. 【a202】【9208】输油管道问题
  11. k8s 创建、切换、删除namespace
  12. Vensim模拟结果vdf数据文件转化为可读文本文件
  13. java 股票数据接口_股票数据查询接口
  14. 线性代数————思维导图(上岸必备)(行列式部分)
  15. 【Robo 3T】MongoDB可视化工具-- Robo 3T使用教程
  16. 个人web前段学习心得
  17. QT学习笔记(一)之本地播放器
  18. Git版本控制管理——Git和GitHub
  19. 视频 TS 内容详细讲解
  20. 数据分析之路的尽头是创业?

热门文章

  1. 电动三轮车用工业标记打印机配合HTC2000标记系统软件打印车架号(一连串数字,前后共两个五角星)打不完整的解决方案
  2. 快应用底部导航栏的原生实现
  3. 计算排列数A(m, n)
  4. oracle动态 returning,ORACLE RETURNING 用法总结
  5. BUU-Crypto-萌萌哒的八戒
  6. 2.7 Mybatis——返回值处理
  7. esp32有趣的电路设计软件Fritzing
  8. python面试笔记
  9. 磨金石教育摄影技能干货分享|极简艺术与人文摄影相结合(一)
  10. 双泳道活动图java代码_如何绘制泳道图(跨职能流程图)