傳感器電路設計
延續(xù)往屆的傳感器方案,今年仍然采用了CCD作為傳感器,但采用了信號質(zhì)量更佳,黑白對比度更大的Sony系列CCD,當攝像頭安裝高度為30cm,俯角為30°時,其最大黑白電壓差可達到1V。
為了從CCD輸出的PAL制式信號中提取賽道信息,秉承硬件二值化的指導思想,將灰度圖像轉換成黑白圖像,由于普通I/O和PAC的操作速度要比A/D快,可提高分辨率和前瞻。通過硬件預處理提取賽道信息,目前有兩種主要途徑:微分邊緣檢測和閾值比較檢測。
微分邊緣檢測:通過數(shù)據(jù)采集程序效率的優(yōu)化,在總線頻率24MHz條件下可以準確捕獲寬度1.5ms的黑線信號。并可以達到1200多的行分辨率和很高的中心解析精度。在直道上,由于遠處的黑白之間的電壓差較小,遠處的賽道信息提取不到,得到的預處理圖像是不可信的。另外,在近處也經(jīng)常發(fā)生丟失賽道邊緣的情況。
數(shù)字閾值比較檢測 :利用快速A/D采集CCD信號,MCU輸出信號作為閾值與快速A/D得到的信號通過數(shù)字比較器得到二值化信息。 這個電路的優(yōu)勢在于可以通過MCU輸出不同的閾值從而得到良好的信噪比,另外,快速A/D得到的信號可以輸入給單片機,硬件預處理效果不佳的時候可以切換到片外A/D模式,使算法更加靈活。但由于單片機的計算能力有限,切換到片外A/D模式之后數(shù)據(jù)量過大,最終沒有采取這種方案。
模擬閾值比較檢測 :模擬閾值比較檢測與上述數(shù)字閾值比較檢測原理相似,只是用D/A輸出閾值與CCD輸出信號進行比較得出賽道信息。該方案可以達到3m的直線前瞻,1.5m的彎道前瞻,但該方案最大的缺點就是受光線的影響較大,如果不事先適應場地光照條件,信號質(zhì)量難以保證。
最終我們采取了第三種方案,圖1是最終版本的模擬閾值比較電路,利用LM1881芯片獲得行同步信號和場同步信號使單片機(MCU)與CCD保持同步,采集每行的邊沿信息得到賽道信息。
電源系統(tǒng)設計
由于CCD需要12V供電,而且CCD供電電壓過高容易使CCD發(fā)熱,雖然短時間內(nèi)信號質(zhì)量將提高,但長時間會使CCD輸出信號質(zhì)量下降,而CCD供電電壓過低會使CCD信號質(zhì)量降低。為了保證CCD的正常供電,12V電路較為復雜且占用電路板空間較大,如圖2。
其他部分電路
采用LED、按鍵及無線發(fā)送模塊開發(fā)的人機界面,提高了調(diào)試效率。 使用片外FLASH存儲賽道信息,由于高存儲速率得到了廣泛應用。但FLASH每頁的存儲量有限,大容量的數(shù)組需要分割開之后分頁存儲,這會導致程序超時。電機驅(qū)動采用遙控車用電子調(diào)速器作為驅(qū)動芯片,加速能力強但控制較為復雜,反轉控制延時過長,需要3個控制周期。 速度傳感器采用歐姆龍光電編碼器,檢測精度高,360線,最高轉速可達4000rpm。
智能車軟件設計方案
圖像方面,由于硬件做了二值化處理,單片機得到的賽道信息少而精準,使得圖像處理程序變得簡練。由于單片機運行時間和存儲空間的限制,我們將賽道信息以鏈表的形式進行存貯。該方法的優(yōu)點是速度快、占用的存儲空間很少,缺點是數(shù)據(jù)查找較為困難,并且難以利用賽道垂直方向的信息。
預處理
在進行圖像處理的過程中,我們首先對每行賽道的信息進行預處理,根據(jù)賽道位置和寬度的信息將賽道進行過濾,找到符合要求的賽道位置,并且將這些位置進行存貯,存貯形式同樣為鏈表。接下來圖像處理的信息就是預處理得到的這些賽道片段。建立有效片段起始行在得到的預處理賽道信息中首先要找到能夠建立賽道的每一段的起始位置。
具體的判斷依據(jù): 第一個起始片段是連續(xù)三行賽道中只有唯一滿足寬度限制的賽道片段,這些賽道片段滿足二階連續(xù)性。其余的起始片段是滿足以上兩個條件并且滿足起始片段前的一行不滿足起始片段的條件。
在找到的起始片段的基礎上進行賽道生長,繼續(xù)判斷如果下一行賽道存在預處理得到的有用信息,再進行以下判斷:預處理出的黑線片段是否滿足嚴格一些的寬度條件限制 ;黑線中心是否滿足一階連續(xù)性;黑線中心是否滿足二階連續(xù)性。是則將賽道標志置位,將賽道中心信息記錄,否則將賽道標志置零。
在生長之后的賽道間進行賽道修補,尋找每段生長之后的賽道的起始行與結束行,判斷上一段賽道結束行與下一段賽道起始行之間的距離是否超出閾值。沒有超出閾值則進行修補,如果修補上賽道則記錄賽道中心位置信息,并將修補段賽道的標志置位;否則將賽道標志置零。經(jīng)過圖像處理基本上能夠充分得到賽道的有用信息。經(jīng)過后期對圖像處理中閾值的調(diào)整基本上解決了誤識別雜點的問題。
賽道元素判斷
這一屆智能車加入了收緊彎元素,由于CCD路徑上可能存在的內(nèi)切特性,導致了在收緊彎部分可能出現(xiàn)車子壓出賽道的情況,導致比賽失敗。這一元素的出現(xiàn)迫使我們必須在進入收緊彎之前識別出來用于提示的三角形,并且將策略進行相應的變化。CCD有很大的特點就是圖像會產(chǎn)生畸變,導致三角形的特點變得不明顯。并且三角形之前的坎也會使得賽道信息變得無效,增加了識別三角形的難度。針對這一特點,我們采集了大量圖像,并且進行分析,找到了能夠較為穩(wěn)定的識別三角形的方法。
1.從上一行道路點開始向兩邊,在一定寬度內(nèi)找邊沿,這樣可以避免賽道邊緣的影響。
2.根據(jù)需要,可以做一下圖像的梯形校正。需不需要梯形校正,應該根據(jù)實際情況判斷。
3.三角形的判別是在每個周期都要執(zhí)行的,需要存儲前幾行的數(shù)據(jù),可以通過設計良好的流程來盡量避免識別三角算法中的重復工作。
4.對于圖像失真,可能的處理方法如下: 三角形底邊寬度與道路寬度相比有突變,而三角形尖端的寬度與道路寬度是連續(xù)變化的,根據(jù)這個特征設計算法。正三角形:如果發(fā)現(xiàn)寬度突變,那么懷疑可能是正三角;以后判斷邊線的連續(xù)性,直到寬度由大到小,最終與道路連接,且寬度由大到小變化的行數(shù)足夠多,則可以判斷出遇到正三角。倒三角形:如果發(fā)現(xiàn)從道路點開始,一定行數(shù)內(nèi)寬度由小到大,并且在最終出現(xiàn)寬度突變,則判斷出遇到倒三角。
另一個必須識別出來的元素是終點線。最初的圖像識別方法是判斷賽道黑線與白線的寬度,如果滿足以下條件則認為是終點線: 如果連續(xù)兩行出現(xiàn)多于一個的黑色片段,進行賽道的尋找。 找到是賽道的黑色片段之后判斷左右相鄰的黑色片段是否滿足終點線黑線寬度的要求。 判斷黑線之間的白線是否滿足寬度標準。 如果滿足以上三個條件則認為是終點線。[!--empirenews.page--]
控制算法
CCD相對來說有兩個優(yōu)勢,一是前瞻遠,二是可以一次得到一段賽道的信息從而進行整幀策略的制定。所以控制算法上一定要利用起來整幀賽道的信息,才能夠出現(xiàn)優(yōu)化賽道的效果。我們的整體控制思想是分段進行賽道中點的線性擬合。由于我們的前瞻較遠所以遠處圖像有些不可靠,所以使用最遠有效點以下的5~10行進行擬合。實驗結果是車子能夠較好的切內(nèi)彎,并且在連續(xù)彎道上能夠穩(wěn)住車身。缺點是車子控制上不是很穩(wěn)定,總是太過于切內(nèi)彎而沖出賽道。于是我們又加入了一條對賽道位置進行積分的控制線對控制進行限制,實驗結果較好。