劉杰 蔣沁宏
采用arduino模塊和openMV模塊采集通過紅色濾光片后的顏色,找到紅色信標(biāo)燈并采用PID算法對賽車行進(jìn)的方向、速度進(jìn)行控制,使賽車能快、穩(wěn)、準(zhǔn)的通過車身的磁鐵切割信標(biāo)燈圓盤底座上的線圈將信標(biāo)燈滅掉。同時采用紅外傳感器避障,避免賽車在行駛過程中撞燈或撞墻。測試結(jié)果表明,攝像頭openMV能實(shí)時準(zhǔn)確的給核心板傳輸數(shù)據(jù),使賽車能準(zhǔn)確的熄滅信標(biāo)燈。
【關(guān)鍵詞】Arduino openMV攝像頭 紅外避障L298N驅(qū)動 PID控制 濾光片
隨著現(xiàn)代科技的進(jìn)步和人工智能的飛速發(fā)展,自動控制的應(yīng)用已經(jīng)越來越廣泛,競賽車在現(xiàn)目前是比較熱門的話題,也出現(xiàn)了很多智能賽車的競賽,競賽為智能賽車領(lǐng)域培養(yǎng)了大量的人才,為大學(xué)生提供了充分展示創(chuàng)造力和想象力的舞臺,也吸引著越來越多來自不同專業(yè)的大學(xué)生參與其中。智能“尋的”賽車是多種賽車的一類,其目的是在12個紅色信標(biāo)燈被隨機(jī)點(diǎn)亮某一個后,賽車能準(zhǔn)確找到點(diǎn)亮的信標(biāo)燈并將其熄滅。本設(shè)計系統(tǒng)涉及車模機(jī)械結(jié)構(gòu)、主控電路、紅外傳感器電路、攝像頭圖像處理、電機(jī)驅(qū)動控制以及PID算法實(shí)現(xiàn)智能“尋的”和滅燈功能。
1 硬件設(shè)計
本設(shè)計系統(tǒng)主要由攝像頭圖像采集模塊、主控電路模塊、紅外避障模塊、電機(jī)驅(qū)動模塊、電源模塊以及車模組成,硬件電路如圖1所示。攝像頭圖像采集模塊采用OpenMV攝像頭模塊,它是一個開源,低成本,功能強(qiáng)大的CMOS圖像采集模塊。以STM32F427CPU為核心,集成OV7725攝像頭芯片,用C語言高效地實(shí)現(xiàn)了核心算法,提供Python編程接口,高效率,低功耗。主控電路模塊采用Ardumo,它是一款便捷靈活、以C語言為編程環(huán)境,方便上手的開源電子原型平臺。紅外避障模塊采用E18-D80NK紅外對管,檢測距離遠(yuǎn),穩(wěn)定性高。驅(qū)動電機(jī)模塊采用L298N驅(qū)動,它是一種雙H橋電機(jī)驅(qū)動,可以方便的驅(qū)動兩個直流電機(jī)和接受單片機(jī)控制;電源模塊采用12V輸出的航模電池供電;在找到信標(biāo)燈后,通過賽車的本身速度帶動車身上磁鐵切割信標(biāo)燈圓盤底座的線圈將信標(biāo)燈熄滅。
2 軟件設(shè)計
程序設(shè)計主要分為三個模塊,對圖像采集輸出的數(shù)據(jù)處理,對障礙物的檢測,PID算法對賽車的速度方向的控制。具體軟件設(shè)計原理圖如圖2所示。
(1)采用python設(shè)計語言進(jìn)行算法設(shè)計,在賽車行進(jìn)過程中對透過紅色濾光片的攝像頭中的顏色進(jìn)行數(shù)據(jù)采集,并與預(yù)先采集好的標(biāo)準(zhǔn)紅色信標(biāo)燈的顏色數(shù)據(jù)進(jìn)行對比,如果采集數(shù)據(jù)和預(yù)置值相同,返回給主控板當(dāng)前數(shù)據(jù)值,如果采集數(shù)據(jù)和預(yù)置值不同,返回給主控板零值,同時計算采集到的信標(biāo)燈圖像面積值并返回給主控板,采用620nm紅色濾光片是為避免其他光的干擾;
(2)采用C語言進(jìn)行程序設(shè)計,讀取紅外避障模塊的輸出值,當(dāng)檢測到障礙物時,對應(yīng)紅外模塊輸出值為1,若沒有檢測到障礙物,對應(yīng)模塊輸出值為0,在賽車行進(jìn)過程中,如果檢測到障礙物,控制賽車減速后退并右轉(zhuǎn)后繼續(xù)尋找信標(biāo)燈;
(3)系統(tǒng)采用閉環(huán)控制,編碼器采集實(shí)際速度值進(jìn)行反饋控制,以增量式PID進(jìn)行速度調(diào)節(jié),最終實(shí)現(xiàn)賽車按照規(guī)劃路徑穩(wěn)、準(zhǔn)、快的到達(dá)目的地。主控板arduino對攝像頭采集的數(shù)據(jù)進(jìn)行處理,如果接收的數(shù)據(jù)值在標(biāo)準(zhǔn)紅色信標(biāo)燈閾值范圍內(nèi),控制賽車加速直行,并判斷攝像頭圖像采集返回的面積值,當(dāng)面積值達(dá)到一定值后,說明賽車靠近信標(biāo)燈,此時控制賽車減速直行;如果接收到零值,控制賽車原地旋轉(zhuǎn)半圈后直行1s,再次判斷攝像頭返回值,直到紅色信標(biāo)燈出現(xiàn)在攝像頭視野范圍內(nèi)。在找到信標(biāo)燈后,通過賽車的本身速度帶動車身上磁鐵切割信標(biāo)燈圓盤底座的線圈將信標(biāo)燈熄滅。
3 測試結(jié)果
半個羽毛球場地中,12個信標(biāo)燈隨機(jī)點(diǎn)亮,賽車從中心位置出發(fā),能準(zhǔn)確快速的找到被點(diǎn)亮的信標(biāo)燈,并將其熄滅,同時能有效避開行進(jìn)過程中遇到的障礙物。
4 結(jié)論
本文所設(shè)計的基于openMV攝像頭和arduino的智能“尋的”賽車的系統(tǒng)方案,攝像頭采集通過620nm紅色濾光片后的圖像,通過返回信標(biāo)燈位置參數(shù)以及信標(biāo)燈當(dāng)前面積值,能夠成功實(shí)現(xiàn)信標(biāo)燈的快速尋找以及障礙物的避讓。該方案仍存在一些不足的地方,但賽車尋找信標(biāo)燈的準(zhǔn)確率更高,速度也更快,同時能很好的避開障礙物。
參考文獻(xiàn)
[1]胡壽松,自動控制原理[M],北京:科學(xué)出版社,2009.
[2]張宏建,自動檢測技術(shù)與裝置[M].北京:化學(xué)工業(yè)出版社,2004.
[3]崔才豪,張玉華,楊樹財.利用Arduino控制板的光引導(dǎo)運(yùn)動小車設(shè)計[J].自動化儀表,2001,32 (09):5-7.