朱永強(qiáng) 石炳明
摘要:車道保持是基于各種傳感器,當(dāng)車輛接近識(shí)別到的標(biāo)記線而且可能脫離行駛車道時(shí),發(fā)出警報(bào)或者進(jìn)行控制的系統(tǒng),在無(wú)人駕駛過(guò)程中,是非常重要的環(huán)節(jié)。本文基于樹(shù)莓派3B+,利用攝像頭設(shè)計(jì)搭建了智能小車,用Python語(yǔ)言編寫(xiě)了車道保持算法。實(shí)驗(yàn)表明,該小車系統(tǒng)可以完成在規(guī)定賽道內(nèi)保持車道行駛,具有較好的響應(yīng)。
關(guān)鍵詞:攝像頭;樹(shù)莓派;車道保持;Python
0? 引言
隨著無(wú)人駕駛技術(shù)的成熟,車道保持系統(tǒng)也發(fā)揮著越來(lái)越重要的作用。車道保持系統(tǒng)可以使車輛維持在正確既定的道路上,保證駕駛的安全性[1]。樹(shù)莓派是一款基于Debim Linux系統(tǒng)的嵌入式計(jì)算機(jī),具有體積小,集成化程度高,擴(kuò)展性強(qiáng),易于上手的優(yōu)點(diǎn)[2],非常適合作為智能小車的主控板實(shí)現(xiàn)智能控制的功能。本文基于樹(shù)莓派3B+,完成小車在規(guī)定賽道內(nèi)的自動(dòng)車道保持行駛。
1? 硬件搭建
小車系統(tǒng)主要包括底盤(pán)系統(tǒng),控制系統(tǒng),攝像頭,電源。其中底盤(pán)系統(tǒng)包括4個(gè)輪子,4個(gè)電機(jī)以及底盤(pán)支架;控制系統(tǒng)包括主控板樹(shù)莓派3B+以及雙路直流電機(jī)驅(qū)動(dòng)板模塊L298N;電源包括移動(dòng)電源和四節(jié)干電池組成的6V電源。如圖1所示。
其中攝像頭獲取賽道信息,通過(guò)USB接口將信息傳輸?shù)綐?shù)莓派里,樹(shù)莓派里已經(jīng)編寫(xiě)燒錄好的程序會(huì)根據(jù)收到的當(dāng)前賽道信息,計(jì)算得出小車的轉(zhuǎn)向參數(shù),并將信號(hào)傳輸給直流電機(jī)驅(qū)動(dòng)板模塊L298N,L298N根據(jù)模塊的輸入輸出規(guī)則,控制電機(jī)的轉(zhuǎn)動(dòng)。
本文實(shí)驗(yàn)電機(jī)驅(qū)動(dòng)采用PWM值驅(qū)動(dòng),PWM值在[0,100]范圍內(nèi),PWM值越接近100,電機(jī)轉(zhuǎn)速越快。而該電機(jī)驅(qū)動(dòng)模塊L298N是雙路驅(qū)動(dòng)模塊,所以只能驅(qū)動(dòng)兩個(gè)電機(jī)。在本文實(shí)驗(yàn)中,將同側(cè)的兩個(gè)電機(jī)串聯(lián)在一起,接收同一個(gè)信號(hào)。當(dāng)L298N輸出的兩路信號(hào)相同,則小車實(shí)現(xiàn)向前直線行駛或向后直線行駛;當(dāng)L298N輸出的兩路信號(hào)不同,則小車左右輪轉(zhuǎn)速不同從而實(shí)現(xiàn)差速轉(zhuǎn)向功能。小車具體轉(zhuǎn)向角的大小由左右輪差速大小決定。
2? 算法介紹
本文使用Python語(yǔ)言基于OpenCV模塊編寫(xiě)車道保持算法。算法流程如圖2所示。
該算法中,對(duì)攝像頭獲取的圖像單取第240行像素,即把攝像頭當(dāng)作線陣攝像頭使用,在經(jīng)過(guò)灰度化和二值化處理后,第400行像素只有白色點(diǎn)和黑色點(diǎn),像素值分別為255和0。本實(shí)驗(yàn)賽道是在白色地面上鋪上黑色賽道線,所以當(dāng)檢測(cè)到像素值0時(shí),即檢測(cè)到了賽道。對(duì)于雙車道線來(lái)說(shuō),會(huì)有四次黑白像素值的跳變,四次跳變位置的中點(diǎn)即賽道的中點(diǎn)。小車攝像投的拍攝像素是640*480,所以圖像的中點(diǎn)位置即320,當(dāng)攝像頭安裝在小車正中央時(shí),小車的位置即為320。則賽道的中點(diǎn)位置與320的偏差,即小車與賽道中點(diǎn)的偏差。
當(dāng)偏差過(guò)大時(shí),說(shuō)明小車可能即將脫離賽道,此時(shí)小車停止;當(dāng)偏差較小時(shí),為保持小車行駛的穩(wěn)定性,使小車?yán)^續(xù)直線行駛;當(dāng)偏差在一定范圍內(nèi)時(shí),小車需要轉(zhuǎn)向,基于偏差越大,轉(zhuǎn)向角越大的經(jīng)驗(yàn),偏差值與ΔPWM之間近似存在線性關(guān)系。由于本實(shí)驗(yàn)中,小車轉(zhuǎn)向的偏差值范圍為[100,320],ΔPWM的范圍為[30,100],所以有如下關(guān)系:
為防止轉(zhuǎn)彎時(shí)左右輪轉(zhuǎn)速變化較大,本文選擇的PWM差值分配方法是讓一個(gè)輪子速度不變,另一個(gè)輪子加上PWM差值[3]。當(dāng)小車左轉(zhuǎn)時(shí),右輪加上ΔPWM;當(dāng)小車右轉(zhuǎn)時(shí),左輪加上ΔPWM。
3? 實(shí)驗(yàn)驗(yàn)證
為了驗(yàn)證算法的有效性,本文進(jìn)行了小車在封閉雙車道線的實(shí)物實(shí)驗(yàn)。在實(shí)驗(yàn)過(guò)程中,通過(guò)調(diào)試選取的像素值的行數(shù)與小車攝像頭的俯仰角,最后完成了小車的車道保持功能。最終選取的像素為第400行像素,通過(guò)調(diào)試分析,選取較遠(yuǎn)的像素會(huì)導(dǎo)致小車響應(yīng)超前,造成提前轉(zhuǎn)彎;選取過(guò)近的像素會(huì)導(dǎo)致小策劃震蕩劇烈。選取一段視頻,利用Tracker軟件和Matlab繪制軌跡如圖3所示。
參考文獻(xiàn):
[1]張海林,羅禹貢,江青云,李克強(qiáng).基于電動(dòng)助力轉(zhuǎn)向的車道保持系統(tǒng)[J].汽車工程,2013,35(06):526531,525.
[2]石子昊,夏佳寧.基于樹(shù)莓派和Python的智能家居控制系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)產(chǎn)品與流通,2019(12):120.
[3]劉漢忠,俞鵬,謝秦韜.基于CCD的循跡機(jī)器人小車模糊控制方法研究與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2019,42(09):95-97,102.