姬冠妮,孟家寶,姚鵬
(西安交通工程學院中興通信學院,陜西西安,710300)
隨著社會科技的發(fā)展,人們的出行工具日新月異,自上世紀60年代起,電子技術的進步就已成為汽車工業(yè)發(fā)展的最大動力,90年代,國外已提出智慧交通系統(tǒng)的概念,智能車輛的開發(fā)設計則是智慧交通系統(tǒng)的重要部分。智能汽車能夠利用多種傳感器和智能公路技術實現(xiàn)汽車的自動駕駛。進入車道,汽車碰撞預警系統(tǒng)通過使用車載傳感器和攝像系統(tǒng),從而能夠在遇到障礙物或者行駛條件發(fā)生變化時能夠做出迅速調整,從而在很大程度上減少甚至避免交通事故的發(fā)生。
本應用系統(tǒng)設計采用STM32芯片為智能小車的核心控制器件。系統(tǒng)有4個基本模塊,包括主控模塊、電機驅動模塊、視覺循跡模塊,無線通訊模塊,主控選擇STM32 F103RCT6,通過速度閉環(huán)來實現(xiàn)電機驅動的精準控制。循跡模塊由兩個顏色傳感器和四個光電管組成,通過判斷黑色虛線以及紅色實線以達到循跡的功能,電池電壓為12.6V,采用三節(jié)18650鋰電池串聯(lián)供電。
圖1 系統(tǒng)總體設計框圖
本系統(tǒng)使用顏色傳感器尋跡。由顏色傳感器識別通道中部紅色實線,位于小車兩側保證其沿直線行駛,此方案風險小難度較低,對環(huán)境光線要求相對較低,且只要考慮道路中紅線交叉的問題,現(xiàn)場實測表明,雖然小車在尋跡過程中有一定的左右搖擺,但基本上沿紅線行駛。
(1) 顏色傳感器TCS3472
TCS3472 光電轉換器包含一個3×4光電二極管陣列、四個集成光電二極管,電流的模數轉換器(ADC)、數據寄存器、一個狀態(tài)機和一個 I2C 接口。3×4光電二極管陣列由紅光、綠光、藍光和清晰(未濾光)光電二極管組成。此外,光電二極管還涂有紅外阻擋濾光片。四個積分ADC同時將放大的光電二極管電流轉換為16位數字值。轉換周期完成后,結果被傳輸到數據寄存器,數據寄存器采用雙緩沖方式,以確保數據的完整性。所有內部時序以及低功率等待狀態(tài)都由狀態(tài)機控制。
首先對圖像進行相關預處理,圖像采集和傳輸過程中可能產生噪點,通過圖像灰度化和圖像濾波減小對圖像處理的干擾。
其次攝像頭采集跑道上的紅線,通過硬件二值化處理,這里用到最大類間方差法(Otsu)來實現(xiàn)圖像二值化閾值選?。?/p>
Otsu算法的基本思路是采用某一設定灰度值t將圖像的實際灰度分成兩組,當兩個組的類間方差值最大時,該灰度值t就是進行圖像二值化最佳的閾值。
假設某圖像有L組灰度值,其取值的范圍為0~L-1,在此范圍內選取灰度值T,將圖像劃分成兩個組G0和G1,GO組包含的像素灰度值屬于0~T,G1的灰度值屬于T+1~L-1,用N來代表圖像的像素總數,n代表灰度值為i的像素個數。
已知如下:每個灰度值i可能會出現(xiàn)的概率為p=n/ N;由GO、G1的像素個數在整個圖像中所占的百分比可得:
類間方差為:
緊接著,運用計算機視覺的線性回歸(Linear Classification)算法進行尋線,線性回歸能找到視野中任何的線,但是處理速度就會很慢。
為了能更快的尋到我們想要的軌跡,把顏色調為灰度,不去處理追蹤顏色,圖像大小設成QQVGA,縮小圖像面積,來增加速度。
最后向STM32提供反饋信息,控制電機進行自動尋徑。(2) RGB 顏色傳感器分析
顏色傳感器用白光照射到物體,物體反射回來的光由紅光、綠光、藍光和清晰(未濾光)光電二極管吸收,產生光電效應,并且產生光電流,四個積分 ADC同時將放大的光電二極管電流轉換為16位數字值。轉換周期完成后,結果被傳輸到數據寄存器,數據寄存器采用雙緩沖方式,以確保數據的完整。
圖2 顏色傳感器原理框圖
OpenMV是一個開源,低成本,功能強大的機器視覺模塊,以STM32F427CPU為核心,集成了OV7725攝像頭芯片,在小巧的硬件模塊上,用C語言高效地實現(xiàn)了核心機器視覺算法。OpenMV進行數字識別的基礎是需要配置使用NCC模板匹配,通過NCC模板的匹配可把需要識別的數字模板圖片保存到SD卡中,然后可進行下一步的識別。
首先將1-8字模原比例打印出來,然后用K210進行模型訓練,模型訓練了幾千張模型,生成訓練過的樣本矩陣,一般樣本值會以二維矩陣方式存在文件中,如果要將它們讀出,進行適當預處理,最后生成OpenCV可以模擬的數據結構。
其中包含了分別從不同的視角對圖像進行采集入庫,在通過NCC模板匹配訓練產生數字分類器,訓練樣本值的數字結構形態(tài)各異,所以讀入時就需要對其進行規(guī)整化。采用的方法是首先找到數字的邊界框,再以寬或者高當中較大的一邊為基準,適當進行進行縮放或拉伸,從而使其數值可以占滿所有能表示一個樣本的矩陣。
再將其圖像二值化,進行腐蝕分割,前面通過學習訓練產生分類器,不過我們輸入的圖像數字值并不能直接當作測試的輸入;圖像中數字的筆畫通常還并不規(guī)整,也有可能相互的重疊;最后就可以對選取的圖像進行分割處理了。因為我們設計的分類器只能對數字逐個進行識別,所以會先要把每個數字單獨分割出來,然后在分割完以后,采用前面訓練得到的分類器對分割結果進行識別。
圖3 OpenMV 主板圖
步進電機可以實現(xiàn)電機轉速和位置的精確控制,一般步進電機的精度會在步進角 5%范圍之內,不累積具體誤差。但步進電機需要加上驅動運轉,而且驅動信號應為脈沖類信號,沒有脈沖輸入的時候,步進電機處于靜止狀態(tài),如果輸入端加入合適的脈沖信號,就會以設定的角度(稱為步距角)進行轉動。電機轉動速度和采用的脈沖信號頻率成正比。改變脈沖信號的次序,就可以很方便改變電機轉動方向。此種方式可以較為精準的控制小車旋轉及行進距離,足夠完成要求故采用此方案。
依靠編碼器反饋數值,通過速度閉環(huán)解決對小車行駛距離的把控,本小車所采用的PID算法是閉環(huán)控制系統(tǒng)中常用的控制算法之一,其全稱為比例積分微分控制。
其傳遞函數如下:
再配合OpenMV二值化處理尋線輔助和K210數字識別并將相關數據通過串口反饋給主控板最終實現(xiàn)小車的精準控制。通過配置串口的波特率便可以控制串口通訊的速率。
為保證數據接收正常,本設計通過對控制系統(tǒng)中的STM32F103RCT6單片機進行編寫通信協(xié)議程序,以防止無線接收模塊在受到干擾的情況下收到錯誤指令而使小車失控的情況發(fā)生。
電源模塊為系統(tǒng)其它各個模塊提供所需要的電源,可靠的電源方案是整個硬件電路穩(wěn)定可靠運行的基礎。考慮到電壓范圍和電流容量等基本參數,本設計采用三個18650鋰電池串聯(lián)產生電壓為12.6V作為電源為小車供電。但因為系統(tǒng)中使用的STM32F103RCT6與A4988電機驅動模塊邏輯電壓需要5V的電壓供電,因此需要使用DC-DC模塊將12V電壓轉換為5V電壓,本設計使用的DC-DC降壓模塊為LM2596可調電源模塊。
圖4 LM2596 可調電源模塊
本設計采用TCRT5000模塊作為小車的運動循跡模塊該模塊體積小,靈敏度較高,還可以通過轉動上面的電位器來調節(jié)檢測靈敏度。TCRT5000傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線, TCRT5000接收到待檢測物品反射回來的紅外線并且觸發(fā)閾值LM393比較器會輸出高電平,反之輸出低電平。
由于黑色吸收光線能力較強而白色反射光線能力較強,當TCRT5000紅外探頭置于黑線上模塊會輸出低電平,置于白色背景上的時候會輸出高電平,基于該原理故TCRT5000可以作為小車的運動循跡模塊。
圖5 TCRT5000模塊原理圖
該小車采用 A4988 驅動板與兩個 42 步進電機來驅動。A4988步進電機驅動器具有過流保護的 DMOS,同時自帶轉換器;可以操作雙極電機,步進模式中,其輸出的驅動能力是 35V 和±2A。只要在“STEP”引腳上輸入預定脈沖信號,就可以驅動電動機正常產生微步變化;不需要采用相位順序表、高頻率的控制行和較為復雜的程序設定界面;A4988很適合應用在某些微處理器不可用或過載的情況下;具有控制簡單、五檔精度調節(jié)、可調電位器和可調節(jié)輸出電流、兼容3.3V和5V的邏輯輸入的特點。
圖6 電機驅動模塊原理圖
從訓練圖片中隨機抽取一定數量的訓練圖片,并從測試圖片中也隨機抽取一定數量的測試圖片,然后這些測試與訓練圖片進行KNN計算,并從這些一定數量的訓練圖片中找出K張與當前測試圖片KNN距離最近的照片,然后解析訓練圖片中的內容,從而預測出數字,并檢測結果是否正確。
在識別目標房間號后,判斷是否為近端,如果為近端則直接第一個十字路口轉對應方向,否則直行至第二路口,判斷是否為目標數字。
圖7 程序設計流程圖
如果是,則轉對應方向,否則直行至T型路口左轉,判斷判斷是否為目標數字,如果否,則轉至T型路口對面,識別目標數字方位并轉彎。
識別虛線點后停車,發(fā)送位置信號給小車2,同時檢測小車2回饋信號和藥品是否卸載,在卸載藥品完成條件下,如果檢測到回饋信號則為雙車模式,等待小車2,發(fā)送到達指定位置信號,則開始啟動返回,否則為單車模式,直接按記憶路線返回。
根據預定要求及線路測試小車性能,簡單數據如表1所示。
表1 送藥小車性能測試統(tǒng)計表
①單個小車運送藥品到指定的近端病房并返回到藥房。要求運送和返回時間均小于 20s,且標號、停止位置、掉頭位置識別準確。
②單個小車運送藥品到指定的中部病房并返回到藥房。要求運送和返回時間均小于 20s,且標號、停止位置、掉頭位置識別準確。
③單個小車運送藥品到指定的遠端病房并返回到藥房。要求運送和返回時間均小于 20s,且標號、停止位置、掉頭位置識別準確。
綜上所述小車符合基本要求,且此次測試均未出現(xiàn)偏離軌道現(xiàn)象。
圖8 送藥小車實物圖