陳 波,傅 攀,陸 軍
(西南交通大學 機械工程學院,四川 成都 610031)
兩輪自平衡車源于倒立擺,具有駕駛方式新穎、小型化、機動靈活、無污染等特點[1];同時,由于其具有非線性、強耦合性以及本質不穩(wěn)定性[2],對其進行控制也成為檢驗算法的很好途徑。PID神經網絡[3]是三層前饋動態(tài)網絡,具有非線性,可用于動態(tài)系統(tǒng)辨識與控制。訓練好的PID神經網絡可以作為兩輪小車的模型,在與平衡小車相同激勵的觸發(fā)下,其輸出近似小車的實際輸出,以其輸出為依據,我們可以快速訓練NNC(神經網絡控制)部分的網絡,提高神經網絡控制的實時性。因此,本文采用了PID神經網絡進行系統(tǒng)辨識,并在NNC部分對傳統(tǒng)的控制器參數進行優(yōu)化,以改善小車的平衡性能。
基于AVR的兩輪小車的結構和原理如圖1所示。它主要由車架、電機、編碼器、陀螺儀加速度計、驅動器和控制器組成。
圖1 基于AVR單片機的兩輪小車結構和原理
本文所用編碼器為自制車輪轉向、轉速檢測模塊,碼盤固定于電機軸上,以切割紅外對管發(fā)出的紅外光,產生高低電平,進而對車輪信息編碼。每個車輪的狀態(tài)由兩個紅外對管進行檢測,一路作為中斷信號傳遞給ATmega16單片機,用于觸發(fā)中斷、計數和計算車輪轉速;中斷觸發(fā)時,另一路信號所具有的電平狀態(tài)作為判別轉向的依據。
本文采用的小車姿態(tài)信息檢測模塊是陀螺儀加速度計一體的MPU6050,自帶運算處理模塊,其輸出即為同一時刻的陀螺儀測量值(角速度)和加速度計測量值(角度),避免了分別用陀螺儀和加速度計單獨測量后再進行融合帶來的時差問題,使用方便。
該兩輪小車控制器以 ATmega16[4,5]為基礎,主要用于接收編碼器和陀螺儀加速度計檢測到的小車姿態(tài)信息,然后進行運算并將控制信號傳遞給電機驅動器,以控制電機運轉,使小車維持基本的平衡。
系統(tǒng)辨識網絡NNI結構圖見圖2,它是將PID控制規(guī)律融入神經網絡構成的,其隱層節(jié)點分別為比例(P)、積分(I)、微分(D)單元,采用BP學習算法。
隱層的比例、積分、微分節(jié)點的激活函數q1,q2,q3分別為:
其中:xi(k)和qi(k)(i=1,2,3)分別為各隱層節(jié)點的第k次輸入、輸出。輸出層節(jié)點采用線性神經元。
本文采用C語言[6]編寫神經網絡辨識程序,通過對上一時刻來自編碼器、陀螺儀加速度計的數據進行處理,獲得小車上一時刻的狀態(tài)信息,包括角度、角速度、位置、位置微分;通過對這4個狀態(tài)量的運算處理,獲得對下一時刻小車電機的控制信號,即小車系統(tǒng)的輸入;并通過對下一時刻來自編碼器、陀螺儀加速度計的數據進行處理,獲得小車下一時刻的狀態(tài)信息,即小車系統(tǒng)的輸出。用獲得的“輸入/輸出”數據對系統(tǒng)辨識部分的PID神經網絡進行訓練,獲得平衡小車的近似模型NNI。
(1)經t步訓練后,隱層至輸出層權值調整算法為:
(2)經t步訓練后,輸入層至隱層權值調整算法為:
其中:1wij(t)(j=1,2;i=1,2,3)為經t次訓練后輸入層節(jié)點j與隱層節(jié)點i的連接權值;2wi(t)為經t次訓練后隱層節(jié)點i與輸出層節(jié)點的連接權值;uj為輸入層節(jié)點j的輸入;xi(k)和qi(k)為隱層節(jié)點i的第k個輸入和輸出;x′(k)和y1(k)為輸出層節(jié)點的第k個輸入和輸出;η1和η2均為步長;e1(t)為經t次訓練后小車實際輸出y與辨識網絡NNI輸出y1的偏差。
由于AVR中的控制器有4個輸入量、1個輸出量,本文神經網絡控制(NNC)程序采用如圖3所示結構。輸出層的神經元為自適應線性神經元。
圖2 NNI結構圖
圖3 NNC結構
網絡權值調整算法如下:
其中:E(t)為目標函數;wl(t)(l=1,2,3,4)為經t次訓練后,輸入層第l個神經元與輸出層神經元的連接權值;η為步長;e(t)為經t次訓練后期望輸出r與網絡實際輸出y的偏差;al為輸入層節(jié)點l的輸入。
本文中兩輪小車的控制原理見圖4,在基于AVR的兩輪小車的基礎上,利用PID神經網絡對兩輪小車的模型NNI進行辨識,以兩輪小車某時刻的輸入和輸出作為辨識神經網絡(PID神經網絡)的兩個輸入,將網絡的輸出y1與小車實際輸出y進行比較,如果兩者的偏差e1超過設定值,則通過BP算法對網絡權值進行調整,直到e1符合要求。當e1符合要求后,系統(tǒng)以NNI的輸出y1為小車實際輸出,通過與期望輸出r進行比較,得出偏差e2,然后通過BP算法在內部不斷調整控制器網絡NNC,直到偏差e2滿足預設條件。當e2符合要求后,對應的控制器參數就是得到優(yōu)化后的參數,將其傳遞給AVR中的控制器變量,用以優(yōu)化小車的平衡性能。程序一直循環(huán)下去,實時控制小車的運行狀態(tài)。
圖4 基于PID神經網絡的兩輪小車原理圖
圖4中,e為期望輸出與網絡實際輸出的偏差,u為控制器產生的控制信號,y1為在控制信號u和小車實際輸出y的作用下辨識網絡NNI的輸出,e1為小車實際輸出y與y1的偏差,e2為期望輸出r與y1的偏差。
基于PID神經網絡的兩輪自平衡小車程序流程見圖5。
圖5 基于PID神經網絡的兩輪小車程序流程圖
兩輪小車直立時,角度輸出約為90°,若小車前傾,輸出角度會減?。环粗?,則會增大。
由于小車的“平衡效果”指的就是小車直立時其Z軸繞垂線的波動范圍,波動范圍越小,表明小車平衡性越好,所以,用小車直立時的角度輸出曲線來分析小車的平衡性。
單純的基于AVR的兩輪小車的輸出曲線見圖6,經過網絡優(yōu)化的兩輪小車的輸出曲線見圖7。
圖6 網絡優(yōu)化前角度曲線
圖7 網絡優(yōu)化后角度曲線
圖6、圖7顯示的角度是經過10倍放大得到的,經計算得知,未經網絡優(yōu)化的角度波動范圍約±2.1°,網絡優(yōu)化后的角度波動范圍約±1.4°,小車平衡性能提高了約33.3%,表明神經網絡對控制器參數起到了一定的優(yōu)化作用。
本文基于AVR的兩輪小車,運用神經網絡對兩輪小車的控制器參數進行了優(yōu)化,并最終改善了兩輪小車的平衡性能。這證明:神經網絡的確可以優(yōu)化兩輪小車的性能。
需要注意,用于波形顯示的角度數據是通過數據線以串口通信的形式傳遞給電腦串口調試助手進行顯示的,數據線會對小車的運動造成一定的干擾。
[1] 付勇杰.基于神經網絡的兩輪自平衡代步車的研究[D].太原:太原理工大學,2012:1-38.
[2] 陸軍.基于PID和LQR控制的兩輪自平衡小車研究[D].成都:西南交通大學,2012:1-43.
[3] 徐麗娜.神經網絡控制[M].北京:電子工業(yè)出版社,2009.
[4] 胡漢才.高檔AVR單片機原理及應用[M].北京:清華大學出版社,2008.
[5] 胡漢才.高檔AVR單片機原理及應用習題與實驗指導[M].北京:清華大學出版社,2008.
[6] 劉建清,孫保書,李鳳偉,等.輕松玩轉AVR單片機C語言[M].北京:北京航空航天大學出版社,2011.