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

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

聚焦于速度電壓值:

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

聚焦于比例增益值:

-
RC
+關(guān)注
關(guān)注
0文章
236瀏覽量
49761 -
樹(shù)莓派
+關(guān)注
關(guān)注
121文章
2024瀏覽量
107580 -
自主駕駛
+關(guān)注
關(guān)注
0文章
19瀏覽量
4678
發(fā)布評(píng)論請(qǐng)先 登錄
樹(shù)莓派入門(mén)套裝
樹(shù)莓派怎么打造開(kāi)心農(nóng)場(chǎng)
樹(shù)莓派智能車(chē)AlphaBot系列教程
樹(shù)莓派+nodejs之打造物聯(lián)網(wǎng)圖傳控制履帶車(chē)
樹(shù)莓派二代介紹_樹(shù)莓派二代 參數(shù)

樹(shù)莓派用什么語(yǔ)言編程_樹(shù)莓派python編程詳解
樹(shù)莓派怎么用
如何700元用樹(shù)莓派自己做一個(gè)相機(jī)?

使用樹(shù)莓派的避障車(chē)

用樹(shù)莓派與OpenMediaVault打造自己的NAS

全網(wǎng)瘋傳!樹(shù)莓派GUI開(kāi)發(fā)竟然可以這么輕量?

樹(shù)莓派也能實(shí)現(xiàn)海上自動(dòng)化駕駛?

車(chē)牌識(shí)別新花樣:樹(shù)莓派打造智能車(chē)牌監(jiān)控系統(tǒng)!

使用 Betaflight 和樹(shù)莓派實(shí)現(xiàn) FPV 無(wú)人機(jī)自主飛行!

評(píng)論