黃錦陽(yáng),胡傲,秦浩杰,趙春鋒
(上海工程技術(shù)大學(xué)工程實(shí)訓(xùn)中心,上海201620)
隨著科學(xué)技術(shù)水平和生產(chǎn)力發(fā)展水平的提高,人們?cè)絹?lái)越追求智能化,而交通工具對(duì)未來(lái)社會(huì)的發(fā)展起著舉足輕重的作用,智能汽車則是最重要的一個(gè)環(huán)節(jié)。智能小車系統(tǒng)是智能汽車的一個(gè)縮影,兩者在信息獲取、信息處理、控制系統(tǒng)構(gòu)成以及車輛整體設(shè)計(jì)方案方面有著許多相似之處。因此,研究智能小車的必要性顯而易見。智能小車主要由核心控制模塊、電源管理模塊、路徑識(shí)別模塊、車速測(cè)定模塊、電機(jī)驅(qū)動(dòng)模塊、舵機(jī)等組成。
本文主要研究在使用線性CCD的基礎(chǔ)上,由單片機(jī)控制自主循跡的智能車。智能車的主控制器為K60單片機(jī),設(shè)計(jì)智能車各個(gè)模塊單元的控制,以實(shí)現(xiàn)智能車在無(wú)人操作下智能循跡,實(shí)現(xiàn)自動(dòng)駕駛。
智能車系統(tǒng)的基本結(jié)構(gòu)可以分為三部分組成:傳感器、控制器和執(zhí)行器。智能小車是以檢測(cè)車道兩邊黑線為基礎(chǔ),通過(guò)單片機(jī)處理信號(hào)從而實(shí)現(xiàn)對(duì)車體能夠自主沿著預(yù)設(shè)的道路路徑智能行駛。智能車依靠線性CCD攝像頭來(lái)獲取收集車道信息,信息到智能車的“大腦”K60微型控制器,對(duì)信息進(jìn)行確認(rèn)和給出相應(yīng)的反應(yīng)(沿著最合理的路徑循跡);通過(guò)安裝在車上的編碼器檢測(cè)車速的大小,并采用K60的輸出捕捉功能進(jìn)行脈沖計(jì)數(shù)從而獲取智能車的實(shí)時(shí)車速;使用脈沖寬度調(diào)制(PWM)來(lái)控制驅(qū)動(dòng)電機(jī)調(diào)整電機(jī)的功率;要實(shí)現(xiàn)對(duì)智能小車運(yùn)動(dòng)速度和方向的閉環(huán)控制,本文采用經(jīng)典的PID控制算法調(diào)節(jié)控制驅(qū)動(dòng)電機(jī)的轉(zhuǎn)速以及轉(zhuǎn)向舵機(jī)偏轉(zhuǎn)的角度。除此之外,為了對(duì)獲得的圖像信息進(jìn)行實(shí)時(shí)的分析和處理,本文在小車上安裝了LCD液晶顯示屏。系統(tǒng)總框圖如圖1所示。
圖1 系統(tǒng)總框圖
小車上的硬件總電源由7.2V/2000mAh的鎳鎘蓄電池提供。因?yàn)橄到y(tǒng)中的各個(gè)電路模塊所需要的工作電壓及工作電流各不相同,所以電源模塊中包含有多種穩(wěn)壓電路,目的是將蓄電電池7.2V電壓轉(zhuǎn)換成各個(gè)模塊所需要的相應(yīng)的電壓。其中K60單片機(jī)、線性CCD攝像頭和LCD液晶顯示屏均需要3.3V直流供電,選用LP38690-3.3V穩(wěn)壓芯片能很好的提供穩(wěn)定的電壓。另外,為了保證單片機(jī)工作不受其他模塊影響,這里采用一塊LP38690-3.3V單獨(dú)給單片機(jī)供電。編碼器則需要5V直流電壓供電,選用LP38690-5V芯片能提供所需要的電壓。舵機(jī)所需的6V電壓由LM2941提供。為了提高智能車的響應(yīng)速度,保證動(dòng)力充足,電機(jī)驅(qū)動(dòng)模塊則由7.2V鎳鉻蓄電池直接供電。
車道信息采集模塊最主要的部分就是攝像頭。CCD攝像頭的感光度大概比普通CMOS攝像頭的高出2-9倍,所以在其他條件相同的情況下,要拍攝同樣亮度的圖像,普通攝像頭的曝光時(shí)間將會(huì)比CCD的多2-9倍。也就是說(shuō),在速度較快的情況下小車用普通攝像頭獲得的圖像將會(huì)變得很模糊。并且在圖像噪聲方面,CCD也比CMOS攝像頭更加突出。CCD攝像頭全部的感光點(diǎn)都經(jīng)過(guò)一個(gè)電荷-電壓轉(zhuǎn)換器,因此可以保證幾萬(wàn)個(gè)感光點(diǎn)的一致性,這就又進(jìn)一步提高了圖像的穩(wěn)定性。本文采用的CCD攝像頭型號(hào)是TSL1401,該CCD攝像頭包含了128個(gè)光電二極管的線性陣列。電路中單片機(jī)I/O口直接驅(qū)動(dòng)SI和SLK信號(hào)。該CCD的AO輸出引腳有內(nèi)置的增益調(diào)節(jié)器,所以從CCD的AO口輸出的電壓不需要經(jīng)過(guò)其他運(yùn)放,便可以直接接入單片機(jī)的AD輸入引腳。CCD的電路接口圖如圖2所示。
圖2 CCD電路接口圖
常用的電機(jī)驅(qū)動(dòng)有兩種方式。第一是采用N溝道MOSFET和專用柵極驅(qū)動(dòng)芯片設(shè)計(jì),使用MOSFET搭建的驅(qū)動(dòng)模塊,雖然輸出的電流小,發(fā)熱量小,但是電路設(shè)計(jì)較為復(fù)雜,可靠性也不高。第二則是采用集成電機(jī)驅(qū)動(dòng)芯片,它的優(yōu)勢(shì)電路設(shè)計(jì)簡(jiǎn)單、可靠性較高。所以本電路設(shè)計(jì)采用的是BTS7970芯片,它的每一片芯片可以集成一個(gè)半橋,這里需要兩片BTS7970構(gòu)成一個(gè)全橋。該芯片的安全性主要體現(xiàn)在它在高負(fù)荷的情況下工作時(shí),芯片內(nèi)部會(huì)產(chǎn)生較大電流、產(chǎn)生較多的熱量,從而導(dǎo)致內(nèi)部的過(guò)熱保護(hù)電路自動(dòng)切斷電源,使芯片停止工作。使用兩片這樣的芯片便可以很好地控制電機(jī),實(shí)現(xiàn)相應(yīng)的功能。電機(jī)驅(qū)動(dòng)模塊的工作原理圖如圖3所示。
圖3 BTS7970結(jié)構(gòu)圖
首先是車道中心線的提取,采用硬件二值化的方法,一個(gè)周期為20ms。根據(jù)光線強(qiáng)弱,設(shè)定適當(dāng)?shù)碾妷罕容^值,因?yàn)檐嚨篮诎追置?,通過(guò)硬件二值化容易區(qū)分車道黑白。通過(guò)比較器LP393,如果輸出為1(高電平)則為白點(diǎn),若是輸出0(低電平)則為黑點(diǎn)。信號(hào)采集時(shí)以上一行的中值為本行采集的中點(diǎn),向兩邊掃描,若滿足白黑白的條件,則這個(gè)黑點(diǎn)為這一邊賽道邊界,如此很容易識(shí)別車道,并計(jì)算出當(dāng)前位置。
由于采用CCD攝像頭可以獲取許多車道的信息,為了選擇合適偏差值本文采用加權(quán)平均數(shù)的方式,選取不同行的偏差值并乘以一個(gè)權(quán)重并相加得到一個(gè)最終的偏差值,這樣能夠更加客觀地反映車道的信息。但是僅僅使用偏差值并不能完全反映車道元素的狀況,根據(jù)實(shí)驗(yàn)數(shù)據(jù),本文采用方差的方式來(lái)識(shí)別一些車道元素,例如長(zhǎng)直道路和小S,并分配予不同的控制算法以提高小車的速度。
舵機(jī)控制本文采用位置式PD控制算法來(lái)控制,在求取了小車在車道的準(zhǔn)確位置后,利用位置式PD公式算得控制量,再將控制量按照Servo=P+D公式轉(zhuǎn)換成驅(qū)動(dòng)舵機(jī)的PWM模塊的寄存器的數(shù)值。公式中P為比例項(xiàng),為偏差量和比例系數(shù)的乘積量;D為微分項(xiàng),為微分系數(shù)和偏差量的變化量的乘積。
智能小車在行駛過(guò)程中,根據(jù)車道信息的改變電機(jī)需要隨時(shí)變速,經(jīng)典的PID算法對(duì)本文的電機(jī)控制十分合適,數(shù)字PID閉環(huán)反饋控制系統(tǒng)如圖4所示。
圖4 數(shù)字PID閉環(huán)反饋控制系統(tǒng)圖
增量PID算法是數(shù)字PID控制經(jīng)常使用的算法,表達(dá)式如下:
y(k)=y(k-1)+△y(k)
其中:
y(k)——第k次輸出的控制(信號(hào))值
y(k-1)——前一次輸出的控制(信號(hào))值
△y(k)——輸出增量(可為正、負(fù)數(shù))
△y(k)=kp[e(k)-e(k-1)]+ki·e(k)+kd[e(k)-2e(k-1)+e(k-2)]
其中:
Kp——比例系數(shù)
Ki——積分系數(shù)
Kd——微分系數(shù)
e(k)——第k次采樣時(shí)的偏差值(采樣值與設(shè)定值之差)
e(k-1)——第k-1次采樣時(shí)的偏差值(采樣值與設(shè)定值之差)
e(k-2)——第k-2次采樣時(shí)的偏差值(采樣值與設(shè)定值之差)
上式中有kp、ki、Kd 3個(gè)系數(shù)需要確定,在實(shí)際實(shí)驗(yàn)操作中頗具難度,根據(jù)之前的鉆研結(jié)果,可采用如下簡(jiǎn)化的經(jīng)驗(yàn)公式:
該式中只包含一個(gè)系數(shù),也就是Kp,因此容易在隨后的實(shí)驗(yàn)中慢慢調(diào)整確定。
增量式PID的優(yōu)越性主要體現(xiàn)在,控制增量△u(k)的確定僅與最近k次的采樣值有關(guān),通過(guò)加權(quán)處理而不需要累加就可以得到較好的控制效果。該算法具備信號(hào)鎖存功能,系統(tǒng)發(fā)生故障時(shí),也可以保持原值不變。
本文從硬件設(shè)計(jì)、軟件算法設(shè)計(jì)兩個(gè)方面對(duì)基于線性CCD循跡智能車的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了論述。本文采用模塊化思想,將智能車各個(gè)功能的實(shí)現(xiàn)分到各個(gè)模塊上去,每個(gè)模塊之間既相對(duì)獨(dú)立又存在一定的聯(lián)系,進(jìn)而完成對(duì)整個(gè)智能小車的控制。經(jīng)過(guò)實(shí)驗(yàn)表明,該套系統(tǒng)可以使智能車在兩邊黑線的白色車道內(nèi)平穩(wěn)運(yùn)行,達(dá)到了預(yù)期的效果。