基于Kinect的机器人采摘果蔬系统设计

2018-08-10 09:23伍世虔
农机化研究 2018年10期
关键词:运动学果蔬摄像机

王 欣,伍世虔,邹 谜

(武汉科技大学 冶金装备及其控制教育部重点实验室,武汉 430081)

0 引言

我国的果蔬种植面积和产量已处于世界前列,目前的果蔬采摘过程普遍采用人工采摘的方法,自动化水平比较低,成本高,且耗时耗力[1-2]。随着温室培育果蔬技术的普及,实现智能机器人自动采摘果蔬的需求越来越强烈[3-4]。

相关学者在20世纪就已经开始了智能采摘的研究。荷兰农业环境工程研究所研发的黄瓜自动采摘机器人,采用近红外技术识别黄瓜成熟的程度并配备机械手进行抓取,同时能够轻松避免损伤黄瓜的表面。该方法拥有两个视觉系统,配置要求比较高,不具有普遍性[5]。日本的Yamamoto等研发出草莓采摘机器人,由3个摄像机组成采摘机器人的视觉系统[6],通过切断草莓梗来摘取果实,成功率较低,且视觉系统所采用的摄像机过多导致摘取的速度慢。美国加利福尼亚西红柿机械公司研发的西红柿采摘机连同西红柿苗一起收割,在采摘之后进行西红柿的分类,采摘的效率很高但智能化程度低[7]。近几年来,国内对采摘机器人进行了一系列深入研究,并取得了很大进展。中国农业大学的张铁中采用BP神经网络[8]的算法来识别草莓,并且通过LRCD算法对采集到的草莓图像进行分割,从而确定最佳采摘果实位置点。LRCD算法适用于果实的颜色与果实的背景颜色差别较大的情况[9],若果实的颜色与叶子相似度高则会产生干扰影响,因此适用范围非常有限。本文基于Kinect V2视觉设备,利用NAO机器人设计了一个完整的果实采摘系统,不会受光线的影响,且获取坐标的速度又快、又准。

1 Kinect获取机器人及果蔬三维坐标

1.1 Kinect工作原理

Kinect V2内置彩色摄像机、红外发射器和一个麦克风阵列,采用了深度感应技术,如图1所示。其中,红外发射器投射红外线脉冲并在脉冲受阻挡的时候返回。利用Time of Flight(ToF)得到Depth信息,Depth的数据范围为0.5~4.5m。红外感应器的正常使用不受周围光线的影响,视场中的果蔬在黑暗中依然清晰可见,采用独立与可见光的视场,深度图像是高保真图像且进行了图像去噪。

图1 投射红外脉冲

本文利用Kinect V2红外摄像机对场景的深度进行采集来创建实时深度图,较Kinect V1测得的深度范围增大了0.5m,分辨率和视野范围都有较大提高,新增加的红外线探测功能使得图像清晰、稳定且噪点较少。利用Kinect V2采集的深度图如图2所示。

图2 Kinect实时深度图

Kinect近红外摄像机的视场是金字塔形状的。离摄像机远的果蔬比近的果蔬拥有更大的视场横截面积。每个像素的深度值和视场中果蔬离摄像机的距离是对应的。Kinect的空间坐标系如图3所示。

图3 Kinect空间坐标系

1.2 Kinect彩色相机与深度相机的标定

采用棋盘格标定板对彩色相机和深度相机进行标定,图4为棋盘格标定板在标定过程中的显示、通过标定过程,来获得摄像机内部参数、外部参数和投影矩阵。

标定获得的深度相机的内参数(Matrix Ir)为

(1)

深度相机的外部参数的旋转矩阵(Rotation)为

(2)

深度相机的外部参数的平移矩阵(Translation)为:

(3)

图4 深度相机和彩色相机的标定

1.3 Kinect获取坐标的原理

Kinect获取的深度值是由16位的无符号整数来表示的。本文通过位运算获取每一个像素的距离,将每一个像素点对应的深度值zw显示到界面。在计算机视觉中,利用相机的成像模型将三维空间点与二维像素点联系起来。某点三维坐标为(xw,yw,zw),像素坐标为(uc,vc),在UI界面添加一个TextBlock,采用鼠标点击事件MouseLeftButtonUp来触发获得深度图像中果蔬及机器人的像素坐标。为了得到图像每一帧的任意一个点的三维坐标值,要从图像坐标系中转换到相机坐标系下的三维坐标。由相机的成像模型原理可得

(4)

1.4 Kinect获取空间坐标

本文将标定获得的参数结合式(1)~式(4),将空间任意一点的三维坐标表示为

(5)

(6)

由式(5)~式(6)得果蔬和机器人的三维坐标为(xw,yw,zw)。

2 NAO机器人手臂末端运动学分析

NAO机器人手臂具有5个自由度,对机器人的末端执行器采用D-H法进行正运动学分析,可得

(7)

式(7)右边矩阵为机器人末端的位姿。其中,p为机器人末端位置。采用D-H法对NAO机器人的手臂末端进行逆运动学分析,5个关节对应的关节i分别为RShoulderPitch 、RShoulderRoll 、RElbowYaw 、RElbowRoll 、RWristYaw 。其中,Ai表示为

(8)

其中,sθi=sinθi,cθi=cosθi,sαi-1=sinαi-1,cαi-1=cosαi-1。 NAO机器人右臂的D-H参数如表1所示。

表1 NAO机器人右臂D-H参数

NAO机器人与人体结构十分相近,符合人抓取的惯用姿态,故取RElbowYaw、RWristYaw及RElbowRoll关节坐标的Y值相等,即

py=yRElbowYaw=yRwristYaw=yRElbowRoll

(9)

对机器人的5个关节采用D-H算法进行逆运动学分析。由式(7)~(9)可得

(10)

同理,可得θi。机器人逆运动学计算可得5个关节分别转动的角度,从而成功摘取果实。图5为机器人关节摘取果蔬时在视图中的表示。

图5 机器人的5个关节

3 机器人与Kinect视觉设备交互

NAO机器人通过WiFi与计算机进行数据传输,输入机器人的IP地址到网页浏览器,即可与计算机进行通信。NAOqi是机器人的控制结构,计算机使用本地调用(LPC)连接到机器人并交换信息,采用ALMemory存储数据并监控机器人。本文对机器人采用Python进行编译,配置环境变量之后,可以在Python中使用NAOqi的AldebaranSDV,从而成功控制机器人。

Kinect V2采用C#语言进行编译,读取深度数据帧并复制到相应的缓冲区,读取帧数据并建立数据文件。本文将采集的图像数据以文件的形式发送给PC端,机器人读取PC端的数据实现与Kinect的交互,实现数据的传输。

4 实验及分析

4.1 实验具体过程

果蔬采摘系统的流程图如图6所示。

图6 机器人摘取果蔬流程图

试验的具体过程如下:

1)Kinect V2设备放置在水平位置上,获取果蔬和机器人的深度图像,并采用过渡RGB颜色来表示不同的深度。

2)采用鼠标点击事件MouseLeftButtonUp分别获取果蔬形心三维坐标(xw,yw,zw)及机器人腰部Torso三维坐标(xr,yr,zr),将Kinect获得的各项参数以文件的形式发送给计算机。

3)调用NAOqi模块中的walkto(x,y,theta)函数,读取计算机获得的三维数据,机器人根据数据抵达最佳摘取果蔬的位置;再次利用Kinect获取的机器人三维坐标,并将数据反馈给机器人。机器人采用闭环控制系统,若机器人距离最佳摘取目标点误差超过5mm,则再次利用walkto函数进行位置调整。

4)根据机器人三维坐标,NAO机器人根据逆运动学得出每个关节转动的角度,准确完成摘取果蔬的任务,如图7所示。

图7 机器人成功摘取果蔬

4.2 实验结果分析

Kinect获取的三维坐标如表2所示。在Kinect进行相机的标定后,测量精度高,误差保持在2mm之内,且视觉系统测得的三维坐标速度快,获取坐标时间只需0.15s。本文利用白色棒代替果蔬进行50次果蔬的采摘实验,结果如表3所示。每次实验机器人的位置与果蔬的位置都不相同,采摘成功率为78%。

表2 Kinect获取的几组三维坐标

表3 机器人摘取果蔬统计表

5 结论

本文采用Kinect视觉设备获取深度图像,在不同光照条件下均可以得到果蔬的深度信息,采用相机的标定提出了一种获取果实空间坐标的方法,此方法获取的三维坐标误差小于2mm,满足果蔬采摘机器人的误差要求。此外,本文采用文件的形式进行数据传输,实现了视觉系统与机器人系统之间的交互。根据果蔬的三维坐标,采用D-H法对机器人右手手臂进行逆运动学分析,最后末端执行器准确抵达果蔬所在位置,成功率较高且耗时短。

猜你喜欢
运动学果蔬摄像机
果蔬PARTY
基于MATLAB的6R机器人逆运动学求解分析
奇思妙想的果蔬们
工业机器人在MATLAB-Robotics中的运动学分析
新安讯士Q6155-E PTZ摄像机
安讯士新AXIS M31网络摄像机
基于运动学原理的LBI解模糊算法
如何消除和缓解“摄像机恐惧症”
履带式推土机行驶系统运动学分析
果蔬的畅想世界