串收番茄采摘机器人的设计与研究
2022-01-10蒋先平黄桂财
徐 灿,熊 征,蒋先平,邓 敏,黄桂财
(1. 广东省现代农业装备研究所,广东 广州 510630;2. 广东弘科农业机械研究开发有限公司,广东 广州 510555)
0 引言
我国是设施农业面积最大的国家,2020 年我国设施蔬菜种植面积达6 150 万亩(1 亩=0.067 hm2),其中番茄种植面积达1 157.2 万亩,是设施农业种植面积最多的品种之一[1]。由于人口老龄化严重以及青壮年劳动力大多涌向非农行业,导致番茄人工收获成本占整个生产成本的33%~50%[2]。所以针对番茄研发自动采摘设备对于降低劳动强度,减少生产成本投入具有重要意义。
番茄采摘机器人交叉融合了视觉识别技术、机械臂控制技术、末端执行器设计技术、导航技术以及机器人控制技术等多种关键技术[3-4]。番茄采摘机器人的研究源于日本、西班牙、美国等国外高校和研究单位,我国起步较晚,目前有李伟、冯青青、刘继展等团队对番茄采摘机器人进行研究[5-10]。对于视觉识别技术,KONDO N、张瑞合、赵金英、冯青青等团队使用基于颜色特征进行阈值分割等传统图像处理方法对番茄进行识别[11-14]。对于末端执行器设计方面,KONDO N、LING、冯青春等团队使用气动的方式吸取果实,通过旋拧的方式摘取果实[15-18];TAKAHASHI 等团队研发的末端执行器将果梗切断后,果实落入事先准备的果筐或收集装置中[19]。
经过多年发展,我国已在番茄采摘机器人部分关键技术取得重大突破,能够满足番茄采摘基本需求,但是仍处于研发和试验阶段,未能进一步推广应用。对于识别技术,传统图像处理方法存在鲁棒性差、处理时间长等缺点;末端执行器是针对于大番茄设计,使用气动方式的末端执行器还需额外提供气源等配件,直接将果梗切断后果实直接落入果筐或收集装置中会损伤果实。由于串收番茄农业附加值高,成串采摘的采摘效率高,所以本文针对串收小番茄研发了番茄采摘机器人,实现自动导航、自动上下轨、自动识别成熟番茄和番茄果梗采摘点、剪切果梗并夹持果实放入果筐等功能。
1 作业环境与总体方案
1.1 串收小番茄种植环境
目前小番茄有一类串收番茄,成串采摘,成串销售,本文针对该品种番茄研制番茄串收采摘机器人。串收番茄如图1 所示,番茄串为平直鱼骨形,成熟的番茄果实大小、形状和颜色相对一致。经过前期试验,单个果实的直径约为30 mm,质量为12~18 g,一串番茄为200~250 g,果梗直径为2.55~4.50 mm。
图1 串收番茄
广东省农业技术推广中心温室内的串收番茄种植环境如图2 所示,小番茄种植在标准玻璃温室内,种植方式为水培,小番茄种植在岩棉块上,岩棉块放置于种植架上,使用施肥机通过滴箭对番茄输送营养液,株距为333 mm,行间距为1 600 mm,离地高度为660~870 mm。
图2 串收番茄温室种植环境
图3 所示为广东省农业技术推广中心温室的番茄种植区,整个温室分为种植区和人行区,其中种植区为非硬化地面,人行区为水泥地面,水泥地面宽度为2 500 mm,由于温室内为非硬化地面,标准温室会在两行番茄中间铺设有2根钢管作为轨道,方便各类设备运行,钢管间距为550 mm,钢管直径为50 mm。
图3 番茄种植区环境
1.2 番茄采摘机器人总体方案
本文基于温室番茄生产实际设计了番茄采摘机器人(如图4 所示),主要由行走机构、末端执行器、视觉系统、控制系统以及机械臂等部分组成。行走机构可以在水泥地面和轨道上运行。针对串番茄采收研发专用末端执行器,实现对番茄串的剪切以及夹持。视觉系统使用RGB-D 相机,结合深度学习与传统图像处理算法对番茄串、果梗以及采摘点进行识别和定位。机械臂为执行机构,负责将末端执行器送往采摘点,以及将采摘后的番茄放入果筐内。
图4 番茄采摘机器人示意图
经过调研与对比,番茄采摘机器人视觉系统的相机选用Stereolabs ZEDmini(以下简称ZEDm),其为双目相机,深度范围是0.1~12.0 m;机械臂选用UFACTORY xArm7 协作机械臂(以下简称xArm7 机械臂),该机械臂为七轴机械臂,关节灵活,冗余度较高,可为后续升级开发提供基础,重复定位精度为±0.1 mm,满足农业环境需求,且该款机械臂控制柜较小,尺寸仅为180 mm×145 mm×68 mm,便于嵌入式设计;行走机构为自研底盘,可分别在轨道上和地面上行走,并具有自动导航、自动上下轨以及原地转向等功能,满足番茄采摘场景需要;末端执行器为串番茄采摘专用末端执行器,夹剪一体,同时实现剪断果梗和夹取果梗功能;选用了Jetson AGX Xavier 作为上位机控制器,该控制器具有深度计算能力,具有Ubuntu 系统,方便基于深度学习的控制算法移植与应用。硬件选型如图5 所示。
图5 采摘机器人硬件选型
2 行走机构设计
采摘机器人需要分别在轨道上以及水泥地面上运行,所以设计了图6 所示的车体,行走机构的车轮分为外轮和轨道轮,外轮与轨道轮同轴,4 个轮子均由单独的电机控制,外轮可以在水泥地面上行驶,当行走机构在轨道上运行时,轨道轮与轨道接触,通过轨道轮在轨道上行驶,结构简单、成本较低。
图6 机器人底盘设计
采摘机器人在温室内的行走路径如图7 所示,采摘机器人在水泥地面上向前直行,到达①处时机器人向左转动90°后向轨道方向行驶,等上轨后机器人进行采摘,在轨道上行驶到轨道末端②处,机器人后退并沿着轨道回到①处,然后机器人向右转动90°后向前运动,到达下一轨道处重复上述过程。由于温室水泥地面较窄,宽度仅为2 500 mm,不足以给采摘机器人提供拐弯半径,所以行走系统需要能够原地转动90°。为实现原地转动,行走机构采用四轮差速结构,通过四轮差速实现原地转弯。番茄采摘机器人需要平稳的运行环境,所以选用麦克拉姆轮代替橡胶轮胎作为行走机构的外轮,从而将使用四轮差速进行转向时的外轮与地面的摩擦变为滚动,减小采摘机器人整体的抖动,保证机械臂与相机等精密设备的精度要求。
图7 机器人行走路径示意图
3 番茄与果梗采摘点识别方法
视觉识别系统是番茄采摘机器人的关键与核心技术,视觉识别是机器人采摘的第一步,视觉识别系统的准确性与效率决定了番茄采摘机器人的采摘成功率与采摘效率。本文结合深度学习网络与传统识别方法的优势,提出了基于yolo v3 的番茄果梗采摘点识别方法,具体流程如图8 所示,通过深度相机获取彩色图像与深度图,使用训练好的yolo v3 模型对彩色图像进行粗分割,分别框选出彩色图像中的可采摘番茄与果梗,然后对图像中框选出的果梗进行细分割,使用k-means、形态学处理、骨骼化处理等传统图像处理方法,获取每个果梗采摘点的像素坐标,再结合深度图像以及相机内参,使用式(1)计算获得图像中每个果梗采摘点在深度相机坐标系的空间坐标。理论上彩色图像上的像素点与深度图为一一对应关系,即彩色图像每个像素点均对应了1 个深度值,但是由于相机精度问题、果梗较细等问题,深度相机并不能获取每个果梗像素点的深度值,即采摘点对应的深度值为空,根据式(1),若z 为空,则无法计算获得采摘点在深度相机坐标系上的坐标值。为解决上述问题,使用大邻域均值法[20],由于现实场景中果梗的深度信息一般不会有太大差距,若采摘点实际的深度值为空,则将上述形态学处理后的果梗区域分割出来,然后提取果梗对应像素的所有深度值,剔除深度值异常的点,然后将各个像素对应的深度值进行平均,以平均值作为采摘点的深度值,用式(1)计算获得采摘点在深度相机坐标系上的坐标值。
图8 视觉识别算法流程
式中:
u、v——目标点在图像中的坐标,即像素坐标;
f——相机焦距;
x,y,z——目标点在相机坐标系上的坐标。
4 手眼标定方法
使用机械臂将末端执行器送至采摘点,需要获得采摘点在机械臂底座坐标系内的坐标,目前已知采摘点在深度相机坐标系上的坐标,若能获得深度相机坐标系和机械臂底座坐标系的相对位置和姿态关系,即位姿矩阵,即可计算获得采摘点在机械臂底座坐标系上的坐标。理论上可以通过测量仪器测量相机与机械臂底座之间的相对位姿关系,由于采摘精度对于相机坐标系与机械臂底座坐标系的相对位姿关系精度要求很高,通过测量仪器获得的位姿矩阵精度较低,无法满足要求,所以需使用手眼标定算法获得深度相机与机械臂底座的相对位姿关系。
本文采摘机器人采用手眼位置关系方案为眼在手上(eye-in-hand),本文基于ROS 系统easy-handeye功能包对本文采摘机器人深度相机与机械臂底座坐标系的相对位姿关系进行标定,标定方法如下。
将电脑与机械臂、相机连接,在ubuntu 系统上安装配置ZEDm 相机与xArm7 机械臂的ROS 功能包,能正常在ROS 平台上驱动机械臂以及相机,分别下载easy-handeye、vision_visp 和aruco_ros 功能包并完成编译,将手眼标定模式设置为eye-in-hand 模式并修改相关配置,使各个功能包均能正常工作。
固定机械臂,并将相机固定在机械臂末端,下载aruco 二维码作为标定板,固定标定板,调整机械臂末端位置,使标定板出现在相机试验范围内,如图9 所示。
图9 手眼标定
使用修改的launch 文件启动标定功能包,打开3 个人机交互界面,准备进行标定,如图10 所示。同时使用ROS 的rqt 工具打开image_viewer,实时查看相机画面,如图11 所示。
图10 手眼标定人机交互界面
图11 手眼标定人机交互界面
通过Rviz 界面调整机械臂末端位置,使标定板出现在相机视野中心附近,在机械臂控制界面点击check starting pose,若检查成功,界面会出现:0/17,ready to start,如图10(c)所示。
在图10(b)界面中点击Take Sample,若Samples对话框中出现有效信息,说明第一个点记录成功,接着在图10(c)界面中依次点击Next Pose,Plan,Execute,机械臂会移动至新的位置,若标定板在相机视野范围内,且能检测成功,则继续点击图10(b)界面中的Take Sample 记录第2 个点,依次进行上述步骤,完成全部17 个点的采集。
17 个点采集完成后,点击图10(b)界面中的Compute 按钮,则会自动计算手眼标定矩阵,并在Result 对话框中展示标定矩阵。
通过以上步骤即可获得深度相机与机械臂末端的相对位姿关系,由于机械臂末端相对于机械臂底座的位姿关系通过机器人正运动学计算可知,即相机相对于机械臂底座的位姿关系。
5 末端执行器设计
为能对番茄进行成串采摘,需设计串收番茄专用末端执行器,能够将果梗切断,并夹持采摘后的番茄串至果筐处。为实现上述功能,本文设计了图12 所示的末端执行器,该末端执行器由电机、丝杆滑块机构、夹爪以及刀片等部分组成。电机转动带动丝杆滑块上的滑块运动,从而带动连杆运动,夹爪夹紧,带动夹爪上的刀片对果梗进行切割,同时夹爪能够夹紧果梗,使剪切后的番茄串不会掉落。
图12 末端执行器
图13 所示为末端执行器工作状态,在移动到靠近目标番茄果梗的过程中,整个末端装置处于图13中(a)状态,当果梗进入到剪切位置,末端执行器的电机转动,使末端执行器变为图13 中(b)状态,此时刀片将果梗切断,刀片进入夹爪缝隙,夹爪夹住被切断的番茄,实现其夹剪一体的功能。
图13 末端执行器工作状态
6 控制系统设计
为了对番茄采摘机器人进行控制,本文设计了如图14 所示的控制系统,以Jetson AGX Xavier 作为上位机控制器,行走机构控制器、机械臂控制器、深度相机作为Xavier 的下位机,分别以串口通信、LAN 网络接口通信、USB 接口通信等方式与Xavier进行通信,其中升降机构、行走导航系统用串口通信的方式与行走机构通信,末端执行器以串口通信的方式与机械臂控制器通信,从而实现Xavier 对整个番茄采摘机器人的控制。
图14 控制系统硬件布置图
本文基于ROS 系统设计番茄采摘机器人软件系统,分别建立zed_wrapper、darknet_ros_master、images_processing、arrive_target_point、xarm_planner和car_control 等节点,节点之间通过各种话题或服务通信,如图15 所示。zed_wrapper 节点是深度相机的节点,可以获取彩色图片和深度图,将彩色图和深度图分别发布到image_rect_color、depth_registered 话题中,供darknet_ros_master 节点订阅使用。darknet_ros_master 是yolo 算法功能包节点,同时订阅image_rect_color、depth_registered 话题,通过训练好的模型识别彩色图像中番茄和果梗,识别后将识别到的果梗和成熟番茄框图信息、彩色图、深度图发布到out_rgbdboxs话题中,供images_processing节点订阅使用。images_processing节点订阅out_rgbdboxs话题,其主要功能是对经yolo算法识别的每一个果梗区域进行细分割,获得每个果梗采摘点在图像中的像素坐标,并结合out_rgbdboxs话题中的深度图计算获得采摘点在相机坐标系下空间坐标,然后该节点将每个采摘点在相机坐标系下的空间坐标和采摘点的数量发布到space_coordinates话题中,供arrive_target_point节点订阅使用。car_control节点将行走机构的速度、所处位置、升降机构位置以及是否在轨道上等信息发布到chass_info话题中,xarm_planner节点将机械臂状态信息发布到xarm_states话题中。arrive_target_point节点订阅space_coordinates话题、chass_info话题以及xarm_states话题,该节点控制流程图如图16所示。
图15 节点、话题、服务结构图
图16 arrive_target_point 节点控制流程图
arrive_target_point 节点通过gripper_config 服务设置末端执行器速度、开合范围等参数,该节点通过chass_info 话题获取行走机构是否已经在轨道上,若已经在轨道上,通过xarm_states 话题获取机械臂末端所处位置,若机械臂末端处于初始位置,则通过space_coordinates 话题获取采摘点信息,若采摘点数量为0,即视野范围内没有可采摘的番茄,则通过chass_info 话题获取采摘机器人位置,若采摘机器人已经到达轨道末端,则采摘机器人后退,若未到达轨道末端,则采摘机器人向前运动,直到视野范围内存在可采摘的番茄,此时该节点通过car_speed 服务让采摘机器人停止运动,根据采摘点在相机坐标系下的坐标和手眼标定结果计算每个采摘点在机械臂底座坐标系上的坐标,同时通过xarm_pose_plan、xarm_exec_plan、gripper_move 服务控制机械臂将末端执行器送至每个采摘点坐标处,对果梗进行剪切并夹持运送番茄至果筐内,完成采摘番茄并将其放入果筐内的任务。
7 样机搭建与验证试验
基于以上研究,试制了番茄采摘机器人样机并进行了样机调试与采摘试验。番茄采摘机器人样机如图17 所示,主要由7 自由度机械臂、末端执行器、深度相机、可运行深度学习算法的控制器、行走机构等部分组成。机械臂使用的是xArm7 机械臂,具有7 个自由度,有效负载为3.5 kg,重复定位精度为±0.01 mm,机械臂安装在移动平台上。深度相机采用eye-on-hand 方式安装在机械臂末端,深度相机使用的是ZEDmini 双目相机,能够实时输出彩色图像和对应的深度图。控制器使用Jetson AGX Xavier 嵌入式处理器,其为ARM 架构,预装了Ubuntu 系统,算力可支持深度学习运算,控制器安装在行走机构内部。末端执行器安装在机械臂末端,末端执行器夹剪一体,同时实现剪断果梗和夹持果梗。
图17 番茄采摘机器人样机
采摘机器人沿着地磁线自动行进与上轨,上轨后沿着轨道向前移动,深度相机实时进行识别,当识别到可采摘番茄时机器人会停下来,等稳定后视觉识别系统会再次对采摘点进行识别定位,并将采摘点通过坐标变换发送给机械臂,机械臂将末端执行器输送到采摘点对果梗进行剪切并夹持,完成采摘动作,机械臂将番茄放置到果筐内,重复上述动作,采摘剩余的番茄,采摘过程如图18 所示。当视野范围内不存在可采摘番茄,机器人继续向前移动寻找可采摘番茄。在试验过程中共检测到30 个可采摘目标,完成采摘28 串。
图18 采摘过程图
8 结论
1)本文分析了温室串收番茄的果实直径、果实质量、果梗直径等物理参数以及串收番茄温室种植环境,针对串收番茄设计了番茄采摘机器人方案,包括行走机构、末端执行器、视觉系统、机械臂以及控制系统等部分。
2)本文设计了地面与轨道两用的番茄采摘机器人行走机构,使用深度相机基于yolo v3 与传统图像处理方法提出果梗采摘点的精准识别定位算法,基于easy-handeye 功能包标定了机械臂与相机的相对位姿关系,设计了剪夹一体的末端执行器。
3)基于ROS 系统搭建了番茄采摘机器人的软件控制系统,集成行走机构、末端执行器、视觉系统、机械臂以及控制系统形成了番茄采摘机器人样机,并进行了番茄采摘机器人的现场采摘试验,验证了串收番茄采摘机器人的各项功能。