基于改进YOLOX-S的机械臂自主识别抓取*
2022-11-09任军胜晁永生
任军胜,晁永生
(新疆大学机械工程学院,乌鲁木齐 830017)
0 引言
随着科技技术的进步,各式各样的小型协作机械臂和服务机器人应用越来越广泛,为了提高机器人的智能化和自动化,机器人视觉抓取一直是机器人研究领域的研究热点。然而传统的工业机械臂抓取大都以操作人员的视觉先验知识为基础,利用编程或者拖动示教实现机械臂自动抓取,这种方法费时费力,只能重复的修改程序或重新示教来完成任务,因此其已经无法适应快速变化的市场需求,一旦待抓取物体位置改变或者环境中存在新的障碍物,机械臂无法成功抓取。因此,这种方式存在泛化性能差,自主能力不高的缺点。
对于2D平面抓取任务,传统的识别定位方法通过手工设计关键点特征,再与模板匹配实现识别定位。传统特征提取匹配的方法易受光线、颜色、噪音等干扰,且特征的设计需要极强的先验知识[1]。如朱宏辉等[2]通过ORB特征匹配模板的方法识别图像中的目标物体并进行抓取实验,对待抓取物体表面纹理要求较高,检测时间无法实时;李志昂等[3]将SURF特征与RGB颜色特征相结合进行抓取,只能抓取形状简单的对象且也无法实时识别抓取。随着深度学习方法的提出,各类深度学习方法逐渐在图像特征提取领域快速发展,卷积神经网络CNN尤为突出。与传统方法相比,卷积神经网络方法的优势在于不需要人工先验地设计各类特征,而是通过大量图片的学习让网络模型学习到待抓取物体具有的独有特征[4]。YU等[5]使用原始YOLOv3网络模型搭建了一套机械臂识别抓取系统,能够准确识别目标物体,但并未提及训练检测设备,检测速度难以对比;董秋成等[6]参考AlexNet和VGGNet网络构建用于零件识别的卷积神经网络,使用目标中心化算法对图像进行预处理,提高了网络识别零件的准确性;李秀智等[7]提出一种双网络架构的机器人最优抓取姿态检测算法,目标检测网络方面,将YOLOV3-tiny网络的主干改为Darknet-43,虽然牺牲了准确率,但降低了计算量,提高了检测速度;抓取点检测网络方面,采用Mobilenet V2+RPN检测抓取点姿态,实现端到端的抓取检测,但双网络的架构较为冗余,影响检测时间;夏晶等[8]设计了一种位姿从粗到细的级联两阶段卷积神经网络的机械臂平面抓取位姿快速检测方法,第一阶段采用区域全卷积网络,先在COCO数据集预训练,然后在自制数据集进行微调,对抓取点定位与姿态粗估计,第二阶段构建Angle-Net网络用于姿态细估计,利用迁移学习在小样本数据集上训练,进一步提高姿态估计精度,但实时性不高。洪诚康等[9]针对单一视角深度相机获取待抓取物体信息不足的问题,提出使用两台RealSense D435i深度相机滤波后融合拼接得到物体完整三维点云形状,然后建立了一个端到端的GraspNet-Robust卷积神经网络,在AR5机械臂上达到了91%的抓取成功率,但由于存在多传感器融合,检测时间变长,影响了机械臂抓取检测的实时性。
针对上述问题,为了首先保证目标检测算法的实时性,采用YOLO目标检测网络最新算法YOLOX,在其基础上进行改进,向网络中引入先通道后空间的混合注意力机制,进一步提高识别准确率,最后在UR5机械臂上对改进后的网络模型和方法进行检测速度和准确率的验证。
1 自主抓取系统总体组成与工作原理
机械臂自主识别抓取系统涉及机械臂本体、相机、夹爪、上位机、待抓取物体等。选用6轴的UR5协作机械臂作为机械臂本体;选用Intel公司的Realsense D435深度相机作为机械臂感知工具;选用Robotiq-2f-85二指夹爪作为夹持器;抓取对象为常见的机械零件和各类加工刀具。系统总体组成与工作原理如图1所示。
图1 自主抓取系统总体组成与工作原理
其中,Realsense相机安装于机械臂末端,与夹爪保持平行,也就是眼在手上的形式,实现了仿真环境与真机同步抓取。目标识别检测方面,网络主体模型为改进后的YOLOX-S目标识别网络,用Realsense相机采集待训练样本,自制数据集后送入网络训练得到相应权重。检测阶段,YOLOX-S网络调出Realsense相机实时彩色图像,利用训练好的权重,在实时图像上检测出多个待抓取物体,检测到的内容包括目标类别、置信度、检测框、检测框中心点像素坐标等。物体坐标转换系统能够利用检测框中心点像素坐标和该点深度值(由深度图获得),得到多个目标在机械臂基坐标系下的三维坐标,通过逆运动学求解得到UR5机械臂6个关节角,最终通过ROS机器人操作系统控制机械臂运动完成抓取任务。
2 坐标转换部分
准确的坐标转换是机械臂成功抓取的前提。相机识别检测目标时获取的是包含待抓取物体的二维平面图像,而抓取操作实际需要的数据是待抓取物体在世界坐标系(抓取中一般设为机械臂基坐标系)下的三维空间坐标值,为了顺利抓取起物体,相机既需要进行自标定,也需要手眼标定。
2.1 相机成像原理
相机成像原理如图2所示。根据小孔成像原理,实际上成像平面O-XY应该位于相机坐标系Oc-XcYcZc的后面,为了更直观地显示坐标关系,将其放在相机坐标系Oc-XcYcZc的前面。
图2 相机成像原理
其中,Oc-XcYcZc坐标系是相机坐标系,RGB相机光心为原点;O-XY坐标系是图像坐标系,成像平面中点为坐标原点;Ouv-uv坐标系是像素坐标系,图像左上角为坐标原点。P(Xc,Yc,Zc)为世界坐标系下任意一点;p(x,y)为点P在图像中的成像点,在图像坐标系中的坐标为(x,y),单位为mm,在像素坐标系中的坐标为(u,v),单位为pixel。f等于O~Oc之间的距离,称为焦距。
2.2 世界坐标系转换为相机坐标系
同一点从世界坐标系转换到相机坐标系属于刚体变换,可用式(1)表示。其中,R为旋转矩阵(3×3),T为偏移向量(3×1)。
(1)
2.3 相机坐标系转换为图像坐标系
从图2可知ΔABOc~ΔoCOc,ΔPBOc~ΔpCOc,于是从相机坐标系转换到图像坐标系可用式(2)表示[10]。
(2)
2.4 图像坐标系转换为像素坐标系
由图2可知,这两个坐标系实际上可以通过平移相互转换。
由成像平面上任一点p(x,y)可得两坐标系转换关系为式(3)。
(3)
(4)
相机内参自标定结果与相机出厂标定数据对比如表1所示,可以看出两者误差不大,所以实际抓取中仍采用出厂标定内参。
表1 相机内参(640×480,30 fps)
相机外参标定分别计算了Tsai-Lenz、Park、Horaud、Daniilidis等4种方法计算值,如表2所示,4种方法求得的标定结果一致,最后选择Tsai-Lenz方法求解值作为最终解。
表2 相机外参(相对机械臂基坐标系)
3 基于改进YOLOX-S网络的零件识别
为了提高YOLOX-S网络识别准确率,又不大幅度影响实时检测速度,向网络添加CBAM注意力机制。
3.1 先通道后空间的混合注意力机制
给网络加装注意力机制的目的就是让网络关注到它更需要关注的地方,实现网络自适应注意。使用CBAM注意力机制对YOLOX-S提取特征层中出现的机械零件特征分配高权重,对桌面抓取背景分配低权重,使特征提取更加关注机械零件,提高模型检测精度。
CBAM注意力机制包括通道注意力(channel attention module,CAM)和空间注意力(spartial attention module,SAM)两个独立模块,采用先通道后空间的结构进行混合,其结构如图3所示。
图3 CBAM注意力机制结构
通道注意力模块CAM结构如图4所示。其中,先对输入的特征层分别进行全局最大池化和全局平均池化,输入特征图在空间上压缩为1×1的图像,通道数仍为C;之后利用共享的全连接层进行激发处理,该部分由2个全连接层(fully connected,FC)、1个ReLU激活层和1个Sigmoid激活层组成,其中第1个全连接层输出是1×1×C/r(r为降维倍数),其将通道维数从C维降至C/r维。第2个全连接层输出是1×1×C,将通道维数从C/r升至C维[12]。相比直接用一个全连接层,这样构建不仅大大降低了网络参数量,同时很好的体现了各通道间的非线性和复杂性,然后取一个sigmoid激活,此时获得了输入特征层每一个通道的权值(0~1之间)。再将这个权值乘上原输入特征层即可。
图4 CAM通道注意力结构
通道注意力模块SAM结构如图5所示。首先对SAM处理的特征层在每一个特征点的通道上进行全局最大池化和全局平均池化,然后在通道维度上整合为H×W×2大小,利用一次通道数为1的卷积调整通道数为H×W×1大小,然后取一个sigmoid激活,此时获得了输入特征层每一个特征点的权值。再将这个权值乘上原输入特征层即可[13]。
图5 SAM空间注意力结构
3.2 改进YOLOX-S网络结构
改进YOLOX-S网络的自主识别的任务就是实时地检测出图像中待抓取物体的类别、中心点像素坐标和所占像素范围。使用带有预训练权重的YOLOX-S目标检测网络模型进行改进,引入CBAM注意力机制。改进YOLOX-S网络模型结构如图6所示。
图6 改进YOLOX-S网络基本结构
上图左侧为主干特征提取部分,使用CSPDarknet作为主干特征提取网络,其中包括Focus网络结构、Conv2D_BN_SiLU标准组件和CspLayer残差结构。输入的图片首先会在CSPDarknet里面进行特征提取,生成(80*80*256)、(40*40*512)、(20*20*1024)3个有效特征层。由于注意力机制随插随用的性质,通常将其放在主干特征提取网络之后,也就是(80*80*256)、(40*40*512)、(20*20*1024)3个有效特征层之后。中间为特征加强提取部分,采用FPN+PAN特征金字塔结构,最终获得多个尺度的特征信息。右侧为预测部分,设计了Decoupled Head这种解耦头的分类回归器,分别实现分类和回归,最后预测的时候才整合在一起。
3.3 数据集预处理与检测效果
为了满足抓取零件的要求,自建了机械零件数据集。通过RealsenseD435相机对零件拍照自制数据集,从不同角度、亮度、背景拍摄机械零件,尺寸640×480,自制数据集中的零件类型有螺帽、螺栓、齿轮、垫片、钢管、丝锥、插齿刀、铣刀等,共1372张。按照PASCAL VOC数据集格式构建,使用LabelImg标注图片,最终生成与每张图片对应的.xml标签文件[14]。训练时分为冻结阶段和解冻阶段。前100个epoch冻结主干特征提取网络,batch_size为8,初始学习率为0.001。后100个epoch解锁主干特征提取网络,网络所有参数都更新,batch_size为8,初始学习率为0.000 1。损失值变化如图7所示。训练后对相机视频流实时检测,效果如图8所示。
图7 训练损失值变化 图8 实时检测效果(FPS:35帧/s)
在本文实验环境下,将改进后的YOLOX-S网络与YOLOV3、YOLOV4、YOLOV5、原始YOLOX-S进行比较,在VOC07+12数据集和自制零件数据集上进行测试,对比结果如表3所示。
4 实验验证
实验环境:本文基于Linux(Ubuntu18.04)系统搭建实验环境,具体环境配置如表4所示。
表4 实验环境
4.1 仿真实验
为了预防真机抓取时机械臂运动规划与环境障碍物碰撞,先在仿真环境中进行了抓取实验。将真机抓取环境还原到ROS系统下Gazebo仿真平台,通过moveit控制仿真中的机械臂末端位姿进行抓取,分析正逆运动学和各关节运动稳定性。仿真抓取如图9所示。抓取过程中各关节加速度曲线如图10所示。经分析,通过moveit的编程接口求机械臂逆运动学关节角经常出错,有时求不出逆解,机械臂无法运动,有时机械臂与桌子碰撞。为了防止真机出现这种致命失误,不再通过moveit控制器编程接口控制UR5,而是选择更加底层的控制端口,直接与UR5建立通信,更加方便地控制机械臂TCP到达工作空间任一点。
图9 Gazebo仿真抓取 图10 关节加速度曲线
4.2 抓取实验
实际抓取实验中零件其位置和姿态都各不相同,抓取时是一次性抓取完桌面上所有零件,记为循环抓取一次,共循环抓取15次,记录抓取成功率,实际抓取过程如图11所示。
(a) 起始位置 (b) 检测位置 (d) 张开夹爪
实验中分别用YOLOX-S网络和改进YOLOX-S网络对物体进行自主识别,抓取成功率对比如表5所示。可看出,改进后的YOLOX-S网络完全能够满足抓取要求。
表5 实际抓取效果
5 结论
提出一种基于改进目标检测算法YOLOX-S的机械臂自主识别抓取方法,搭建了ROS下Gazebo仿真平台,通过仿真验证平台对仿真环境中抓取动作进行观察,符合仿真抓取无碰撞之后再在真机上进行真实抓取实验。在实验中,改进后的YOLOX-S卷积神经网络能有效识别未训练过的的同类机械零件,泛化能力强,同时在实时性和准确率上得到充分保障,完全能够实现机械臂自主识别抓取任务。