基于STM32的滚球控制系统设计_第1页
基于STM32的滚球控制系统设计_第2页
基于STM32的滚球控制系统设计_第3页
基于STM32的滚球控制系统设计_第4页
基于STM32的滚球控制系统设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要本论文设计了一种基于STM32的滚球控制系统,重点研究了该系统的机器视觉控制算法。该系统通过OpenMV摄像头获取小球的图像信息,分析锁定小球所处的坐标,通过一些相对应的PID算法来控制电机的运行。通过数字舵机的运行将平板倾斜到所需要的角度,从而驱动小球滚动到特定的位置。其目的是实现对小球的滚动方向和停留位置的控制以及小球运行轨迹的追踪。其中主要涉及的研究内容有:图像识别、图像处理、运动控制和智能控制。文中介绍了整个系统的结构和制作过程,详细探讨了其控制算法的调试与实现。对于单片机程序的设计和滚球系统的硬件搭建提出了自己的看法。针对系统的需求使用了多组PID相互串联或并联使用来控制系统。对于实际编写和制作及调试过程中所遇到的各种问题及处理办法都进行了深入的探讨。关键词:滚球控制系统;机器视觉;OpenMV;智能控制;多组PID

ABSTRACTInthispaper,arollingballcontrolsystembasedonSTM32isdesigned,andthemachinevisioncontrolalgorithmofthissystemismainlystudied.ThesystemobtainstheimageinformationoftheballthroughtheOpenMVcamera,analyzesthecoordinatesofthelockedball,andcontrolstheoperationofthemotorthroughsomecorrespondingPIDalgorithms.Theplateistiltedtothedesiredanglebytheoperationofthedigitalservo,thusdrivingtheballtorolltoaspecificposition.Itspurposeistorealizethecontroloftherollingdirectionandresidencepositionoftheballandthetrackingofthetrajectoryoftheball.Themainresearchcontentsinvolvedare:imagerecognition,imageprocessing,motioncontrolandintelligentcontrol.Thispaperintroducesthestructureandproductionprocessofthewholesystem,anddiscussesthedebuggingandimplementationofitscontrolalgorithmindetail.Heputforwardhisownviewsonthedesignofthesingle-chipmicrocomputerprogramandthehardwareconstructionoftherollingballsystem.Accordingtotheneedsofthesystem,multiplegroupsofPIDsareusedinseriesorparalleltocontrolthesystem.Variousproblemsencounteredintheactualwriting,productionanddebuggingprocessandtreatmentmethodswerediscussedindepth.Keywords:controlsystem;machinevision;OpenMV;intelligentcontrol;multiplesetsofPIDs第一章绪论1.1研究背景及意义1.1.1研究背景滚球控制系统是一个典型的自动控制系统。从上个世纪80年代开始,国内外就有很多学者对这个系统进行了各种设想和构建。通过滚球系统这个系统,可以对很多控制算法进行研究和校验,并且可以很方便的将其运用在生活的各个方面。大部分的研究人员在研究和设计自己的滚球系统时,通常通过视觉传感器,或者压力传感器来估测和定位小球的位置坐标,然后通过对该坐标的位置信息进行计算,来控制输出的脉冲宽度调制造(PulseWidthModulation,PWM)信号的大小从而控制电机的运行以达到驱动平板倾斜,控制小球滚动到指定的位置的目的。生活中的很多方面都会应用到滚球系统的研究成果。例如对于小球在平板上的位置进行定位、对小球未来的运动方向进行预测,都需要应用到比例积分微分控制(Proportional-Integral-DerivativeControl,PID)算法和计算机视觉算法,这可以应用于工业机械化的许多方面,例如无人机对目标的自动跟踪和无人驾驶车辆的行人检测技术。同样,系统控制算法也非常重要。如今,许多工业机器人和智能机器人的研发都离不开自动控制算法的发展。因此,滚球控制系统是一个非常价值的研究课题,也是研究和验证算法的重要平台。板球系统是经典控制一维杆球系统的二维扩展,是欠驱动性系统,它运用了机器视觉和自动控制原理,通过机器视觉模块(OpenMachineVision,OpenMV)采集小球的位置坐标以及运动速度信息,利用PID控制及模糊规则限定舵机运动,来调节平板的倾斜角度,控制小球在板上定点运动[1]。1.1.2研究意义今天计算机技术正在飞速的发展,而计算机视觉一直都是计算机技术中最为重要的内容之一,人们热切的希望计算机可以拥有类似人眼的观察能力和大脑的分析能力,即使用摄像头作为计算机的人眼,通过对应的处理器使计算机也能拥有像人类那样对目标的识别和分析能力。如果将计算机视觉和智能控制系统相结合,就可以使计算机自行识别环境中所需要的物品,并且根据设定的程序去执行相应的操作,实现我们想实现的功能。目前,该技术在工业,农业,制造业,军事等方面得到了广泛的应用。随着计算机技术的飞速发展,许多学者开始将目光投向了计算机视觉与智能控制领域。为此,本文设计了滚珠控制系统,对其进行了深入的研究,并对其理论进行了验证。由中外学者设计了许许多多不相同的滚球控制系统来验证自己的观点,由于滚球系统本身具有的强耦合性、非线性的特点,因此成为了验证和控制算法的一个理想的平台。1.2国内外研究现状从2000年前后开始,清华大学自动化系在已有的基础上,对滚球控制系统中的多变量模糊控制策略进行了深入的探讨。基于该模型,设计了一种基于该模型的小球轨道规划与目标跟踪算法。,并且使用计算机制作仿真进行检验。其后教研组自主设计并独立制作了一个基于计算机视觉的滚球控制系统的物理仿真平台,并将其研究成果应用在这个平台上。美国的伦斯勒理工学院自主设计了一个滚球系统,他们使用触摸面板来识别小球的坐标。建立了一组简单的、线性的数学模型.其通过状态反馈控制器对系统进行实时控制,实现了对小球定位控制误差小于5mm,跟踪圆的轨迹半径误差小于18mm,小球的运动速度误差小于4.2mm·s-1。韩国汉阳大学的研究人员提出了一种以层次化模糊CMAC神经网络为核心的变结构自适应控制器,并在此基础上实现了对球体位置的准确控制。1.3研究的主要内容滚球控制系统通过OpenMV采集到滚球系统中小球与板面的图像信息,并利用相关的图像处理算法对其进行处理,将小球在板面上的位置信息转换成板面上小球的位置坐标,并将该位置坐标传输到STM32单片机中,对板面的X轴与Y轴进行PID控制,使操纵器与板面在这两个正交点上互相协调地倾斜,进而间接地控制小球做直线、绕环等动作。操作方式及参数的选择使用按钮及LCD显示。1.4本文的组织结构本文各章按下列顺序进行编写:第一章为绪论,主要介绍了论文选题的背景、意义、国内外相关研究的现状及发展趋势,并提出了本论文的研究方向。第二章为本论文的总体设计,主要是对本论文所要完成的任务、所涉及到的各个方面进行了详细的说明,并说明了本论文所涉及到的各个方面的问题,以及所涉及到的各个方面的问题。第三章为系统的硬件设计与实现,主要阐述了系统的工作原理,并对系统的主要技术指标、主要功能指标以及系统的主要性能指标作了较为详尽的分析与对比。第四章为本论文的软件设计和实现部分,着重介绍了滚球控制系统的总体结构,并对MCU的编程方法作了简单的总结,对各模块的编程方法作了较详尽的论述。第五章为系统测试,主要是对系统在调试过程中所遇到的一些问题进行记录,并思考提出解决方法,并对最终修改后的运行结果进行总结记录。第六章是对整个文章的总结和展望,它对整个文章做了一个总结,归纳出了该系统的特征和所能完成的功能,并针对该系统存在的缺陷,给出了一些改善的办法。,并对系统未来将会实现的功能进行展望。

第二章系统总体设计2.1系统功能在边长为40cm光滑的正方形平板上均匀分布着9个外径3cm的圆形区域,其编号从左上到右下以此为1~9号。(1)把一颗小球放到该形状的范围4上,并控制该小球至少在该范围内保持5秒钟。(2)控制球体从第1区进入第5区,持续15秒,并至少在第5区逗留2秒。(3)控制球体从第1区进入第9区,持续30秒,并至少在第9区保持2秒。该系统主要由六个主要部件组成:控制器,执行器,平板和球体,相机,图像处理单元。整个装置的工作流程是这样的:相机对小球在运动过程中的图像进行记录,利用图像处理单元来计算小球相对于平板的坐标,将此坐标作为测量值与给定的坐标期望值一起送入控制器,由控制器来比对并计算数据,在经过控制器的计算之后,将输出结果传送到执行器,进而控制小球的运动到指定位置。在图2-1中显示了该设计的体系结构方框图。图2-1滚球系统流程图2.2现有方案比较目前的主流滚球控制系统大致为以下几种方案:第一种:主控制器为STM32,摄像头为iMac拆机摄像头,电机选择使用数字舵机。优点为价格便宜,容易购买,但由于图像处理功能是在STM32中进行,而STM32在图像处理方面并没有突出的优点,图像传输需要传输时间导致系统延时过大,而且STM32在图像处理方面效率较慢,处理略有卡顿,从而很难控制小球到达指定位置,因此本次系统设计并未采用此方案。第二种:主控制器为STM32,摄像头为iMac拆机摄像头,图像处理器为Nanopi2Fire处理器,电机选择使用数字舵机。优点为解决了方案一中STM32对于图像处理方面略显卡顿的问题,而且在图像处理方面Nanopi2Fire处理器具有强大的优势,但是其对小球识别功能的实现较为复杂,需要将采集的照片进行灰度化处理,再进行边缘检测、转化为二值图像等一系列操作,最终才能检测到图像的边缘并且输出。由于使用了Nanopi2Fire处理器导致此方案丧失了方案一中价格便宜的优点,因此本次系统设计并未采用此方案。第三种:主控制器为STM32,摄像头为OpenMV模块,电机选择直线电机。其优点为使用了OpenMV模块作为摄像头和图像处理器,这样就不用额外寻找图像处理器,而且OpenMV模块本身预留了很多资源丰富的硬件接口,使用起来非常方便。而且在图像处理方面比使用STM32效率更高,反应速度更快。但由于直线电机和数字舵机不同,直线电机不能直接接收由STM32产生的PWM信号,所以需要驱动电路将PWM信号转化为相应的电压后才能驱动直线电机运行,因此本次系统设计并未采用此方案。第四种:主控制器为STM32,摄像头为OpenMV模块,电机选择数字舵机。使用OpenMV作为图像处理器可以更加快速的锁定小球,并且更加快速的确定小球的坐标。对于图像处理方面比其他的图像处理器更加快速便捷,可以加快整个系统的反应速度。数字舵机比起直线电机更加便宜小巧易于携带,而且数字舵机可以直接接收STM32发出的PWM信号,不需要额外设计驱动电路,对于平板倾斜度的把控更加精准,对于PID算法的调试也更加简便。因此本系统使用的设计方案为第四种,本系统采用OpenMV作为图像传感器和图像处理器。OpenMV采用的STM32F427芯片,提供了大量便捷且功能强大的外围功能和多功能接口,可以更方便的与其他模块相连接。而且其开发环境较为简单,只要有一个USB接口,就能将它连接到计算机上,还拥有集成开发环境OpenMVIDE,帮助它完成编程、调试和更新硬件等工作,而且OpenMV比其他的摄像头更加灵活且不需要其他图像处理设施,使整个系统更加简洁,运行速度也更加迅速。而且可以直接和STM32进行串口通信。相比于传统的电机驱动和直线电机的组合,本系统选择使用数字舵机。相比于笨重的直线电机,数字舵机更加小巧轻便,而且不需要电机驱动,直接接收PWM波即可运行。价格便宜而且摆放位置响应速度更加快速。在控制平板的精细度方面也略有优势。综上所述,本系统最终采用的方案为:核心控制单元:STM32F103ZET6;运动控制单元:舵机;图像采集及预处理单元:OpenMV;平台:400×400×3mm的哑光黑色亚克力板;小球:1.8cm氧化锆小球。本课题针对小球控制精度较差的问题进行研究,提出了采用多个串级PID算法,以达到对小球的精准定位和轨迹追踪的实验目标。2.3系统设计方案确定2.3.1主控制器方案一:采用树莓派作为系统的控制器。树莓派是一种只有信用卡大小的卡片式电脑,具有价格低、体积小的优点,与常见的51单片机和STM32等嵌入式微控制器相比,不仅可以完成IO引脚控制,还能运行Linux操作系统,因此可以完成更复杂的任务管理与调度,支持更上层应用的开发[2]。尽管树莓派与常见的51单片机和STM32等嵌入式微控制器相比,能够运行相应的操作系统,还可以完成更复杂的任务管理与调度,但树莓派的最大优势同时也是自身的短板,它提供了比嵌入式微控制器更多选择与应用的同时,牺牲了自身的性能优势[3]。方案二:采用FPGA作为系统的控制器。高端FPGA还集成了通用性较强的内嵌功能单元(如DSP、CPU等)和专用硬核(如乘法器等)满足复杂的需求[4]。而且其独有的超低延迟,可以更加快捷的运行程序,但FPGA编译过程过于漫长,相对于其他两种控制单元而言,FPGA的入门门槛高,价格高,特别适用于专用设备的开发[5]。方案三:采用STM32F103C8T6单片机为系统控制器。STM32F103C8T6最小系统板STM32F103C8T6是一款基于Cortex-M3内核的32位微控制器,具有功耗低、性能高、功能强大、可塑性好等优点[6]。开发环境简单便捷,性能高,成本低,功耗低,编程也相对简单。STM32可以配置PWM模式。在此设计中可以使用PWM模式来稳定的输出PWM信号,可以更加方便的控制舵机的运行速度。在整个滚球系统中,需要对两个方向采集到的信息分别进行对应的PID运算,为了满足高速运算的算力需求,系统的主控制器选择了性能好,功耗低的STM32F103C8T6单片机。2.3.2图像处理器方案一:采用普通摄像头模块。常用的摄像头模块传感器一般为OV7670。美国半导体公司OmniVision的OV7670型号传感器,它体积小、工作电压低、灵敏度高,采用标准的SCCB接口和I2C协议,与单片机能进行良好的通信[7]。采用SCCB总线控制。OV7670具有体积小、工作电压低等优点,但是其视场角只有23°,为了实现测量需要把摄像头抬高,这样影响模型的稳定,同时较小的视场角将会使得系统整体最大测量值受到影响[8]。方案二:使用OpenMV模块。OpenMV是一个功能庞大的机器视角模块,有相关例程,且容易上手,提供人脸识别、口罩识别等相关知识,与其他硬件通信时可以选择通过UART,I2C,SPI和GPIO等接口,该模块集成了0V7725摄像头芯片,相比于市场上的OpenCV拥有丰富的视觉开发,在硬件上,通过算法的编程高精度的核心视觉算法[9]。考虑到不需要重复地制作轮子和工具,我选择了这个系统的设计方案二。2.3.3舵机方案一:采用直流减速电机。直流减速电机振荡小,噪音低,节能高。但直流减速电机在对外输出力的时候,会对平板的进一步运动有所阻碍。方案二:采用模拟舵机。模拟舵机的动作控制主要通过信号线输入PWM波,通过改变占空比的值来决定舵机转动的角度,容易产生误差,且每个舵机的机械特性都不是线性的,这样给舵机调试带来了不便[10]。方案三:使用步进马达。由于步进马达的转角是通过在程序中输入的脉宽调制脉冲数目来决定的。因此在操作时,必须精确地计算出马达的转角,以确保板面的倾角。但是,在实际的操作过程中,对数据精度的要求过高。步进电机很难达到如此精准的要求,而且步进电机正负极切换较为缓慢,这会使电机更难使平板处于平衡状态。方案四:采用数字舵机。数字舵机依靠接收的PWM波来控制转动速度和转动角度,其控制精度高、线性度好、响应速度快。图2-2为数字舵机旋转角度与PWM波的关系图。本系统选用数字舵机。数字舵机相对于传统的模拟舵机存在一定优势,数字舵机的控制电路比模拟舵机多了微处理器和晶振,因此这就可以使输入的信号脉冲在到达马达之前参数进行了一定的处理,以适应不同功能的要求,而且优化了舵机的性能,此外还有响应快,防抖动的优点[11]。2.3.4角度测量模块第一种方法:采用加速度计。采用加速度传感器,可根据地面的重力加速度,得到底板的倾角。当这个组件被固定在一个位置上时,它是受重力影响的,所以它有一个1克的重力加速度。根据这一特性,在X、Y方向上测定重力加速度的各分量,就可求出其在竖直面上的倾角。但由于在转动过程中自身存在额外的加速度,并非一直处于静止状态,所以角度计算不是很准确。计算公式如下所示[12]:a=arctanAx2图2-2数字舵机旋转角度与PWM波的关系第二种方法:采用回旋式传感器。采用六轴陀螺传感器,能够直接对角速和加速度进行测量,并且不会受到外部信息的干扰,利用卡尔曼滤波算法将加速度与陀螺仪的数据融合后,可以在动态的情况下进行测角,而Z轴角则是由积分得到的,但是长期运转会产生累积误差。图2-3为陀螺仪传感器的原理图。六轴陀螺仪精准度更高,使用起来更加方便,可以保证动态时角度的准确和良好的性能,因此本系统选择六轴陀螺仪作为角度传感器。2.3.5滚球模块方案一:选用乒乓球作为滚球模块。乒乓球价格便宜,但内部为空心的,因此质量较轻,体积较大,容易受到外部因素影响。且表面不是很平滑可控性低,控制不稳定。方案二:选用不锈钢小球作为滚动模块。不锈钢小球是由不锈钢制作而成,因此质量较大,相比于乒乓球,被外界因素影响的情况更少,更方便系统控制。但由于不锈钢的反光特性,我们在使用摄像头对小球进行识别时,容易因为外界环境的不同小球呈现不同的颜色,对于颜色阈值的调控十分困难。而且在系统运图2-3陀螺仪传感器原理图行过程中,极容易出现小球丢失的情况。方案三:选用氧化锆小球作为滚动模块。氧化锆小球为实心小球,质量较大,基本不会受外界因素影响。而且氧化锆小球全身为纯白色,无论外部如何变化小球的颜色阈值几乎不变,基本上不用担心小球丢失问题。由于其质量较大因此对于倾斜角的灵敏度非常高。图2-4为各种小球示意图。图2-4各类小球示意图综上所述,由于表面越光滑的小球,可控程度就越高。例如,将平板的倾斜度设置为倾斜度5°,乒乓球在平板上可能会保持静止,而氧化锆小球可能在倾斜度为1°的时候就发生移动了。如果可控度太低的话,就需要通过大量的算法来消除这个问题可能带来的误差。而且效果也不会很好,因此本系统的滚球模块选择使用氧化锆小球。2.4小结通过OpenMV接受图像并对图像进行处理分析,对被测对象进行了识别,并对被测对象的位置进行了判定,将位置信息经串行口发送到STM32。用STM32对接收到的数据作了处理.经过处理后,STM32对处理后的数据做出判断,并控制操纵器,使小球在指定位置进行停留。

第三章系统硬件设计与实现3.1滚球控制系统的硬件组成整个系统的硬件构建框图如图3-1所示。使用陀螺仪模块对平板的角度进行实时测量计算,并控制每次任务结束后平板所处的位置都是水平状态。当球放在平板上的时候,OpenMV会对小球的位置进行坐标转换并将转换后的小球坐标信息传送给STM32单片机,由单片机进行相应的算法来决定发送给数字舵机的PWM波,从而控制舵机将平板倾斜到相应的位置使小球滚动到任务要求的位置。矩阵键盘可以选择所需要的任务模式来完成所对应的任务,其中的数据会通过液晶屏显示出来。图3-1滚球控制系统硬件框图本系统选用黑色的硬纸板来作为平板,其边长为40cm,OpenMV放置在平板的正上方120cm左右的位置。采用硬质的氧化锆小球作为被控对象,因为氧化锆小球表面光滑,受到的摩擦力等小,可控制性更强。整个平板由在中心的一个固定的万向轮并且用连接杆连接起来作为主支撑和两个数字舵机分别放在平台下方相邻两边的中间位置,使用连接杆将平台与舵机连接起来作为副支撑,通过舵机的升降来控制整个平台的倾斜角度,从而控制小球的滚动。将摄像头固定在平台上方120cm的距离,正好让OpenMV的摄像头可以将整个平板的画面全部拍摄到。六轴陀螺仪模块放置在平板的正下面以保证其测量角度的准确性。系统机械结构的示意图如图3-2所示。3.2图像识别模块3.2.1理论分析摄像头驱动电路的设计摄像头控制电路采用的是OpenMV高度集成摄像头,该摄像头是一个开源、低成本、功能强大的机器视觉模块,自带STM32处理器,图3-2滚球控制系统结构图集成OV7725摄像头芯片,可以对摄像头传感的图像进行自处理,并可与机器人主处理器进行通讯[13]。采用C语言对机器视觉的核心算法进行了有效的实现,并为其提供了Python的编程界面。OpenMV的主控部分原理图如图3-3所示。在此基础上,提出了一种基于OpenMV的图像识别方法,该方法主要用于图像识别,人脸识别,眼动跟踪,边缘检测,标记跟踪等。该方法可用于对非法入侵进行检测,对产品进行残次品的筛选。用户只需编写几个简单的Python程序,就可以很容易地完成与机器视觉有关的各项工作。比如寻找小球的算法,只需要在OpenMV提供的案例中找到寻找色块的算法功能再进行一定的修改和包装就可以快速的完成。OpenMV可以使用USB来将整个系统与OpenMVIDE联接在一起,并协助完成程序编写,调试,更新固件。TF卡插槽可提供大量的TF卡,可用来储存程式、储存相片等。3.2.2模块设计本文所设计的这个系统就是采用了这种方法,利用UART技术实现了系统的硬件接口。运用Python语言,调用OpenMV中内置的OpenCV库,找出寻找白色小球的算法,然后根据小球的位置,计算其坐标,并对得到的结果进行简单的包装,最后通过UART串口将信息传输给STM32。13图3-3OpenMV主控原理图3.3舵机控制模块3.3.1理论分析舵机是一种小型装置,它有一个输出轴。所述轴线可通过传输所述伺服编码信号而位于所述特定角位置上。该伺服器将维持该轴的角度位置,只要该输入线上有一个编码信号。跟传统的模拟舵机进行比较,数字舵机更具备优势,只需要简单的发送一次PWM信号既可以使其维持在一定的位置范围内或保持某一个速度,操作简单,而不像模拟舵机需要给它不停的发送PWM信号,所以数字舵机的“无反应区”变得很小,且线性度好,响应速度也更快[14]。由于采用了单片机,因此,在向操纵器电机发出功率脉冲前,数字操纵器能够按照设定的参数对输入信号进行处理。也就是说,驱动电机的功率可以通过微处理机的程序来调节,从而达到最优控制效果。数字执行器向马达传输高频的电力脉冲。也就是,从50次,变成了300次。因为出现的频率越来越高,每一个脉冲的宽度都会变短,但是,电机却能同时接收到更多的激励电流,转动速度也会变快。同时,它还将使操纵器的运动更加准确,减少“无反应区”,提高响应速度;同时,它的加速和减速也更快,更柔和;数字式舵机具有更高的精确度和更好的紧固力。3.3.2模块设计本系统所使用的执行器为两个MG996R的数字舵机如图3-4所示,其最大推力为30kg,工作电压为4.8-6.5V。实际使用中发现该舵机在使用5V电源时推力最大性能最好。图3-4STM32F103C8T6引脚示意图本舵机可以直接接收主控制器STM32发出的PWM信号,因此不需要电机驱动模块即可控制运行,其转动角度很大。舵机装上舵机臂,让力矩可以传输出去。然后使用螺丝把舵机臂与双文螺杆进行连接,然后用金属球头把双头螺杆与板子连接在一起。使得舵机能顺利地把力矩转化成板子X/Y方向的转动,使得无论通过哪个角度的转动舵机都可以精准的控制小球的位置。3.4STM32控制器3.4.1理论分析该系统使用了STM32F103C8T6作为主控芯片。STM32F103C8T6具有较高的性能。此芯片使用了高性能的RISC内核,其工作频率可达72MHZ,并带有一个高速存储器,可扩展的增强输入/输出,并可与两条APB总线进行外部连接。而且STM32F103C8T6还拥有丰富的IO口,可满足各种复杂的应用需求。在这个滚球控制系统的构建过程中,我们用到了STM32的串口、定时器、IIC及其它外设。将串口设定为一种中断的接收模式,并设定了一系列的参数(波特率、数据比特、校验比特、停止比特),然后写出了一个串口的接收协议。使主控制器可以精准的接收到来自OpenMV发送过来的数据。而且STM32F103C8T6还可以配置为PWM模式。图3-4为STM32F103C8T6的引脚示意图。3.4.2模块设计本次系统的搭建我选择使用STM32的PWM模式来输出PWM信号。由于要控制两个舵机同时转动方向,所以需要使用到两个控制器来输出4路PWM信号,这样才能方便的使用程序来控制舵机的升降大小和速度。图3-5为STM32主控制器实物图。图3-5STM32主控制器实物图3.5小结滚球控制系统的硬件主要构成的原理图如图3-6所示。图3-6滚球控制系统原理图滚球控制系统的硬件主要是由使用陀螺仪模块对平板的角度进行实时测量计算,并控制每次任务结束后平板所处的位置都是水平状态。当球放在平板上的时候,OpenMV会对小球的位置进行坐标转换并将转换后的小球坐标信息传送给STM32单片机,单片机通过发送PWM信号保证平板倾斜到相应的位置使小球滚动到任务要求的位置。矩阵键盘可以选择所需要的任务模式来完成所对应的任务,其中的数据会通过液晶屏显示出来。

第四章系统软件设计与实现4.1滚球控制系统的程序构架小球位置和圆形的检测是控制滚球系统的基础。在图像处理以及模式识别中,经常需要获取图片中圆和矩形的信息,将采集到的图片首先进行灰度化处理,再进行边缘检测、转化为二值图像等操作然后将小球的位置发送给STM32,由STM32将小球将要到达的位置进行路径规划,最后进行小球的PID运算,将运算好的数据通过PWM信号的方式传输给数字舵机,具体流程如图4-1所示。图4-1滚球控制系统软件流程图4.2PID算法程序4.2.1理论分析在STM32中,由于PID算法是通过离散运算实现的,因此被称为数字PID。本文介绍了一种基于数字PID的PID控制方法,并对其进行了实验研究。该系统以定位PID控制为主。常规模拟PID控制的控制规律描述如式(4-1)[15]:uk=kP⋅其中Kp,Ki,Kd都为常数,k为采样周期的序号,e(k)为期望值与被控对象实际输出值的差(也就是PID控制算法的输入)[16]。从式4-1中可以看出比例项是对偏差的线性放大,可以快速调节系统偏差,积分项可以累积系统偏差,主要用于消除系统静态误差,微分项用于计算系统偏差的变化率,具有预测作用可以使系统响应更为平滑。从图3-2中可以看出,平台的倾斜角度是由X轴、Y轴方向的两个舵机控制。因此程序中应该有X、Y两个方向的PID,分别控制X轴、Y轴两个舵机的输出。X轴PID函数的输入是小球在X轴方向上的偏差,输出是X轴舵机的PWM值;Y轴PID函数的输入是小球在Y轴方向上的偏差,输出是Y轴舵机的PWM值。最后是关于PID算法的系统静态误差。在滚球控制系统中系统静态误差主要表现为小球距离目标位置永远有一定的偏差。通过受力分析可以知道小球在平板上会受到摩擦力影响的,也就是说在不使用积分项的情况下,即使平板是倾斜的,小球依旧可能是处于相对静止的状态,一旦小球处于静止状态,那么小球就一直到不了目标位置[17]。但实际上在滚球控制系统中小球收到的摩擦力是很小的,只需要稍微加大一定Kp项的数值,那么系统静态误差就可以忽略不计了。但在调试滚球控制系统的时候遇到系统静态误差的情况是很少的,更多情况下是由于Kp项数值过大导致系统震荡。因此本系统在调试时是先调Kp项,再调Kd项,最后调试Ki项。4.2.2串级PID控制由于串级PID可以增大系统的控制力,提高系统的稳定性,所以,在实际应用中,串级PID是比较适合的。串级PID控制流程如图4-2所示。采用了位置-速度PID控制模型,其中速度环为内环,位置环为外环[18]。由于摄像头与平台始终保持正对,因此图像坐标系与平台的坐标系可以视为一致,小球在图像中的位置可以直接认为是小球在平台中的实际位置。一定时间内,小球的运动距离s与运动时间t之比为小球在该时间段内的平均速度v,其中通过定时器控制t为150ms,由于时间较短因此可以近似认为小球在t时间段内为匀速直线运动。积分分离是指当小球的实际位置与设定位置距离较近时,积分项才开始累加,一旦小球的实际位置与设定位置距离较远,积分项将清零。积分过饱和处理是指限定积分项的累加和,防止累加和过大。这两项处理很好的解决了积分项容易失控的问题[19]。图4-2串级PID控制流程框图4.3OpenMV代码4.3.1理论分析OpenMV自带一个Micropython解释器和cv库,调用OpenCV里面的blob色块模块,追踪终点的颜色,通过这种方式实现对于色块的识别,实现方法为:首先对分类区色块进行拍照取样,随后在OpenMV软件中通过阈值编辑器改变颜色的阈值来进行色块追踪,将颜色加入函数中再调用OpenCV库,框出镜头画面中满足颜色阈值的色块,将信息转化为数值的形式发送给主控,主控根据信息决定运动轨迹[20]。OpenMV寻找小球坐标可以使用寻找色块和寻找最大圆的方法来锁定小球的位置。先调节OpenMV颜色阈值来确保其识别的小球不会出错,调整后最理想的阈值图如图4-3所示。4.3.2模块设计OpenMV采用Python语言编写软件,程序设计主要分为2个模块,对图像采集模块输出的数据进行处理,PID算法控制云台舵机的速度、方向[5]。图4-4为OpenMV系统设计流程图。图4-3OpenMV颜色阈值图图4-4OpenMV系统设计流程图4.4STM32控制代码STM32先对液晶屏、按键、舵机进行初始化,然后通过按键的不同进行不同的任务流程。因为从OpenMV接收到的数据都是字符串类型的并不能直接进行运算所以如果想从中读取STM32所需要的小球坐标信息,就需要使用串口函数将字符串型信息转换为数值型信息。之后通过PID算法计算出所需要输出的PWM信号,然后信号传输给舵机,让小球向指定方向运行。随后通过OpenMV传输过来的小球坐标不断修正PWM信号,最终确保小球可以完成指定的任务。其具体流程图如图4-5所示。图4-5任务选择与实现224.6小结本系统的软件主要设计为先设计一个小球将要移动到的位置终点,然后通过OpenMV来检测平板上是否有小球,如果有则确定小球的坐标,并把坐标通过串口传输给STM32.由STM32来对小球的运行路径做制作路径规划,然后通过小球的PID算法来输出合适的PWM信号,将PWM信号传输给舵机控制舵机输出,最终使小球按照规划好的路径移动到最初设计的终点位置。第五章系统测试5.1系统组装5.1.1舵机组装先使用舵机固定架将舵机垂直固定在平板上。使用三个丝杆,若干螺丝和螺帽,25T金属舵机摆臂两个连杆头若干。使用螺帽和螺丝将支撑杆固定在舵机摆臂上,上层使用胶水进行固定,确保平板不会因为粘贴不牢固导致左右摇晃影响系统精准度。舵机摆臂组装后的效果图如图5-1所示。图5-1舵机固定架5.1.2支撑组装主支撑柱是由一根长螺丝和一个螺丝底座为基础保证基底稳定不会发生偏移和倒塌现象,上层则是使用万向轴作为支撑,使用胶水黏合。万向轴可以保证平板倾斜时丝滑不卡顿,不会由于摩擦力过大导致平板无法进行一些细微的操作而导致小球无法落到设定好的位置上。图5-2为支撑杆底座固定实物图,图5-3为支撑杆与平板连接效果图。图5-2支撑杆与底座固定图图5-3支撑杆连接平板实物图系统支撑搭建好之后,由舵机、主控制器、平板组成的整个滚球控制系统的主体控制设备就基本搭建完成了,将小球放在平板上确保小球可以静止在平板上。该系统的主体部分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论