码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python机器人编程——垃圾自动分类,在VREP环境中,UARM与摄像头联动,实现基于视觉识别的自动抓取(下)


    目录

    • 前言
    • 非绝对垂直摄像头图像的坐标变换
    • 物体的识别和坐标确定
      • (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源码

    未完待续…

  • 相关阅读:
    CVS 快速入门指南
    跟我学c++高级篇——模板的ADL
    二叉搜索树的应用
    渗透测试-xss的三种类型讲解
    Windows,macOS,Linux换行标识的前世今生,如何处理文本文件行尾的^M
    Springboot 小巧简便的限流器使用 RateLimiter
    Kubernetes Deployments
    2023年9款好用的在线流程图软件推荐!
    redis作为MongoDB的缓存在线实时去重
    常见的数学物理方程
  • 原文地址:https://blog.csdn.net/kanbide/article/details/126569865
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号