本文主要是介绍优傲机械臂视觉分拣,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
优傲机械臂视觉分拣
- 分拣任务介绍
- 视觉处理
- 标定任务
- 通信任务
分拣任务介绍
对于利用机械臂进行视觉分拣任务,其中占比最大的工作应该是视觉任务,但是对于初学者类似于我而言视觉是相对比较轻松的,因为像GitHub上有着大量的开源视觉处理模型,解除一些简单的分拣工作是绰绰有余的,可以很方便的直接套用。但是进入高阶阶段分拣一些复杂场景时就需要对算法进行一定程度的定制化了。
下面就只介绍一下我做的简单分拣项目,演示效果点这个链接分拣效果演示。每个功能的具体实现方法会在后面的博客中写出,后面的就是粗略的介绍一下情况,能够对这个分拣任务有一个简单的认识。
视觉模型用的是YOLO v5,官方源码的链接是在这里,关于YOLOv5的使用以及原理我会在后面的博客中详细说明,下面的小标题就只是简单介绍一下。
标定的话对于机械臂而言可能存在两步的标定过程,即相机标定与手眼标定;单单的相机标定是无法完成机械根据图像实现到三维空间抓取的;手眼标定也分为眼在手上、眼在手外两种标定方式。其中的差别可以看看其他的博客,对于初始位置固定的情况下差别是基本不大的。
对于上位机与机器人的通信问题只需要简单的在上位机上设置一下网络属性就好了,具体的操纵指令可以搜搜UR Script,是一个专门控制UR机器人的脚本语言,除此之外GitHub上也有urx的包集成了一系列控制指令,封装成了函数,可以很方便的获取tcp坐标、控制夹爪等。
视觉处理
YOLO v5的使用方法网上已经有很多了,是一个比较的东西,在这里推荐两个博客,都是我在初学时觉得比较详细的博客
https://blog.csdn.net/ojiwuxuan/article/details/107558286
https://blog.csdn.net/qq_36756866/article/details/109111065?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param
里面介绍的很详细,转换文件也有写,可以很快上手。
标定任务
标定方面我用的摄像头为D435摄像头
不知道Python提供的包pyrealsense2支不支持其他的深度摄像机,但是对于这个系列的摄像机应该支持自动获取相机内参、深度的功能的,这样子在深度匹配上面就不用花费功夫了。
相机标定方面我就不做解释了,已经有很多博客说明了,而且对于机械臂而言只要用的深度摄像机没有相机标定的必要。
对于手眼矩阵的标定我还是推荐用matlab的旧版标定工具箱,能够自定义x y轴的方向、自己选择原点,这是一个很重要的步骤,在于获取相机相对标定板的位置矩阵。
然后通过手眼标定程序求得手眼矩阵的唯一解。
还是推荐两篇已经有的博客作为一个例程,他们的程序就是能够完成求解的一个程序
OpenCV手眼标定(calibrateHandeye())
手眼标定(一):Opencv4实现手眼标定及手眼系统测试
通信任务
关于在windows下与机器人建立连接的方法在于修改一下网络以太网的默认网关。
将地址修改为示教器上机器人的ip地址就可以了。
这篇关于优傲机械臂视觉分拣的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!