朱永強 石炳明





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