2021-08-23 11:09:05 索煒達電子 708
項目編號:E481
文件大?。?6K
源碼說明:帶中文注釋
開發(fā)環(huán)境:Python
簡要概述:
小車使用arduino,樹莓派等硬件模塊,采用攝像頭,并使用MLP神經網進行路徑識別的自動駕駛。
主要設計方法如下,先用arduino、樹莓派和攝像頭等模塊搭建小車。再用樹莓派攝像頭采集到的圖片通過局域網發(fā)送到上位機。上位機保存圖像,處理后得到訓練集。接著,在電腦上訓練mlp神經網絡模型。得到模型后,運行自動駕駛程序,攝像頭捕獲圖片,上位機接收圖像,加載訓練模型,解算圖像得出控制參數,通過藍牙發(fā)送給arduino,控制小車。
小車以arduino和樹莓派為核心,并搭載有攝像頭感器模塊,藍牙等硬件模塊作為下位機的硬件部分,用PC機端相關程序為作為上位機。 Arduino 主要用于負責小車的運動控制,通過串口接收來自PC上位機所發(fā)來的控制信息,樹莓派主要負責圖像的接收和發(fā)送,還有與上位機間的信息傳遞,樹莓派與上位機之間通過無線局域網絡進行連接。PC機主要負責接收樹莓派傳來的圖像數據,并利用PC機對神經網絡進行訓練,預測小車的運動方向并返回給Arduino。
小車在搭建使用的硬件模塊清單如下:
樹莓派3b+,
樹莓派原裝攝像頭,
包含電機的小車車體,
L298N電機驅動模塊,
arduino uno R3開發(fā)版,
HC05藍牙模塊。
在小車硬件環(huán)境搭建好后,需要完成arduino驅動程序和樹莓派端的數據采集與發(fā)送程序的編寫。小車arduino的驅動程序fourlun.ino,樹莓派上的程序stream_client.py,收集訓練數據獲取數據集該模塊的功能是在PC機上收集樹莓派端傳輸的圖像以作為訓練數據并形成數據集的功能。收集的數據應該是我們提前布置好的實驗場景下的跑道圖片,為了使特征明顯,采用在深色地面上用白紙鋪設跑道的方法。在采集數據的過程中,要保證樹莓派和上位機連在同一個網段下。 240*320分別運行下面兩個代碼在上位機端和樹莓派端。收集訓練數據制作數據集的代碼路徑如下:上位機端運行的代碼:collect_training_data3.py 樹莓派端運行的代碼:stream_client.py運行訓練算法模型的程序,我們就可以將MLP模型通過搜集好的訓練數據,在上位機上訓練了,執(zhí)行訓練程序后,就可以完成訓練,得到參數模型了。訓練模型的代碼mlp_training.py 訓練之后,就可以得到mlp在我們獲取的數據集的參數模型了。參數模型的保存路徑為:mlp_xml/ 將模型應用到我們的布置的實驗場景下,就可以實現(xiàn)小車自動駕駛功能了。將小車放在預先鋪設跑道好的實驗環(huán)境下,并保證樹莓派和上位機連接在同一個局域網下,具體的連接方法為:分別運行下面兩個代碼在上位機端和樹莓派端。上位機端運行的程序rC_driver.py 樹莓派端運行程序為: stream_client.py
目錄│文件列表:
└ Self-DrivingCar_MLP_RaspberryPi
│ collect_training_data3.py
│ collect_train_data3.ipynb
│ mlp_training.py
│ rc_driver.py
│ rc_driver_pc.ipynb
│ trainning_car.ipynb
├ fourlun
│ └ fourlun.ino
├ pi
│ └ stream_client.py