瞿哲奕,唐秦崴,朱熀秋
QU Zhe-yi, TANG Qin-wei, ZHU Huang-qiu
(江蘇大學(xué) 電氣信息工程學(xué)院,鎮(zhèn)江 212013)
工業(yè)機器人技術(shù)已經(jīng)日趨成熟,美國、日本一直處于世界領(lǐng)先地位,機器人性能可靠,功能全面,智能化越來越高,越來越多的機器人已經(jīng)應(yīng)用于實際生活中。國內(nèi),機器人研究起步較晚,但是進(jìn)步很快,已經(jīng)生產(chǎn)出多種機器人。本文基于HCS12單片機設(shè)計了一種小車智能控制系統(tǒng)?;跀z像頭獲得跑道圖像,同時通過黑線中心檢測出黑線,預(yù)判前方的路況信息,進(jìn)而控制小車的舵機轉(zhuǎn)向和行駛速度。
本系統(tǒng)主要由MC9S12DG128控制核心[1,2]、電源管理單元、路徑識別電路、車速檢測模塊、舵機控制單元和直流電機驅(qū)動單元組成,以飛思卡爾公司的16位單片機S12為控制核心,路徑識別和車速的檢測相結(jié)合,通過控制轉(zhuǎn)向舵機和驅(qū)動電機,使智能巡線機器人系統(tǒng)達(dá)到所需的穩(wěn)定性及快速性要求。原理圖如圖1所示。
圖1 系統(tǒng)硬件原理圖
1.2.1 工作原理及時序圖
攝像頭分黑白和彩色兩種,為達(dá)到循線目的,只需提取畫面的灰度信息,而不必提取其色彩信息,所以本設(shè)計中只采用了數(shù)字?jǐn)z像頭OV6620的黑白辨別功能,這樣可以減少單片機采樣的負(fù)擔(dān)。工作時序圖如圖2所示。
圖2 OV6620時序圖
VYNSC是判斷是否一幅圖像開始,周期是20ms, 其中高電平持續(xù)時間很短,忽略;HREF 是判斷是否一行圖像的開始,周期是 63μs 左右,其中高電平持續(xù)時間為 40μs,低電平持續(xù)時間23μs,那么可以算一下一場有多少行:20ms/63μs=317,當(dāng)然實際上沒有這么多,消隱和無效信號去掉之后只有 292行。另外要注意,場中斷要通過下降沿捕捉,行中斷要通過上升沿捕捉。
有效的灰度數(shù)據(jù)是在行中斷之后的上升沿內(nèi),所以不要在行中斷后的 23μs 后采集,那是廢數(shù)據(jù)。計算一下一行 OV6620 有多少個點:40μs/110ns=363, 消隱和無效信號去掉之后只有 356 個點。
1.2.2 OV6620引腳使用情況
管腳9 、10、 11、 13 、18 、19x和32懸空,UV0~UV7管腳是OV6620計算彩色管腳,用不到彩色時懸空。VCC和GND 接5V和地,地需要和單片機的地相聯(lián),而且OV6620攝像頭自帶了時鐘電路,引腳圖如圖3所示。
圖3 OV6620引腳圖
1.2.3 攝像頭電源電路
由于選擇的OV6620攝像頭的電源為5V,為了達(dá)到這一電源要求,通過芯片LM2940將電池電壓7.2V變?yōu)?V[3],供給攝像頭使用。電源電路如圖4所示。
圖4 LM2940電源電路
在電路設(shè)計中,考慮到由于電機驅(qū)動所引起的電源不穩(wěn)定(主要為瞬態(tài)脈沖),在電源輸入端,各芯片電源引腳都加入了濾波電路。為了避免由于驅(qū)動電機轉(zhuǎn)動時所引起的電磁干擾,在電路板設(shè)計中,在印制板上做了敷銅處理,將電路中的“地”與敷銅面相連接。
圖5 電機驅(qū)動與制動電路
在電機驅(qū)動電路中采用了傳統(tǒng)的MOSFET驅(qū)動,利用這樣的經(jīng)典電路能夠保證驅(qū)動系統(tǒng)的穩(wěn)定性。在電機制動,利用光耦來實現(xiàn)能耗制動的工作方式。R8為功率電阻,D1為續(xù)流二極管,Z7兩端接直流電機。當(dāng)制動信號輸入端發(fā)出制動信號后,驅(qū)動光耦,使三極管導(dǎo)通,這樣電機產(chǎn)生的多余能量就通過續(xù)流回路消耗在功率電阻上,實現(xiàn)制動。電路圖如圖5所示。
為了使得機器人能夠平穩(wěn)地沿著路徑運行,除了控制前輪轉(zhuǎn)向舵機以外,速度的控制也是十分重要的,保證機器人在直道上全速行駛,在急轉(zhuǎn)彎時速度不要過快而沖出跑道等,此時速度的檢測顯得尤為重要??梢酝ㄟ^控制驅(qū)動電機上的平均電壓控制車速,可以通過攝像頭檢測圖像黑線中心位置信息控制速度,但是如果開環(huán)控制電機轉(zhuǎn)速,會有很多因素影響電機轉(zhuǎn)速,例如電池電壓、電機傳動摩擦力、道路摩擦力和前輪轉(zhuǎn)向角等。這些因素會造成不僅會造成機器人運行的不穩(wěn)定,還會導(dǎo)致整體速度緩慢等。故而,需要通過速度檢測,對速度進(jìn)行閉環(huán)反饋控制,則可以在一定程度上消除上面各種因素的影響,使得機器人運行得更加精確。為了獲取道路信息,若需要得到機器人的運動距離,這也可以通過速度的檢測來實現(xiàn)。
在測速模塊中本設(shè)計采用了脈沖計數(shù)檢測速度,在靠近機器人左輪的軸上裝一16等分的黑白相間的自制編碼盤,將測速傳感器安裝在編碼盤垂直對應(yīng)的車體上,這樣當(dāng)機器人前進(jìn),車輪轉(zhuǎn)動時,編碼盤跟隨車輪同步轉(zhuǎn)動,當(dāng)一個黑色脈沖被紅外傳感器檢測到時,速度傳感器的輸出就變?yōu)楦唠娖?,產(chǎn)生脈沖,送給單片機的ECT 模塊,ECT 模塊捕捉脈沖信號并對其進(jìn)行計數(shù),同樣的,當(dāng)白色被檢測到時,也產(chǎn)生一脈沖,送以單片機計數(shù),在一特定時間內(nèi)讀出脈沖總數(shù),將該總數(shù)除以車輪轉(zhuǎn)動一圈移過的脈沖數(shù)目,便可以計算出車輪的轉(zhuǎn)動圈數(shù),再乘以車輪周長,得到行駛路程,再除以計數(shù)時間,最后得到機器人的速度。
圖6 軟件設(shè)計流程圖
在攝像頭采集的一幀數(shù)據(jù)中,將采集的數(shù)據(jù)分析處理提取每行的黑線中心位置,繼續(xù)對該數(shù)據(jù)處理為后面控制策略作準(zhǔn)備,準(zhǔn)備工作結(jié)束,利用信息分別對直流電機和伺服電機實現(xiàn)閉環(huán)反饋控制。流程圖如圖6所示。
圖7 圖像采集流程圖
2.2.1 圖像采集流程
本設(shè)計中,采用640×480的OV6620數(shù)字?jǐn)z像頭[4],雖然攝像頭采集到的信息比較豐富,但是經(jīng)過實驗證明,只需采集一幀圖像中的17行即可,太多的數(shù)據(jù)信息不僅會占用CPU時間,而且也不能帶來有用的信息,故而,對得到的480行數(shù)據(jù)進(jìn)行處理,每隔26行經(jīng)取值得到最終的17行。但是由于攝像頭性能不夠理想,一幀圖像所能夠采集的行數(shù)和列數(shù)是有限的,最終能夠供MCU分析的數(shù)據(jù)每幀僅為17行20列的數(shù)組。流程圖如圖7所示。
2.2.2 圖像濾波
為了排除雜點,提取有效的黑線信息。經(jīng)過多天的實驗測試后,采用的窗口處理算法如下:先將采集的圖像數(shù)據(jù)二值化,再使用3×3的窗口進(jìn)行窗口線性濾波,既當(dāng)一個窗口中含六個及以上個黑點時的中心為黑點,否則為白點。圖像濾波流程圖8所示。
圖8 圖像濾波流程圖
2.2.3 路徑黑線中心的提取
在每幀的圖像中,采用重心提取算法來實現(xiàn)黑線重心位置的提取。為了緩解CPU堆棧的壓力,將圖像采集到的數(shù)據(jù)存放在二維數(shù)組中,然后將重心位置重新存入一維數(shù)組中。由于所設(shè)路徑上的白色底板和黑色引導(dǎo)線的灰度值相差較大,因此通過確定一個黑色和白色的閾值來區(qū)分黑白。判斷相鄰數(shù)據(jù)點灰度值的差值是否大于(或小于)該閾值,從而確定此處是否為黑線上的點。經(jīng)過多次實驗,最后確定閾值為128。從最左端的第一個有效數(shù)據(jù)點第7列(前6列數(shù)據(jù)為行消隱區(qū),舍棄)開始依次向右根據(jù)閾值判斷其是白點還是黑點。
為了提高每幀圖像處理速度,先對每幀圖像的前兩行數(shù)據(jù)進(jìn)行處理,即在前兩行尋找連續(xù)的兩個黑點,且在列上也要有兩個黑點,即為黑線其始處,以此為基本位置,再向下繼續(xù)尋找黑線重心。若尋找失敗則跳過此幀圖像。由于實際采集數(shù)據(jù)中有相當(dāng)數(shù)量的無效幀,所以此舉節(jié)省了大量MCU資源。
在有效幀的每一行,得出每個黑點的位置值,然后將各黑點位置值相加再除以黑點數(shù)量,得出圖像每行的黑點重心坐標(biāo)。這樣做雖然會在對黑線提取的精度上有所犧牲,但是經(jīng)過除法后,相當(dāng)于進(jìn)行了一個 較大的濾波,會使所提取的黑線的誤差降低,保證了正確性。
在每幀窗口濾波后的圖像中,如果有過多行重心“過輕”或者“過重” (即黑點過少或過多)則此幀圖像視為無效。跳至處理下一幀圖像。 在尋找下一行重心時,尋找范圍是在上一行的黑點重心的左右附近,若找不到下一行重心,便跳過此行往下尋找。累計出現(xiàn)一定數(shù)量的無效行時跳過此幀圖像處理下一幀圖像。流程圖如圖9所示。
圖9 黑線中心位置的提取
PID調(diào)節(jié)具有原理簡單、易于實現(xiàn)、魯棒性強和適用面廣等優(yōu)點,在實際應(yīng)用中,根據(jù)實際工作經(jīng)驗在線整定PID各參數(shù),往往可以取得較為滿意的控制效果[5]。數(shù)字PID控制則以此為基礎(chǔ),與計算機的計算與邏輯功能結(jié)合起來,不但繼承了模擬PID調(diào)節(jié)的優(yōu)點,而且由于軟件系統(tǒng)的靈活性,PID算法可以得到修正而更加完善,更加靈活多樣,更能滿足生產(chǎn)過程中提出的各種控制要求。流程圖如圖10所示。
圖10 PID控制流程圖
在實際調(diào)試過程中發(fā)現(xiàn)不可以加積分環(huán)節(jié),因為積分環(huán)節(jié)的作用是消除靜差,而運輸時并不要求跟隨得很緊密,只要不沖出所設(shè)定的路徑就可以了。于是在直道行駛過程中會不斷追求偏差的最小化,而導(dǎo)致不斷震蕩。于是,取消了I環(huán)節(jié),使用PD控制。在選擇P和D的參數(shù)時,發(fā)現(xiàn)如果P給得過大雖然響應(yīng)很快,但很容易超調(diào),這在偏差量比較小的時候尤為明顯。于是,采用了分段PD控制,在偏差量小于一定值時使用小比例量和小微分量,在偏差量較大的時候才使用大比例量和微分量。
另外,發(fā)現(xiàn)在速度較低的時候不需要很快的響應(yīng)速度,過快反而容易導(dǎo)致超調(diào),于是在分段的時候,還考慮了速度的因素,在速度較低的時候使用較小的比例量,在較高的時候采用較大的比例量。PD控制器結(jié)構(gòu)如圖11所示。
圖11 PD控制器結(jié)構(gòu)
本文設(shè)計了一個智能車控制系統(tǒng),實現(xiàn)了快速自動循跡功能。在硬件上,以單片機MC9S12DG128B作為核心控制單元,結(jié)合電源模塊、路徑識別模塊、車速檢測模塊、舵機控制模塊等工作。在軟件上,采用圖像濾波、二值化以及黑線重心中心提取算法和PD控制、在線PID算法實現(xiàn)對舵機轉(zhuǎn)向和電機轉(zhuǎn)速的控制。實驗結(jié)果表明該巡線機器人系統(tǒng)響應(yīng)快,動態(tài)性能良好,整體控制性能良好。
[1]王威.HC S12微控制器原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007.
[2]邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法[M].北京:清華大學(xué)出版社,2004.
[3]賀益康,潘再平.電力電子技術(shù)[M].北京:科學(xué)出版社,2003.
[4]張洪剛,陳光,郭軍.圖像處理與識別[M].北京:人民郵電出版社,2006.
[5]高國琴.微型計算機控制技術(shù)[M].北京:機械工業(yè)出版社,2006.