李志明
(南京铁道职业技术学院,江苏南京,210031)
近年来,我国深入实施党中央国务院提出的“藏粮于地,藏粮于技”农业战略,加快建设农业强国,推进农业科技现代化。农业生产在数字化、智能化进行了全面升级改造。各种农业机器人取代传统农业劳作,提高了生产效率。在水果采摘领域,也有学者、工程师不断进行研究开发各种水果采摘机器人。
许子康老师在论文提出了基于STM32 的六足农业仿生机器人研究[2],主要为了解决农业生产中喷雾,施肥,收割的农业劳作,用仿生的方式解决机器人在劳作区域稳定行走的问题。孙永芳老师提出GPS 位置定位功能为保证实时获取农业采摘机器人的具体位置,用超声波控制机械抓手与水果距离,实现水果采摘[1]。但是超声波在实际应用中会受到各种干扰,比如树叶、树枝和水果本身的反射、折射等等,给距离估算带了不可忽略的误差。闵小翠老师提出[3],为提升农业采摘机器人运动协作控制性能,降低机器人碰撞概率,利用D-H 法优化设计机器人运动协作控制系统防止多机器人协同工作时碰撞问题,这里主要解决了多机器人同时劳作时行走问题。可以看到目前对提高水果采摘率的研究不是太多,并且水果采摘机器人的成功采摘率还都有待提高。
本设计为基于STM32 单片机的水果采摘机器人设计。机器人系统通过使用矩阵键盘或者远程发出控制指令,用图像识别方法确定水果位置,通过控制电机操控机械手对目标水果进行手动或者自动采摘。
本系统机械机构如图1 所示。水果采摘机器人采用STM32 单片机控制机械臂在三条直线导轨上进行前后、左右和上下运动,完成三维自由采摘水果。X 轴为左右移动导轨,Y 轴是上下移动的导轨,Z 轴为前后运动的导轨。每一条导轨都采用带编码器的直流减速电机驱动,在导轨两端部同样装有一个防碰撞的行程开关。
图1 水果采摘机器人机械结构
图2 水果采摘机器人系统整体设计
Z 轴安装的机械抓手采用舵机作为驱动源,机械手内侧安装了一个压力传感器,测量抓取果实的力量。机器抓手的下部装有一个摄像头,系统读取摄像头数据进行图像分析,判断果实的颜色和位置,从而驱动并控制机械抓手采摘水果。
系统还安装了杆式电位器控制板,通过电线与控制器相连,实现手动控制采摘水果。
本系统主要由微处理器(STM32F103ZET6)控制传感模块、输入输出模块、驱动模块和无线模块,整个系统由电源模块提供稳定的直流电。
电源模块主要完成220V 交流电转化为稳定的12V,5V和3.3V 的直流电。
输入输出模块主要由键盘、显示器和语音播报模块组成。系统可以通过键盘输入控制指令,设置水果采摘机器人的采摘范围和工作模式。手动采摘模式下,通过手动控制摇杆驱动机械臂运动,采摘水果。自动采摘模式下,系统通过扫描设定采摘范围,自动识别水果颜色和形状大小,定位水果实际位置,实现设备自动采摘水果,如果采摘成功,则可以语音播报当前采摘水果的个数。
驱动模块包括直流电机和舵机以及相关电路,主要是完成机械臂的三维运动和机械手的抓取动作。三台直流减速电机驱动分别驱动机械臂在X 轴,Y 轴和Z 轴的导轨进行运动。机械臂的前端安装机械抓手。系统通过舵机控制机械臂,可以进行0~180 度角度旋转,方便准确抓取水果。
传感模块主要包括遥感电位器、电容式位移传感器和OV7725 摄像头。在手动采摘模式下,微控制器读取遥感电位器的电位,通过电线与控制器相连,实现手动控制遥感采摘水果。在自动采摘模式下,微控制器实时读取电容式位移传感器获取机械臂的实时位置,并通过OV7725 摄像头图像处理模块分析获取目标水果的位置信息,调整机械臂的位置。当机械臂到达合适的位置时,机械抓手在Z 轴移动,并通过压力传感器反馈机械抓手抓取水果的抓力,保证既能顺利采摘水果,又能保证水果不被机械手的抓力破坏。
无线模块主要是实时系统远程控制,系统能在远程发送控制指令,控制水果采摘机器人的工作。由于篇幅有限,本文主要介绍前三个模块。
(1)形状识别仿真
因为在实际的水果采摘中,水果和树叶相差甚大,只需要基本判断圆形或者方形即可。例如,苹果,李子,雪梨,石榴等等基本是圆形,还有一些是长椭圆形比如香蕉。在本仿真中,我们主要针对整块形状的仿真,特别是针对圆形进行仿真识别。
第一步,读取彩 图像。仿真配置了一个有许多不规则物体的图片,模拟实际环境的树枝,树叶等等,增加仿真的真实性。图3 是读取的形状原图。
图3 图像形状识别原图
第二步,将读取彩 图像转化为二值图像。针对图像中可能有不同形状的目标物体(水果,叶子,树枝,虫子),需要进行目标筛选。系统先通过形状小大判断,过滤掉我们不需要的杂质物体,极大地提高了图像识别的效率。图4 是去掉噪声之后的二值图。
图4 图像去噪后的二值图
第三步,计算并识别目标。首先进行孔洞填充并进 白色描边,最后通过函数bwboundaries 确定图像边界。图像边界确定后,求取图形的面积和周长等关键数据。
确定圆形 标,求取图形周长,圆,积,并计算根据公式计算形状 Y,公式如下:
其中:S 为面积,L 为周长。
标准圆的值是1,在本系统中设置阈值为0.85,即形状Y 于这个阈值的就是我们所需要的 标物体。
最后一步,可以根据实际水果的形状而调整。首先调整阈值计算,几何中心的计算,然后就是阈值的大小。判定为水果后,需要根据几何中心找出一个合适的位置确定成熟的水果的位置。显示如图5 所示。
图5 图像形状识别结果
(2)颜色识别仿真
因为正常成熟水果为红色和黄色,为了能准确获取成熟水果,我们对红色,黄色进行颜色识别仿真,以便更好地在系统中实现水果采摘。图6 是识别原图,紫色和灰色是干扰形状。
图6 图像颜色识别原图
识别过程如下:
第一步,计算每个区域Lab 颜色空间中的样本颜色。
在图像中可以看到五种主要颜色:背景色、红色、紫色、黄色和灰色。眼睛能在视觉上轻松区分这些颜色,但是对于计算机系统而言就是颜色数据。采用Lab 色彩空间能够量化这些视觉差异,因此先将颜色空间转换为Lab 颜色空间,
本文的算法是为每种颜色选择一个小样本区域,并在Lab 空间中计算每个样本区域的平均颜色。您将使用这些颜色标记对每个像素进行分类。
第二步,使用最近邻规则对每个像素进行分类。
每个颜色标记现在都有一个a 值,b 值。在本图像中,可以通过计算像素与每个颜色标记之间的欧几里德距离L,来对图像中的每个像素进行分类。最小距离即该像素最匹配的颜色。例如,如果像素与红色标记之间的距离最小,则该像素将被标记为红色像素。因此不管是什么颜色,根据颜色标计之间的欧几里德距离,所有的颜色会都归类到距离最小的标记颜色中,消除不固定的自然界中颜色多样性。欧几里德距离公式如下:
其中:a,b 是固定分类颜色的Lab 颜色空间的a 值和b 值;color.a,color.b 是获取当前图像像素的a 值和b 值。
创建一个包含颜色标签的数组,即 0=背景、1=红色、2=紫色、3=灰色和 4=黄色。
第三步,显示最近邻分类的结果。
标签矩阵包含设定图像中每个像素的颜色标签。使用标签矩阵按颜色分隔原始设定图像中的对象。图7 就是把红色(图7(a)),黄色(图7(c))分离出来的结果。图7(d)是原图的二值图,图7(b)是除了黄色,红色物体之外的其他物体图。
图7 图像颜色识别
这样分离对后续识别非常有帮助。比如,如果是红色成熟水果,则可以用红色的Lab 颜色空间的a 值和b 值进行颜色紧邻分类,分类后则系统只保留了红色的形状,其余形状都已经过滤,这给形状识别带来便利。
如图7 所示,图7(d)是原图的二值图像,如果本次采摘水果是红色苹果,则可以采用图7(a)的分离结果进行形状识别,减少了非常多的干扰项,效率大大提高。如果本次采摘水果是黄色芒果,则可以采用图7(c)的分离结果进行形状识别,效率和准确率大大提高。
系统软件设计移植了Matlab 图像识别的算法,并实现水果采摘机器人的智能化设计。
(1)首先主程序的主要功能是循环按键扫描根据不同按键值读取进入不同子程序继续执行扫描;
(2)如果按键为1,则进入区域设定功能,完成设定后继续进行按键扫描;
(3)如果按键为2,则进入手动采摘功能。通过手工控制遥杆,单片机通过读取电容位移传感器和压力传感器数据实现与遥杆实现联动。输出PWM 信号驱动直流电机和舵机控制机械抓手实现手动采摘水果。
(4)如果按键为3,则进入位置控制功能。通过电容位移传感器实时获取机械抓手位置,并通过PWM 输出驱动直流电机,配合键盘输入信息完成机械抓手位置设定和调整。
(5)如果按键为4,则进入自动采摘功能。系统在设定区域进行图像扫描,通过摄像头模块采集当前图像数据,通过图像识别算法分析是否遇到水果以及确定水果位置。如果没有遇到水果则继续扫描,直到遇到水果或者扫描完整个设定区域为止。
(6)如果扫描到水果,则利用电容传感器实时获取当前机械抓手位置,输出PWM 信号驱动直流电机控制机械手位置、舵机转动控制机械抓手。系统实时获取机械手的压力传感器数据,调整机械手抓力大小,准确无伤地实现水果采摘并放到系统指定位置。
(7)系统的所有控制也可以通过无线模块接收远程指令并控制。系统总体工作流程所图8 所示。
图8 系统流程图
本系统在实验室环境下,在位置数据测试调整完毕后,进行了水果采摘测试实验。实验数据表明,系统能根据图像采集数据进行分析并确定水果实际位置,驱动电机控制机械抓手顺利完成水果采摘实验。系统能有效区分红,黄,绿三种颜色的水果,并在实验室模拟条件下,根据设定数据准确采摘指定颜色的水果,很好地完成了水果采摘任务。采摘实验如表1 所示。易采坏成熟的水果,这样达不到替代人工采摘的设计初衷。另外,在实验室模拟条件下不能完全模拟在农场中实际采摘时的噪声,因此图像识别算法还要在实际农场采摘中优化和改进。
表1 水果采摘成功率