團隊致力于編程一輛自主遙控車/玩具車,使其能夠沿車道行駛并在紅色停車標志處停下。
本項目所用物品
硬件組件
羅技 HD Pro 網絡攝像頭 x 1
樹莓派4B x 1
便攜式充電器 x 1
軟件應用與在線服務
OpenCV——開源計算機視覺庫
手工工具與制造設備
無繩電鉆/驅動器
銼刀
通用電烙鐵
項目背景
在本項目中,我們成功利用樹莓派的能力,結合速度編碼器和數模轉換器(DAC)進行運動控制,分別通過內核空間的gpiod驅動和Adafruit的I2C函數進行接口連接,從而創建了一輛能夠保持車道的遙控車。我們使用網絡攝像頭和OpenCV方法實現了車輛的車道保持能力,使車輛能夠通過PD控制熟練地檢測并自主跟隨車道標記。車輛保持在車道范圍內,在第一次看到紅色(即第一個停車標志)時停下,3秒后再次啟動,并在遇到第二個停車標志(第二次看到紅色)時永久停止。
本項目參考了用戶raja_961在AutoDesk Instructables上的項目:
“使用樹莓派和OpenCV的自主車道保持車”。Instructables。
網址:https://www.instructables.com/Autonomous-Lane-Keeping-Car-Using-Raspberry-Pi-and/
此外,我們還參考了此Hackster項目以指導我們的停車標志檢測邏輯。
https://www.hackster.io/beagle-bone-baja-blast/beagle-bone-baja-blast-eae48e

為了優化車道保持遙控車的性能,我們在攝像頭的分辨率上做出了戰略性決策。盡管原生分辨率為1280x720,但我們明智地將其降為176x144。這一調整在計算機視覺功能所需的細節與我們的樹莓派4的處理能力之間取得了平衡。選擇更高的分辨率會損害幀生成率,而幀生成率是實時響應性的關鍵因素。
我們通過實時數據分析過程精心指導了預定義比例增益(kp)和微分增益(kd)值的調優,該過程涉及比較程序期望的轉向角度與實際轉向角度,并將其與車輛PD控制前后的轉向值進行比較。由此,我們確定了給定的kp和kd值變化將在車輛的實際轉向中產生多大影響。在嘗試了各種比例增益值后,我們確定了kp = 0.08的最佳初始增益,以確保車輛對車道偏離做出準確響應。微分增益旨在抵消比例分量引起的振蕩,被設置為kd = 0.3 * kp。在反饋回路中同時使用這兩個分量,我們的代碼根據計算出的偏差動態調整轉向量。偏差計算為期望轉向角度與預定義角度(本例中為90度)之間的差值。
停車標志邏輯涉及停車標志檢測、第一個和第二個停車標志的處理以及計時。攝像頭每隔幾幀就會定期掃描紅色地面(模擬停車標志)。一旦檢測到第一個停車標志(通過攝像頭有限區域內存在一系列RGB值來表示),車輛將暫停計算出的3秒鐘。在此間隔后,車輛將平穩恢復速度。為了防止在第一個停車標志后立即檢查第二個停車標志,我們引入了故意延遲。這確保了第二個停車標志僅在定義的寬限期后才被考慮。一旦開始,檢測到第二個停車標志將促使車輛永久停止。這一復雜的邏輯增強了車輛對交通信號的響應性和遵守性。
以下圖表顯示了車輛在賽道上單次運行過程中誤差、轉向電壓和速度電壓隨時間(幀數)的變化:

聚焦于速度電壓值:

(圖表顯示,基于編碼器定時,速度電壓有非常微小的波動變化,這與我們的預期一致)
以下圖表顯示了車輛在賽道上單次運行過程中誤差、比例響應和微分響應隨時間(幀數)的變化:

聚焦于比例增益值:

-
RC
+關注
關注
0文章
236瀏覽量
49601 -
樹莓派
+關注
關注
121文章
1973瀏覽量
107169 -
自主駕駛
+關注
關注
0文章
19瀏覽量
4666
發布評論請先 登錄
樹莓派入門套裝
樹莓派怎么打造開心農場
樹莓派二代介紹_樹莓派二代 參數

樹莓派用什么語言編程_樹莓派python編程詳解
如何700元用樹莓派自己做一個相機?

用樹莓派與OpenMediaVault打造自己的NAS

車牌識別新花樣:樹莓派打造智能車牌監控系統!

使用 Betaflight 和樹莓派實現 FPV 無人機自主飛行!

評論