前言:想要写出一篇引人入胜的文章?我们特意为您整理了嵌入式摄像头OpenMV板球系统设计范文,希望能给你带来灵感和参考,敬请阅读。
摘要:以OpenMV图像处理技术为基础,借助MicroPython语言使其相应IO口输出PWM,完成了基于串级PID的板球控制系统设计.系统实现了对小球的精确定点和圆周运动控制.测试结果表明:OpenMV可实时采集小球在平板上的位置并获取对应的二维坐标;小球能够按照指定路径运动,系统抗干扰能力强,反应迅速.
关键词:板球控制系统;OpenMV;图像处理;串级PID
0引言
板球控制系统是一个多变量、强耦合的非线性控制系统.与其他经典控制系统相类似,其实验模型通常用于验证各种控制算法的优劣,其中包括智能控制算法、现代控制算法等.已有的板球控制系统因使用多个控制器而导致系统硬件搭建比较困难,且大部分是基于触摸反馈机制的系统,通过触摸屏的压力变化反馈小球的位置信息.其控制方式大多为单环PID控制,难以精确实现对小球的位置控制,误差较大,且系统抗干扰能力弱,执行器响应较慢.为了解决上述问题,本文设计的板球控制系统硬件部分采用将核心处理器和传感器合并为一体的OpenMV,不仅简化了机械结构,同时避免了硬件搭建冗杂的缺陷.在软件控制算法部分采用x轴-y轴并级的串级PID算法[1],平板在OpenMV摄像头中可视为二维坐标系.通过设置速度环为内环,位置环为外环,实现了对小球精确的位置控制,同时使该算法的系统抗干扰能力得到了增强,执行器的响应速度也得到了优化.
1系统总体设计
openmv作为板球控制系统的传感器和控制器,以STM32H743CPU为核心,集成的OV7725摄像头芯片作为该系统的图像处理模块.另外,MG996R舵机作为执行器,7.2V镍-铬电池作为执行器的总电源,XL4016DC-DC模块作为舵机的稳压模块,为舵机提供恒定电压.首先,利用OpenMV中的传感器模块引入摄像头的感光元件并对相关参数进行初始化;接着通过图像二值化算法确定小球在OpenMV摄像头中的二维坐标[2],计算出小球当前位置的偏差与当前小球的速度;然后对此偏差利用串级PID控制算法在OpenMV中进行处理,最终计算得到舵机转动的角度并控制板球的平衡.小球的位置信息可发送至上位机中进行实时监测.图1为系统设计框图.
2系统硬件设计
板球控制系统的硬件部分由OpenMV、模拟舵机、稳压模块等构成.本设计使用的OpenMV共有14个定时器,包含2个通用定时器,采用3个I/O引脚用于舵机控制.同时具有全速USB(12Mbs)接口,连接电脑上的集成开发环境OpenMVIDE可实时采集OpenMV摄像头捕捉到的图像,方便程序运行时监控小球的运动情况.图2为板球控制系统实物图.综合本系统的实际需求以及硬件搭建的简洁性,采用7.2V镍-铬电池作为系统的总电源.电池容量为2000mAh,通过XL4016DC-DC模块将电池电压转为两路6V输出,分别为2个舵机供电.
2.1OpenMV摄像头
OpenMV摄像头是一种小型、低功耗、多应用的微控制器板,使用MicroPython语言进行编程.其配备的OV7725图像传感器能够以高帧率拍摄8位灰度图像或16位RGB图像,方便在工程应用中使用机器视觉实现相关图像的应用算法.
2.2舵机执行器
舵机属于伺服电机,带有反馈环节,可根据其属性对伺服电机进行精确的位置控制或者输出较高的扭矩.本设计采用的MG996R舵机在6V供电下具有11kg/cm的扭矩和0.15sec/60°的控制精度,适用于对控制精度要求较高的板球控制系统.舵机硬件连接共有3根线,分别为VCC、GND和PWM信号线.控制舵机通过接收周期为20ms的PWM信号决定其输出角度.输入信号的脉冲宽度与舵机旋转角度呈线性关系.表1为舵机输出角度的对应关系表.
3系统软件设计
板球控制系统的软件算法设计主要由小球识别、串级PID构成.系统上电后,首先通过按键进行模式选择定点或圆周运动;随后通过OpenMV机器视觉库对图像进行预处理,确定小球在图像中的x轴与y轴坐标,并与设定点坐标值做差处理,得到小球的位置偏差;再利用帧差分法求出小球速度;最后通过串级PID算法求出平板需转动的角度并向舵机发送PWM信号,从而维持板球平衡.图3为系统总控制流程图.
3.1图像处理
为了提高机器视觉相关算法的开发效率,OpenMV提供了基于图像处理的MicroPython语言编程接口,内置的图像二值化算法取决于灰度阈值的设置范围.根据像素是否在阈值列表内,将图像中的所有像素点设置为黑色或白色,图4为OpenMVIDE阈值调试界面图.系统运行时,首先对视觉库的sensor模块进行摄像头初始化,将其像素模式设置为灰度模式;再利用OpenMVIDE中的阈值编辑器为小球选择最佳的灰度跟踪阈值,通过二值化函数image.binary()对图像进行二值化处理[3],即可识别出小球;最后通过逐行扫描白色的像素点算法确定小球的中心位置坐标.图5为OpenMV二值化图像处理流程图.
3.2串级PID
为了解决传统单环PID控制响应速度慢、抗干扰能力弱等问题,对于精度较高要求的本系统采用串级PID控制[4].利用平板在OpenMV摄像头中呈二维坐标系x轴和y轴,由于运动的独立性原理,忽略掉球板之间的摩擦力,可将小球的运动分解为相互垂直的两个方向.因为本设计选取的平板为正方形,两舵机执行器转动角度应设置相同.PID的一般控制规律为1dedd(1)式中:err(t)是设定值和实际值的偏差,Kp是比例系数,TI是积分时间常数,TD是微分时间常数.由于本设计对实时性要求较高,故设计以下离散化PID控制系统:假设采样间隔为T,系统输入量为input(t),输出量为output(t),则在第K时刻的偏差为(2)则离散化PID控制规律为由式(3)可得,系统的输出与最近的两次偏差有关,此PID控制为位置离散化PID,则速度环为位置环与相邻时间的比值.式中:V为小球的实际速度,err(k-1)为小球上一次误差,err(k)为本次误差,为摄像头两次检测小球的时间差.为实现对小球的串级PID控制,首先需要理清系统的输入输出以及系统的相关特征.本次设计的板球控制系统,首先是通过OpenMV机器视觉模块获取小球的位置坐标以及帧差分算法计算的小球速度.两者作为串级PID的相关输入或输出,可得到平板应转动的角度.在控制算法中,采用x轴-y轴并级的串级PID算法[5].图6为控制算法的结构框图.设置小球的速度环为内环,位置环为外环,内环将外环求得的小球期望速度与OpenMV帧差分算法得到的小球速度做差后作为内环的输入,通过PD控制器获得舵机转动的角度作为系统最终的输出.内环控制的主要作用是限制小球速度,故运用PD控制.外环将输入的期望坐标与OpenMV图像处理得到的小球坐标做差后作为系统输入,通过PID控制器得到小球的期望速度并参与系统的内环输入.外环控制的主要作用是提高小球位置控制的精度,故运用PID控制.
3.3定点及圆周运动
小球的定点控制目标,是将其快速、精确地稳定在目标点.通过OpenMV摄像头检测小球的当前位置与设定位置的偏差以及小球的运动速度,使用串级PID控制算法,通过调整合适的PID参数,输出平板x轴和y轴倾斜角度所需的控制量,通过执行器舵机可实现小球最终稳定在目标点区域.对于小球圆周运动控制算法的实现,可参考圆的参数方程:(4)式中:,表示圆心坐标;r表示圆的半径;θ为2π的归一化值.设置圆心坐标和小球运动半径,利用OpenMV内置的定时器,每秒θ值加一,通过调整内外环控制器合适的参数(内环:Kp=0.1,Kd=0.02;外环:Kp=0.28,Ki=0.04,Kd=0.14),即可保证小球在平板上做圆周运动.
4测试结果分析
通过对内外环PID相关参数的不断校正,最终板球控制系统可以在定点模式和圆周运动模式之间任意切换.经测试,在小球定点控制模式下,小球与最终目标位置的精度偏差最大不超过1cm,稳定时间不超过6s.在圆周运动模式中,小球能按照设定圆的参数完成绕行任务,小球绕行的圆半径与实际设定的圆半径偏差不超过1.5cm.经过对小球环绕的多次测试,得出小球绕行一圈的平均时间约为15s.图7为小球圆周运动效果图.
5结语
本设计采用OpenMV作为传感器和控制器,利用图像处理和串级PID控制算法完成了对板球控制系统的设计.图像部分运用对像素的二值化处理可消除外部干扰因素的影响.软件控制算法使用串级PID相比于单环PID控制更精确,能够克服对象非线性特性的影响,通过内外两环并联调节增强系统的稳定性和抗干扰能力.
作者:何俊杰 尹炜 胡柏 姚安权 陈林 李鑫 单位:常熟理工学院电气与自动化工程学院