引言
自動(dòng)尋跡車是一種具備自主判斷、決策能力的綜合智能系統(tǒng)。它的設(shè)計(jì)集機(jī)械、電子、檢測(cè)技術(shù)與智能控制于一體,在社會(huì)生活中有著廣泛的應(yīng)用,例如自動(dòng)化生產(chǎn)線的物料配送機(jī)器人,醫(yī)院的機(jī)器人護(hù)士,商場(chǎng)的導(dǎo)游機(jī)器人等。
全國“飛思卡爾”智能模型車大賽在這樣的背景下產(chǎn)生,智能模型車比賽要求利用車上的視覺裝置,使智能小車在給定的區(qū)域內(nèi)沿著軌跡自動(dòng)行進(jìn),在確保穩(wěn)定性的情況下,速度最快者獲勝,根據(jù)路徑判別的原理不同,分為光電組、電磁組和攝像頭組三種類型。本文所述智能車為光電組設(shè)計(jì),采用與白色地面顏色有較大差別的黑色線條引導(dǎo)和反射式激光管識(shí)別路徑,通過舵機(jī)驅(qū)動(dòng)前輪轉(zhuǎn)向,采用直流電機(jī)驅(qū)動(dòng)后輪前進(jìn),并采用PWM實(shí)現(xiàn)電機(jī)的調(diào)速,使智能車快速、平穩(wěn)地行駛。
總體設(shè)計(jì)思想
為了能夠自主尋跡行駛,智能車應(yīng)具有路徑識(shí)別、方向控制、速度檢測(cè)、驅(qū)動(dòng)控制等功能,根據(jù)比賽規(guī)定,本設(shè)計(jì)以飛思卡爾公司提供的比賽專用車模為載體,以飛思卡爾16位微控制器MC9S12XS128單片機(jī)作為控制核心,用激光傳感器來進(jìn)行路徑識(shí)別,采用前軸轉(zhuǎn)向后軸驅(qū)動(dòng)方式。為了精確的控制賽車速度,在智能車后軸上安裝光電編碼器,采集車輪轉(zhuǎn)速的脈沖信號(hào),由主控制器進(jìn)行PID自動(dòng)控制,完成智能車速度的閉環(huán)控制。整個(gè)智能車的設(shè)計(jì)可分為硬件設(shè)計(jì)與軟件設(shè)計(jì)兩部分。
硬件設(shè)計(jì)
硬件系統(tǒng)應(yīng)包括主控制器選擇、電源管理模塊、尋跡傳感器模塊、測(cè)速傳感器模塊、舵機(jī)控制模塊以及電機(jī)驅(qū)動(dòng)模塊。
主控制器模塊
本設(shè)計(jì)以16位微處理器MC9S12XS128為控制核心,最高總線速度40MHz,模數(shù)轉(zhuǎn)換器(ADC)轉(zhuǎn)換時(shí)間3μs,具有出色的EMC功能。主要I/O口的分配如下:PA0~PA7共8位用于小車前面路徑識(shí)別的輸入口,PT7用于速度傳感器檢測(cè)的輸入口;PWM1用于伺服舵機(jī)的PWM控制信號(hào)輸出;PWM3、PWM5用于驅(qū)動(dòng)電機(jī)的PWM控制信號(hào)輸出。
電源管理模塊
電源管理模塊為各部分提供動(dòng)力,全部硬件電路的電源由7.2V鎳鎘蓄電池提供,由于系統(tǒng)各模塊所需電壓和電流容量不同,采用芯片LM2940將7.2V蓄電池轉(zhuǎn)換為5V電源給單片機(jī)系統(tǒng)、路徑識(shí)別的光電傳感器、光電編碼器等供電,由芯片LM2941提供6V為舵機(jī)提供電源,而為了提高伺服電機(jī)響應(yīng)速度,電機(jī)模塊直接由7.2V蓄電池提供電源。
路徑檢測(cè)模塊
圖1 總體結(jié)構(gòu)
圖2 車體結(jié)構(gòu)和傳感器布局及編碼
由于紅外光電傳感器價(jià)格便宜,電路設(shè)計(jì)簡(jiǎn)單,所以被經(jīng)常采用。RPR220是一種一體化的反射型光電探測(cè)器,可進(jìn)行反光性差別較大的兩種顏色(如黑白兩色)的識(shí)別,從而判別賽道的方向。
本設(shè)計(jì)共采用8個(gè)RPR220型紅外傳感器,水平均布在賽車前部的傳感器板上,由于其前瞻性較差,通常只有3cm~5cm,所以將傳感器板懸伸在車頭前方,采用垂直檢測(cè)的方法,如圖2所示。傳感器間距為12mm,小于賽道黑線寬度,保證當(dāng)賽車在賽道上行駛時(shí)始終有傳感器能檢測(cè)到黑線。賽車8個(gè)傳感器可以檢測(cè)到8個(gè)精確的位置,加上相鄰兩個(gè)傳感器同時(shí)檢測(cè)到黑線和沒有傳感器檢測(cè)到黑線的情況,一共有16種檢測(cè)狀態(tài),這樣的橫向檢測(cè)精度可以達(dá)到6mm,基本滿足尋跡要求。
速度檢測(cè)模塊
測(cè)速模塊硬件的主要功能是將頻率隨轉(zhuǎn)速變化的模擬信號(hào)送入信號(hào)處理電路,最終轉(zhuǎn)換成數(shù)字脈沖信號(hào)。為了精確控制車模運(yùn)動(dòng),我們采用的是單片機(jī)控制編碼器的方法來檢測(cè)小車的電機(jī)轉(zhuǎn)速。編碼器我們選用OMRON公司生產(chǎn)的一款100線旋轉(zhuǎn)編碼器OME-100-1N型光電編碼器,按1:1傳動(dòng)比用一對(duì)齒輪與驅(qū)動(dòng)軸連接,驅(qū)動(dòng)軸旋轉(zhuǎn)一周,編碼器可獲得100個(gè)脈沖,單片機(jī)通過對(duì)脈沖計(jì)數(shù)就可以得到轉(zhuǎn)速的具體數(shù)值。
驅(qū)動(dòng)電機(jī)與舵機(jī)模塊
本設(shè)計(jì)驅(qū)動(dòng)電機(jī)選用直流電機(jī),其控制效果直接影響小車的速度以及前行的穩(wěn)定性。為了得到較大的驅(qū)動(dòng)能力,最初選用兩片MC33886驅(qū)動(dòng)芯片構(gòu)成H橋驅(qū)動(dòng)電路,單片機(jī)的PP3和PP5引腳輸出的PWM脈沖經(jīng)6N137光耦隔離后,接入MC33886 H橋輸入端,但由于比賽電機(jī)內(nèi)阻僅為430毫歐,而該集成芯片內(nèi)部的每個(gè)MOSFET導(dǎo)通電阻在120毫歐以上,大大增加了電樞回路總電阻,驅(qū)動(dòng)電路效率較低。后改為兩片BTS7960構(gòu)成全橋驅(qū)動(dòng)電路,內(nèi)部MOSFET導(dǎo)通電阻為7+9毫歐,直接與單片機(jī)相連,提高了驅(qū)動(dòng)效率。
舵機(jī)采用的S3010型電機(jī)實(shí)質(zhì)是一個(gè)位置隨動(dòng)系統(tǒng),由舵盤、減速齒輪組、位置反饋電位計(jì)、直流電機(jī)和控制電路組成,通過內(nèi)部位置反饋,可使它的舵盤輸出轉(zhuǎn)角正比于單片機(jī)PWM1通道給定控制信號(hào)。
軟件設(shè)計(jì)
智能車比賽最終以速度作為評(píng)判依據(jù),智能車路徑識(shí)別算法、轉(zhuǎn)向控制、速度控制算法是研究的重點(diǎn)。智能車的運(yùn)行控制是根據(jù)路徑識(shí)別和車速檢測(cè)所獲得的當(dāng)前路徑和車速信息,控制舵機(jī)和直流驅(qū)動(dòng)電機(jī)動(dòng)作,從而調(diào)整智能車的行駛方向和速度??刂扑惴ㄏ喈?dāng)于人的思維,是其最核心的部分,負(fù)責(zé)按預(yù)定的流程處理傳感器所采集的數(shù)據(jù)。軟件流程圖如圖3所示。其中,F(xiàn)OR循環(huán)包含了檢測(cè)黑線位置,更新舵機(jī)輸出等子程序,如圖4所示。
圖3 控制主程序
圖4 FOR循環(huán)子程序
路徑識(shí)別算法
小車自主尋跡過程中,光電傳感器會(huì)受外界光線、車體抖動(dòng)、交叉線、上下坡、路徑黑斑等環(huán)境因素的干擾,會(huì)使傳感器檢測(cè)路徑信息存在偏差而影響小車尋跡的穩(wěn)定性。為此,我們采用連續(xù)檢測(cè)濾波處理的方式消除干擾:即傳感器對(duì)路徑連續(xù)檢測(cè)5次并將采集到的信息存于數(shù)組Line[5][8],檢測(cè)到黑線存值1,否則存值0。若 ,則Line[5][8]的第n列檢測(cè)到黑線,Line[n]=1;否則為干擾,Line[n]=0,將數(shù)組Line[5][8]轉(zhuǎn)為數(shù)組Line[8]。由于傳感器間距略小于黑線線寬,Line[8]一般有16種狀態(tài):多余兩個(gè)為1(檢測(cè)到路徑交叉線),一個(gè)或兩個(gè)為1(檢測(cè)到黑線),全為0(沒有檢測(cè)到黑線)。
如圖2所示,賽車的偏距大小為e,當(dāng)檢測(cè)到黑線點(diǎn)數(shù)0<Point≤2時(shí),如式1所示:
式1
智能車的方向控制
智能車的前進(jìn)方向主要取決于賽道與賽車的偏距大小e,由圖2可知,為前輪轉(zhuǎn)角;y為傳感器距賽車前軸間距。則賽車的前進(jìn)方向轉(zhuǎn)角應(yīng)為 。舵機(jī)安裝在前軸中心上方,通過轉(zhuǎn)向連桿帶動(dòng)前輪轉(zhuǎn)向。由于舵機(jī)采用位置伺服電動(dòng)機(jī),其輸出轉(zhuǎn)角與給定的PWM脈寬成線性關(guān)系,PWM控制信號(hào)高電平的寬度決定舵機(jī)輸出舵盤的角度。
由于舵機(jī)是一個(gè)大的延遲環(huán)節(jié),不需要加控制算法。為了提高響應(yīng)速度,采用直接查表法控制轉(zhuǎn)角,即對(duì)應(yīng)不同偏距e按比例關(guān)系設(shè)定一個(gè)舵機(jī)轉(zhuǎn)向表,行駛中直接查表得到需要的轉(zhuǎn)角值,盡量消除了舵機(jī)執(zhí)行延遲造成的影響。當(dāng)Point>2時(shí)(路徑交叉線),保持原有轉(zhuǎn)角值。
速度控制
智能車的速度控制比較復(fù)雜,在行駛中,不僅要求驅(qū)動(dòng)車輪有合理的瞬時(shí)速度,還要求速度變化細(xì)致平滑,“出彎立刻加速,入彎立刻減速”。即賽車位于直道時(shí)設(shè)置較高的車速,保證賽車有充足的加速空間;賽車在彎道時(shí),應(yīng)該隨著賽道曲率半徑的不同改變車速,避免沖出賽道。車速控制一般采用PID閉環(huán)控制,輸出量u(t)和偏差 e(t)如式2所示:
式2
其中kp,ki ,kd 分別稱為比例系數(shù)、積分系數(shù)、微分系數(shù)。 kp的作用是對(duì)偏差做出的影響,使系統(tǒng)向減少偏差的方向變化。 ki的作用是消除系統(tǒng)靜差,但ki 增加太大不利于減少超調(diào)、減少震蕩,使系統(tǒng)不穩(wěn)定,系統(tǒng)靜差的消除反而減慢。 kd的作用是加快系統(tǒng)的響應(yīng),但是對(duì)擾動(dòng)的抑制能力減弱。
運(yùn)用PID控制的關(guān)鍵是調(diào)整三個(gè)比例系數(shù),即參數(shù)整定。PID控制器參數(shù)整定的方法很多,概括起來有兩大類:一是理論計(jì)算整定法,它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過理論計(jì)算確定控制器參數(shù)。二是工程整定方法,它主要依賴工程經(jīng)驗(yàn),直接在控制系統(tǒng)的試驗(yàn)中進(jìn)行,且方法簡(jiǎn)單、易于掌握,在工程實(shí)際中被廣泛采用。
為使問題簡(jiǎn)化,根據(jù)齊格勒—尼柯爾斯經(jīng)驗(yàn)公式,可將PID控制算法簡(jiǎn)化為關(guān)于kp的歸一參數(shù)公式。所以賽車車速計(jì)算公式設(shè)計(jì)如式3所示:
Sst_speed=high_speed-e×kp
式3
式3中:Set_speed——賽車車速,high_speed——直道設(shè)定最高車速, kp——比例系數(shù)。考慮到賽場(chǎng)環(huán)境的不同,在單片機(jī)中預(yù)存一組實(shí)驗(yàn)數(shù)據(jù)kp,通過撥碼開關(guān)進(jìn)行選擇。
結(jié)束語
本文提出了一種基于紅外線光電傳感器尋跡的智能車系統(tǒng)設(shè)計(jì)方法,系統(tǒng)采用MC9S12XSl28單片機(jī)做主控制器,直流電機(jī)作執(zhí)行元件,對(duì)智能車進(jìn)行了關(guān)鍵設(shè)計(jì)與分析,提出了連續(xù)檢測(cè)濾波處理的消除干擾方式。通過編寫程序先對(duì)所用到的模塊進(jìn)行初始化,并通過對(duì)相應(yīng)數(shù)據(jù)寄存器或狀態(tài)寄存器的讀寫,實(shí)現(xiàn)期望的功能。
完成后在中間粘貼黑色引導(dǎo)線的白色KT板制成的車道上對(duì)智能車進(jìn)行了測(cè)試,表明智能車在直道上可以達(dá)到很高的速度和穩(wěn)定性,在彎道上控制好車速,智能車也能平穩(wěn)地運(yùn)行。