点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

引导语:本文为“3D视觉创新应用(三维重建)竞赛”作品集系列之一,该作品由来自深圳大学团队完成,团队成员:赵晨昊、张曼英、周制黔、郭宏希、陈炎彬。全文约2604个字,阅读时长约5分钟,旨在为更多开发者提供学习参考。

一、项目介绍

利用奥比中光科技集团股份有限公司提供的Zora P1开发板、 RGBD相机,以及深圳大学物理与光电工程学院智能光测研究院提供的川崎机器人(6轴)开发出了一款RGB-D相机结合机械臂对任意摆放的复杂加工零件的三维重建及无序抓取系统。

源码地址:

https://github.com/3DCVdeveloper/zhaochenhao

二、项目背景

1.市场分析

随着“中国制造 2025”的提出,中国正处在“制造大国”到“制造强国”转型的进程,这一过程将会促使制造业转向智能化与自动化。

尽管中国已成为全球工业机器人密度增速最快的国家,但与国外相比,我国机器人密度仍处于较低水平。考虑到未来中国对于工业机器人的大规模需求以及智能化的要求,辅助机器人智能化的视觉技术将具有庞大的市场潜力。

而在工业机器人技术发展的过程中,工业分拣系统为其中重要的一环。在以往,传统工业分拣技术利用人工方式,耗力耗时,不仅难以满足自动化长时间作业的需求,同时人力长时间进行重复性工作时,也会导致出错率大幅度提高,使生产受到影响。现如今,自动化技术快速发展,在各类工业化生产流水线上,机器人技术正在被大规模的推广使用。

2.存在的问题

预先编程的工业机器人被应用在传统的工业自动分拣系统中,进行工业分拣。尽管它可以使重复性动作得到复现,然而这种工业机器人不能根据实际情况来变换自身动作,其所使用的分拣系统必须严格将分拣对象的摆放位置进行设定,并将大量的零部件位置固定,这虽然使得机器人不需要具备自主辨识的能力,对机器视觉技术的要求较低,但也因此此系统无法实现分类工作,只能实现简单的分拣任务。然而,在大部分的智能制造生产线中,多品种的零部件大多摆放位置随意、数目不固定,需要分拣系统正确识别出零件的类型,并从堆叠的零件中准确抓取零件,因此需要愈加智能化的机器视觉技术。基于姿态估计的机器视觉工业分拣系统在应对堆叠零件无序摆放的挑战上,具备较强的灵活性与鲁棒性,因而在工业生产中,有必要大力推广带姿态的机器视觉分拣系统,在使产品质量得以保证的同时,提升工业的生产效率和泛用性。

三、系统组成

系统搭建分为硬件系统部分和软件系统部分。

其中,硬件系统主要包括以下两部分,如图1所示。

(1)控制系统:

川崎6轴机器人,气泵及气动夹具

(2)视觉系统:

Orbbec Astra Pro相机,Zora P1开发板,高性能计算机

图1.系统构成

软件系统主要包括:点云处理模块和相机与机械臂之间的通信模块,如图2所示。

图2(a).软件系统

图2(b). 软件设计流程图

四、关键技术及创新点

1.关键技术

①多帧及点云预处理,误差补偿

图3为工作距离(620mm)下白色背景板点云在Geomagic中拟合的平面,标准差1.43mm,正负最大距离为9mm,正负平均距离1.22mm。由数据可知在此工作距离下的平面标准差为1.43mm,比较大,且点云会出现分层现象,导致了手眼标定时会产生误差,点云分割会导致同一个面分割成两个部分,以及点云配准时的不准确等问题。这也是本项目中最大误差产生的来源。我们通过点云滤波(直通滤波,平滑滤波),取平均中心点和法线方向来平均掉误差,并且在控制系统中,让机械臂去在x,y,z方向补偿误差来进行抓取。

图3(a).上为白色背景板

图3(b). 拟合平面图

②手眼标定:(4点SVD分解法)

相机坐标系下获取点云并显示,随机获取四个特征点坐标(如棋盘格的角点),示教模式下控制机器人的末端到达实际特征点所在位置,获取基于机器人坐标系下的四个特征点坐标,两组点具有旋转平移关系,利用SVD分解法进行对两组点进行求解,获得相机与机器人之间固定位置的转换矩阵。

③点云分割:(点云聚类分割求取平面法线及中心点)

本项目中对于任意摆放的长方体,其点云特性为不同深度下具有平面特征,以及在拐角处的法线变化较大,所以在点云分割中采取了区域生长的聚类分割算法,利用了法线,曲率,欧式距离等信息来判断点云是否应该聚成一类。并且使用kd-tree加速检索,取得了比较好的分割效果。

④平面拟合及中心点求取:

在点云分割过程中,选取最多点簇作为分割出的木块平面进行拟合。由于点云存在分层现象,所以采用求取点云重心的方法确定中心点。对于平面拟合则采用最小二乘拟合的方法求解。至此我们就可以确定出在机械臂基体坐标系下木块表面中心点及法向量,便于后续机器人姿态计算。

⑤机器人姿态求解:(X,Y,Z,O,A,T)求解

利用获取的小木块归一化后的法向量与机器人Z轴单位向量(基于地面为(0,0,1))进行叉乘,来获取代表向量角度变换后的罗德里格斯向量,基于罗德里格斯向量获取罗德里格斯矩阵,此时的罗德里格斯矩阵代表六轴机器人绕各向轴旋转之后的最终矩阵(Z-Y-Z方向),逆向求解OAT即可。

2.创新点:

①采用一种快速4点手眼标定法,在没有强度信息下进行手眼标定。利用4点对SVD分解出RT矩阵。

②可以带姿态进行无序抓取。即对任意摆放的物体可以从平面的法线方向进行抓取。

五、实验过程

1.相机输出深度图,转为点云图,并进行多帧,点云滤波等处理(直通滤波,体素滤波等)。

2. 6轴机器人与计算机之间的通信(UDP协议)

3. 相机与6轴机器人计算手眼标定矩阵,这里使用了4对点SVD分解法进行求解。得到视觉系统与机器人本体系统之间的转换矩阵。

4. 制作木块模板,并求出木块本体坐标系下的抓取点和法线信息,保存至文件中。

5. 利用相机拍得目标(木块)点云,得到点云进行点云滤波,并进行下采样(实际中点云较少可以去掉)。

6. 点云分割(这里使用了聚类分割方法,由于木块是都是平面构成,平面内法线连续,距离连续,拐角处法线变化大,欧氏距离大,区域生长的聚类分割效果较好)。

图4.点云分割结果图

7. 点云配准(4PCS+ICP)由于点云精度较差导致匹配结果较差,且不鲁棒,一致性差,所以放弃此方案。

图5.点云配准结果图

8. 转为使用平面拟合及中心点的方案进行抓取。将点云分割出的最多点构成的面进行平面拟合,计算平面中心点和法向量

9. 利用法向量与机器人坐标系之间的关系,求解机器人的抓取姿态(OAT)

10. 输入坐标与姿态信息指令( X,Y,Z,O,A,T)给机器人实现抓取。

11. 开发板与相机、机械臂进行通信(QT实现)

12. 开发板环境搭建(QT5,OPENCV320,PCL1.8)遇到flann库编译冲突并解决。

13. 开发板代码编译运行(由于开发板内存较小,无法正常运行)

六、Demo演示

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

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

基于RGB-D相机的机械臂无序抓取系统相关推荐

  1. 理论联系实践:机械臂视觉抓取之eye to hand

    eye to hand,也就是相机固定在一个位置保持不变,我们想要通过视觉抓取一个目标,最先得到的就是目标在相机所拍摄的图像中的位置.而怎么把图像中的位置转化为机械臂所知道的位置呢. 需要进行如下操作 ...

  2. Gluon_2L6_4L3机械臂视觉抓取操作手册

    机械臂操作手册 安全须知 如遇任何紧急情况,请立即按下紧急停止开关断电,以防操作人员受伤或机械臂损坏. 当机械臂断电时,执行器会立即进入松闸状态,可能无法保持当前姿态.需要人为提供外力保证机械臂不会因 ...

  3. 从零开始的机械臂yolov5抓取gazebo仿真(环境搭建篇下)

    sunday功能包使用介绍以及开源 sunday我给自己机械臂的命名,原型是innfos的gluon机械臂.通过sw模型文件转urdf.Sunday项目主要由六个功能包sunday_descripti ...

  4. 第六天:通过python代码控制越疆机械臂完成抓取投递整个过程

    文章目录 一.前言 二.机械臂的运动逻辑(直接上代码讲解,具体请看注释) 三.总结 一.前言 有很多小伙伴问我怎么样控制机械臂完成整个过程,其实经过上一篇博文的探究,这个问题其实很容易就可以解决.把他 ...

  5. 从零开始的机械臂yolov5抓取gazebo仿真(一)

    从SOLIDWORKS中导出机械臂URDF 一.下载sw_urdf_export插件 插件的安装和下载可详见我写的差速小车第一章的内容 对机械臂模型进行开源(博主用的是SW2019版本).当时拿到这个 ...

  6. 【3D视觉创新应用竞赛作品系列​】RGB-D相机结合机械臂的无序抓取系统

    作者||赵晨昊 编辑||3D视觉开发者社区 ✨如果觉得文章内容不错,别忘了三连支持下哦

  7. 视觉机械臂自主抓取全流程

    目录 简介 相机标定 手眼标定 Eye-In-Hand Eye-To-Hand 求解(Eye-In-Hand) 求解AX=XB 手眼标定步骤 读取出摄像头信息并确定目标物体的位姿 图像分割 三维对象实 ...

  8. 基于ROS设计一款机械臂控制系统 [转发]

    ROS探索总结-66.基于ROS设计一款机械臂控制系统 ROS探索总结-66.基于ROS设计一款机械臂控制系统 说明: 介绍如何基于ROS设计一款机械臂控制系统 正文 今天我们将从以下两个方面为大家介 ...

  9. 【强化学习与机器人控制论文 1】基于深度强化学习的机械臂避障

    基于深度强化学习的机械臂避障 1. 引言 2. 论文解读 2.1 背景 2.2 将NAF算法用在机器人避障中 3. 总结 1. 引言 本文介绍一篇2018年发表在 European Control C ...

最新文章

  1. 如何创建和获取正则对象?
  2. [转载]VC轻松解析XML文件 - CMarkup类的使用方法
  3. CSP-CCF 201712-2游戏(C++实现)
  4. 如此架构,泛滥架构,疯狂架构
  5. HDU 1540 Tunnel Warfare
  6. 【渝粤题库】陕西师范大学180113 学前儿童艺术教育作业
  7. 《论文笔记》ROBUST MAP ALIGNMENT FOR COOPERATIVE VISUAL SLAM
  8. 学生管理系统分层开发
  9. Java备份Oracle数据库
  10. 系统开发中的时间类型的处理问题
  11. 01-SA8155P Flat Build QFIL刷机
  12. 动态爱心(C/C++)
  13. CLM5.0模式移植篇——驴某人的自我救赎
  14. 2019《中国智慧城市建设产业全景图谱》
  15. 零基础:21天搞定Python分布爬虫
  16. 王飞跃教授点评:无人车最“靠谱”的应用领域——不是出行
  17. C语言函数题-输入多个单词,统计以指定字母开头的单词个数
  18. 转铁蛋白(Tf)修饰去氢骆驼蓬碱磁纳米脂质体/香豆素-6脂质体/多柔比星脂质体
  19. 一个微信小程序开发示例
  20. 百度员工抱怨:1月离职,没有年终奖。。。

热门文章

  1. mysql1067错误
  2. 人脸识别SeetaFace6编译
  3. Plone ZEO 与 Nginx的配置
  4. 淘宝获得详情页详细教程
  5. 安卓逆向环境检测--模拟器
  6. 八月(Augest)2005
  7. 官网下载MySQL安装包流程
  8. 好感、喜欢、爱的区别
  9. 今年是 Vue 的天下吗?答案显而易见
  10. 全球与中国油性皮肤护手霜产品市场深度研究分析报告