基于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

提交評論