劉鑄,劉恒宇,凡正波
(成都理工大學核技術與自動化工程學院,四川成都,610059)
隨著無人駕駛的提出,智能小車得到了飛速的發展,自動尋光小車就是其中的一種。傳統的光電小車都采用單CPU運行方式,既進行攝像頭畫面的采集又要進行控制算法的實現。這就存在CPU處理速度不夠快的問題,導致攝像頭幀率不高。小車高速運行的過程中,無法保證小車能準確的找到信號燈的位置。為了提高攝像頭的幀率,本文設計了一種雙CPU控制系統,將光線采集和小車控制分離,既能使小車能精準找到信號燈位置,又可以快速穩定的到達既定位置。
自動尋光小車工作原理:利用STM公司M4內核的處理器STM32F407ZGT6進行攝像頭畫面的采集,計算得到信號燈的位置坐標,通過串口將坐標信息傳給M3內核的STM32F103ZET6,F1根據傳來的坐標值做出判斷。若沒有采到信號燈的位置,則旋轉車身繼續找信號燈位置,若在畫面中找到信號燈的位置,利用編碼器測量得到兩輪的轉速,根據特殊的姿態解算和PID運算,使小車快速穩定地運動到信號燈的位置。在車頭的位置安裝了紅外避障模塊,在小車的運行過程中遇到障礙物,小車會倒退一小段,防止撞毀小車。同時,為了觀測小車的運行狀態,在F1上安裝了顯示屏,用于顯示信號燈的位置坐標和小車當前的運行速度。系統總體框圖如1所示。

圖1 系統總體框圖
車身采用三輪結構,后面兩個輪為主動輪,與驅動相連,利用差速實現小車的轉向運行。最前面的輪采用牛眼輪,主要用于小車的支撐,另外由于其結構的優勢,可以大的減小小車的轉彎半徑,使小車轉彎更加穩定靈活。
本系統采用模塊化設計的方法,大大提升系統的設計效率。
光電小車尋光采用了攝像頭模塊。攝像頭采用帶FIFO的ov7670模塊,通過SCCB總線控制,可以輸出整幀、子采樣、取窗口等方式的8位數據,其VGA輸出最多可以達到30幀/秒。為了保證攝像頭采集的幀率,選用M4內核的處理器STM32F407ZGT6。這款處理器其主頻可以達到168M,擁有1M的閃存儲器,完全滿足對攝像頭的控制與數據的讀取的要求。
在控制端選用M3內核處理器STM32F103ZET6。這款F1的處理器主頻最大可以達到72M,擁有512K的閃存儲器,外設資源豐富,處理速度和內存容量都完全可以適應小車一些常見的控制算法。
驅動模塊選用A4950。A4950是一款雙路全橋DMOS電機驅動芯片。輸出的峰值電流最大達到2安培,電壓最大可以承受40伏特。通過外部PWM的控制,可以自由地控制直流電機的正反轉和加減速。內部還具有過流保護功能,可以防止驅動運行時被輕易燒毀。驅動模塊原理圖如圖2所示。
電機選用自帶編碼器的直流減速電機。減速比為30:1,測速精度高,可以進行更高精度的速度控制。扭矩為1kg·cm,工作電壓為12V,額電電流為360mA。足夠大的扭矩保證小車高速穩定的運行。

圖2 驅動模塊原理圖

圖3 電源模塊原理圖
電池選用3S航模電池,容量達到2200mA,可以穩定輸出12V電壓。用AMS1117外搭了穩壓電路,12V的電源經過降壓,輸出穩定的5V電壓,用于給單片機供電。電源模塊的原理圖如圖3所示。
顯示模塊選用OLED。OLED具有體積小,顯示清晰等特點,將他與F1相連,通過F1控制,顯示出小車運行的速度和信號燈的坐標。
紅外避障模塊采用三個E18-D80NK紅外接近開關模塊。其具有精度高,控制簡單,調試方便等特點,最大檢測范圍可以達到80cm,可以根據具體情況進行調節。三個配合使用,可以有效避免視野的盲區,準確檢測到前方的障礙物。
F4部分:F4將采回來的點顏色值進行二值化,對目標點的橫坐標進行平均值濾波,濾波后的點坐標作為最終采回信號燈的位置坐標。最后通過串口將坐標值傳給F1。
F1部分:F1讀取到坐標值后,進行判斷,若信號不在畫面里,小車自轉繼續找光。若光線在畫面中,首先進行姿態的結算,根據小車的兩輪轉速判斷小車運動狀態。再進行PID算法控制,最終讓小車快速穩定的運動到信號燈位置。紅外避障采用中斷的方式進行處理,在運行過程中,一旦檢測到障礙物,就控制電機倒退一小段距離,繞開障礙物后,小車重新找光。
本文設計的雙CPU自動尋光小車,較傳統的單CPU的小車,保證圖像幀率的同時,還可以進行一定的圖像處理,確保小車對光線精確地采集。將另一個CPU從圖像采集和處理中解放出來,保證小車控制快速性和穩定性的同時,為小車實現更復雜算法的控制提供了條件。可以看出這種雙CPU系統的智能小車在開發應用中具有遠大的前景。