龔梓賢 湖南省長沙市南雅中學
1、PID巡線最核心的思想便是利用微積分思想,對每時每刻的光電傳感器值進行分析,并通過與初始光感值的大小對比來使機器人在偏離線條后左轉或右轉來回到所巡線條。這相比其他的巡線算法來說顯得更加的靈活。同時在經過簡單的調整后便可以應用于其他情況。如通過調整時間與功率。
2、通過微積分的運用,我們可以得出基本公式:Turn( 轉 向)= Kp*error(誤 差) + Ki*integral(積 分)+Kd*derivative(導數 )。
1、在PID這一詞中,P是指proportion意思是比例,I是指integral為積分,D是derivative。
2、通過對pid巡線程序進行分析,得出以下變量,見表一:

表一:變量表
3、在對變量進行闡述后,則是對PID這核心算法的名詞描述:

表二:核心算法的名詞描述

(Integral + Error)*0.6 -> Integral//計算積分值。為避免積分過大導致飛線,通過小系數抑制Error - LastError -> LastError //計算微分值MotoPower + MotoTurn ->PowerB// B馬達功率值MotoPower + MotoTurn ->PowerC// B馬達功率值end loop forever //結束循環,返回,進行下一次循環
1、對整個程序簡略后所形成的模塊實體化。如圖一所示:

圖一:模塊實體化
2、對每一個變量進行相應的對應后實體化。如圖二所示:

圖二:變量對應后的實體化
3、對巡線小車的目前所測光感值與所測量的正常光感值進行相減以讀取誤差,來判斷巡線小車是否沿所巡線條運動。如圖三所示:

圖三
4、對光感值誤差過后經過計算來矯正小車的巡線功率決定小車的方向改變。如圖四所示:
5、整個程序的實行階段,在對所應矯正的功率進行計算后,將所計算出的功率賦予馬達,實現馬達功率值為設定功率+矯正功率。如圖五所示:

圖五
通過以上五個步驟可以得出PID巡線程序的基本構成,其靈活性以及變量之間的關系也得以解釋和運用。這便是該PID巡線程序的構成,該程序是在一邊對光感值進行比較并計算矯正功率并賦予給馬達的同時,一邊在把時間或是角度與目標的時間與角度進行對比,以達到控制時間或角度的同時進行巡線的PID巡線程序。在這當中,需要運用到以下理論:
巡線其實是讓機器人沿著線的邊緣走,因為如果沿著黑線本身走,當機器人偏離黑線,傳感器讀取到白色時,不知道機器人是在線的右邊還是左邊?機器人自身也很難判斷。如果沿著線的邊緣走,當光電傳感器讀取到白色,就能知道機器人在線邊緣(線)的左邊,當光電傳感器讀取到黑時,就能知道機器人在線邊緣的右邊(在線上)。因為機器人跟隨的是線條的左邊,因此這種方式被稱為“左手法則”。
馬達的實際功率是經過累加后得出的與原線的誤差所集合計算出的功率,有Tp+Turn=實際功率,在這里設計一個error值,目的是表達與所巡線的差異。通過定義error值的正負來表現兩馬達的功率已達到了解其左轉或右轉的趨勢,從而進行巡線。
這里定義一個補償量為offset,這個值的意義是指在偏離巡線后,小車所需要加上或減去的量,它是黑值和白值的平均值。
用傳感器測量想控制的東西,將測量結果轉換為error(誤差)——對于巡線機器人來說,通過減掉黑和白光電傳感器讀值的平均值來實現,將error (誤差)乘以Kp,就得到了系統的修正值。得到了修正值,這樣就可以通過加大/減小馬達的功率值來應用這個修正值。這個叫Kp的比例系數要用有根據的推測來確定,并通過反復試驗進行調整。同時有Turn=Kp*(error)。
積分是高等數學里面的一個量,利用它來進行動態求和變化,每次讀取光電傳感器的值,并計算error(誤差)時,將error(誤差)加到一個變量中,這個變量稱之為integral(積分)。integral(積分)= integral(積分)+ error(誤差),
它是一種將一系列數值累加的方法,那并不是值而是一個變量,這個“=”是賦值的意思,意味著將它右邊的計算結果賦值給左邊的那個變量名。Turn= Kp*(error) + Ki*(integral)
同積分一樣也屬于數學內容,在有的pid介紹里面也說成微分,意義都是表達在兩個連續點之間的誤差變化量,由于一切都是一直累加的,那自然而然就與累加次數有關,那也就與時間有關,經過時間與量相乘的計算在加上之前的公式,便可以得到
Turn (轉向)= Kp*error(誤差) + Ki*integral(積分)+Kd*derivative(導數)
靜態誤差是指系統在不受干擾的情況下運行所保持的誤差,也就是理想狀態下的誤差,當機器人走了很長一段直線后,這個誤差會逐漸減小所以對機器影響不大。但P控制器和PD控制器經常會被這種誤差所誤導。因此,通過增加Kp 值會降低它的影響,但有可能會加大機器人的擺動。P控制器和PD控制器在平衡狀態下都會有一個恒定的誤差,這是無法避免的,因此經常會在其中增加I控制,加大Ki的值,以保持穩定。
PID靠著高等數學的知識與思想并與計算機的累加相應,通過不斷對于error的調整以及對于機器人功率的控制的目的,以達到轉向并且巡線。總而言之pid巡線是一種十分靈活的巡線算法。
