自動(dòng)控制原理課程設(shè)計(jì)--雙輪自平衡智能車(chē)行走伺服控制算法_第1頁(yè)
已閱讀1頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  自動(dòng)控制原理課程設(shè)計(jì)</p><p><b>  學(xué)院: </b></p><p><b>  班級(jí):</b></p><p><b>  學(xué)號(hào):</b></p><p><b>  指導(dǎo)教師:</b></p><

2、p><b>  姓名:</b></p><p>  雙輪自平衡智能車(chē)行走伺服控制算法</p><p>  摘要:全國(guó)第八屆“飛思卡爾”智能汽車(chē)大賽已經(jīng)結(jié)束。光電組使用大賽提供的D車(chē)模,雙輪站立前進(jìn),相對(duì)于以前的四輪車(chē),雙輪車(chē)的控制復(fù)雜度大大增加。行走過(guò)程中會(huì)遇到各種干擾,經(jīng)過(guò)多次的實(shí)驗(yàn),已經(jīng)找到了一套能夠控制雙輪車(chē)的方法。雙輪機(jī)器人已經(jīng)廣泛用于城市作戰(zhàn),排爆,反

3、恐,消防以及空間消防等領(lǐng)域。實(shí)驗(yàn)使用單片機(jī)控制雙電機(jī)的轉(zhuǎn)速,達(dá)到了預(yù)期的效果。</p><p>  關(guān) 鍵 詞:自平衡;智能;控制算法</p><p>  Motion Servo Control Algorithm for Dual Wheel Intelligent Car</p><p>  Abstract: The 8th freescale cup na

4、tional Intelligent Car competition of has been end.The led team must used D car which has only 2tires.It is more difficult to control prefer to control A car which has 4tires.There is much interference on the track. A t

5、wo-wheeled robots have been widely used in urban warfare, eod, counter-terrorism, fire control and space fire control and other fields。We has searched a good ways to control it.We used MCU to control the speed of motors

6、and get our gates.</p><p>  Key Words: balance by self; intelligent; control algorithm</p><p><b>  一.引言</b></p><p>  雙輪自平衡車(chē)是智能汽車(chē)中一個(gè)重要的組成部分。由于其是兩輪站立,在很多場(chǎng)合有比四輪車(chē)更靈活,更方便控制的特

7、點(diǎn)。基于雙輪車(chē)的機(jī)器人已經(jīng)用于在城市作戰(zhàn),排爆,反恐,消防,空間探測(cè)等領(lǐng)域。</p><p>  雙輪自平衡車(chē)的控制過(guò)程與倒立擺相似。本次研究主要是對(duì)雙輪車(chē)直立的研究。由于車(chē)在前進(jìn)過(guò)程中還可能遇到彎道和路障,所以本文還對(duì)整個(gè)系統(tǒng)的穩(wěn)定性做了比較深入的研究。</p><p>  在理論證明正確的前提下,再次進(jìn)行仿真驗(yàn)證,仿真驗(yàn)證的結(jié)果與實(shí)驗(yàn)結(jié)果相符合。</p><p>

8、;<b>  二.系統(tǒng)模型的建立</b></p><p>  智能汽車(chē)競(jìng)賽使用的是D車(chē)模。D車(chē)模是雙電機(jī),雙輪的車(chē)模。單電機(jī)控制雙輪時(shí)可以滿足車(chē)身保持平衡和前進(jìn)的要求,而之所以使用雙電機(jī)是為了前進(jìn)過(guò)程中轉(zhuǎn)彎的需要。本文只討論跟直立和干擾有關(guān)的內(nèi)容,鑒于此,本文余下內(nèi)容默認(rèn)是單電機(jī)控制的車(chē)模。自平衡車(chē)在沒(méi)有電機(jī)控制的情況下屬于不穩(wěn)定系統(tǒng),在極小的干擾下,就會(huì)偏離平衡位置而失去平衡。因此,控制系

9、統(tǒng)必須使用反饋控制。圖1是站立在賽道上的雙輪車(chē)模。</p><p>  圖1 站立在賽道上的自平衡雙輪車(chē)</p><p>  自平衡雙輪車(chē)在只研究直立的情況下與倒立擺相似,因此這里將借助倒立擺的研究方式研究雙輪車(chē)的平衡控制。</p><p>  控制車(chē)模平衡的主觀經(jīng)驗(yàn)。一般的人通過(guò)簡(jiǎn)單練習(xí)就可以讓一個(gè)直木棒在手指尖上保持直立。這需要兩個(gè)條件:一個(gè)是托著木棒的手可以移

10、動(dòng);另一個(gè)是眼睛可以觀察到木棒的傾斜角度和傾斜趨勢(shì)(角速度)。通過(guò)手掌移動(dòng)抵消木棒的傾斜角和趨勢(shì),從而保持直立。這兩個(gè)條件缺一不可,實(shí)際上就是控制中的負(fù)反饋控制,見(jiàn)圖2。</p><p>  圖2 在手上不倒的木棍</p><p>  世界上沒(méi)有一個(gè)天才雜技演員可以蒙著雙眼使得木棒在自己指尖上直立,因?yàn)闆](méi)了雙眼就沒(méi)了負(fù)反饋的環(huán)節(jié)。經(jīng)過(guò)簡(jiǎn)單的分析可以得到圖3所示的控制結(jié)構(gòu)圖。</p&g

11、t;<p>  圖3 不倒的木棍的控制結(jié)構(gòu)圖</p><p>  同樣,雙輪直立車(chē)的控制也是通過(guò)負(fù)反饋來(lái)實(shí)現(xiàn)的,與上面保持木棍直立則比較簡(jiǎn)單。因?yàn)檐?chē)模有2個(gè)輪子著地,車(chē)體只會(huì)在輪子滾動(dòng)的防線上發(fā)生傾斜??刂戚喿愚D(zhuǎn)動(dòng),抵消在一個(gè)維度上傾斜的趨勢(shì)便可以保持車(chē)體的平衡了。如圖4,5, 6所示。</p><p>  圖4 車(chē)體平衡,車(chē)輪靜止</p><p> 

12、 圖5 車(chē)體后傾,車(chē)輪向后加速</p><p>  圖6 車(chē)體前傾,車(chē)體向前加速</p><p>  將雙輪車(chē)簡(jiǎn)化成高度為L(zhǎng),質(zhì)量為m的簡(jiǎn)單倒立擺,它可以放置在左右移動(dòng)的車(chē)輪上。</p><p>  與空氣中的單擺類(lèi)似,車(chē)身偏離平衡位置后要想能迅速的回到平衡位置,車(chē)身應(yīng)該受到與位移方向相反的的回復(fù)力。</p><p>  在平衡點(diǎn)附近,角度θ

13、很小,即有sinθ ≈ θ。假設(shè)車(chē)身偏離平衡角度后,將受到電機(jī)產(chǎn)生的與角度成比例的力:</p><p>  f = mk1θ(1)</p><p>  由于重力原因,車(chē)身偏離平衡位置后受到的回復(fù)力為:</p><p>  F = mgθ – mk1θ (2)</p><p>  從上式中可以看出回復(fù)力要想與位移相反,必須有k1 &g

14、t; g。假設(shè)外力干擾引起車(chē)模產(chǎn)生角速度x(t)。沿著垂直于車(chē)模底盤(pán)的方向進(jìn)行受力分析,可以得到車(chē)模傾角與車(chē)輪加速度a(t)以及外力干擾加速度x(t)之間的的運(yùn)動(dòng)方程。受力分析如圖7所示。</p><p><b>  圖7 車(chē)模受力分析</b></p><p><b>  (4)</b></p><p>  車(chē)模靜止不向前

15、運(yùn)動(dòng)時(shí),a(t) = 0,即:</p><p><b>  (5)</b></p><p>  對(duì)應(yīng)車(chē)模靜止時(shí),系統(tǒng)輸入輸出的傳遞函數(shù)為:</p><p><b>  (6)</b></p><p>  此時(shí)系統(tǒng)具有2個(gè)極。一個(gè)極點(diǎn)位于s平面的右半平面,車(chē)模不穩(wěn)定。在此處假設(shè),k1 = 20用mat

16、lab仿真此系統(tǒng):</p><p>  Matlab代碼如下:</p><p>  %程序目的:在沒(méi)有微分量的情況下仿</p><p><b>  %真系統(tǒng)的階躍響應(yīng)</b></p><p>  %author:程順均</p><p>  %時(shí)間:2013.8.28</p><

17、p>  sys = tf([1], [1 0 100]);</p><p>  t = 0:0.01:3;</p><p><b>  figure(1)</b></p><p>  step(sys,t);grid on</p><p>  仿真截圖如圖8所示:</p><p>  圖8

18、比例控制系統(tǒng)的階躍響應(yīng)</p><p>  從圖來(lái)看,與分析結(jié)果一樣,系統(tǒng)的階躍響應(yīng)為等幅振蕩,不穩(wěn)定。原因是在階躍響應(yīng)中沒(méi)有阻尼,也就是說(shuō)實(shí)際中的車(chē)不會(huì)倒向一邊,而是在平衡位置附近來(lái)回震蕩。這顯然不是我們需要得到的效果。</p><p>  因此在系統(tǒng)中我們加入為微分量,也就是阻尼。在實(shí)際中變現(xiàn)為阻礙車(chē)模轉(zhuǎn)動(dòng)的力,類(lèi)似于摩擦阻力,大小方向與車(chē)身角速度有關(guān)。即阻力</p>&

19、lt;p><b>  (7)</b></p><p>  經(jīng)過(guò)拉式變換,得到帶阻尼的系統(tǒng)的控制結(jié)構(gòu)圖,如圖9所示:</p><p>  圖9 加入比例微分反饋控制的系統(tǒng)</p><p><b>  系統(tǒng)傳遞函數(shù)為:</b></p><p><b>  (8)</b><

20、;/p><p><b>  此時(shí)系統(tǒng)的極點(diǎn)為:</b></p><p><b>  (9)</b></p><p>  根據(jù)自動(dòng)控制原理穩(wěn)定性分析知識(shí)知道,只有系統(tǒng)的2個(gè)極點(diǎn)都在s平面的左半平面時(shí)系統(tǒng)才是穩(wěn)定的。因此系統(tǒng)必須滿足 。 </p><p>  假設(shè)k2 = 0.5,k1 = 20。利用mat

21、lab仿真。</p><p><b>  仿真代碼如下:</b></p><p>  %程序目的:在比例微分控制的情況下仿</p><p><b>  %真系統(tǒng)的階躍響應(yīng)</b></p><p>  %author:程順均</p><p>  %時(shí)間:2013.8.28<

22、;/p><p>  sys = tf([1],[1,5,100]);</p><p>  t = 0:0.01:3;</p><p><b>  figure(1)</b></p><p>  step(sys,t);grid on;</p><p>  title('比例微分控制時(shí)的階躍響應(yīng)

23、');</p><p><b>  階躍響應(yīng)曲線如下:</b></p><p>  圖10 比例微分控制的階躍響應(yīng)曲線</p><p>  從響應(yīng)的曲線來(lái)看比例—微分控制曲線能夠比較收斂下來(lái)。在宏觀看來(lái),就是車(chē)身能夠很快到我們需要的角度,而不是一直在設(shè)定角度的前后震蕩。</p><p>  研究到此也智能算是解決

24、了直立控制的問(wèn)題。在實(shí)際中往往有很多干擾因素,例如飛思卡爾競(jìng)賽中賽道上就設(shè)有比賽道高的路障。如果穩(wěn)定性較差的直立車(chē)在通過(guò)路障的時(shí)候,會(huì)直接倒下。假設(shè)干擾信號(hào)為D(s),D(s)與的關(guān)系為:</p><p><b>  (10) </b></p><p>  這里我們把路障一類(lèi)的干擾看成是脈沖干擾,D(s) = 1。仿真參數(shù)不變,對(duì)干擾進(jìn)行一次仿真。</p>

25、<p><b>  仿真代碼如下:</b></p><p>  %程序目的:僅在干擾下的輸出響應(yīng)</p><p>  %author:程順均</p><p>  %時(shí)間:2013.8.28</p><p>  sys = tf([0.1 0 -10],[0.1 0.2 10]);</p>&l

26、t;p>  t = 0:0.2:10;</p><p>  figure(1);</p><p>  impulse(sys,t);</p><p><b>  gird on;</b></p><p>  仿真截圖如圖11所示:</p><p>  圖11 系統(tǒng)對(duì)脈沖干擾的響應(yīng)</

27、p><p>  從仿真的圖來(lái)看,脈沖干擾會(huì)讓本來(lái)已經(jīng)穩(wěn)定的系統(tǒng)來(lái)回的震蕩,在多次震蕩后才回到比較穩(wěn)定的狀態(tài)。因此比例-微分控制的方式能夠滿足我們的要求。對(duì)于一個(gè)系統(tǒng)來(lái)講,能夠穩(wěn)定下來(lái)并不是我們追求的最終目標(biāo)。接下來(lái)將詳細(xì)研究系統(tǒng)的優(yōu)化和穩(wěn)定性。</p><p><b>  三.系統(tǒng)控制的優(yōu)化</b></p><p>  飛思卡爾智能汽車(chē)競(jìng)賽中評(píng)比成

28、績(jī)是以在賽道上跑一圈的時(shí)間為唯一依據(jù)的。這要求車(chē)在保持穩(wěn)定的前提下以最大的速度前進(jìn)。系統(tǒng)的響應(yīng)時(shí)間,抗干擾能力都是需要反復(fù)調(diào)整的??斓恼{(diào)整時(shí)間,小的超調(diào)量,高的穩(wěn)定性都是我們期望的結(jié)果。</p><p>  3.1 PID調(diào)節(jié)參數(shù)的優(yōu)化</p><p>  一般的系統(tǒng)我們都需要短的調(diào)節(jié)時(shí)間,小的超調(diào)量。往往我們是不能兩方面做到極限,但是通過(guò)PID參數(shù)的調(diào)節(jié),我們可以得到一個(gè)滿意的調(diào)節(jié)過(guò)程。

29、</p><p>  為了研究每個(gè)參數(shù)的意義,先進(jìn)行單參數(shù)的研究。P一般是作為比例項(xiàng),決定了系統(tǒng)的部分響應(yīng)速度。在這里我們使用一個(gè)仿真代碼完成這個(gè)仿真。</p><p><b>  仿真代碼見(jiàn)附件1:</b></p><p><b>  Kp的研究</b></p><p>  通過(guò)改變系統(tǒng)的Kp,可

30、以得到一系列的仿真圖。這里選取4組做研究。分別為100,400,1000,2000。仿真圖如圖12,13,14,15所示。</p><p>  圖12 Kp = 100時(shí)的階躍響應(yīng)</p><p>  圖13 Kp = 400時(shí)的階躍響應(yīng)</p><p>  圖14 Kp = 1000時(shí)的階躍響應(yīng)</p><p>  圖15 Kp =

31、2000時(shí)的階躍響應(yīng)</p><p>  為了方便對(duì)比出他們的不同,這里將他們的響應(yīng)特征列表出來(lái),如表1所示。</p><p>  表1 Kp對(duì)系統(tǒng)性能的影響</p><p>  從表的的數(shù)據(jù)和調(diào)整圖像來(lái)看,Kp的值很小的時(shí)候,系統(tǒng)的第一次上升達(dá)不到我們需要的值,需要積分項(xiàng)才能彌補(bǔ)。這不是我們需要的結(jié)果。而當(dāng)Kp值很大的時(shí)候,上升時(shí)間縮短,超調(diào)量也會(huì)增大。因此Kp

32、值得選擇主要影響了系統(tǒng)的響應(yīng)能力。</p><p><b>  Ki的研究</b></p><p>  PID中的I是積分項(xiàng),主要是消除穩(wěn)態(tài)誤差。下面通過(guò)4組不同的參數(shù)的測(cè)試研究其作用。Ki的值為100,400,1000,2000的時(shí)候的值仿真圖如圖15,16,17,18所示。</p><p>  圖16 Ki=100的穩(wěn)態(tài)誤差</p&

33、gt;<p>  圖17 Ki=400的穩(wěn)態(tài)誤差</p><p>  圖18 Ki=1000的穩(wěn)態(tài)誤差</p><p>  圖19 Ki=2000的穩(wěn)態(tài)誤差</p><p>  從圖像可以看出來(lái),其上升速度和超調(diào)量并無(wú)太大的差異。他們的差異主要體現(xiàn)在穩(wěn)態(tài)誤差上了。將四組仿真的穩(wěn)態(tài)誤差在1.5S時(shí)取值列表得表2。</p><p&

34、gt;  表2 Ki對(duì)系統(tǒng)性能的影響</p><p>  從表的數(shù)據(jù)很明顯的可以看出,增大Ki值可以減小穩(wěn)態(tài)誤差。但是由于系統(tǒng)會(huì)受到一些小的干擾,所以Ki的值也并不是越大越好!</p><p><b>  Kd的研究</b></p><p>  在PID調(diào)節(jié)中微分項(xiàng)起預(yù)見(jiàn)作用,在系統(tǒng)靠近預(yù)期值時(shí)可以減小控制輸入量,進(jìn)而減小超調(diào)量,增強(qiáng)系統(tǒng)的性

35、能。下面同樣通過(guò)4組數(shù)據(jù)研究Kd值對(duì)系統(tǒng)的影響。Ki分別為10,20,40,60時(shí)的仿真圖如圖20,21,22,23所示。</p><p>  圖20 Kd=10的穩(wěn)態(tài)誤差</p><p>  圖21 Kd=20的穩(wěn)態(tài)誤差</p><p>  圖22 Kd=40的穩(wěn)態(tài)誤差</p><p>  圖23 Kd=60的穩(wěn)態(tài)誤差</p&

36、gt;<p>  從圖上我們已經(jīng)可以清晰地看出,Kd值的增大可以減小超調(diào)量,減少進(jìn)入穩(wěn)態(tài)前的振蕩次數(shù)。下表列出了超調(diào)量和進(jìn)入穩(wěn)態(tài)前的振蕩次數(shù)表,如表3所示。</p><p>  從表的數(shù)據(jù)可以看出,kd的值過(guò)小的時(shí)候,系統(tǒng)的超調(diào)量很大,振蕩加劇。Kd的值越大,系統(tǒng)的超調(diào)量越小。但是由于微分量的對(duì)高頻噪聲具有放大作用。所以,Kp的值也不是越大越好!</p><p><b&

37、gt;  優(yōu)化的結(jié)果</b></p><p>  前面研究了每個(gè)參數(shù)對(duì)系統(tǒng)的影響,下面進(jìn)行一個(gè)綜合仿真實(shí)驗(yàn),從各方面綜合考慮得到一個(gè)好的參數(shù)組合。</p><p>  經(jīng)過(guò)反復(fù)實(shí)驗(yàn),得到一組參數(shù)Kp = 1500,Ki = 4000.Kd = 100。仿真截圖如圖24所示。</p><p>  圖24 經(jīng)過(guò)優(yōu)化的系統(tǒng)的階躍響應(yīng)</p>&l

38、t;p>  從圖24可以看出,系統(tǒng)的響應(yīng)速度很快,超調(diào)量小,穩(wěn)態(tài)誤差基本為0。</p><p>  3.2 積分分離PID的應(yīng)用</p><p>  在普通的PID控制中引入積分環(huán)節(jié)的目的,主要是為了消除靜態(tài)誤差,提高控制精度。但是在過(guò)程的啟動(dòng),結(jié)束或大幅度增減設(shè)定時(shí),短時(shí)間內(nèi)系統(tǒng)輸出有很大的偏差,會(huì)造成PID運(yùn)算的積分積累,致使控制量超時(shí)執(zhí)行機(jī)構(gòu)可能允許的最大動(dòng)作范圍內(nèi)對(duì)應(yīng)的極限控

39、制量,引起系統(tǒng)較大的超調(diào),甚至引起系統(tǒng)較大的震蕩,這在實(shí)際控制中是不允許的。</p><p>  在車(chē)模實(shí)際運(yùn)行過(guò)程中,單片機(jī)控制系統(tǒng)需要不停地的改變輸入量,以滿足對(duì)循跡和調(diào)速的要求。在車(chē)模啟動(dòng)和遇到障礙時(shí),積分量都會(huì)飽和,這給車(chē)模的控制帶來(lái)了麻煩。為此,將要研究?jī)?yōu)化后的PID調(diào)節(jié)器。為了防止積分量對(duì)系統(tǒng)控制的影響,有積分分離PID調(diào)節(jié),抗積分飽和PID調(diào)節(jié)等。</p><p>  積分分

40、離PID調(diào)節(jié)的基本思路是:當(dāng)被控量與設(shè)定量值偏差較大時(shí),取消積分作用,以避免由于積分作用使使系統(tǒng)穩(wěn)定性降低,超調(diào)量增大;當(dāng)被控量與設(shè)定量接近設(shè)定值時(shí),引入積分控制,以便消除靜態(tài)誤差,提供控制精度。其具體實(shí)現(xiàn)步驟如下:</p><p>  根據(jù)實(shí)際情況,認(rèn)為設(shè)定閾值ε;</p><p>  當(dāng)|error(k) > ε|時(shí),采用PD控制,可避免產(chǎn)生過(guò)大的超調(diào),又使系統(tǒng)有較快的響應(yīng);&l

41、t;/p><p>  當(dāng)|error(k) < ε|時(shí),采用PID調(diào)節(jié)控制,以保證系統(tǒng)的控制精度。</p><p>  即積分分離的控制算法可表示為</p><p><b>  (11)</b></p><p>  式中,T為采樣時(shí)間,β為積分項(xiàng)的開(kāi)關(guān)系數(shù)。</p><p>  β =

42、 (12)</p><p>  為了清晰的對(duì)比出普通PID調(diào)節(jié)和積分分離PID調(diào)節(jié)的不同,下面用m語(yǔ)言進(jìn)行仿真,仿真代碼見(jiàn)附件1。</p><p>  為了得到兩者之間的區(qū)別,在程序加了一個(gè)變量M,這個(gè)變量M 為0的時(shí)候使用積分分離,變量M為1的時(shí)候使用積分分離。在這里,為了得到好的效果,當(dāng)誤差大于或等于6的時(shí)候取消積分項(xiàng),即beta = 0;只有當(dāng)誤差值小于1的時(shí)候才使用完全的

43、積分項(xiàng),即beta = 1;</p><p>  積分分離法主要在有干擾的時(shí)候起作用,在無(wú)干擾的時(shí)候,作用并不明顯。為此,在程序里添加了一個(gè)干擾項(xiàng):</p><p>  if k < 120 & k > 100</p><p>  yd(k) = 200; %輸出期望值</p><p><b>  else<

44、;/b></p><p>  yd(k) = 40;</p><p><b>  end</b></p><p>  此干擾項(xiàng)是一個(gè)脈沖形式的干擾,在時(shí)間運(yùn)行到100到120的時(shí)候,期望輸出值突然變得很大yd(k)。這個(gè)干擾是為了模仿一些路障而設(shè)置的。在小車(chē)突然撞到一個(gè)路障上時(shí)小車(chē)的傾角發(fā)生明顯的變化。</p><p&

45、gt;  由于電機(jī)等驅(qū)動(dòng)都有極限,所以為了保護(hù)器件,我們?cè)诳刂瞥绦蚶锩嬉话銜?huì)加上保護(hù)。為了接近真實(shí)的仿真,在這里我們也加入了保護(hù)程序,也就是限制控制輸入。限制保護(hù)程序如下:</p><p>  if u(k) >= 20000</p><p>  u(k) = 20000;</p><p><b>  end</b></p>

46、<p>  if u(k) <= -20000</p><p>  u(k) = -20000;</p><p>  如果使用普通PID,誤差在這個(gè)時(shí)間段內(nèi)累積很明顯,在干擾結(jié)束后,誤差過(guò)很久才能消失。在真是的系統(tǒng)中,可能系統(tǒng)早已崩潰。仿真如圖12所示。</p><p>  圖12 普通PID系統(tǒng)對(duì)干擾的響應(yīng)</p><p>

47、;  從仿真圖中可以看出,系統(tǒng)在遇到干擾時(shí)響應(yīng)很迅速,在干擾結(jié)束后,需要很長(zhǎng)的過(guò)渡時(shí)間才能過(guò)渡。在普通PID的調(diào)節(jié)過(guò)程中,遇到干擾時(shí),誤差項(xiàng)會(huì)累積起來(lái),影響系統(tǒng)歸正,系統(tǒng)需要花大量的時(shí)間來(lái)進(jìn)行調(diào)整。但是長(zhǎng)的調(diào)整時(shí)間會(huì)導(dǎo)致系統(tǒng)直接崩潰。例如,直立車(chē)在長(zhǎng)時(shí)間的電機(jī)猛轉(zhuǎn)的情況下,雙輪車(chē)的速度很快,不能直立。從這個(gè)實(shí)驗(yàn)我們看出,普通PID應(yīng)對(duì)干擾的能力很弱。為此我們將進(jìn)行積分分離PID的研究。</p><p>  在上面

48、的仿真程序中,只需要將M改為1,即可使用積分分離PID,仿真截圖如圖13所示。</p><p>  圖13 積分分離PID對(duì)干擾的響應(yīng)</p><p>  與圖12進(jìn)行對(duì)比,可以得到表1。</p><p>  表1 普通PID與積分分離PID抗干擾能力的對(duì)比</p><p>  在響應(yīng)峰值上,兩者并無(wú)明顯差異,這是因?yàn)槌绦蛑刑砑颖Wo(hù)程序,限制

49、控制輸入。因此2個(gè)系統(tǒng)的峰值輸出相差不大。但是從原理來(lái)講,由于普通PID積累了比較大的誤差,所以如果不添加保護(hù),普通PID的響應(yīng)更迅速。干擾后回歸原位的時(shí)間上,兩者相差很大,這說(shuō)明積分分離PID在抗干擾的能力上強(qiáng)于普通PID。在應(yīng)用與實(shí)際系統(tǒng)中的效果也很好,不至于使系統(tǒng)崩潰。</p><p><b>  四,結(jié)語(yǔ)</b></p><p>  雙輪自平衡智能車(chē)的控制屬于

50、典型的自動(dòng)控制系統(tǒng)。本文研究了雙輪自平衡機(jī)器人的系統(tǒng)模型,PID參數(shù)的優(yōu)化以及使用積分分離PID用來(lái)抵抗干擾??傮w說(shuō)來(lái),得到了一個(gè)很好的控制方式。經(jīng)過(guò)實(shí)驗(yàn)室的實(shí)踐,得到了很好的實(shí)際效果。車(chē)模能在賽道上快速的前進(jìn),能越過(guò)障礙,能上下橋。雙輪智能車(chē)的控制可以為雙輪機(jī)器人打下基礎(chǔ)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 孫亮,雙輪自平衡機(jī)

51、器人行走伺服控制算法[J],控制工程,2009,16(3): 1。</p><p>  [2]胡壽松,自動(dòng)控制原理簡(jiǎn)明教程(第二版)[M],北京:科學(xué)出版社,2008.2。</p><p>  [3]劉金琨,先進(jìn)PID控制matlab仿真(第三版)[M],北京:電子工業(yè)出版社,2011,.3。</p><p>  [4]飛思卡爾競(jìng)賽秘書(shū)處,電磁組直立行車(chē)參考設(shè)計(jì)方案

52、[J],2012,3。</p><p><b>  附件1:</b></p><p>  PID參數(shù)研究m程序:</p><p>  %程序目的:研究PID參數(shù)的作用</p><p>  %author:程順均</p><p>  %時(shí)間:2013.8.31</p><p>

53、;  %積分分離式PID仿真</p><p>  clear all;</p><p>  clear all;</p><p>  ts = 0.005; %控制周期為5ms</p><p>  sys = tf([1],[1 5 100]);%建立系統(tǒng)</p><p>  dsys = c2d(sys,ts

54、,'z');</p><p>  %添加'v'可以讓輸出的值由元胞數(shù)組改為數(shù)組直接輸出</p><p>  [num, den] = tfdata(dsys,'v'); </p><p>  u1 = 0;u2 = 0; %控制器的輸出</p><p>  y1 = 0;y2 = 0; %實(shí)際

55、的輸出值</p><p>  error1 = 0; %上次上次誤差</p><p>  ei = 0; %誤差積累</p><p><b>  Kp = 100;</b></p><p>  Ki = 1500;</p><p><b>  Kd = 50;<

56、/b></p><p>  for k=1:1:500</p><p>  time(k) = k * ts;</p><p>  yd(k) = 1;</p><p>  y(k) = - den(2)*y1 - den(3)*y2 + num(2)*u1 + num(3)*u2;</p><p>  err

57、or(k) = yd(k) - y(k); %變化率的計(jì)算</p><p>  ei = ei + error(k)*ts; %誤差累積計(jì)算</p><p>  u(k) = Kp * error(k) + Ki * ei + Kd * (error(k) - error1)/ts; %PID控制</p><p>  if u(k) >= 20000<

58、/p><p>  u(k) = 20000;</p><p><b>  end</b></p><p>  if u(k) <= -20000</p><p>  u(k) = -20000;</p><p><b>  end</b></p><p&

59、gt;  u2 = u1;u1 = u(k);%記錄上次的值</p><p>  y2 = y1;y1 = y(k);</p><p>  error1 = error(k);</p><p><b>  end</b></p><p>  figure(1);</p><p>  plot(ti

60、me,yd,'r',time,y,'b');</p><p><b>  grid on;</b></p><p>  legend('理想輸出','位置跟蹤');</p><p><b>  附件2:</b></p><p>  路障

61、干擾仿真m程序:</p><p>  %程序目的:對(duì)比積分分離PID和普通PID</p><p><b>  %的不同</b></p><p>  %author:程順均</p><p>  %時(shí)間:2013.8.31</p><p>  %積分分離式PID仿真</p><p&

62、gt;  clear all;</p><p>  clear all;</p><p>  ts = 0.005; %控制周期為5ms</p><p>  sys = tf([1],[1 5 100]);%建立系統(tǒng)</p><p>  dsys = c2d(sys,ts,'z');</p><p&

63、gt;  %添加'v'可以讓輸出的值由元胞數(shù)組改為數(shù)組直接輸出</p><p>  [num, den] = tfdata(dsys,'v'); </p><p>  u1 = 0;u2 = 0; %控制器的輸出</p><p>  y1 = 0;y2 = 0; %實(shí)際的輸出值</p><p>  error

64、1 = 0; %上次上次誤差</p><p>  ei = 0; %誤差積累</p><p>  M = 1; %選擇是否使用積分分離</p><p>  Kp = 1000;</p><p>  Ki = 3000;</p><p><b>  Kd = 50;</

65、b></p><p>  for k=1:1:500</p><p>  time(k) = k * ts;</p><p>  if k < 120 & k > 100</p><p>  yd(k) = 200; %輸出期望值</p><p><b>  else</b&g

66、t;</p><p>  yd(k) = 40;</p><p><b>  end</b></p><p>  y(k) = - den(2)*y1 - den(3)*y2 + num(2)*u1 + num(3)*u2;</p><p>  error(k) = yd(k) - y(k); %變化率的計(jì)算</

67、p><p>  ei = ei + error(k)*ts; %誤差累積計(jì)算</p><p>  if 1 == M %使用積分分離</p><p>  if abs(error(k)) >= 6 </p><p>  beta = 0; %積分分離 </p><p>  elseif abs(e

68、rror(k)) >= 2 & abs(error(k)) < 4</p><p>  beta = 0.2; %積分分離 </p><p><b>  else</b></p><p>  beta = 1.0;</p><p><b>  end</b>&l

69、t;/p><p>  elseif 0 == M</p><p>  beta = 1.0;</p><p><b>  end</b></p><p>  u(k) = Kp * error(k) + beta * Ki * ei + Kd * (error(k) - error1)/ts; %PID控制</p>

70、;<p>  if u(k) >= 20000</p><p>  u(k) = 20000;</p><p><b>  end</b></p><p>  if u(k) <= -20000</p><p>  u(k) = -20000;</p><p><b

71、>  end</b></p><p>  u2 = u1;u1 = u(k);%記錄上次的值</p><p>  y2 = y1;y1 = y(k);</p><p>  error1 = error(k);</p><p><b>  end</b></p><p>  fig

72、ure(1);</p><p>  plot(time,yd,'r',time,y,'b');</p><p><b>  grid on;</b></p><p>  legend('理想輸出','位置跟蹤');</p><p><b>  附件

73、3:</b></p><p>  普通PID 算法C語(yǔ)言實(shí)現(xiàn)代碼:</p><p>  #include "common.h"</p><p>  #include "pid.h"</p><p>  int VV_MAX =4400; //電機(jī)PID輸出上限 </p>&

74、lt;p>  int VV_MIN =2000; //電機(jī)PID輸出下限</p><p><b>  PID sPID;</b></p><p>  void v_PIDInit ()</p><p><b>  {</b></p><p>  sPID.vi_Ref = 0 ;

75、 //速度設(shè)定值</p><p>  sPID.vi_FeedBack = 0 ;//速度反饋值</p><p>  sPID.vi_PreError = 0 ; //前一次,速度誤差,,vi_Ref - vi_FeedBack</p><p>  sPID.vi_PreDerror = 0 ; //前一次,速度誤差之差,d_error-Pr

76、eDerror;</p><p>  sPID.v_Kp =20; //d_error 第一次偏差 500</p><p>  sPID.v_Ki =14; // error 最初反饋值 600</p><p>  sPID.v_Kd =10; //dd_error 第二次偏差 100</p><p

77、>  sPID.motor_PreU = 2400;//電機(jī)控制輸出值</p><p><b>  }</b></p><p>  int v_PIDCalc( PID *pp )</p><p><b>  { </b></p><p>  int error,d_error

78、,dd_error; </p><p>  error =(int)(pp->vi_Ref) - ( int)(pp->vi_FeedBack) ;// 偏差計(jì)算</p><p>  d_error = error - (int)(pp->vi_PreError);</p><p>  dd_error = d_error - (int)

79、pp->vi_PreDerror;</p><p>  pp->vi_PreError = error;//存儲(chǔ)當(dāng)前偏差</p><p>  pp->vi_PreDerror = d_error; </p><p>  if( ( error < VV_DEADLINE ) && ( error > -VV_DEA

80、DLINE ) );//設(shè)置調(diào)節(jié)死區(qū)</p><p>  else//速度PID計(jì)算</p><p><b>  { </b></p><p>  pp->motor_PreU += (int)(pp -> v_Kp * d_error+ pp -> v_Ki * error+ pp->v_Kd*dd_

81、error)/10;</p><p><b>  }</b></p><p>  if( pp->motor_PreU >= VV_MAX ) //速度PID,防止調(diào)節(jié)最高溢出</p><p><b>  {</b></p><p>  pp->motor_PreU = VV_

82、MAX;</p><p><b>  }</b></p><p>  else if( pp->motor_PreU <= VV_MIN)//速度PID,防止調(diào)節(jié)最低溢出 </p><p><b>  {</b></p><p>  pp->motor_PreU =VV_MIN;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論