雒珊,杨澳军,王洪爽,岳嘉龙

(吕梁学院,山西吕梁,033301)

0 引言

伴随着苹果种植及产量的不断增大,苹果分拣所需要的劳动力也不断提高,而对于传统的苹果分拣作业,主要包括苹果好坏、成熟度以及苹果大小的分类,大多依赖人工进行,分拣方式单一,分拣效率低、速度慢,基于视觉的苹果分拣装置对于降低劳动成本、提高农业自动化水平都具有重要的研究意义。

国内外目前主要以PLC、嵌入式控制方式结合机械式、声波检测、光谱检测等技术完成对水果大小、质量、表面缺陷、色泽等特征进行检测,完成对水果等级分拣的功能,如:唐媛红等引入PLC 控制技术,通过将分拣机器人各执行机构的运行参数进行有效整合和合理分配,改善了简单的机械控制[1];刘智豪等针对水果多模式检测需求,设计了一种多用途水果分拣设备,由进料装置、传送装置、检测装置、分料装置和出料装置等几大部分组成,水果通过进料装置进入传送装置分批经过大小检测传感器、颜色检测传感器或重量检测传感器对水果做出检测与判断[2]。

针对目前整个水果分拣现状,本项目基于单目视觉的苹果分拣装置设计具有较高的自动化水平和智能化程度,能够适应各种复杂环境,精确高效地完成设定的任务;相比于人工分拣,大大提高了分拣速度、降低了人力成本、提高水果的从农产品到商品的转化时间;相比于相对有应用的半自动化水果分拣机器人——只能做到简单的机械控制,而本项目设计的单目视觉智能分拣装置实现了对于苹果色泽、大小等各项分拣参数的分拣,分拣类别更多、更加智能化、自动化,且准确率高,避免了半自动化水果分拣机器人动作不流畅,出现卡顿和分拣失败的现象。

本设计将机器视觉、深度学习与双舵机分拣装置相结合,将不同等级的苹果完成自动化分类工作,提高了苹果分级的效率,降低了生产成本。

1 总体设计方案

设计制作一个以单目视觉OpenMV4 OV7725 摄像头对特定目标物体进行识别定位,并采用STM32H7 为核心的数据处理器对采集目标数据进行处理,通过UART 通信方式,把采集到的数据以数据包的形式发送到Arduino UnoR3 主控制系统,通过该主控制系统的数据分析,进而实现对云台的精确控制。

本设计分为控制单元、摄像头采集单元、TFT 液晶屏显示单元、语音合成播报单元、OLED12864 液晶显示屏单元、双舵机控制单元、火焰检测单元七个单元组成。系统工作原理图如图1 所示。

图1 系统整体设计方案图

2 硬件模块设计

■2.1 主控制器

采用Arduino Uno 一款基于微控制器ATmega328P 的开发板。它有14 个数字输入/输出引脚,6 个模拟输入引脚,16 MHz 石英晶振,USB 接口,电源接口,支持在线串行编程以及复位按键。

OpenMV4 是一个以STM32H743 ARM Cortex M7 处理器为核心,集成了 OV7725 摄像头芯片的机器视觉模块,其搭载了Micro Python 解释器。其中,Ov7725 图像采集模块可以处理640×480(8 位)的灰度图像或者320×240(16 位)的 rgb565 彩色图像,帧率为80。处理器运行在400MHz 主频,支持的图像格式有Grayscale、RGB56、JPEG 和BAYER。

■2.2 图像液晶显示

图像液晶显示单元,主要由2.2 寸TFTLCD 液晶显示屏幕和0.96 寸OLED 液晶显示屏幕组成。

TFT 液晶显示器上的每一液晶像素点都是由集成在其后的薄膜晶体管来驱动,从而可以做到高速高亮高对比度的显示屏幕信息,实现屏幕显示也较为容易,易于扩展,制作工艺相对比较成熟,制作成本相对较低[3]。

OLED 采用有机发光二极管,是当下非常受欢迎的显示技术。OLED 显示屏与传统LCD 显示方式不同,它无需背光,每个像素点自发光,体积更小、更轻更薄更省电,而且能做成柔性屏。

■2.3 语音合成模块

本设计采用高度集成的TTS 语音合成模块,可以实现中文、英文和数字语音合成。

为满足语音播报需求,需要将汉字经由GBK 码转化为十六进制格式。语音合成后的编码如图2 所示。

图2 语音编码值

■2.4 双舵机分拣装置

主要由两个数字舵机组成,舵机的选择决定云台系统的稳定。针对本设计需求,高响应,易分拣,最终选择数字舵机作为云台控制基础。

2.4.1 双舵机结构图

双舵机结构构造说明如下,双舵机结构图如图3 所示。

图3 双舵机结构图

2.4.2 轨道结构图

轨道结构构造说明如下,轨道结构图如图4 所示。

图4 轨道结构图

3 系统软件设计

Arduino 的编程语言是基于C 语言改进的,开发者在有了C 语言的基础之后很快就能够上手进行独立的开发。

该语言十分地简单,主要有两个部分,一个部分是setup()函数,另一个部分是loop()函数;OpenMV4 通过Python 语言可完成各种机器视觉相关的任务[2]。

■3.1 系统主程序的设计

本设计是基于单目视觉的智能分拣装置,从系统上电系统开始,首先进行系统重要部件(摄像头、语音播报模块、火焰传感器、分拣系统等)初始化,其次是系统自检,自检过程对于保证整个系统稳定运行具有至关重要的作用,如果自检不成功将重新进行系统初始化,直到系统正常工作。

经过初始化以后,进入按键扫描,如果没有按键按下,按键状态值为0,系统不工作,红色LED 指示灯常亮、OLED 显示屏显示提示信息、语音播报模块播报“初始化完成”的语音。

当按键按下时,主控读取键值,按键状态值为2 时,系统工作,绿色LED 指示灯常亮,如果摄像头未采集到图像持续3s 以上,语音播报模块播报“请放入水果”;否则,语音播报模块播报“正在分拣”,此时,系统开始对苹果进行图像处理,通过视觉算法优化对苹果表面缺陷进行精准识别,并进行色度判断,经过大小、色度综合比较后,将苹果进行大、中、小分拣和归类,并且能够在TFT 屏幕上实时显示摄像头采集画面及目标颜色、在OLED 上看到已完成分类的苹果数量及总量信息。

在该装置工作期间,如果火焰检测模块检测到火焰,该装置通过语音合成模块对“警报”进行多次语音播报,OLED 显示屏显示“警报”。

当分拣完成后,即摄像头采集不到待分类物体信息持续3s 后,开始语音播报“分拣完成、结果如下”,并对于已分类不同规格苹果的数量、总量,进行依次播报。系统主程序流程图如图5 所示。

图5 系统主程序流程图

■3.2 图像处理子程序

使用单目视觉对采集的苹果进行OTSU阈值分割、中值自适应滤波。

使用 Cannny 边缘检测算子算法、神经网络算法优化对苹果表面缺陷进行精准识别,根据LAB 分量和RGB 分量对苹果表面进行色度判断。

OTSU 阈值分割:使用聚类的思想,把图像的灰度数按灰度级分成2 个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别来划分。OTSU 阈值分割效果图如图6 所示。

图6 OTSU 阈值分割效果图

中值自适应滤波:通过对采集到的苹果图像比较像素周围的像素的中值减去偏移量来自适应阈值图像,进而达到对于采集图像滤波的目的。中值自适应滤波效果图如图7 所示。

图7 中值自适应滤波效果图

将识别、处理后的图像信息通过UART 串口发送给主控单元,经过解析判断,去掉数据的帧头、帧尾提取出有效的信息。图像处理子程序流程如图8 所示。

图8 图像处理子程序流程图

■3.3 双舵机控制子程序

双舵机分拣装置采用输出两路50Hz 的PWM 信号来驱动,通过字符数据对应后,实现对应不同类型苹果的数量统计和分拣。

Arduino 利用舵机的特性,通过产生不同占空比的PWM 波,来控制下面位置舵机的水平角度转向和上面位置舵机的垂直方向的位置变化。云台控制子程序流程图如图9所示。

图9 双舵机控制子程序流程图

4 系统调试

■4.1 串口通信调试

串口调试作为一种常用的调试方式,具有方便快捷,精准定位等优势。本设计采用串口1(UART1)作为调试接口。

首先需要进行硬件环境的搭建,RX 接到TX,TX 接到RX,确保正常通信,软件层,要实现与上位机正常通信,要保证波特率设置匹配,此处设定为19200baud,数据长度为8 Bits。采用Arduino IDE的串口调试助手,调试过程界面如图10 所示。

图10 串口调试界面

■4.2 舵机控制调试

角度控制调试是主控单片机输出不同的占空比的PWM 波对于舵机进行控制,确保舵机按照设定好的分拣角度正常、稳定地运行。

在编写程序后,通过串口监视器进行角度和角度值变化的观察。舵机角度调试界面如图11 所示,舵机分拣实物调试如图12 所示。

图11 脉冲输出调试界面

图12 舵机分拣调试

■4.3 摄像头采集稳定性调试

摄像头采集稳定性测试,主要通过采集帧数来判断,OpenMV4 通过调用time.clock()函数来返回时钟对象,进而通过clock 函数来对于摄像头进行帧率的采集。

根据每秒采集帧数的稳定值得到如下帧率数值。帧率数值见表1。

表1 图像采集帧数稳定性测试

5 实物调试

使用高性能低功耗的Arduino 系统板设计制作,采用单目机器视觉OpenMV4(Cam H7)摄像头,利用对于苹果的色域采用阈值分割、中值滤波等图像处理方法,实现采集到画面的旋转最小矩形面积与矩形边界来衡量密度,并结合神经网络算法优化,进而完成单目视觉对于苹果的大小、色泽的精准识别,并根据检测结果进行苹果分拣,通过数据分析。

结合串口通信电路,把获取的大小,色泽饱和度等信息传到核心处理器中,通过信息分析,结合按键电路的模式切换,将分拣结果显示在液晶显示屏上。

■5.1 图像采集初始化

为防止系统上电后产生识别误差,OpenMV4 摄像头模块识别程序的运行采用外部电平触发的方式,即主控Arduino 给摄像头模块发送高电平信号后,方可开始对于待分拣物体的识别和数据的发送。图像采集初始化效果图如图13 所示。

图13 图像初始化效果图

■5.2 图像识别抗干扰优化

在固定的识别区域内,采用阈值分割、中值滤波等图像处理方法,实现采集到画面的旋转最小矩形面积与矩形边界来衡量密度,并结合神经网络算法优化。图像抗干扰优化效果图如图14 所示。

图14 图像抗干扰优化效果图

6 结束语

本设计以单目视觉技术为基础,结合自动控制技术,实现水果的分级分拣,具有重要理论研究和实际应用价值。这对于解决水果分级的难题、对提高分级精度、提高果品效益、提高水果品质、扩大水果出口量、改变我国水果分级现状,同时对提高我国水果市场竞争力与产品增值效益具有重要应用意义。

所以本设计是紧密结合我国农业发展规划和服务社会发展、生态环境而进行的关键性技术研发和应用,对国家、社会民生发展、农业自动化水平的提高等提供了关键技术支撑。

如果大规模应用和推广,可提高农业从生成、分拣到产品包装等现代农业自动化水平,可带动环境改善、节约人工劳动成本、实现技术推广和服务等经济效益,是结合农业现代化、自动化、智能化的一种创新应用,具有很好的应用前景。