李健伟,冼灿娇,王瑞镱,严晓媚,蓝妙飞,杨丰源
(广西民族师范学院,广西崇左,532200)
在分拣电子元器件这样繁杂的生产环境下,零部件散落在传送带上姿态万千,原有的示教编程和离线编程的机器人很难去进行有效的定位拾取,而将龙门模组结合视觉识别定位可以在较大范围内精准抓取以及定点投放[1]。机器视觉进行元器件的识别与分类和传统手工分拣相比,可以极大地降低劳动量大、人力成本高和效率低等问题。机器视觉系统可以通过图像进行处理从而对元器件进行准确识别和分类,避免了检测人员因视觉疲劳从而导致出现错检现象进而对分拣结果产生人为因素的影响[2~3]。因此,研究和开发基于机器视觉的元器件分拣系统对于提高生产效率、降低成本具有重要的实际意义。
元器件型号的识别使用YOLO V2 对目标元器件识别,YOLO V2(You Only Look Once version 2)是一种目标检测算法,它是YOLO 算法的升级版。YOLO V2 通过将图像分成多个网格,并在每个网格中预测边界框和类别,从而实现对图像中多个目标的同时检测。相较于传统的目标检测算法,YOLO V2 具有更快的检测速度和更高的准确率。
YOLO V2 采用了一种基于卷积神经网络(CNN)的架构,将输入图像经过多个卷积层和池化层提取特征,然后通过全连接层进行目标分类和边界框回归。与YOLO 相比,YOLO V2 引入了一些改进措施,如使用更深的网络结构(Darknet-19)、使用Anchor Boxes 来提高边界框的准确性、使用多尺度训练来提高对不同大小目标的检测能力等。
首先K210 通过摄像头拍照,对获取到的图片信息进行预处理,先对图片进行二值化,经过二值化的图像能够增强图像对比度同时还能降低背景带来的干扰,再对二值化的图像进行高斯滤波,对已经滤波后的图像进行腐蚀膨胀等图像增强操作,再使用训练模型对处理后图像进行识别。
本系统可以分为四个系统,供电系统、交互系统、抓取系统和识别系统,硬件部分主要包括主控ESP32 和视觉模块K210 两个核心部件,及龙门模组、真空泵和2.4 寸显示屏和电磁铁等器件,通过主控对各模块的配合从而实现元器件的识别和抓取;软件部分,主控芯片和视觉系统都使用MicroPython 进行编程,MicroPython 是一种精简的Python 3 解释器,MicroPython 能够让开发者快速地开发;供电系统由ME3116AM6G DC-DC 芯片进行稳压,交互系统由一块2.4 寸触摸屏构成,抓取系统使用真空泵和电磁铁配合龙门模组进行对元器件的抓取;识别系统通过K210 模型训练实现元器件型号的识别。系统框架如图1 所示。
图1 系统框架图
在基于机器视觉的元器件分拣系统中,系统架构是整个系统设计的基础。系统架构旨在提供一个清晰的组织结构,以便实现元器件的智能识别和检测功能。系统的架构主要分为硬件层、软件层、数据管理层和通信层四个层次,下面分别对四个架构层次进行描述。
(1)硬件层:系统的硬件层包括ESP32 主控芯片、K210识别模块、触摸屏,以及其他必要的传感器和接口。其中,K210 识别模块作为元器件识别处理的核心,用于采集元器件图像,使得系统能够提取到相关有用的元器件图像信息;负责处理图像数据和进行算法计算。ESP32 主控芯片作为控制及处理系统的核心,负责对整个系统的实时监控和管理;显示屏用于显示识别数据的结果以及整个系统实时状态的情况。
(2)软件层:系统的软件层主要包括图像处理算法、机器学习模型。图像处理算法用于对采集的图像进行预处理,包括图像增强、边缘检测等。机器学习模型用于对预处理后的图像进行识别和分类,以实现元器件的智能识别功能。
(3)数据管理层:系统的数据管理层用于管理元器件数据和整个系统实时状态。元器件数据包括元器件的采集、元器件图像信息、提取元器件特征信息、元器件识别结果等。系统状态包括系统实时运行状态、元器件识别进度和系统的异常处理等。
(4)通信层:系统的通信层用于实现系统与外部设备的数据交互和通信。例如,系统可以通过网络接口与其他设备进行数据传输或通过串口与外部设备进行通信。
通过以上系统架构,基于机器视觉的元器件分拣系统可以实现对元器件的智能识别和分拣功能。系统架构的设计需要考虑硬件和软件的兼容性、性能和可扩展性,以满足实际应用的需求。
检测系统即元器件的识别包括了器件的图像采集、特征提取和图像识别等内容。
(1)采集元器件图像:首先,系统需要通过摄像头来获取元器件的图像。这些图像将作为系统进行元器件识别和检测的输入数据。
(2)图像预处理:在进行元器件识别和检测之前,系统需要对采集到的图像进行预处理。这包括去噪、图像增强、图像分割等步骤,以提高后续处理的准确性和效果。
(3)元器件特征提取:在进行元器件检测之前,系统还需要提取元器件的关键特征。这些特征可以包括元器件的尺寸、颜色、形状等等信息,以便后续的识别和分析。
(4)元器件识别:接下来,系统需要使用深度学习算法或其他图像识别技术,对提取出来的特征进行元器件识别。这可以通过训练一个神经网络模型来实现,该模型能够将输入的图像与已知的元器件类型进行匹配,并输出相应的识别结果。
通过以上的设计,基于机器视觉的元器件分拣系统可以实现对元器件的准确识别分类,利用机器视觉技术可大幅提升实验室等元器件混合一起需要分拣场景的分拣效率。
系统的硬件主要包括ESP32 和K210 两个核心部件,以及龙门模组、真空泵和2.4 寸显示屏和电磁铁等器件构成,下面对各模块的硬件设计进行描述。
ESP32 是一款自带WiFi 和蓝牙双模双核处理器MCU,主频高达240MHz,具有强大的计算能力,并且ESP32 有着丰富的可编程GPIO,可扩展性高。ESP32 内置了WiFi和蓝牙协议栈,支持多种安全加密算法,能够实现可靠的无线通信。ESP32 有着支持超低功耗待机的优势,利用这个优势使得本模块能协同各个模块不断地处理所需数据,提升了整个系统的工作效率[4]。
通过使用ESP32 作为主控模块,我们可以实现对元器件分拣系统的控制和管理。ESP32 的高性能双核处理器和丰富的外设接口可以实现对分拣龙门模组的控制、屏幕显示和触摸等设备的控制和数据采集。ESP32 通过与K210 视觉模块的通信,接收到由k210 识别和检测的元器件图像信息。其次,通过与龙门模组的协调,ESP32 可以实现元器件的精确快速地抓取和分拣,提高整个系统的准确性和效率。此外,ESP32 还可以与外部设备进行通信,如显示屏模块,以提供系统的状态显示和分拣进度的查看。通过ESP32模块与这些设备模块的实时配合,ESP32 可以实现对整个系统的实时监控和管理,主控单元电路如图2 所示。
图2 主控单元电路图
K210 是基于RISC-V 精简指令集的一款MCU,在众多特色功能中,芯片架构包含了一个自研的神经网络硬件加速器KPU 是最重大特色功能,可以高性能地进行卷积神经网络运算。在MCU 的AI 计算方面,K210 芯片的算力非常出色,根据嘉楠官网的描述,K210 的KPU 算力能够达到0.8TFLOPS。
K210 可以通过训练模型实现对元器件图像的识别和分类,将不同类型的元器件进行区分,为后续的分拣工作提供准确的数据支持。K210 具有较高的计算速度和处理能力,可以实时地对元器件图像进行处理和分析,实现快速的分拣和判断。K210 也应用于广泛的嵌入式、人工智能等场景,并拥有良好的性能,如功耗性能、处理能力、图形处理能力,提高了对采集数据、识别数据等操作的稳定性与可靠性。
ME3116AM6G 是内部集成了 MOSFET 的异步整流降压稳压器,它在较宽的输入电压范围内(4.75V~40V)能够提供高达1A 的负载能力。内置功率管具有较低的RDSON (典型值0.9Ω),典型情况下效率高达90%,该芯片能为系统提供3.3V 和5V 的电压。
A4988 步进电机驱动是一种常用的驱动电路,用于控制步进电机的运动。它采用了先进的微步驱动技术,能够精确地控制步进电机的转动角度和速度。该驱动器具有高效、稳定的特点,广泛应用于各种自动化设备和机械系统中。该驱动器的工作原理是通过控制电流的大小和方向来控制步进电机的转动。它使用了H桥电路来实现电流的正反向控制,通过调节电流大小和脉冲信号的频率来控制步进电机的转速和转向。同时具有多种保护功能,如过流保护、过温保护和短路保护等,可以有效地保护步进电机和驱动器的安全运行。此外,它还具有低功耗和低噪音的特点,适用于对噪音和能耗要求较高的场合。本系统使用的步进电机旋转角度为1.8°,经过A4988 步进电机驱动16 细分后能够使步进电机旋转角度变成0.1125°,旋转一圈需要3200 个脉冲,在本系统中龙门模组的轴转动一圈即移动40mm,一个脉冲即0.0125mm,能够为本系统提供很好的精度控制。步进电机电路图如图3 所示。
图3 步进电机驱动电路
软件设计方面使用MicroPython 进行编写,MicroPython 是一种精简的Python 3 解释器,专门为嵌入式系统和物联网设备设计。它具有Python 语言的简洁性和易用性,同时也具备了嵌入式系统所需的高效性和低资源占用。MicroPython 的目标是让开发者能够在资源受限的设备上编写Python 代码,并且能够直接运行。
ESP32 主控芯片上电对各模块进行初始化,触摸屏实时对触摸采集触摸信息,当采集到开始运行信号时,对龙门模组进行归零操作,再配合电磁铁进行混合元器件存放区的元器件吸取,再送至K210 视觉识别区,K210 视觉识别区进行识别判断电磁铁是否吸上元器件。如果没有吸上元器件将重复抓取和识别步骤,成功吸上元器件则将对元器件放置元器件置底平台,经过置底平台的抖动后元器件丝印面置底。经过至底后的元器件使用龙门模组配合气泵吸取元器件,再送至K210 视觉识别区,如果有吸到元器件将进行元器件的识别,没有则重复吸取识别步骤,最后对识别的元器件送至对应的元器件存放区,程序流程如图4 所示。
图4 程序流程图
通过硬件和软件两部分的相互配合使我们的系统正常运行,为了进行系统测试,首先需要准备一批不同型号的DIP16 封装元器件样本,我们选取五个型号的元器件,每个型号分别有二十个,总共一百个元器件。然后,将这些样本放入到系统的混合元器件存放区域中,观察系统是否能够正确地将它们分拣到相应的类别中。对每个型号的存放区域进行记录,再分析出系统的准确率,以评估系统的分类效果,图5 为系统实物图。
图5 系统实物图
在基于机器视觉的元器件分拣系统设计的系统测试中,我们对系统的各项功能进行了全面的测试,并记录了测试结果。表1 是我们对各项功能的测试结果记录。
表1 测试结果
通过图像处理算法和机器学习算法,能创建一个与机器视觉与人类视觉相类似的图像处理系统以及一个能模拟人类手臂的器件组件,以便于能够高效、迅速地完成对元器件采集图像、图像预处理、识别、特征提取以及检测的一系列操作,以保证元器件的分类、质量和性能[5]。总的来说,基于机器视觉的元器件分拣系统具有较高的准确率和实时性,可以广泛应用于电子通信专业课程的实验室和关于电子的社团在元器件管理方面问题等多种应用场景。未来,我们可以进一步优化系统的性能和功能,使其更加智能化和自动化。