新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PID非常好的光感巡線思路

PID非常好的光感巡線思路

作者: 時間:2016-11-30 來源:網絡 收藏
調整PID控制器,不使用復雜的數(shù)學方法
(但是我們還是要做一些計算)
在本文中,我使用了其他人總結出來的PID控制器調整的方法,測量幾個系統(tǒng)參數(shù)就可以讓你非常好地計算出Kp,Ki和Kd的值。有幾種技術可用于計算Ks,其中之一就叫做 "Ziegler–Nichols方法" 。通過谷歌搜索可以找到很多講述這種技術的網頁。我所使用的版本幾乎是直接使用了維基網頁——PID控制器中的內容(在很多其他的地方也可以找到相同的內容),我只做了一點小小的改動,包括下表中所示計算過程中的循環(huán)時間。
按以下步驟調整PID控制器:
將Ki和Kd的值置為0,即關閉控制器中的這些部分,將控制器作為一個簡單的比例控制器。
把Tp(目標功率值)設置的小一點。對于我們使用的馬達來說,可以設為25.
將Kp設置為一個“合理”的值,什么是合理的?
1)用我們想讓馬達功率達到的最大值(100)除以能使用的最大誤差值。對于我們的巡線機器人,我們假定這個最大誤差是5,所以推測出Kp值為 100/5=20。當誤差為+5,,馬達的功率將達到100,。當誤差為0,馬達的功率會在Tp(目標功率值)上。
2)或者,將Kp值設為 1 (或100),看看會發(fā)生什么。
3)如果你要把 Ks的值乘以100,在這里,1就要記成100,20記成2000,100記成10000.
運行機器人,觀察運行狀態(tài)。如果它不能巡線,從線上脫離開,就提高Kp值;如果它劇烈擺動,就降低Kp 值。調整Kp值,直到機器人能夠巡線,并且沒有明顯的擺動為止。我們稱這時的Kp值為"Kc" (在PID文獻中,被稱為臨界值)
使用Kc值作為Kp,運行機器人,試著找出機器人運行時的“振蕩周期”是多少。這個測試不需要非常準確。振蕩周期(Pc)是指機器人從線的一側開始,擺動到另一側,再回到開始點的時間長短。對于典型的樂高機器人來說,Pc大約是在0.5秒到1或2秒之間。
你還需要知道,機器人控制系統(tǒng)的循環(huán)周期是多少。我將循環(huán)設置為一個固定的次數(shù)(如10,000),測量機器人完成全部循環(huán)次數(shù)的總時間(從開始到結束的時間,或機器人顯示出結果的時間),每個循環(huán)的周期是測量時間除以循環(huán)次數(shù)。對于一個完整的PID控制器來說,使用NXT-G編程(在程序中不要使用發(fā)聲、顯示等模塊,這些模塊的使用會占用程序運行時間,影響測試結果),dT值應該在每個循環(huán)0.015秒到0.020秒之間。
使用下表計算Kp,Ki, 和Kc的值。如果你只想要一個P控制器,使用表中標注了P的那一行來計算Kp(Ki和Kd均為0)。如果你想要一個PI控制器,就使用第二行來計算。如果你想要一個完整的PID控制器,就使用最后一行來計算。
在實際操作時,那些K值都要用100乘以它們實際的值,但是在計算中你不需要考慮這個問題。這個因數(shù)100 ,在確定Kp=Kc 臨界值時,就已經考慮在內了。
運行機器人,看看它的表現(xiàn)。
你可以調整Kp,Ki和Kd的值直到獲得最佳的性能。你可以從相當大的調整開始,如30%,然后嘗試較小的調整,以獲得最佳的(或者至少是可以接受的)效果。
一旦你確定了一組好的K值,提高TP值,提高機器人的直線速度。
對于新的TP值,要重新的調整K值,也許甚至要回到第1步,重復整個過程,
不斷地重復,直到機器人的表現(xiàn)是可以接受的。

本文引用地址:http://butianyuan.cn/article/201611/323721.htm
Ziegler–Nichols方法給出的K值
(循環(huán)時間恒定并等于dT)
控制類型
Kp
Ki
Kd
P
0.50Kc
0
0
PI
0.45Kc
1.2KpdT/Pc
0
PID
0.60Kc
2KpdT /Pc
KpPc/ (8dT)
Ki和Kd上的符號只是要提醒你——Ki 和 Kd已經考慮了時間的因素,即ki= ki*dt,kd’=kd/dt (假定dT為恒定值)。
這里有一個我自己做機器人測試的測量數(shù)據。Kc為300,當Kp=Kc時,機器人的擺動周期大約為0.8秒,因此Pc為0.8。我測量Pc的方法是,每當機器人擺動到一個特定的方向,就大聲數(shù)出來。循環(huán)時間dT為0.014秒/每個循環(huán),用程序運行10,000次循環(huán)時,NXT上顯示的程序運行時間和循環(huán)次數(shù)相除所獲得。使用上表中PID控制器的各計算公式,我們得到:
Kp= (0.60)(Kc) =(0.60)(300) = 180
Ki= 2(Kp)(dT) / (Pc) =2(180)(0.014) / (0.8) = 6.3 (which is rounded to 6)(四舍五入為6)
Kd= (Kp)(Pc) / ((8)(dT)) =(180)(0.8) / ((8)(0.014)) = 1286
在進一步的反復試驗后,最終的Kp,Ki和Kd值分別為220,7 和500。別忘了所有這些K值均已乘以100,因此,它們的實際值為 2.2 ,0.07和5 。

改變Kp, Ki, 和 Kd的值對機器人運行情況的影響
在優(yōu)化PID的過程中,上面說明的方法和表格是一個好的開始。有時,了解一下增加(或降低)三個K值中的一個會有怎樣的結果,也是非常有幫助的。下表在很多網頁上都能找到,這個版本來源于wiki——PID控制器的網頁。

增加參數(shù)值的影響
Parameter
參數(shù)
Risetime
響應時間
Overshoot
超調
Settlingtime
穩(wěn)定時間
Errorat
equilibrium
靜態(tài)誤差
Kp
減少
變化小
減少
Ki
減少
增加
增加
消除
Kd
不確定(小的增加或減?。?/td>
減少
減少

“響應時間”是指機器人確定誤差的時間,在我們的例子中,是指機器人在離線以后,需要多少時間能回到線的邊緣。響應時間主要由Kp控制。Kp值變大,機器人返回線的速度變快,響應時間就減少。Kp過大,會造成機器人超調。
“超調”是指機器人在響應誤差時,會越過線的邊緣多遠。例如,如果超調較小,當機器人想回到線的左邊時,就不會擺動到線的右邊去。如果超調較大,機器人在糾正誤差時,就會擺動過大,超過線的邊緣。超調受Kd影響最大,但Ki和Kp對它的影響也頗強。通常情況下,糾正很大的超調,你需要增大Kd值。還記得我們第一個非常簡單的巡線機器人嗎,除了左轉和右轉,它不會做任何事,這個巡線機器人就會產生非常大的超調現(xiàn)象。
“穩(wěn)定時間”是指機器人在發(fā)生一個大的變化時,需要多長時間才能穩(wěn)定下來。在我們巡線的例子中,機器人遇到一個轉彎就會發(fā)生較大的變化。當機器人對曲線做出響應,它會糾正誤差,并產生一些超調,然后機器人會以另一個方向的超調來糾正當前的超調,然后再糾正這個超調......你明白了吧。當機器人對誤差進行響應時,它會圍繞期望位置進行擺動。“穩(wěn)定時間”就是這個擺動被抑制到0的時間。Ki和Kd都對穩(wěn)定時間有很強的影響,Ki越大,穩(wěn)定時間越長;Kd越大,穩(wěn)定時間越短。
“靜態(tài)誤差”是指系統(tǒng)在不受干擾的情況下運行所保持的誤差。對于我們的巡線機器人來說,當機器人走了很長一段直線后,這個誤差會被抵消掉。P控制器和PD控制器經常會被這種誤差搞垮。增加Kp值會降低它的影響,但會加大機器人的擺動。P控制器和PD控制器在平衡狀態(tài)下會有一個恒定的誤差,因此經常會在其中增加I控制,和加大Ki的值。(這是假定,當機器人巡線時,你更關注小的系統(tǒng)誤差。這就意味著,機器人會稍微向一邊或另一邊偏移)
運行情況怎樣?
光電傳感器距離巡線測試紙的高度大約為1/2英寸,Tp(功率目標值)設置為70%。機器人的平均速度為每秒鐘8英寸。機器人沿著橢圓型黑線的內側,采用左手法則巡線,沿著內側巡線要比沿著外側巡線稍微難一點。
在整個過程中,巡線機器人似乎表現(xiàn)相當不錯。如果你仔細觀看視頻,就會發(fā)現(xiàn),機器人在離開轉彎的地方有一點“搖尾巴”。那是PID有一點振蕩。當機器人向鏡頭方向運行時,你可以看到機器人光電傳感器的LED在場地墊上照射出的紅點,看上去在追蹤線的邊緣方面,做的非常好。
基本PID控制器可以適用于不同的控制難題(當然也可以用P控制器或者PI控制器代替PID控制器),你無需提出一個新的“誤差”定義,但是針對特定的任務,要重新調整PID。
上一頁 1 2 3 下一頁

關鍵詞: PID光感巡

評論


技術專區(qū)

關閉