張鶴嚴 邵天洋



摘 ? 要:板球系統是一個比較復雜的,具有非線性的不穩定系統,它既可以作為實驗模型也具有其復雜性并與諸多控制類系統具有共通性,所以實現其穩定性的控制,是一項重要的課題。本文以平板上運動的小球作為被控對象,攝像頭將采集到小球的位置圖像,反饋給STM32系列單片機,來控制動作電機以對小球進行軌跡規劃、定位控制等,從而探尋和驗證機器人穩定移動的方法。從簡單的電機穩定控制,到變積分PID調節,實現了電機的速度內環和位置外環的雙閉環控制,最后對圖像數據進行了優化處理。建立了一個控制機器人平衡的模型,給機器人研究工作者提供了新的平衡控制和優化數據的方法。
關鍵詞:PID調節 ?板球控制系統 ?圖傳數據優化 ?STM32系列單片機
中圖分類號:TP273+.4 ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1674-098X(2020)06(a)-0152-03
Abstract: The cricket system is a complex, nonlinear and unstable system. It can be used as an experimental model, but also has its complexity and is in common with many control systems. Therefore, it is an important task to control its stability. In this project, a small ball moving on the plate is taken as the controlled object. By collecting the position image of the ball from the camera and feeding it back to the STM32 series SCM, the motor is controlled to conduct trajectory planning and positioning control for the ball, so as to explore and verify the method of stable movement of the robot. From the simple motor stability control to the variable integral PID regulation, the motor speed inner loop and the position of the outer loop of the double closed-loop control, finally the image data optimization processing. A balance control model is established, which provides a new method of balance control and data optimization for robot researchers.
Key Words: PID regulation; Cricket control system; Optimization of graph transmission data; STM32 series SCM
目前,機器人被廣泛應用于汽車、飛機、輪船、手機、家電、等方面。在操作方面,機器人從根本上講是處于不穩定狀態的,很難將其進行穩定控制,所以在實際應用中存在諸多的問題,而控制系統的穩定性則是其中一個至關重要的話題。
現如今板球控制系統的濾波和PID算法兩方面相關的技術已經接近成熟,很再難有所突破,但板球控制系統的處理速度和穩定性的確還有待優化和提升,所以我們決定在前人的基礎上尋求突破,通過在攝像頭圖像處理和傳回的幀數組上進行創新,以小范圍預期掃描、縮小成像規模,來優化程序復雜而引起的處理速度緩慢、反應遲鈍等問題,從提高運作效率方面切入作為突破的契機。
1 ?系統方案
本系統主要由機械模塊、芯片控制模塊、攝像頭圖傳模塊、動作模塊、電源模塊組成,下面分別論證這幾個模塊的選擇。
1.1 處理芯片的論證與選擇
方案一:STC51系列單片機是在現應用較為廣泛的單片機中價格較為低廉的一種:其內部集成專用復位電路,2路PWM,針對電機控制,強干擾場合,但是此芯片的晶振頻率較低,而且性能很差,當傳輸數據量較大時速度難以滿足運算要求,并且無法承擔復雜的運算以及圖像顯示。該系列其功能單一,片內資源匱乏,且需要仿真器來實現軟硬件調試,較為煩瑣。
方案二:STM32F103系列單片機是在STM32系列單片機中價格最低的芯片,此芯片為ARM 32位的Cortex-M3,具有最高72MHz工作頻率,可進行單周期乘法和硬件除法,較STC51系列單片機相比性能優越,且IO口及片內硬件資源豐富,可輕松進行大量的運算。但對于攝像頭等高速器件處理能力仍然較差,如果加入一些復雜的算法后如:霍夫曼圓算法等,處理器的處理速度會達不到預期效果而出現傳回圖像卡成PPT的現象,難以應付大量的復雜運算。
方案三:STM32F429系列單片機是在STM32系列單片機中價格較高的芯片,此系列芯片較F1系列芯片相比,內核為Cortex-M4,具有最高180MHz工作頻率,并且主頻帶DSP,不少的集成外設被加強,而且存儲器的Flash和SRAM加大了很多,相對來講此類芯片性價比更高。
綜上所述本系統芯片選擇為方案三。
1.2 機械結構與硬件選擇
1.2.1 機械結構
板球控制系統的機械結構具有2個自由度,平板中心為支撐點下方與底板上的支撐桿相連,在相鄰兩側中心點的下方分別與底板上的動作電機機臂相連,在轉動過程中,因支撐桿對平板的力矩沿板邊方向,所以當兩個動作電機工作時,產生的力矩互相垂直,由此可減少兩向力之間的相互干擾,降低了系統控制時的耦合度。實體結構如下圖1所示。
1.2.2 攝像頭圖傳模塊:OV2640
OV2640是OmniVision公司生產的1/4寸的CMOS UXGA(1632×1232)圖像傳感器;擁有200萬像素和較大的可視區域,支持自動曝光控制、自動增益控制、自動白平衡、自動消除燈光條紋等自動控制功能。UXGA最高15幀/s,SVGA可達30幀,CIF可達60幀;并且支持DCMI傳輸和SCCB通信協議,是在諸多圖傳模塊中性價比較高的一款攝像頭。
1.2.3 動作模塊:MG995數字舵機
在諸多電機中,在考慮成本的基礎上可作為動作模塊的電機大致可分為兩種:舵機和步進電機。但由于步進電機的運動速度取決于細分并且可能存在丟步現象,因此其穩定性和響應速度都不及舵機,而舵機中SG90系列舵機(小藍舵機)與數字舵機相比,雖價格低廉,但其穩定性和扭矩都較低因此滿足不了控制系統的要求,所以我們選擇了GM995數字舵機。
1.2.4 電源模塊:航模電池連接可調式穩壓模塊
由于動作模塊我們選擇的是舵機,所以我們的電源模塊需要滿足舵機4.8~7.2V的工作電壓,主控芯片上的電壓雖然可以滿足舵機的運行電壓,但是板載電源并不能支持舵機運轉,所以只能用外接大電流的航模電池連接穩壓模塊對舵機進行供電。
2 ?板球的控制系統
如框圖2所示,該系統由數據獲取裝置、控制器、執行器、球和平板組成。
具體的工作方式為:小球在板上運動,攝像頭將實時捕捉到的小球位置傳給單片機,單片機經過數據處理后,會解算出相應的預期脈沖(占空比),以此來控制舵機轉角,從而改變小球在板上的位置。
2.1 PID的控制算法
2.1.1 概念與選擇
PID總結來講就是對系統預期值所產生的偏差進行補償的一種控制過程。
其控制公式為:
其中P為偏差比例,I為偏差積分,D為偏差微分。大致有位置型、增量型、積分分離型、抗積分飽和性、梯形積分型和變積分型幾種類型。
在本次實驗中我們應用的是變積分型PID,在普通的PID(如位置型)中積分常數ki是不變的,這就導致在系統的積分值偏差較大或較小時,積分常數會成為系統反應速度滯后的影響因素,而變積分的基本思想就是改變積分項的累加速度:偏差越大積分越小、偏差越小積分越大。因此變積分型PID具有較高的系統穩定性,符合本系統的核心要求。
2.1.2 算法的設計與實現
系統采用速度內環、位置外環的雙閉環控制模式(模式如圖3所示)。在板球系統運行過程中,位于上方的攝像頭模塊將實時撲捉到的小球位置反饋到單片機中,單片機會及時計算出預期位置,與攝像頭傳回的坐標進行比較得出位置差,作為位置外環,而通過位置差則可以計算出內環所需的速度差,進而做到PID雙閉環控制,從而調整所輸出的PWM脈沖,以彌補誤差、增強系統穩定性。
3 ?圖像的獲取與處理
圖像在獲取的過程中,由于外界環境的干擾以及攝像頭本身質量的原因,會造成獲取后的圖片模糊、部分缺損等。因此我們要對獲取后的圖像進行灰度處理、濾波、校正等處理。
3.1 灰度處理及二值化
由于攝像頭輸出的是24位真彩色圖像,而為了對圖像進行二值化,因此要先對圖像進行灰度處理,即RGB色彩分量不等的將彩色圖像轉換為RGB色彩分量全部相等的灰度圖像。我們通過平均值法,將彩色圖像中的三分量亮度求平均值得到灰度值,公式如下:
Gray(i,j)=(R(i,j)+G(i,j)+B(i,j))/3
接下來為便是將灰度圖像進行二值化,我們采用的是迭代閾值分割算法,步驟如下:
(1)設定一個閾值參數a。
(2)求出圖象的最大灰度值和最小灰度值,分別記為Graymax和GrayPmin,令初始閾值T=(Graymax+GrayPmin)/2。
(3)根據閾值T將圖象分割為兩部分,分別求出兩部分的平均灰度值Gray1和Gray2。
(4)求出新閾值T=( Gray1+Gray2)/2。