基于机器视觉的目标定位与机器人规划系统研究

2020-01-03 01:24
计算机测量与控制 2019年12期
关键词:标定坐标系物体

(广东工业大学 计算机学院,广州 510000)

0 引言

近年来,随着人工智能的发展,特别是深度学习技术对物体识别准确率的提高,机器人通过视觉获取外部环境的感知处理各种任务的能力也在逐步提高。机器人得到任务,如何快速而准确地通过视觉从环境中提取目标、识别物体,通过“手”和“眼”的协调合作规划机械手的运动是目前机器人研究的热点之一[1]。而随着机器人功能的日趋完善,为机器人编写软件的工作却越来越复杂,机器人操作系统(Robot Operating System,ROS)是一种用于机器人的次级操作系统,它提供了一种分布式处理框架,针对传统机器人控制系统面对特定对象时,系统设计工作量大、可移植性差的问题,ROS通过提供统一的软件平台,使得代码重用和模块化设计变得更加简便,可显著提高机器人应用开发速度[2]。

本文基于ROS系统多模块松耦合的特性作为统一的设计平台,将视觉检测、深度学习、机械臂运动规划与物体抓取等技术相结合。深度学习进行实时物体检测,通过手眼标定建立机械臂和相机的空间模型,计算得到待抓取目标的三维坐标,最后完成基于视觉的机械臂抓取系统的研究。

1 系统结构及原理

整个系统的构成如图1所示,机器人在接收到任务后,通过视觉传感器获取规划场景信息,Kinect相机采集图像,对目标物体进行视觉检测,同时通过视觉标定建立的相机-机器人-目标物体三维坐标模型,将物体三维位置坐标发送给机器人,机器人在接收到信息后进行轨迹规划处理。

图1 系统构成图

2 系统硬件设计

1)Kinect相机:采用微软(Microsoft)公司Kinect V1 深度相机,相机分辨率最大为640*480,满足系统设计要求。

2)光源:采用CCS公司的LED环形光源,该光源响应时间快,可以获得高品质、高对比度的图像。

3)电脑主机:配有英特尔(Intel)I7-8700K 处理器(CPU),英伟达(NVIDIA) GTX-1060显卡的计算机,负责接收Kinect相机采集的图像,通过算法处理完成物体识别与定位之后,将物体的三维坐标信息发送给机械臂并控制机械臂的规划运动。

4)机器人:采用丹麦Universal Robots公司的UR3型机器人,该机器人采用TCP/IP通讯,具有6个关节自由度,延伸半径 500 mm,重复定位精度为0.03 mm。

图2 系统硬件结构

3 系统软件设计

相机通过拍摄目标物体的图像,经过目标检测算法处理之后获取目标物体相对于相机的位置信息,机器人无法直接进行物体抓取,因此需要建立机器人-相机-目标物体的三维坐标模型,将目标物体的信息转换为三维空间的位姿。软件系统设计的其中一个难点在于,模型建立后,还需考虑对模型准确性产生影响的因素,因此需要对镜头制作过程产生的径向畸变和在相机组装过程中产生的切向畸变进行相机标定和手眼标定消除其产生的影响[3]。

3.1 相机标定

如图3,uov是相机中的像素坐标系,它反映了相机芯片中像素矩阵的排列情况[4]。原点o位于图像的左下角,坐标轴u、v轴分别与像平面的两边平行。由像素坐标与图像坐标的关系,可得如下矩阵:

在获得像素坐标与相机坐标的关系之后,为了完成相机-目标物体的坐标转换,还需要建立相机坐标与世界坐标的关系。如图3所示,由小孔成像模型可知,在摄像机的光心处建立坐标系,Z轴沿光轴方向,X轴沿图像坐标沿图像坐标水平增加的方向,在相机坐标系O-XYZ中,空间任意一点M与其图像点m,M与相机光心O的连线为OM,OM与像平面的交点m即为空间点M在图像平面上的投影。有如下矩阵表示:

图3 相机坐标与像素坐标关系

其中:Z=f,f为相机的焦距,s为比例因子(s不为0),f为焦距(光心到图像平面的距离),(x,y,z,1)T是空间点P在相机坐标系中的其次坐标。因此可以通过相机坐标系可以建立起世界坐标系与图像像素坐标系的关系矩阵:

图4 图像坐标与世界坐标转换

3.2 手眼标定

在基于机器视觉的物体检测中,相机与机械臂末端手眼标定的准确性将直接影响到机械臂抓取的精度[5]。手眼标定的目的就是求得相机坐标系到机械臂基坐标系的变换关系矩阵[6]。

图5 手眼标定流程

在手眼标定过程中,启动相机内外参标定程序,相机获取视野内标定板的棋盘格图像。同时启动机械臂标定程序,相机记录机械臂末端执行器在棋盘格标定板中移动过的位置,标定程序经过对记录的位置进行处理,通过相机坐标系-标定坐标系、机械臂基坐标系-机械臂末端坐标系-标定坐标系矩阵变换等,从而得到机械臂-相机-标定物体坐标系的转换关系,建立参数模型。

图6 手眼标定坐标转换

如图3,B为机械臂固定基座坐标系,E为机械臂末端坐标系,C为相机坐标系,W是用于标定的棋盘格坐标系,相机坐标系与末端坐标系间无相对运动,棋盘格坐标系W固定不动。手眼标定的目标就是要求得相机坐标系到机械臂基坐标系的变换关系矩阵:Pb=Rcb*Pc+Tcb, 其中Pc为相机坐标系下的一个坐标点,通过手眼变换关系可以得到点Pc在机械臂基坐标系下的坐标值,标定的目的是要求出两个坐标系的变换矩阵Rcb和平移向量Tcb,也可以写成Pb=Hcb*Pc。

九点标定直接建立相机和机械手之间的坐标变换关系[7]。控制机械臂末端从标定板上位置1依次移动到位置9,同时相机识别9个点得到像素坐标。对于每一个位置都有:

Pb=He*Pe

(1)

Pc=Hwc*Pw

(2)

Pb=Hcb*Pc

(3)

这样就得到了9组对应的坐标。公式(2)中Hwc是相机标定得到的世界坐标系与图像像素坐标系的变换,即棋盘格坐标系到相机坐标系的变换矩阵。通过9组坐标即可求得相机坐标系到机械臂的基坐标系的变换关系矩阵Hcb。

3.3 基于深度学习的物体定位与检测算法

传统的目标检测大多采用OpenCV模板匹配或者如方向梯度直方图(histogram of oriented gradient, HOG)、尺度不变特征变换 (scale-invariant feature trandform,SIFT)的方法,模板匹配原理是通过在输入图像image上滑动图像块,对实际的图像块和模板图像templ进行匹配[8-9]。这种方式的缺点是由于模板匹配采用的是像素点的匹配,并且受环境光照等的限制较大,所以一旦当识别的种类增加或者外部环境变化时,模板匹配的效果并不理想。

目前,基于深度学习的目标检测在性能上的表现明显超出了传统的目标检测算法,对比于手工设计的特征,基于深度学习的目标检测能够进行自主学习,题图不同层级的特征图,使检测性能大幅度提高。而SSD(Single Shot Multibox Detector)是一种基于卷积神经网络的端到端(end-to-end)目标检测算法[10]。SSD算法满足数据处理的效率、性能、速度和智能化等各个方面要求,与Faster RCNN[11]相比,SSD不再需要 RPN(Region Proposal Network)来生成候选区域 ROIs,SSD采用CNN来直接进行检测,另外SSD网络可以提取不同尺度的特征图进行检测,这使SSD在检测小目标物体上具有良好的性能。因此,SSD 算法很好地改善了检测速度,更能满足目标检测的精确性要求[12]。

SSD采用VGG16作为基础模型,然后在VGG16网络的基础上新增了卷积层来获得更多的特征图用于检测,SSD将VGG16的fc6和fc7两个全连接层换成两个卷积层,并去除VGG16的dropout层和分类层,最后通过非极大值抑制(NMS)得到最终检测结果[13]。

本系统采用SSD算法进行物体检测,并通过获得的相机坐标系到机械臂的基坐标系的变换关系矩阵计算物体坐标,为后续机器人抓取规划提供可靠信息。本文使用自建的数据集对目标检测算法进行训练与评估,数据集中包含1 800张原始图片用于训练与验证,另外包含200张图片用于测试。为了提高训练的准确性,数据集使用随机改变图片亮度、对比度、灰度化处理以及对原始图片进行剪切的方法进行数据增强,并且数据集中包含大量目标物重叠等复杂背景。算法的一般步骤为:

图7 目标检测处理流程

1)对相机实时获取到的视频帧进行去噪、隔帧采样等处理,为了提高检测的实时性,再对图像进行灰度化处理。

2)对预处理后的图像输入神经网络,经过SSD算法处理框选出物体在图像中的像素位置。

3)通过标定建立的三维模型,将像素转换为相机坐标,通过与世界坐标转换得到物体的三维坐标。

4)将物体的三维坐标信息通过ROS通讯机制发送给机械臂,机械臂控制算法进行规划运动。

3.4 机器人运动规划

运动规划是指移动机械臂在解空间中通过算法和约束条件等操作避开障碍物,找到一条具有最优解的机器人运动路径[14]。

传统的路径规划算法,如人工势场法、遗传算法、模拟退火算法以及其它智能优化算法,由于需要在机器人解空间内进行建模,因此在机器人自由度增多时计算的复杂度成指数上升,传统的算法并不适合多自由度机器人在复杂环境条件下的规划[15]。

基于快速扩展随机树(RRT / rapidly exploring random tree)的路径规划算法,是一种在高维空间中效率很高的路径规划算法,RRT的思想的快速像树一样扩张从而寻找到最优的路径。

RRT 的基本步骤是:

1) 起点作为一颗种子,从它开始进行随机搜索;

2) 在机器人的解空间中,随机生成一个点Xrand;

3)在树上找到与Xrand最近的点,记为Xnearest;

4)连接Xrand和Xnearest,朝着树的方向生长,如果没有碰到障碍物就把生长后的Xnearest添加到树上,返回步骤 2);

随机点Xrand一般是均匀分布的,所以没有障碍物时树会近似均匀地向各个方向生长,这样可以快速探索空间。RRT算法通过对状态空间中的采样点进行快速的碰撞检测,避免了对空间的建模有效地解决了高维空间和复杂约束的路径规划问题[16]。

机械臂的运动轨迹的规划是通过ROS中的moveIT!包实现的,本系统使用RRT算法,在ROS平台上结合使用UR3机械臂对通过相机进行转换后的三维物体坐标进行运动规划控制。

4 实验结果与分析

4.1 实验步骤和方法

通过基于深度学习的视觉检测算法得到物体的在相机中的图像坐标,利用标定建立的参数化模型计算物体的三维坐标,然后将物体的世界坐标映射到机器人的基础坐标系中得到物体在机器人基础坐标系中的位置,系统操控机器人进行轨迹规划与目标物体的抓取。实验采用将机器人对同一目标物体在不同位置进行抓取,随机测试3个不同的位置点,每个位置点让机器人进行8次规划。机器人定位精度为0.03 mm,实验表明,机器人可以准确地抓取目标物体,本系统具有较高的定位精度,能够满足一般工业的生产制作要求。抓取实验如图8所示。

图8 抓取实验测试

图8(a)为相机中SSD算法检测到目标物体,通过事先建立好的相机-机器人-目标物体参数模型计算出目标物体的三维坐标,然后在计算机中通过运动规划算法模拟出机器人的运动轨迹,图8(b)为机器人按照运动轨迹进行目标物体的抓取。

4.2 传统算法与SSD算法比较

图9(a)是采用传统的模板匹配算法进行目标物体检测,在与基于深度学习的SSD目标检测算法对比中,SSD算法表现出了优秀的目标检测能力。在复杂的背景条件下,SSD算法依然表现出了很强的识别能力,而且算法的实时性也满足系统设计的要求。

图9 传统算法与SSD算法比较图

4.3 实验结果比较

实验随机选择3个位置点,每个位置点测试8组数据,比较目标物体在图像坐标和世界坐标的坐标值。结果如表1和表2所示。

表1 位置1实验结果对比

表2 位置2实验结果对比

实验数据均来自于实验室ur3机械臂和Kinect双目相机。以上数据,左侧数据展示的是物体在图像里的坐标,右侧数据展示 的是经过标定模型转换后得到的物体在世界坐标的位置。经过测试,图像坐标误差在1.2 px内,反映到物体实际坐标满足实验要求。

5 结束语

本系统基于机器视觉的目标物体进行识别定位与抓取,在机器人操作系统ROS中进行开发,通过对本系统建立的相机-机器人-目标物体的参数化模型,能够准确识别并且定位目标物体的位置坐标,结合机器人的运动规划RRT算法,最后系统控制机器人能够准确抓取目标物体。实验证明,该系统具有比较高的定位精度,而且基于ROS进行开发,具有较高的可扩展性,便于针对不同的需求进行二次开发,满足工业生产的要求,对于提高工业自动化水平具有重要的意义。

表3 位置3实验结果对比

猜你喜欢
标定坐标系物体
独立坐标系椭球变换与坐标换算
轻卡前视摄像头的售后标定
一种轻卡前视单目摄像头下线标定方法
使用朗仁H6 Pro标定北汽绅宝转向角传感器
CT系统参数标定及成像—2
CT系统参数标定及成像—2
坐标系背后的故事
三角函数的坐标系模型
求坐标系内三角形的面积
揭开物体沉浮的秘密