沈浩宇,江先志,馮濤
(1.浙江理工大學(xué)機械與自動控制學(xué)院,浙江杭州 310000;2.深圳海關(guān)工業(yè)品檢測技術(shù)中心,廣東深圳 518000)
二輪平衡車是一種特殊的輪式機器人,它是一個融合了動力學(xué)、自動控制理論、電子技術(shù)、電機技術(shù)的綜合性研究課題。它利用車體內(nèi)部的陀螺儀和加速度傳感器檢測車體姿態(tài)的變化,并利用伺服控制系統(tǒng)精確地驅(qū)動電機進行相應(yīng)的調(diào)整,以保持系統(tǒng)平衡。二輪平衡車本質(zhì)上是一個可移動的倒立擺系統(tǒng),具有多變量、強耦合性、非線性、動態(tài)不穩(wěn)定的特點。
目前二輪平衡車采用的控制算法有PID控制、模糊控制、滑模控制、預(yù)測控制、H控制、LQR控制等。文中采用神經(jīng)元PID控制算法控制二輪平衡車,以測試神經(jīng)元PID控制的效果。PID控制是迄今為止在過程控制中應(yīng)用最廣泛的控制方法。但是在實際應(yīng)用中,經(jīng)典PID控制器的控制參數(shù)為人工整定后固定不變,要想將其調(diào)節(jié)到較為理想的狀態(tài),整定過程費時費力。實際被控對象往往具有非線性、時變不確定性,難以建立精確的數(shù)學(xué)模型,常規(guī)的PID控制器不能達到理想的控制效果。
近年來,神經(jīng)網(wǎng)絡(luò)算法迅速發(fā)展,引起了人們越來越多的興趣和普遍重視。由于BP神經(jīng)網(wǎng)絡(luò)能夠通過神經(jīng)元反饋進行學(xué)習(xí),不斷調(diào)整各層神經(jīng)元之間的連接權(quán)重,適應(yīng)被控系統(tǒng)的不確定性和非線性 ,由神經(jīng)元構(gòu)成的控制器具有更好的靈活性和適應(yīng)性。
二輪平衡車三維模型如圖1(a)所示,二輪平衡車簡圖如圖1(b)所示。在圖1(b)中,跟隨車身的動坐標(biāo)系原點建立在車軸的中心處,軸正方向為二輪平衡車的前進方向,軸與重力方向的反方向重合,輪子繞軸轉(zhuǎn)動。為二輪平衡車?yán)@軸旋轉(zhuǎn)的角度,為二輪平衡車的傾角,和分別為二輪平衡車左輪和右輪的輸入轉(zhuǎn)矩。
圖1 二輪平衡車三維模型及簡圖
二輪平衡車的重心位于車輪輪軸上方的點,由于點位于車體上部,在無外力的作用下,車體將會發(fā)生傾倒,故二輪平衡車屬于動態(tài)不穩(wěn)定系統(tǒng)。二輪平衡車的車輪采用共軸對置放置的方式,并且兩輪由2個電機相互獨立驅(qū)動。二輪平衡車通過調(diào)整前后運動的加速度來保持自身平衡,還具備通過控制左右車輪轉(zhuǎn)速差實現(xiàn)轉(zhuǎn)向的功能。
二輪平衡車需要被控制的變量有車體運行速度、傾斜角度和偏航角度,而控制輸入量只有作用于左右兩輪的電機輸出扭矩,所以二輪平衡車是一個典型的欠驅(qū)動系統(tǒng)。各個被控變量和控制輸入量之間的關(guān)系是非線性的,各個被控變量之間具有強耦合性。針對二輪平衡車欠驅(qū)動、多變量、強耦合、非線性等特性,采用神經(jīng)元PID控制器進行控制。神經(jīng)元PID控制器是一種自適應(yīng)智能控制器,能夠針對不同的工況自動整定PID參數(shù),具有自學(xué)習(xí)自適應(yīng)能力,使被控對象達到良好的控制效果。
在神經(jīng)網(wǎng)絡(luò)理論中,神經(jīng)元模型可模擬生物神經(jīng)元的3種基本功能。首先,根據(jù)不同的權(quán)重對所有輸入信號進行不同程度的加權(quán),然后將這些信號相加以獲得組合效果。最后,利用神經(jīng)元輸出函數(shù)進行信息輸出。神經(jīng)元PID控制器是采用人工神經(jīng)元建立的PID控制器模型,通過BP神經(jīng)網(wǎng)絡(luò)算法調(diào)整PID參數(shù)。神經(jīng)元網(wǎng)絡(luò)計算量小、運行速度快,且可自適應(yīng)調(diào)整權(quán)值。將它用在PID閉環(huán)控制中,形成單神經(jīng)元PID控制器。這樣PID參數(shù)整定過程就相當(dāng)于單神經(jīng)元網(wǎng)絡(luò)的權(quán)值調(diào)整過程。人工神經(jīng)元PID控制器的結(jié)構(gòu)如圖2所示,單神經(jīng)元控制原理如下:
圖2 神經(jīng)元PID控制算法原理
由圖2得到神經(jīng)元PID控制器的前向傳播過程:
(1)
=++
(2)
采用Sigmoid型函數(shù),對進行限幅輸出,使得輸出值限制在合理的范圍:
(3)
=()
(4)
誤差指標(biāo)為
(5)
BP算法采用的誤差反向傳播是按照誤差指標(biāo)函數(shù)()的負(fù)梯度方向不斷修正權(quán)值以達到神經(jīng)元的輸出逼近期望的目的。根據(jù)前向傳播過程,得:
(6)
控制器的目標(biāo)是讓實際當(dāng)前值與目標(biāo)值的誤差指標(biāo)最小。根據(jù)BP算法進行PID參數(shù)的更新,PID參數(shù)的迭代使得系統(tǒng)的誤差指標(biāo)盡可能小。迭代公式為(7),其中、、分別為比例增益、積分增益和微分增益的學(xué)習(xí)步長。
(7)
由式(5)得神經(jīng)元控制指標(biāo)對被控制量的偏導(dǎo)為
(8)
由式(3)得到限幅函數(shù)()對神經(jīng)元輸出量的偏導(dǎo)為
(9)
被控系統(tǒng)對控制信號的偏導(dǎo)可以設(shè)為
(10)
由式(2)得神經(jīng)元輸出量對比例增益、積分增益、微分增益的偏導(dǎo)為
(11)
將式(8)—(11)代入式(6),再根據(jù)式(7)得神經(jīng)元PID控制器的比例增益、積分增益和微分增益的迭代更新算法:
(12)
二輪平衡車的平衡是通過前后移動保持的。將平衡車偏離平衡位置的角度作為偏差,通過負(fù)反饋控制消除偏差。
在僅有比例控制的情況下,二輪平衡車處于平衡位置時,因為偏差為0,所以控制器輸出也為0。但是,車體繞車軸轉(zhuǎn)動時具有慣性,平衡車會往另一個方向倒去,如此反復(fù),平衡車會在平衡位置出現(xiàn)振蕩且無法停止。由于平衡車?yán)@輪軸的轉(zhuǎn)動慣量客觀存在,控制平衡車平衡不僅需要施加和傾角成正比的回復(fù)力,還需要和角速度方向相反的阻尼力進行疊加,才能達到控制平衡的效果。
平衡車的平衡控制需要快速性,故比例系數(shù)較大。當(dāng)比例系數(shù)較大時,系統(tǒng)幾乎不存在靜差。因為PID控制器中積分的作用是消除靜差,所以靜差對于直立控制的影響很小,自然就不需要積分。實際上,平衡車并不一定要完全處于機械中值,略微的偏移不會有太大影響。因此,對于準(zhǔn)確性要求不高的系統(tǒng)可以不引入積分控制,平衡車只需PD控制即可實現(xiàn)直立。因此,將平衡控制器設(shè)計為PD平衡控制器。
構(gòu)建PD平衡控制器,如圖3所示。
圖3 PD平衡控制器
為實現(xiàn)PD參數(shù)可調(diào),引入神經(jīng)元PD平衡控制器,如圖4所示。
圖4 神經(jīng)元PD平衡控制器
根據(jù)式(4),神經(jīng)元PD平衡控制器的前向傳播過程如下:
=(pp+dd)
(13)
由式(5),設(shè)置平衡控制器的誤差函數(shù)為
(14)
其中:代表目標(biāo)值;()代表傳感器的檢測值。
由式(6)—(11)可知神經(jīng)元PD平衡控制器的PD參數(shù)的更新過程如下:
(15)
因為平衡車的速度控制是在平衡車進行直立控制的前提下進行的,所以速度控制相比直立控制更加復(fù)雜。為保證直立控制的優(yōu)先級,把速度控制器放在直立控制器的前面,即速度控制調(diào)節(jié)的結(jié)果僅僅是改變平衡控制的目標(biāo)值。平衡車運行的加速度與平衡車傾角相關(guān)。若要提高平衡車向前行駛的速度,就需要平衡車向前傾斜,車輪在直立控制的作用下向前運動保持平衡車平衡。反之亦然,因此速度控制可以通過調(diào)節(jié)平衡控制的目標(biāo)值來實現(xiàn)。根據(jù)上述過程,將速度控制器與直立控制器進行串聯(lián)。將速度控制器的輸出作為直立控制的輸入,將直立控制的輸出作為系統(tǒng)輸出。設(shè)計出串聯(lián)的平衡車控制器,如圖5所示,這其實就是一個串級速度控制系統(tǒng)。
圖5 串級PI速度控制
測量的機械中值與實際值存在誤差,若只有平衡控制器,平衡車會一直前進或后退來維持有誤差的測量中值,此時,速度控制器的輸出將修正平衡控制器的目標(biāo)值。當(dāng)平衡車一直前進或后退,速度與目標(biāo)速度之間存在靜差。PI控制器具有消除靜差的特點,使得平衡車可以穩(wěn)定在原點,故速度控制器選用PI控制器。
為了實現(xiàn)速度控制器的PI參數(shù)可調(diào)節(jié),速度控制器采用神經(jīng)元PI控制器,如圖6所示。
圖6 串級神經(jīng)元PI速度控制
神經(jīng)元平衡控制器的前向傳播算法公式:
=p(p-)+dd
(16)
=(pp+ii)
(17)
將式(17)代入式(16)得到:
=p[p-(pp+ii)]+dd
(18)
由式(5),設(shè)置神經(jīng)元速度控制器的誤差函數(shù)為
(19)
由式(6)—(11)可知PI參數(shù)的更新過程如下
(20)
由于平衡車對轉(zhuǎn)向控制的響應(yīng)要求不高,故轉(zhuǎn)向控制器為簡單的PD控制器。若設(shè)軸目標(biāo)角度為0,則平衡車沿一條直線行走。
根據(jù)式(1)得到轉(zhuǎn)向控制器的算法:
(21)
=pp+dd
(22)
二輪平衡車由左右輪的差速來控制方向,故將轉(zhuǎn)向控制器的輸出值作為速度控制器輸出值的調(diào)整值,分別輸出給左右輪的電機驅(qū)動
(23)
將轉(zhuǎn)向控制器與串級速度控制器串聯(lián),構(gòu)建了二輪平衡車的神經(jīng)元PID控制系統(tǒng),如圖7所示。
圖7 二輪平衡車神經(jīng)元PID控制系統(tǒng)
在Simulink環(huán)境中通過組裝Simscape提供的基本部件或運用基于Simscape基本組件創(chuàng)建新組件,可以快速創(chuàng)建電機、橋梁、整流器、液壓執(zhí)行器和制冷器等物理系統(tǒng)。Simscape的基本組件可以使用MATLAB變量和表達式參數(shù)化模型。Simscape可幫助開發(fā)控制系統(tǒng)并測試控制系統(tǒng)的性能。
如圖8所示,Simscape中的Multibody主要包含帶和纜繩、形狀元素、約束限制、曲線和曲面、力和扭矩、坐標(biāo)轉(zhuǎn)換、齒輪和配合、運動關(guān)節(jié)、機械配置九大基本組件集合。Multibody為機器人、車輛懸架、建筑設(shè)備和飛機起落架等3D機械系統(tǒng)提供仿真基本組件,可以表示身體、關(guān)節(jié)、約束、力和傳感器的基本組件,以對系統(tǒng)進行建模。Simscape可以將完整的CAD組件(包括質(zhì)量、慣性、接頭、約束和3D幾何形狀)導(dǎo)入模型,為整個機械系統(tǒng)制定和解決運動方程,仿真運行時自動生成3D動畫來實現(xiàn)系統(tǒng)動態(tài)可視化。
圖8 Multibody集合
根據(jù)實物在SolidWorks中構(gòu)建出車體零件,并進行裝配。將構(gòu)建的各個零件轉(zhuǎn)換為STEP格式,導(dǎo)入形狀元素組件集的文件實體組件中。二輪平衡車主要包含的零部件如表2所示。編寫M文件,將零部件的顏色、質(zhì)量等參數(shù)合存儲為工作區(qū)變量,可以在仿真的實體組件中引用變量作為零件的屬性參數(shù)。
表2 DWC機器人零件
如圖9所示,設(shè)置重力環(huán)境、世界坐標(biāo)系、仿真求解器組件,三者缺一不可。世界坐標(biāo)系原點為車軸的中心,通過設(shè)置坐標(biāo)變換組件將地面放置在合適的位置,地面與車輪之間連接有接觸應(yīng)力組件;通過滑動關(guān)節(jié)組件與平面關(guān)節(jié)組件連接,首先保證左右車輪具有固定的相對位置,其次平面關(guān)節(jié)保證車輪具有前后、左右2個自由度,滑動關(guān)節(jié)保證二輪平衡車沿受重力落在地面上,在車輪與地面之間接觸形成壓力。如圖10所示,以右輪為例,將轉(zhuǎn)動關(guān)節(jié)組件安置在合適的位置,將車輪進行坐標(biāo)轉(zhuǎn)換與轉(zhuǎn)動關(guān)節(jié)組件連接。轉(zhuǎn)動關(guān)節(jié)組件接收轉(zhuǎn)矩的輸入與轉(zhuǎn)動關(guān)節(jié)的角速度輸出,并保證輪子的旋轉(zhuǎn)自由度;如圖11所示,車輪軸線與車體之間由轉(zhuǎn)動關(guān)節(jié)組件連接,該轉(zhuǎn)動關(guān)節(jié)接收扭矩的輸入和角度輸出。車體分為左右電機、電機架、電路主板、主體連接板、上蓋板、銅柱等。
圖9 二輪平衡車系統(tǒng)
圖10 右輪模型
圖11 傾角關(guān)節(jié)
運用Simulink搭建仿真控制系統(tǒng),如圖12所示,圖右邊部分為二輪平衡車的控制系統(tǒng)。根據(jù)圖5所示的控制系統(tǒng)結(jié)構(gòu),搭建仿真模型,通過左邊的仿真模型采集模型的傾角信息、轉(zhuǎn)向角信息、輪速信息并進行單位轉(zhuǎn)換。
圖12 Simulink仿真系統(tǒng)
S-Function全稱System-Function,S-Function能夠與Sinulink引擎交互,它極大地拓展了Simulink的功能。S-Function可以容納連續(xù)、離散和混合系統(tǒng),在S-Function中編寫算法,并添加到Simulink模型中。S-Function通過遵循一組簡單的規(guī)則,定義了在初始化、更新、求導(dǎo)、輸出和終止環(huán)節(jié)如何工作。在每一個環(huán)節(jié)中,Simulink的引擎都會調(diào)用一個方法完成特定的任務(wù)。
神經(jīng)元平衡控制器和神經(jīng)元速度控制器由MATLAB中的S-Function組件編寫??刂葡到y(tǒng)為離散系統(tǒng),每0.01 s進行一次信號采樣和輸出。仿真啟動之后,首先進行狀態(tài)變量的初始化,控制系統(tǒng)在每0.01 s的時間中接收仿真系統(tǒng)的傳感器信息,采用BP神經(jīng)網(wǎng)絡(luò)算法完成控制系統(tǒng)狀態(tài)變量的更新和控制量的輸出。為方便調(diào)節(jié)參數(shù),使用示波器模塊完成數(shù)據(jù)的采集和監(jiān)視。
BP神經(jīng)網(wǎng)絡(luò)算法的學(xué)習(xí)率對算法的效果起著至關(guān)重要的作用。BP神經(jīng)網(wǎng)絡(luò)算法采用梯度下降的搜索算法,這些算法會先初始化一個解,在這個解的基礎(chǔ)上,確定一個搜索方向和一個移動步長,使初解根據(jù)這個方向和步長移動后,能使被控系統(tǒng)的誤差下降。然后更新出新的解,再繼續(xù)搜尋下一步的移動方向的步長,這樣不斷迭代下去,被控系統(tǒng)的誤差不斷下降,最終能找到一個解,使得誤差盡可能地小。在尋求最優(yōu)解的過程中,步長太大,就會搜索得不仔細,可能跨過更加合適的解;步長太小,又會使得尋解的過程進行得太慢。因此,步長設(shè)置適當(dāng)非常重要。
對比PID控制器、神經(jīng)元PID控制器在二輪平衡車上的控制效果,控制內(nèi)容包括平衡控制和速度控制。分別在空載和負(fù)載下進行實驗,其中負(fù)載時,物塊的質(zhì)量為100 g。圖13所示為仿真系統(tǒng)呈現(xiàn)的二輪平衡車的三維可視化仿真結(jié)果。
圖13 Simcape的三維可視化仿真結(jié)果
平衡車的平衡性能主要指它站立時,波動范圍越小,表明平衡車平衡控制性能越好。同時二輪平衡車輪子的速度變化范圍越小,說明二輪平衡車偏離原點的范圍越小,即平衡車的速度控制性能越好。
圖14所示為空載下神經(jīng)元PD平衡控制器與傳統(tǒng)PD平衡控制器控制平衡車傾角變化過程??芍荷窠?jīng)元PD平衡控制器的傾角在2 s之前波動幅度大于PD控制器,但是隨著神經(jīng)元更新PD參數(shù)至收斂值,二輪平衡車的傾角幾乎穩(wěn)定在目標(biāo)值0;PD平衡控制器的傾角變化幅度始終在-0.5°~0.5°之間,幾乎無變化。此時神經(jīng)元PD平衡控制器的值和值學(xué)習(xí)過程如圖15所示,學(xué)習(xí)率分別為0.001和0.2。值收斂在0.365,值收斂在0.781。
圖14 空載下2種控制器傾角變化過程 圖15 神經(jīng)元平衡控制器PD參數(shù)迭代
圖16所示為神經(jīng)元PI速度控制器與PI速度控制器控制二輪平衡車速度變化過程??芍荷窠?jīng)元PI速度控制器控制的二輪平衡車速度在剛開始時有大幅度的波動,但是速度的波動幅度始終小于PI控制器,且在大約1.2 s之后,速度變化幾乎接近于目標(biāo)值0;PI控制器控制的輪速始終在-2.5~ 2.5°/s的范圍內(nèi)高頻波動。設(shè)置神經(jīng)元PI速度控制器中、參數(shù)的學(xué)習(xí)率分別為0.000 2和0.000 000 1,如圖17所示,、的最終收斂值分別為0.011 1和0.000 001 43。
圖16 空載下2種控制器速度變化過程 圖17 神經(jīng)元速度控制器PI參數(shù)迭代
在二輪平衡車上部施加0.1 N垂直向下的力來代表物塊。對比神經(jīng)元PID與傳統(tǒng)PID控制的抗干擾能力。二輪平衡車越能夠快速地回到穩(wěn)定狀態(tài),且傾角和速度產(chǎn)生波動的范圍越小,波動曲線越平緩,控制器的抗干擾性能越好。
圖18所示為負(fù)載下神經(jīng)元PD平衡控制器與傳統(tǒng)PD平衡控制器控制平衡車的傾角變化過程??芍荷窠?jīng)元PD平衡控制器控制的傾角的波動范圍為-2°~2°,而PD平衡控制器的傾角波動范圍為-4.5°~4.5°,且波動頻率高于神經(jīng)元PD平衡控制器。神經(jīng)元PD平衡控制器的抗干擾性能優(yōu)于PD平衡控制器,但是在干擾結(jié)束后,收斂速度慢于PD平衡控制器。此時神經(jīng)元PD控制器的值和值的學(xué)習(xí)過程如圖19所示,學(xué)習(xí)率不變。值收斂在0.553,值終值在1.12,根據(jù)趨勢,隨著仿真時間的增加,也必然收斂。
圖18 負(fù)載下2種控制器傾角變化過程 圖19 負(fù)載下神經(jīng)元平衡控制器PD參數(shù)迭代
圖20所示為負(fù)載下神經(jīng)元PI速度控制器和PI速度控制器控制平衡車速度的變化過程 ,神經(jīng)元PI速度控制器控制的速度波動范圍為0~16°/s,速度波形較為平緩,而PI速度控制器控制的速度波動范圍為-17.5~27.5°/s,且波動頻率遠高于神經(jīng)元PI控制器。二輪平衡車在神經(jīng)元PI速度控制器的控制下可迅速地到達目標(biāo)速度值0。此時神經(jīng)元PI速度控制器的值和值學(xué)習(xí)過程如圖21所示,學(xué)習(xí)率不變??芍褐凳諗吭?.218,值收斂在0.002 07。
圖20 有干擾速度變化過程 圖21 神經(jīng)元速度控制器PI參數(shù)迭代
本文作者運用MATLAB-Simulink-Simscape-Multibody快速搭建二輪平衡車的三維仿真模型,并使用Simulink搭建控制系統(tǒng)。在S-Function組件中編寫神經(jīng)元PID控制算法來實現(xiàn)傾角控制器、速度控制器和轉(zhuǎn)向控制器,并組合成二輪平衡車的控制器,進行二輪平衡車的平衡控制、速度控制和方向控制。通過空載和負(fù)載2個控制性能實驗,驗證了神經(jīng)元PID控制器相比傳統(tǒng)的PID控制器具有更高的控制精度、更強的抗干擾能力、更快的響應(yīng)速度、更能適應(yīng)模型的非線性變化。相對于傳統(tǒng)PID控制器,采用神經(jīng)元PID控制器的二輪平衡車在平衡控制和速度控制上都有具有更好的性能。