基于OpenMV的非接触式物体尺寸形态测量系统设计

known 发布于 2025-08-24 阅读(247)

张凤

(山东华宇工学院,山东 德州 253034)

0 引 言

可视化是智能机器系统感知外部环境最主要的方法,也是当今智能识别系统发展的趋势所在。外部视觉传感器采集获取外部环境的数据,通过智能软件分析系统实现对物体的识别和定位。随着现代信息技术的迅速发展,人们对智能系统的性能提出了更高的要求。目标识别是智能系统视觉部分最基本的功能,色彩与边缘识别是进一步研究的基础。

通过对单片机芯片快速处理能力和智能图像识别的研究,以图像识别装置来模拟人的视觉识别。计算机视觉可以将物体转换成图像信号,然后把结果传送到装置的内部芯片,并根据图像中像素的排列规则和像素数量将其转换成数字信息、颜色信息等信号。成像系统执行这些电信号中的各种操作以获得目标属性,然后控制现场设备以对检测结果给出信息结论。智能图像采集技术与工业机器运动控制技术紧密相连,是智能工业控制技术中的关键技术。

OpenMV可实现计算机视觉和图像处理的通用功能,如3D重建、目标分割、目标识别、特征检测、运动分析、特征跟踪等,与其他视觉模块相比,OpenMV具有开放源代码和低成本的优点。OpenMV主要由STM32H7主控芯片和OV7725图像识别摄像头组成。此外,OpenMV还具备Python的编写程序界面,有适合的Python语言来满足智能机器识别功能的需要。

1 系统总体设计方案

目标物体的水平距离通过激光测距模块读取,转化为距离数字量传回Arduino单片机,几何形状以及颜色通过OpenMV的摄像头读取,并转化为位置数字量传回内置的STM32H7芯片,Arduino单片机将激光测距模块读取的距离数据经比例计算后得到与物体的距离,最后Arduino单片机将目标物体的形状、边长和距离数据传送给手机APP显示。进入自动寻找目标时,OpenMV根据目标的坐标数据控制舵机转动角度。测量结果稳定后启动声音提示,表示当前测量任务完成,系统总体设计框图如图1所示。

图1 系统总体设计框图

2 系统硬件电路设计

系统的硬件电路由OpenMV摄像头模块、语音播报模块、Arduino Nano模块、舵机转向器模块、蓝牙模块、激光测距模块组成。

OpenMV摄像头模块能够简单地完成智能图像识别,它具有低功耗、低成本的特性,通过使用高级语言Python(主要是microPython)就可以实现对硬件底层的访问和控制。Python中的数据库函数可以简单地处理智能装置识别算法中复杂的输入输出问题,可以完全根据需求来改变OpenMV的识别模式,还可以高效率地使用输出端口触发图像识别,然后进行图像算法程序的运行,并对IO引脚的功能进行控制。

语音播报模块采用的是XY-V17B模块,它是支持通用异步收发机通信协议和支持单个总线通信协议的语音模块,其使用串行通信来实现语音播报功能同时还支持内存扩展和播报文字。XY-V17B使用的是全双工串行端口通信,此通信方式采用两个不同的数据线,这样通信的两侧能够同时收发数据。两侧的工作互不干扰所以没有时间延迟,可以使发送方和接收方发送和接收的内容同步。XY-V17B语音模块中含有多种通信协议用来传输信号,具有自带的指令模式,使用起来简单便捷,在使用语音的领域中有着广泛的应用。

系统核心控制器采用Arduino Nano单片机,Arduino Nano是基于Microchip Atmega 328P8芯片的开发板,它没有DC电源插座而且采用的是mini USB接口技术,具有防误插的特性,体积小巧。Arduino Nano中有十多个用于输入和输出的引脚,可以通过调用pin Mode函数、digital Write函数和digital Ed函数来对这些引脚进行控制。这个开发板的运行可承受的电压为5 V,其中的引脚接口均可以承受或者提供高达40毫安的电流,每个引脚接口均具有1个20~50 kΩ的内部上拉电阻器,每个电阻器默认情况下是断开的。Arduino Nano芯片内部一共有八个模拟输入串口,每一个模拟输入串口都可以提供10位字节的输入输出能力。一般情况下它们的电压为0~5 V,在实际应用中可以通过调用Analog Reference()函数来调整电压上限值,从而通过增强电压的方式实现对系统输入的增压。Arduino Nano中具有和UNO一样的对外传输信号,同时还具有外部的扩展插脚接口。

激光测距模块采用的是TTL/485,测量范围为0.05~80 m,激光类型为620~690 nm。激光测距模块自身发射红外光线,由被测物体反射后回到传感器用模块内置的定时器进行计时,然后根据内置的算法计算出反射物的距离,最后将数据通过串口传回Arduino主控芯片。其优点在于对面积较小的物体同样能够精准快速地测量出距离,受周围物体干扰较小。在装置前端对准被测物体后,主控芯片读取模块传来的距离信息后为尺寸测量做准备。

12 V直流稳压电源通过5 V稳压模块分别向单片机和OpenMV及其他模块供电。对各模块进行测试分析并组合,确定系统能正常运行。整体电路图如图2所示。

图2 系统整体电路图

CC2541是一款面向蓝牙低能耗以及么有2.4 GHz应用、功率优化的片载系统模块。CC2541将RF收发器的出色性能和增强型8051MCU、系统内可编程闪存存储器8KBRAM的优异特性和外设组合在一起。CC2541非常适合应用于需要超低能耗的系统,运行模式间较短的转换时间使低能耗成为可能。射频2.4 GHz符合低能耗规范和么有RF片载系统的要求,支持250 kbps、500 kbps、1 Mbps、2 Mbps的数据速率。具有高达1毫瓦每秒的可编程输出功率、出色的接收器灵敏度,以及可选择性和阻挡性能。

3 系统软件设计

MicroPython是Python标准库的精简部分,对此语言方法进行优化删减之后就可以在单片机运行芯片和有特殊要求的环境中满足系统要求。MicroPython还有一些独特的优势,例如单片机和电脑的交互提示,对数据进行正确分析处理,以及对器件进行控制。不光如此,这些优异的特性可以实现在单片机内部芯片只有256 k的代码环境和16 k的读写储存器中流畅运行。MicroPython还可以通过编写Python语言来对系统模块以及单片机进行控制和调试。整体程序流程图如图3所示。

图3 系统软件流程图

以系统进行圆形识别为例,主要程序代码为:

import sensor, image, time

sensor reset ()

sensor set pix format (sensor RGB565)

sensor set frame size (sensor QQVGA)

sensor skip frames (time = 2000)

sensor set auto gain (False) must be turned off for color tracking

sensor set auto white ball (False) must be turned off for color tracking

clock = time clock ()

while (True):

clock tick ()

image = sensor snapshot () lens corr (1.8)

for c in image find circles(threshold = 3500, x margin = 10,y margin = 10,

r margin = 10,

r min = 2, r max = 100, r step = 2):

area = (c.x()-c.r(), c.y()-c.r(), 2*c.r(), 2*c.r())

statistics = img get statistics(roi=area)像素颜色统计

print(statistics)

L mode(),a mode(),b mode()

If0<statisticsl_mode()<100and0<statistics.a_mode()<127and0<statistics.b_mode()<127:if the circle is red

img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0));识别到的红色圆形用红色的圆框出

else:img.draw_rectangle(area, color = (255, 255, 255));将非红色的圆用白色的矩形框出来

print("FPS %f" % clock.fps())

4 系统测试结果与分析4.1 系统测试方案

利用单片机与外围部件构成的非接触式物体尺寸形态测量装置对物品进行测量,重复测量同一平面图形形状、边长、距离数据取平均值并计算测量精度。更换目标图形后重复上述实验内容。

第一步为用测量装置对与其距离相等的红色、蓝色、绿色物体各测两次,然后记录结果并进行分析。第二步为在中心点对齐的情况下,用测量装置分别对距离其200厘米、250厘米、300厘米的正方形、圆形、三角形物体测量其形状及其与测量装置的距离,接着记录结果并进行分析。第三步为在中心点不固定对齐的情况下对测量装置的自动跟随精度进行测试,然后重复第二步的操作。第四步为用测量装置对篮球、排球以及足球进行测试,检测装置是否能正确地识别物体。

4.2 系统实际测试与分析

该非接触式物体尺寸形态测量系统通过Arduino Nano最小核心板能够实现对OpenMV、蓝牙传输模块、激光测距模块、语音模块的连接和调用。通过外部按键控制系统中的OpenMV识别模块能够准确识别物体的形状、颜色、像素和距离,硬件电路实物图如图4所示。

图4 硬件电路实物图

测量装置所有测试结果都可以在手机APP上显示,blinker是一套专业且易用物联网解决的方案。跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用云储存服务进行数据传输存储。可用于智能家居、数据监测等领域,可以更好地搭建物联网项目。APP界面如图5所示。

图5 手机APP显示页面

4.3 系统测试数据分析

对红色、蓝色、绿色的物体进行颜色识别。在实际测试中,在室内灯光干扰下进行红色这一颜色的识别时,可能是因为测量装置对色彩阙值计算有重合区域,发生过一次错误识别的例子,其余测试结果皆为正确识别。表1为平面物体颜色识别情况。

表1 平面物体颜色识别情况

测量目标物体的形状、尺寸及其与装置之间的距离。在中心点对齐的情况下,对不同边长或半径的正方形、圆形、三角形分别在距离装置200厘米、250厘米、300厘米的要求下测试,表2为物体实际参数及测试结果。

表2 物体形状、尺寸及其与装置的距离

?

在前一次测量的基础上,在物体中心点不固定对齐的情况下测试装置的自动跟随精度。表3为自动跟随精度测试识别情况。

表3 自动跟随精度测试识别情况

用装置对篮球、排球以及足球进行测试,表4给出了球类识别情况。

表4 球类识别情况

测试结果表明,装置能够准确识别目标物形状、尺寸以及横向像素值,通过测得的数据计算出物体实际横向长度,经多次测试后,测量误差为±2~3 cm。立体物体识别模式下,可以通过模板匹配准确识别三种球体,并通过激光测距模块准确测量距离。随着对系统的不断调整,识别程序越来越稳定,误差越来越小。在允许的误差范围内,出色地完成了任务。

测量误差首先来自环境光线的影响,调试的时间不是固定的,光线有所变化,不同光线下机器所捕捉的颜色会有差别,极易造成误判。其次是OpenMV模块自带像素较低,对尺寸的估计比较粗略,偏差必然是存在的。再者是装置搭建时存在结构误差,导致中心点的偏离。前两者的误差都能通过软件得以调节。

5 结 论

本文主要研究基于OpenMV对物体颜色、形状和距离测量的设计和实现。首先介绍了OpenMV测量装置在国内外的研究情况,然后基于OpenMV的物体颜色形状分析测量中心系统,解释了软件流程图并用Python语言编写了装置软件代码,最后分析了某些环境因素发生变化时系统出现的错误。该系统原理简单,运行稳定、可靠,能够很好地识别物体的形状、颜色,还能较为准确地测量距离。该系统采用颜色和形状识别的机器视觉处理技术,并提供基于机器视觉技术的现有产业系统的解决方法。

本文设计的系统以OpenMV模块作为主要图像处理技术,并且用Arduino单片机作为下机位进行信息传输。通过蓝牙模块实现无线通信,极大地提高了系统传输的稳定性。为了满足各种情况复杂的实际应用需求,对物体的测量进行了多次的研究和测试,大大提高了装置的抗干扰能力。从测量结果来看,该系统可以适应较为严格的照明条件,其测量结果精度高,同时可以在现有基础上进一步提高系统的距离测量精度,优化软件算法,以进一步提高计算速度。

机器视觉和人工智能处理是紧密相联的,从OpenMV创立至今,在它的库中已经储备了多种处理方式,可满足各种不同的需求,在人工智能和智能机器视觉中发挥着重大作用。相信在不久的将来,OpenMV系统将会发掘出更多的潜力,在人们的生活中发挥更大的作用。

标签:  物体 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor