机械手视觉引导相关算法

2023-11-22 16:50

本文主要是介绍机械手视觉引导相关算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达
在开发项目的过程中,产品有一个入料初定位,需要操作员把产品放到载具上后,一个大视野的相机会拍一下产品,然后伺服电机对载具进行一个调整,以保证产品在小视野的相机范围内,从而进行检测。这里我们用到了相机和伺服电机的手眼标定,及位置补正算法。
机械手分为:4轴,6轴或者XY模组或UVW模组。相关的视觉引导项目主要包括:抓取,放置,位置补正,贴合。其中相机模式又分为:单相机和多相机;相机固定安装和相机手部安装。机械手核心是通过相机拍摄Mark点,计算出产品的偏移位置,让执行机构去执行某个动作。
操作步骤主要分为:4步(标定的核心思想就是相机坐标系和机械坐标系进行统一,然后根据产品实时来料位置计算偏差)
1.相机的非线性校正(此步骤需要更具实际情况选取,由于相机镜头的光学特性比较稳定,大多数情况此步骤可以省略);
2.相机与机器人做9点标定手动标定:可以使用机器人扎9个点,然后相机拍摄次9个点的像素位置;自动标定:机器人抓住工件移动9个位置,得到9个机械坐标,相机也得到9个像素坐标,然后标定(此过程需要标定软件和机械进行实时通信,确定机械位置和像素Mark点);
3.计算机器人的旋转中心(由于机械的夹具中心和法兰中心不重合,所以需要进行旋转标定)机器人抓住工件至少旋转三个不同角度,工件要在相机视野内,相机可以得到多个像素坐标值,通过三个坐标值拟合圆心,为旋转中心;(旋转中心是否计算也要根据具体需求选取,若产品来料无角度或者产品不需要做角度补偿,则此步骤可以省略)
4.相机通过公式计算得到最终输出结果:(rx0,ry0)为旋转中心,(x,y)为被旋转的点,(x0,y0)旋转后的点旋转公式:X0 = cos(a)*(x-rx0) - sin(a)*(y-ry0) + rx0Y0 = cos(a)*(y-ry0) + sin(a)*(x-rx0) + ry0其中对应halcon核心算子为:a.计算出仿射变换矩阵:vector_to_hom_mat2d( : : Px, Py, Qx, Qy : HomMat2D)b.求旋转矩阵:hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)c.应用仿射变换矩阵求出对应点:affine_trans_point_2d( : : HomMat2D, Px, Py : Qx, Qy)d.求取圆心坐标:fit_circle_contour_xld(Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row,Column, Radius, StartPhi, EndPhi, PointOrder)转自:天眼观视界

本文仅做学术分享,如有侵权,请联系删文。

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 

38e15ab9477598cfcc51c08fbb4a49ee.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。交流群欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

这篇关于机械手视觉引导相关算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411533

相关文章

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二