周子尧,章扬
(杭州电子科技大学 电子信息学院,浙江杭州,310018)
随着计算机图像处理技术和高性能芯片的不断发展,机器视觉领域已经进入了一个令人兴奋的新时代。机器视觉作为一门借助处理器和摄像头代替人眼,通过数字图像的像素信息进行测量和判断的领域,在工业、农业、制药等多个领域得到了广泛的应用。这一领域的研究方向包括但不限于产品分拣、人体姿态检测、物体检测和识别等,为各行各业提供了强大的工具和解决方案。
在机器视觉研究的浪潮中,开源技术的贡献日益凸显。OpenMV 视觉模块作为一款开源且功能强大的机器视觉模块,为研究者和工程师提供了极大的便利。OpenMV 内置了众多机器视觉算法,如寻找色块、人脸检测、边缘检测等,使得利用这一模块仅需通过简化版的Python 代码编写即可完成各种复杂的机器视觉任务[1]。
另一个关键组成部分是二维云台,它由两个舵机实现二自由度的控制,用于对OpenMV 的测量方向进行调整和修正,进一步增强了系统的精确性和灵活性。
本论文旨在介绍一种基于OpenMV 的目标运动控制与自动追踪系统,探讨如何充分利用开源技术和高性能硬件,以满足不断增长的机器视觉应用需求。我们将详细讨论系统的架构、工作原理以及实验结果,以期为机器视觉领域的研究和应用贡献新的见解和解决方案。
系统整体方案设计如图1 所示,全系统由两个相互独立的系统组成。OpenMV 是一个开源,低成本,功能强大的机器视觉模块上面集成了STM32F427 微处理器与OV7725摄像头芯片,在小巧的硬件模块上,用C 语言高效地实现了核心机器视觉算法,同时也提供Python 编程接口[2]。系统主控芯片均采用STM32F427 微处理器。运动目标控制与自动追踪系统均通过转动云台来调整激光的指向,每个云台由两个大力矩舵机组成,可以实现水平和垂直方向上的自由移动,使激光具有更大的指示范围[3]。系统通过按键模块可以进行模式选择、位置校准、开始/暂停,并允许手动调整激光指示精度与指示范围,以实现广泛围与高精度等不同的应用场景。
图1 系统整体方案框图
系统电源电路如图2 所示,系统均以12V 锂电池供电,电源模块均采用TI 公司的TPS5430 降压芯片,该芯片具有噪声小、带载能力强等特点,可将12V 降压为5V与3.3V。输出电压等于1.229×(1+R1/R2),经过计算选取R1=47kΩ,R2=15kΩ,R3=51kΩ,R4=30kΩ。其 中,5V 电压用于OpenMV 与激光指示头供电,3.3V 电压用于LED、蜂鸣器与OLED 供电,而舵机直接以12V 锂电池供电。
图2 系统降压电路
云台安装有两种不同的组合方式(图3),方案一(图3 左)搭建结构简单,垂直方向旋转半径大,便于控制舵机,但舵机本身的负载较大,存在发送微小转动指令时舵机不旋转的现象;方案二(图3 右)垂直方向舵机负载小,舵机旋转更灵敏,角度控制更准确。综合精度与控制难度,采用方案二所示的安装方式可以实现较低控制难度下的较高精度。
图3 两种云台机械结构对比
图4 是自动追踪系统声光提示模块的电路。电路由3.3V电压供电,接入蜂鸣器与LED 灯的正极,通过微处理器的GPIO 口输出高低电压进行控制,可实现LED 灯的灭或亮、蜂鸣器关闭或发出蜂鸣声。蜂鸣器选择的是无源蜂鸣器,无音调变化,但较有源蜂鸣器控制更简单。
图4 声光提示模块电路
屏幕显示电路如图5 所示,OLED 需以3.3V 供电,SDA 与SCL 脚连接 至MCU 上引出 的GPIO 口,MCU 输 出控制信号后可使OLED 上显示预设的信息。
图5 屏幕显示模块电路
如图6 所示,本系统共有5 个模式,分别为暂停模式、复位模式、循屏幕边线模式、循黑胶边线模式、舵机移动模式,模式的选择由按键控制。按键值的读取放在定时器中断中,每一秒读取一次。如果出现暂停标志位则停止舵机运动,暂停标志位取消则继续原来的运动;如果出现复位标志位,舵机先回到设定的复位位置,然后结束当前任务。由于系统摄像头固定,因此在不移动屏幕的前提下屏幕的边线是固定,直接采用位置标定让舵机巡线。在循黑胶边线的模式下,先通过卡尔曼滤波算法[4]进行图像信息采集,黑胶布的颜色与背景颜色有明显区分,找到黑胶布的位置并得到四个点的坐标;根据提前拟合好的坐标位置与舵机控制信号线性关系可以将四个点的坐标换算为对应的舵机控制信号,然后进行循迹。舵机移动模式是读取对应的两个按键,通过数值的加减移动舵机位置。
图6 运动目标控制程序流程图
如图7 所示,追踪模式一开始给摄像头复位,让它处在靠中间的位置,若在目标点右边追踪,则点击按键使摄像头向左偏转,反之向右偏转;当红色激光点进入摄像头视野范围内时,进行跟随并打靶,将追踪成功的信号发送给OpenMV。OpenMV 收到信号后,点亮LED,并使蜂鸣器发出声音。该过程中可暂停观察两光斑距离。
图7 自动追踪系统程序流程图
由于舵机存在机械误差,我们算出了激光点位置与当前两个舵机PWM 波值的关系,得到了图8、图9。图8 为竖直方向位移与竖直舵机PWM 波的关系,图9 为水平方向位移与水平舵机PWM 波的关系。两图的均方根(RMSE)均为11 左右,确定系数(R-square)均在0.99以上,数据稳定且拟合程度高。利用拟合的数据进行参数修正,提高了激光精度。
图8 竖直方向位移(y)与PWM 波(ypwm)的关系
图9 水平方向位移(x)与PWM 波(xpwm)的关系
在进行参数修正后,我们对舵机旋转单位角度在屏幕上的位移进行了测量,以屏幕原点为PWM 原点,以离原点的竖直(或水平)距离为因变量,每改变两个单位进行一次数据记录,得到了 图10、图11。图10 为竖直方向位移与竖直PWM1 改变量的关系,图11 为水平方向位移与水平PWM2改变量的关系。由图可知,竖直方向改变单位PWM 值位移量为0.87cm,水平方向改变单位PWM 值位移量为0.90cm,准确度高。两图的均方根(RMSE)均在0.5 以下,确定系数(R-square)均 在0.99 以上,数据稳定且拟合程度高。
图11 水平方向位移(xl)与PWM2 改变量(x_pwm)的关系
PID 通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。这里我们规定输入量为rin(t),输出量为rout(t),偏差量为err(t)=rin(t)-rout(t),PID 的控制规律为[5]:
PID 离散表示形式:
从而得到:
每题测试3 次,使用最大偏移距离作为测试结果。
基本要求(1):手动设置光标至屏幕左上顶点,启动一键复位,测量光标离预设原点的距离。再设置光标至屏幕左下顶点,重复进行测试。测试是否具有暂停功能。
基本要求(2):启动运动目标控制系统。红色光斑能在 30 s 内沿屏幕四周边线顺时针移动一周,测量移动时光斑偏离屏幕边线的最远距离。记录偏移值大于2cm 的次数。
基本要求(3):自定义靶纸粘贴位置及角度。一键启动,记录巡线时间、移动一周光斑偏离胶带次数,观察是否有连续脱离胶带移动5cm 以上。测试是否具有暂停功能。
基本要求(4):随机设置靶纸粘贴位置及角度。一键启动,记录巡线时间、移动一周光斑偏离胶带次数,观察是否有连续脱离胶带移动5cm 以上。测试是否具有暂停功能。
发挥要求(1):在规定位置范围内随机放置自动追踪系统。待运动目标控制系统复位后一键启动,记录追踪时间、红色绿色光斑之间的距离。测试是否具有暂停功能以及追踪成功后是否有声光提示。
发挥要求(2):粘贴靶纸。同时启动运动目标控制与自动追踪系统,记录追踪时间、红色绿色光斑之间的距离。测试是否具有暂停功能以及追踪成功后是否有声光提示。记录追踪过程中两个光斑中心距离大于 3cm 和连续追踪失败3s 以上的次数。
测试结果如表1~表6 所示。
表1 基本要求(1)测试结果
表2 基本要求(2)测试结果
表3 基本要求(3)测试结果
表4 基本要求(4)测试结果
表5 发挥要求(1)测试结果
表6 发挥要求(2)测试结果
根据测试结果,运动目标控制与自动追踪系统完成了题目要求的各项指标,且误差都在误差允许范围内。红色激光一键复位中,由于屏幕是固定的,我们固定摄像头,这样复位的中心位置是确定的,相比于摄像头随云台一起转动该方法完成要求的精确度更高;对于循框功能,直接识别铅笔线的误差太大,在确定四个顶点坐标后循框的精度提升很多,循框时间也相应缩减;胶带循迹对于我们来说是最难的部分,用舵机来控制倾斜的角度精度不够,我们选择采集大量坐标数据,拟合出对应较好 的PWM 值,控制激光在胶带范围内运动;追踪系统中,黑胶带会吞掉红光的亮度,导致另一个摄像头捕捉不到红色激光,我们更换了一个长镜头并调节曝光度,使得捕捉红色激光点效果很好,在追踪时,将红色激光的移动速度减慢,然后调节绿色激光位置PID 和相对中心点坐标实现了较好的跟随系统[6]。
本系统采取了以OpenMV 为控制核心,控制云台进行激光指示的方案。系统采用数字舵机搭配旋转云台以提高整体机械结构的稳定性。为精确对应坐标与PWM 的数学关系,在循迹的软件部分中加入了拟合数值的修正,极大地提高了激光的指示精度;硬件部分采用电源供电、加入了自制稳压电源,按键功能丰富,整体结构清晰高效、控制稳定。本系统实现了误差0.5cm 以内的运动目标的快速控制与自动追踪,完成了整个题目的要求,且误差远小于题目要求中的规定值。本次方案所需的软硬件设计可行度较高,进一步研究将会朝着系统优化的方向进行,如使用模糊PID 控制使舵机调节更加精确[7]、在视觉部分的算法添加IIR 滤波从而减小周边光线变化带来的影响等[8]。