李旭 梁創(chuàng)烽 甘亞奇 鄭瀟偉
摘?要:當今社會,汽車的普及率越來越高,加上人工智能與機器學習的不斷發(fā)展,人工智能與汽車產(chǎn)業(yè)交叉形成了智能路面識別系統(tǒng)。本設計基于樹莓派微型處理器,設計了一種無人駕駛車控制系統(tǒng),通過樹莓派深度學習道路的圖像,從而可以輔助樹莓派控制的小車在道路上順暢的行進。道路輔助識別系統(tǒng)有利于人們安全出行、其后續(xù)發(fā)展對于車聯(lián)網(wǎng)也有巨大的奠定作用。
關(guān)鍵詞:無人駕駛;樹莓派;深度學習
1 前言
近年來,非智能化汽車的發(fā)展逐漸進入一個穩(wěn)定的狀態(tài),每家每戶都有車的愿景已經(jīng)基本實現(xiàn),汽車成了每個家庭必不可少的代步工具。隨著智能化社會的到來,汽車的智能化水平也在不斷地提高[1],不斷沖擊著人們對于傳統(tǒng)汽車的認識。此次設計的道路輔助識別系統(tǒng)作為無人駕駛方向的一種基本研究,隨著汽車的智能化發(fā)展將更加不可或缺。
2 系統(tǒng)設計
2.1 整體設計
本系統(tǒng)以樹莓派為控制核心,配合樹莓派攝像頭,完成道路數(shù)據(jù)采集操作以及行駛時的路況判斷操作,通過深度學習過的路面,可以在行進過程中不斷拍攝路面的狀況,從而判斷行進的操作,通過L298N電機驅(qū)動板控制電機驅(qū)動,從而可以操控小車的行進,總體結(jié)構(gòu)框圖如圖1所示。樹莓派具有工作穩(wěn)定、處理速度快、輕巧等特點,保證了小車行駛時的穩(wěn)定性和可靠性。
2.2 硬件設計
2.2.1 微型處理器選擇
現(xiàn)在流行的微型處理器主要有單片機和樹莓派,單片機在深度學習方面的能力基本沒有,而樹莓派依靠著python的支持,采用Python編寫,更加使其靈活度大大增加,相比于傳統(tǒng)面向過程的語言,面向?qū)ο蟮腜ython更加的靈活,庫也更多,在實現(xiàn)圖像識別方面也更加易用,其也可以進行深度學習。[2]樹莓派基于linux開發(fā),其系統(tǒng)更加成熟好用,3代有wifi模塊,性能更加強大,即只要插上顯示器鼠標鍵盤,約為一臺小型電腦,所以這里選擇了功能強大的樹莓派微型處理器。
2.2.2電機驅(qū)動板設計
樹莓派的GPIO單個引腳的最大輸出電流為16mA,同一時刻全部引腳的總輸出電流需要有一個限定值,即輸出電流不能超過50mA的限定值,而小車直流電機的空載電流就達到了355mA,此時僅憑樹莓派不能驅(qū)動電機,所以需要使用電機驅(qū)動板。本設計采用了L298N電機驅(qū)動板,此電機驅(qū)動板是一種內(nèi)部含兩個H橋的全橋式驅(qū)動器,并且具有高電壓以及大電流,接收標準TTL邏輯電平信號,可分別驅(qū)動前輪和后輪電機。此電機驅(qū)動板能接受來自使能端的樹莓派的信號,控制電機的通斷以及正反轉(zhuǎn),還可以通過向使能端輸入不同占空比的方波信號來調(diào)整電機轉(zhuǎn)速,即通過PWM波形方式調(diào)速。L298N為12V供電,因此用兩節(jié)干電池即可。
2.3 軟件設計
系統(tǒng)軟件設計主要包括小車識別道路思路設計、深度學習與卷積神經(jīng)網(wǎng)絡模塊設計等軟件模塊。軟件開發(fā)環(huán)境基于Python語言。
2.3.1小車識別道路思路設計
采集圖像的過程最重要的就是其真實性、正確性和可用性。而真實性的保障就是要保證采集到的是小車最終在路面上行進時進行判斷的數(shù)據(jù),而正確性的保障就是要求小車要按照正確的道路軌跡行駛拍攝照片,從而才能使學習的數(shù)據(jù)正確,最終達到可以識別道路的結(jié)果,而數(shù)據(jù)的可用性就是要靠圖像的處理分類及預處理來實現(xiàn),[3]而最終要使成為可以學習的數(shù)據(jù),就必須將其打包成數(shù)據(jù)集進行后面的學習。
2.3.2 深度學習與卷積神經(jīng)網(wǎng)絡模塊設計
深度學習與卷積神經(jīng)網(wǎng)絡模塊主要用到numpy、glob、sys、skleam、keras和 TensorFlow包。首先用np.zeros()語句初始化圖片數(shù)組和標簽數(shù)組,然后用glob.glob()語句加載訓練數(shù)據(jù),并用np.vstack()語句對圖片和標簽進行預處理,用np.mean()語句和np.var()語句求取均值和方差并輸出。然后對模型參數(shù)進行設置,并將打亂的數(shù)據(jù)抽取80%用來訓練,而用剩下的20%的數(shù)據(jù)用來測試。再用model = Sequential()語句設置模型為序貫模型,并用model.add()語句建立模型,本次設計的卷積神經(jīng)網(wǎng)絡包含1個輸入層、5個卷積層、4個全連接層和1個池化層。通過model.summary()語句可以輸出各層的參數(shù)狀況。建立完模型之后再訓練模型,在訓練模型時從Keras包引入ModelCheckpoint()、EarlyStopping()和TensorBoard()來進行參數(shù)設置[4]。
在實踐中,可以發(fā)現(xiàn)當?shù)拇螖?shù)超過一定數(shù)值時,模型反而出現(xiàn)過飽和的現(xiàn)象。而且短期的梯度下降可能只是得到了模型局部的最優(yōu)解而并非全局最優(yōu)解,所以在實驗過程中往往需要多次訓練調(diào)參才能滿足要求。訓練結(jié)束后再用model.saveo語句保存模型。
3結(jié)語
智能化的汽車無人駕駛是將來社會發(fā)展的必然趨勢,將深度學習無人技術(shù)運用到多種應用領域更是有著廣闊的發(fā)展空間。本文以樹莓派為主控芯片對于道路識別系統(tǒng)的小車的硬件和軟件進行了設計,采用樹莓派第三代芯片控制小車,具有穩(wěn)定性好,性能強大,支持機器學習等優(yōu)點,由于使用Python編程,使得編程更加方便,也更加益于拓展。本設計中便捷性的采集數(shù)據(jù)方式以及樹莓派攝像頭的多線程工作方式使得小車可以在軌道上識別路徑,運行穩(wěn)定,有非常強的抗干擾能力。
參考文獻
[1]方敏,張立新,于星勝.淺談智能網(wǎng)聯(lián)汽車的發(fā)展[J].內(nèi)燃機與配件,2020(14):184-185.
[2]朱永強,石炳明.基于樹莓派的車道保持小車系統(tǒng)設計[J].內(nèi)燃機與配件,2020(02):226-227.
[3]彭育輝,鄭瑋鴻,張劍鋒.基于深度學習的道路障礙物檢測方法[J/OL].計算機應用:1-8[2020-08-03].http://kns.cnki.net/kcms/detail/51.1307.TP.20200713.1417.028.html.
[4]呂云翔等.Python程序設計入門.北京:清華大學出版社.2018.
基金項目:廣西壯族自治區(qū)2020年大學生創(chuàng)新訓練區(qū)級立項“嵌入式自動駕駛小車”項目成果,項目編號:202010595151。
作者簡介:李旭,男,桂林電子科技大學計算機與信息安全學院本科2017級學生。