1、 12017 年 TI杯江苏省大学生电子设计竞赛题目:滚球控制系统题目编号: B 参赛队编号: XZ037参赛队学校:参赛队学生:2017年 8月 12日2摘要: 本设计是以 STM32 单片机为核心、采用视觉检测技术的的滚球控制系统,实现对小球在平板滚动的精确控制功能。本设计基本模块包括 MCU、摄像头、显示屏、机械平台、按键输入,其中 MCU 即 STM32 F429 开发板,摄像头采用OV2640,显示屏选择 7 寸 TFT 触摸屏。通过摄像头获得图像数据,分析小球位置来控制平板倾斜,达到控制小球的目的。关键词:单片机 STM32、视觉检测、图像识别、OV2640Abstract: Th
2、is design is based on STM32 single-chip microcomputer and the ball rolling control system with visual detection technology to realize the precise control function of the pellet rolling. The basic modules of this design include MCU, camera, display, mechanical platform, keystroke input, among which M
3、CU is the STM32 F429 development board, the camera adopts OV2640, and the display screen selects the 7-inch TFT touch screen. The image data is obtained by the camera, and the position of the ball is analyzed to control the tilt of the plate to achieve the goal of controlling the pellet.Keywords: OV
4、2640、Vision Detection Technology、Image Identification3目录一 前言4二 系统方案设计51 平板控制方案52 位置采集方案53 小球材料方案5三 理论分析与计算61 小球位置的分析与计算62 控制算法分析6四 电路与程序设计71 系统程序流程设计72 摄像头电路73 视觉定位流程设计74 舵机的控制思路8五 系统测试81 测试仪器82 测试方案及结果86 总结9一 前言4题目要求我们在 3cm 直径的圆内稳定 2cm 左右的小球,精度很高。本实验首要问题就是要解决获取小球位置的难题。为此,我们采用摄像头采集数据,单片机分析小球位置,与目标位置
5、相比获得控制输入量,控制平板机械结构运动。二 系统方案设计1 平板控制方案方案一:推杆电机上下推动,这种方案材料易得,平板稳定,但是无法控制行程,甚至需要 mpu6050 加入第二个控制环。方案二:步进电机+丝杆,有现成器材,行程可控,速度可调,容易实现PID。但机械结构难以组装。方案三:舵机,角度与占空比成线性关系,不存在失步,力矩大。在可行性与精确度指标上比较过后,决定采用方案三。2 位置采集方案方案一:在木板 X 与 Y 边缘分布大量光电收发二极管,为了实现题目要求3cm 以内的定位,每侧需要 60/3=20 个。难度低,但需要大量 IO 口,精度也很不理想。方案二:摄像头采集数据,精度
6、高,大量 DMA 中断操作使得 PWM 很不精确,导致舵机不稳定。经过讨论,我们决定使用方案二。3 小球材料方案方案一:木球,重量轻,有利于快速反应。但是不太圆方案二:铁球,惯性大,加速度慢,有利于稳定。方案三:选用 RoboMaster 比赛的子弹。此圆球质量适中,漫反射材料有利于小球像素提取。但是不容易获取。多次实验并比较之后,我们采用方案二。三 理论分析与计算51 小球位置的分析与计算OV2640 是高像素的 cmos 摄像头,但现有模块中没有 FIFO,存取速度极大影响了主程序运行,因此采用 DMA 不经 CPU 传送数据,配合 STM32F4 系列特有的 DCMI,节省运算资源。小球
7、的质心有多种方法计算。由于板上只有一个小球,采用霍夫圆变换消耗过多运算资源得不偿失;获取小球上下左右四顶点求平均方法很简单,精度足够;本设计中采用小球坐标相加求平均,即质心。对于图像中的噪点,通过检测两个连续的像素点,来粗略判断是否是小球。我们采用 180 个像素点来显示 Y 轴坐标值,误差 60cm/180=3.33mm。小球2cm,在圆心处距离圆边界有 5mm,因此误差可满足精度要求,但对控制要求较高。2 控制算法分析平板倾斜角与舵机转角成正比,而舵机转角与占空比成正比。即控制倾斜角度仅需设定占空比。本系统采用 PID 算法来控制角度。系统开始工作后,摄像头不断采集当前小球坐标,并与设定坐
8、标比较,使得舵机的运动逐渐趋向平稳。PID 算法控制器由舵机转动角度比例 P、角度误差积分 I 和角度微分 D 组成。 其输入 e(t)与输出 U(t)的关系为: 它的传递函数为:位置误差比例 P:对平板角度进行比例调整,即对 PWM 占空比调整。比例越大,调节速度越快。过大可能造成平板工作状态突变而使小球不稳定。 位置误差积分 I:使系统消除稳态误差,提高无差度。加入积分调节可使系统稳定性下降,动态响应变慢。由于小球滚动速度很快,需要很快响应速度,因此,本系统对积分调节就非常弱。即保证在不需要时系统不会受到影响。位置误差微分 D:微分作用反映平板角度的变化率,能预见偏差变化的趋势。因此能产生
9、超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。可以改善系统的动态性能。在微分时间选择合适情况下,减少调节时间。四 电路与程序设计61 系统程序流程设计2 摄像头电路3 视觉定位流程设计像素获取 二值化 轮廓检测 消除噪点获取小球中心4 舵机的控制思路单片机小球位置舵机控制键盘输入要求一 要求二7在使用舵机的过程中,我们发现角度与占空比,并不是严格的线性关系。粗略描绘散点图后,我们采用两段一元方程对其进行近似。如:if(PID0)pwm=-PID/25+60; /60 是我们实际调整平板平衡时的占空比elsePwm=-PID/30+60; /25 与 30 是我们测试近似的系数五
10、系统测试1 测试仪器(1)量角器 (2)T 型尺2 测试方案及结果表 1:基本要求测试表 2:发挥部分 1、2 测试时间(s) 目标值 实际值 误差值第一步 13 (100,30) (95,28) (5,2)第二步 13 (198,99) (192,97) (6,2)第三步 15 (199,199) (194,195) (5,4)3 测试数据分析发挥部分的实际测试中发现,误差值总是有趋势地向某一方向偏移。通过有意识将目标值向误差反方向移动,实际值则与题目要求非常符合。分析之后我们发现,由于我们用的小球并不是完美圆形,某一面总是弧度更小,滚动时在这里更容易停止。目标值 1 实际值 1 误差值 1
11、 目标值 2 实际值 2 误差值 21 (30,98) (28,99) (2,-1) (100,30) (96,33) (4,3)2 (30,98) (32,100) (2,2) (100,100) (93,96) (7,4)3 (30,98) (31,99) (1,-1) (200,200) (194,207) (6,-7)8通过对比集几种不同材质的运动路径,我们发现质量越大的球惯性越大,算法收敛时更趋向稳定,但当算法发散时则容易滚出平板外,如铁球便属于这种材质。而质量小的球如木球,惯性较小,角度稍大容易导致失控,所以我们调节时,比例系数要设定的很低。6 总结本系统使用 STM32 F4 系
12、列单片机,频率高达 168MHz,片内有 DCMI 图像接口,方便我们接收处理图像,优势明显。设计中使用软件二值化,之后对图像进行初步的降噪处理,通过简单的算法识别小球质心,实现了基于视觉检测控制小球滚动的目的。由于时间短暂,本系统并不完美,还有很多地方可以改进,如:(1)使用 3 级的 Canny 算子对图像进行处理,检测出明显轮廓,使得本设计对视觉要求降低许多,镜头内可以出现任意干扰、不必担心小球反光、平板的位置可以随意摆放。(2)使用霍夫圆变换检测小球位置,可以忽略图像内噪点的影响,使位置检测更稳定。(3)使用卡尔曼滤波预测小球位置,可以极大程度上减小系统时延,提高精度。通过本次赛前准备,接触到了很多技术,学到了很多知识。虽然今年的电子设计大赛已经结束,但是要学习的东西还有很多,以后也一定要努力学习电子知识。