视觉引导下协作机器人抓取技术研究

2022-02-24 00:50李世裴韩家哺路博凡钱仲楷
关键词:标定梯度坐标系

李世裴, 韩家哺, 路博凡, 钱仲楷

(上海工程技术大学 机械与汽车工程学院,上海 201620)

0 引 言

根据“中国制造2025”规划发展要求,现代化工厂要实现自动化、数字化、无人化。在工厂中的生产作业如物品搬运、码垛、抓取等要实现全自动化作业,尤其目前在抓取作业方面在工厂作业大量存在,且大部分的抓取生产工作需要机器人自主完成工件识别和定位及抓取工作,并与人类协作完成任务[1]。但在目前工业生产的过程中,绝大多数的工业机器人是依靠示教再现的方式进行固定的位置上的工件抓取和放置,如果外界环境或工件的状态发生改变将导致抓取任务中断或失败。一些学者对此类问题展开研究,张弛[2]等利用一台ABB机器人和相机基于VS软件开发的自主抓取平台,可以实现工件的随机位置抓取,但此平台扩展性弱,生产环境无法与人共融。徐博凡[3]等利用FANUC Robot Interface开发的视觉引导抓取系统,此平台同样生产环境无法与人共融并且只适用于FANUC 机器人,代码无法拓展应用。

为了提高复杂多目标抓取场景自动化作业程度,利用监督学习算法实现对随机待抓取物的精准识别与定位,基于ROS 框架搭建抓取系统,控制机器人进行避障及运动规划实现精准抓取动作,并提高机器人开发研究的代码复用率,而且大大提高系统的集成性、可移植性。

1 协作机器人抓取系统搭建

1.1 系统硬件组成

抓取系统由基于ROS框架的机器人控制模块和视觉模块构成,控制模块以包含ROS框架的上位机为控制核心,实现机器人的运动规划、避障检测;视觉模块负责待抓取物的图像信息采集,并利用监督学习算法实现物体特征识别与定位。抓取系统整体结构如图1所示。

图1 协作机器人智能抓取系统整体结构Fig. 1 Overall structure of cooperative robot intelligent grasping system

通过相机采集待抓取物体的图像信息并安装机器人上方的实验平台横柱上,利用监督学习算法进行待抓取物图像信息训练以及经图像处理,完成目标的特征识别与得到空间位置信息,将得到的待抓取物体信息通过通信协议传输到ROS系统转化为协作机器人6个关节上的转角信息,并通过Ethernet协议的将信息发送到下位机(机器人控制器),从而驱动电机转动相应的角度,使得末端执行器以预定的姿态到达目标物的位置,末端执行器最终完成抓取与移动目标物的工作。系统抓取原理如图2 所示。

图2 智能抓取系统原理图Fig. 2 Schematic diagram of intelligent capture system

1.2 系统软件组成

整个机器人控制模块和视觉模块中的标定部分是基于ROS系统实现的,ROS系统主要的功能是通过对机器人、相机等硬件进行抽象描述和加载其相应的驱动程序,并为程序间的消息传递提供多种通信机制[4],实现多模块之间分布式计算和通信连接的架构。主要实现三大功能:相机标定、手眼标定和基于ROS-Moveit!的运动规划及避障。其中通过调用camera_calibration相机标定功能包和eye_handeye手眼标定功能包进行相应标定工作,物体特征识别借助监督学习算法训练,得到目标物体位置后,通过ROS-Moveit!完成机械臂末端从起始点到目标点的轨迹规划。系统工作流程如图3所示。

图3 智能抓取系统流程图Fig. 3 Flow chart of intelligent capture system

首先进行相机标定获得相机内参和外参,并将内外参导入相机驱动文件中并在参数服务器中进行调用,然后利用手眼标定方法将相机坐标系与机器人基座坐标系建立转换关系,得到待抓取物在基坐标系下的位姿信息。相机获取的图像经过滤波、训练与特征提取等一系列图像处理的任务,即可确定待识别目标物特征,利用手眼标定技术获得相机与机器人的空间坐标变换关系,即可获取目标物体在机器人坐标系的空间位置信息,将物体信息通过ROS的通信机制传到ROS系统中进行任务规划,根据规划任务使用ROS-Moveit!中的运动学库、运动规划库、避障算法分别进行逆运动学求解、运动轨迹规划和避障运动[5]。最后将运动规划所获得的机器人运动规划信息队列通过 Ethernet通信方式传递给下位机,下位机接收到机器人运动信息队列并解析,同时驱动机器人按照规划的路径执行运动和抓取动作,并将机器人的实时位置和姿态信息传递给上位机,最终实现目标物的准确抓取和机器人状态监控。

2 视觉系统搭建

2.1 手眼标定

在整个机器人抓取系统中,手眼标定作为抓取操作的必要条件,在进行抓取操作之前,系统需要求解像素坐标系和机器人末端坐标系的关系,进而完成机器人手眼标定[6]。

根据相机安装位置的不同,手眼标定有两种方式,基于场景需要,实验平台使用eye-to-hand的手眼标定,如图4所示。

图4 手眼标定模型示意图Fig. 4 Schematic diagram of hand-eye calibration model

棋盘格固定安装在协作机器人末端,使用ROS控制协作机器人多次变换姿态,相机采集不同位子的标定板图像来求手眼标定转换矩阵。Cc代表摄像机坐标系,Cb代表棋盘格坐标系,Ce代表机器人末端坐标系,Cr表示机器人基坐标系。手眼标定主要目的即求解相机坐标系Cc和基坐标系Cr之间的转换关系,这也决定了手眼标定的本质就是数学问题。

图5 坐标转换关系示意图Fig. 5 Schematic diagram of coordinate transformation relationship

机器人拖动棋盘格变换n次的过程中,相机、棋盘格、机器人基坐标和机器人末端随之发生n次变换,可以得到转换方程:

X矩阵需要机器人的两次相对位置变换求解得到,位置变化中旋转轴不是平行的,易出现偶然误差,为了消除这种误差,在手眼标定实验过程中对机器人的位姿进行了17次变换,并用相机采集17次图像。

在基于ubuntu系统中,使用ROS中的标定函数包Easy_handeye完成手眼标定的程序,程序首先会进行棋盘格的角点检测提取棋盘格的图像特征,完成摄像机坐标系和末端坐标系的位姿转换,计算得到旋转矩阵和平移矩阵。实验中具体手眼标定的流程为:把摄像机安装在机器人工作空间正上方,给定足够的光源条件,打印棋盘格并将其安装到机器人末端,在机器人位姿变换过程中相机要始终可以采集到包含棋盘格的图像,实验中需要多次计算手眼变换矩阵,最后取得数据的平均值从而以提高标定的质量,详见图6。

图6 手眼标定实验图Fig. 6 Experimental diagram of hand-eye calibration

使用ROS系统中,usb_cam节点负责开启相机并采集图像,采集的图像经过ROS-Opencv节点,这个节点完成图像处理,提取图像特征,使用ROS中的机械臂运动规划模块ROS-Moveit!使用该模块采集不同位姿的标定板图像,使用Easy_handeye功能包,采集各个图像的角点,计算棋盘格相对于相机坐标系的位姿,获得手眼变换矩阵进行标定,在可视化模块RViz中显示,如图7所示。

图7 手眼标定结果Fig. 7 Hand-eye calibration results

2.2 监督学习方法模型的建立

监督学习的主要目的是通过样本集数量和标记图片,通过设置参数来调整分类器。支持向量机(SVM)是一种线性分类器,它是基于图片二元类的广义分类器。方向梯度直方图(HOG)是一种特征描述子,在得到图像的方向梯度直方图后,这种描述子可以很快地提取直方图中的图像特征。HOG通常用于计算机视觉,它计算图像的局部梯度,统计所有局部梯度形成特征图。由HOG和SVM建立起监督学习模型[7]。

2.2.1 方向梯度直方图和支持向量机

计算机视觉领域中,方向梯度直方图(HOG)是一种用于目标检测定位的特征描述器,它是一种图像特征。相机在采集图像的时候,难免会受到光照等环境条件的影响,为了减少这种情况带来的影响,首先使用Gamma校正法完成归一化,这种归一化是针对图像的颜色的。在图像归一化之后,HOG需要计算图像的边缘部分,遍历所有像素点,同时计算每个像素点的梯度,梯度包含数值和方向,是一种向量,其中:

Gx(x,y)=I(x+1,y)-I(x-1,y)
Gy(x,y)=I(x,y+1)-I(x,y-1)

Gx(x,y)和Gy(x,y)分别表示输入图像中,每个像素点(x,y)的水平方向梯度与垂直方向梯度。计算像素点的梯度幅值和像素点的梯度方向,可以得到:

在边缘计算梯度完成之后,直方图同样需要计算,图像可以被划分为多个小细胞单元(cell),并统计梯度直方图,梯度直方图中包含细胞单元的描述符,几个细胞单元构成一个空间(block),每个空间块中细胞单元的描述符串联起来就可以得到一个空间块的HOG描述符。每个细胞单元可以被划分为9个梯度方向块(bin),这种方式下9个方向块就可以统计整个图像的特征信息,对每个相邻的方向快加一,便可将每个细胞单元中的像素用梯度方向在直方图中进行加权投影,数值为方向梯度的幅值,将其作为权重,使那些比较明显的边缘的方向信息对特征表达影响增大,HOG特征采用的主要是边缘纹理,相邻的方向块的中心之间需进行方向和位置上的双线性插值。在此之后,需在空间上进行归一化。通常HOG特征有3种:矩形HOG、圆形HOG、环绕型HOG,HOG特征的单位是block。环形HOG的效果明显不如矩形HOG和圆形HOG。在收集完所有样本的HOG特征后,将它们结合成最终的特征向量送入分类器。

2.2.2 样本的收集

收集样本的过程中,选用水果作为待抓取物体,为了采集水果在不同的现实环境下的图像,逐次对环境进行改变。在相机采集图片时时刻改变环境,改变光照强度、待抓取物的位置、添加干扰物来改变样本的环境,收集样本过程中,把样本按照比你分为正、负样本,正样本为待抓取物体的图像,改变光照环境,待抓取物体摆放的位置也改变,这就证明了HOG特征抗干扰能力强,鲁棒性高,可以在不同位姿反复提取梯度特征并统计。此外,实验需要采集足够的负样本来进行试验。采集后的图像无法直接使用户,使用opencv中的resize函数处理图像,将样本中的图像大小控制在128*64。

2.2.3 物体的识别

样本制作完成后,在ROS中编写opencv的程序,程序会自动将正样本负样本的HOG特征提取的3780维度的特征向量送入SVM,并进行训练,得到3781维度的检测器,最终通过回归框完成检测,返回向量。如图8所示,向量中的两个点分别代表回归框左上角和右下角A、B点,将其输出得到。

图8 识别效果Fig. 8 Identification effect

3 运动规划

UR5协作机器人运动规划及避障运动采用ROS-Moveit!功能模块实现,模块中集成了许多优秀开源的机器人控制功能包包括正逆运动学计算、含约束的轨迹规划,三维视觉感知和导航算法等,并且提供友好的GUI界面,通过Moveit!配置助手(MoveIt Setup Assistant Tool)调用所创建的URDF机械臂模型文件,然后依次进行碰撞检测配置、虚关节配置、运动规划关节组配置、机器人初始位姿配置、末端执行器配置、被动关节配置,生成 Semantic Robot Description Formt(SRDF)文件,运动学配置文件和运动规划库配置文件以及相应的启动文件,在进行任务规划时加载相应的配置文件,完成机器人的运动规划、可视化和仿真等工作[8]。Moveit!运动规划流程如图9所示。

图9 Moveit!运动规划流程图Fig. 9 Moveit! flow chart of motion planning

根据相机获得工况信息、机械臂状态进行机械臂抓取任务规划,执行任务过程中加载相应的Moveit!配置助手生成的配置文件,利用开源的运动学库、运动规划库完成运动学计算和运动规划,并将规划的机械臂运动信息发布到关节服务器,进一步上位机通过 Socket通信将运动信息发送给机器人控制器并进行运动信息解析,驱动机械臂按照规划动作执行抓取动作。在执行规划动作的同时,机械臂上的位置传感器将机械臂的实际位姿通过Socket发送给上位机,如图10所示。

图10 抓取实验Fig. 10 Capture experiment

4 实验算例

通过利用监督学习算法对待抓取目标图像的处理获得抓取特征信息及待抓取物上表面中心的图像像素坐标,然后经相机标定和手眼标定技术将目标物位姿信息转换到机器人基座标系下,完成待抓取物体的定位工作。根据机械臂末端起始点与目标物的坐标位置点利用ROS-Moveit!进行运动规划器得到轨迹参数,将轨迹参数通过socket通讯发送到机器人控制器并解析,驱动机械臂按照预定动作完成抓取。将待抓取物体随机摆放在相机视角区域内的不同位置,经多次实验结果表示,抓取系统都可以稳定的完成物体识别和抓取动作。实验数据如表1 所示。

表1 实际位置与视觉定位结果对比 m

对实验数据分析可得,通过这种方法得到的抓取中心的抓取成功率很高,同时抓取的中心坐标和实际坐标误差非常小,抓取质量相对于传统的抓取方法更具有鲁棒性,收到环境、抓取姿态等条件的影响很小。经误差分析,系统的误差主要是相机标定和手眼标定过程中,标定板的测量误差以及人为安装时造成的位置误差的影响;同时,其优越的抓取精度仍然值得进一步开发,并可从抓取流程中进行进一步优化。

5 结 论

(1) 基于监督学习搭建了一套视觉系统,针对不同环境下的工件,在opencv中使用HOG+SVM算法,完成对目标工件的定位;通过手眼标定和相机标定,获得目标在机器人基座坐标系下的精准坐标。

(2) 利用ROS系统控制协作机器人,并通过ROS-Moveit!控制机器人进行点到点的运动规划及避障检测,完成待抓取物稳定、快速、安全的抓取动作。该控制系统具有一定的移植性,只需修改少量的配置文件,可快速移植到不同类型的ROS支持的机器人上。

(3) 实验平台可围绕实验基础在抓取系统上在视觉算法和机器人运动控制算法方面进一步开发。

猜你喜欢
标定梯度坐标系
独立坐标系椭球变换与坐标换算
轻卡前视摄像头的售后标定
一种轻卡前视单目摄像头下线标定方法
一种全景泊车控制器标定系统的设计研究
极坐标系中的奇妙曲线
一个具梯度项的p-Laplace 方程弱解的存在性
内容、形式与表达——有梯度的语言教学策略研究
CT系统参数标定及成像—2
CT系统参数标定及成像—2
航磁梯度数据实测与计算对比研究