• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于OpenMV的智能跟蹤小車設(shè)計(jì)

      2019-08-29 08:03:26
      計(jì)算機(jī)測量與控制 2019年8期
      關(guān)鍵詞:障礙物小車二維碼

      (西南科技大學(xué) 信息工程學(xué)院,四川 綿陽 621000)

      0 引言

      智能車具有自主性、交互性、適應(yīng)性等特征,它融合了人工智能、自動(dòng)控制、數(shù)字圖像處理、機(jī)械設(shè)計(jì)、信息傳輸?shù)榷鄠€(gè)專業(yè)領(lǐng)域的先進(jìn)研究成果[1]。而視覺系統(tǒng)作為智能車的“眼睛”,綜合了圖像處理、模式識(shí)別等相關(guān)領(lǐng)域的知識(shí),使小車在各種復(fù)雜環(huán)境下都能快速而準(zhǔn)確地尋找到目標(biāo)。

      近年來,隨著人工智能、計(jì)算機(jī)視覺等技術(shù)的快速發(fā)展,基于視覺跟蹤的智能車在物流運(yùn)輸、科學(xué)勘察、生活服務(wù)等領(lǐng)域得到了廣泛的應(yīng)用[2]。同時(shí),智能跟蹤小車的跟蹤效果、避障能力、智能程度、運(yùn)輸能力等也受到了人們的高度重視。因此,研究運(yùn)動(dòng)目標(biāo)的檢測和跟蹤具有極為重要的理論意義和現(xiàn)實(shí)價(jià)值[3]。

      目前市面上出現(xiàn)的智能跟蹤小車普遍存在兩種問題:一是小車只有固定的行駛路徑,智能化程度較低;二是只適合在一些比較空闊且平坦的場所進(jìn)行作業(yè),避障和適應(yīng)能力較差。而本設(shè)計(jì)的智能跟蹤小車以單片機(jī)為核心,通過視覺模塊完成對二維碼的采集和處理[4],保證了對標(biāo)記物的精準(zhǔn)鎖定,并借助超聲波測距模塊輔助完成跟蹤和道路勘測任務(wù),從而實(shí)現(xiàn)小車實(shí)時(shí)跟蹤和自主避障的功能。

      1 系統(tǒng)結(jié)構(gòu)及原理

      智能跟蹤小車選用Arduino作為主控制器,外圍設(shè)備包括視覺模塊OpenMV、超聲波模塊、電機(jī)驅(qū)動(dòng)模塊、電機(jī)與舵機(jī)模塊等,另外還包括12 V航模電池和12 V轉(zhuǎn)5 V的穩(wěn)壓模塊。電機(jī)驅(qū)動(dòng)模塊由航模電池直接供電,而單片機(jī)的供電則需要將12 V通過穩(wěn)壓模塊降到5 V。系統(tǒng)設(shè)計(jì)如圖1所示。

      圖1 系統(tǒng)設(shè)計(jì)框圖

      小車在一個(gè)完整的智能跟蹤過程中主要完成以下兩項(xiàng)任務(wù)。

      首先,鎖定標(biāo)記物。利用視覺模塊采集二維碼圖像,并發(fā)送二維碼坐標(biāo)給單片機(jī),單片機(jī)根據(jù)位置信息調(diào)節(jié)舵機(jī)轉(zhuǎn)向,使小車正對標(biāo)記物,完成對標(biāo)記物的鎖定。

      然后,跟蹤標(biāo)記物。無障礙物時(shí),超聲波模塊實(shí)時(shí)測量小車與標(biāo)記物的距離并發(fā)送給單片機(jī),單片機(jī)收到距離數(shù)據(jù)后及時(shí)進(jìn)行處理,并通過PID控制算法調(diào)節(jié)電機(jī)速度,保證小車對標(biāo)記物的實(shí)時(shí)跟蹤。當(dāng)有障礙物阻擋在小車與標(biāo)記物之間時(shí),由于單片機(jī)檢測到超聲波測量的距離發(fā)生突變,因此判斷小車前方出現(xiàn)障礙,此時(shí)單片機(jī)通過調(diào)節(jié)電機(jī)舵機(jī)使小車避開障礙物,然后重新跟蹤標(biāo)記物。

      2 系統(tǒng)硬件設(shè)計(jì)

      2.1 車身設(shè)計(jì)

      智能跟蹤小車為了適用于各種場所運(yùn)輸物品,所以對車身的穩(wěn)定性要求較高。小車在工作時(shí)需要保證車體的平衡能力,使其重量平均分布,重心盡量居中,以此避免在崎嶇路面行駛時(shí)發(fā)生側(cè)翻的情況,因此采用輪式移動(dòng)結(jié)構(gòu)[5]。4個(gè)獨(dú)立的驅(qū)動(dòng)輪在各自驅(qū)動(dòng)電機(jī)的驅(qū)動(dòng)下能夠在目標(biāo)環(huán)境中作全方位的移動(dòng),可以在目標(biāo)區(qū)域中完成前、后行駛、轉(zhuǎn)彎以及爬坡動(dòng)作、下坡運(yùn)動(dòng)等[5]。小車車身如圖2所示。

      圖2 小車車身圖

      2.2 主控模塊

      主控制器采用Arduino。Arduino具有開發(fā)簡單清晰、擴(kuò)展模塊強(qiáng)大、開源性強(qiáng)等特點(diǎn)。無需掌握其硬件結(jié)構(gòu)和軟件底層原理就可輕松使用各種模塊,并且支持跨平臺(tái)開發(fā),因此應(yīng)用十分廣泛。本設(shè)計(jì)需要用Arduino的串口通信接收視覺模塊和超聲波測距模塊傳送來的數(shù)據(jù),輸出PWM控制電機(jī)和舵機(jī)等。

      2.3 視覺模塊

      視覺模塊采用機(jī)器視覺開發(fā)組件OpenMV。在進(jìn)行開發(fā)時(shí),可直接使用Python語言在OpenMV IDE上編程調(diào)用圖像處理相關(guān)算法和Python庫[6]。OpenMV最高像素可達(dá)30萬[6],由于只有OpenMV3及以上版本才能識(shí)別二維碼,所以本設(shè)計(jì)采用OpenMV系列的OpenMV3。

      2.4 超聲波模塊

      超聲波測距模塊采用HC-SR04。其具體工作過程為:I/O口Trig觸發(fā)測距,若有信號(hào)返回,則I/O口Echo輸出一個(gè)高電平,高電平持續(xù)的時(shí)間為測距時(shí)間,從而可算出小車距障礙物的距離s=高電平時(shí)間/2*聲速。

      2.5 電機(jī)驅(qū)動(dòng)模塊

      小車驅(qū)動(dòng)模塊采用A4950全橋式DMOS PWM電動(dòng)機(jī)驅(qū)動(dòng)器,直流電動(dòng)機(jī)的速度通過脈寬調(diào)制PWM來控制。此模塊可以控制2個(gè)電機(jī)正反轉(zhuǎn),4個(gè)PWM引腳就可以控制小車的前進(jìn)與后退,同時(shí)其使用方法比L298N更簡單,性能比TB6612更強(qiáng)。

      2.6 電源模塊

      電源模塊包括12 V航模電池和穩(wěn)壓模塊。航模電池供電電壓穩(wěn)定,使用廣泛。電機(jī)驅(qū)動(dòng)模塊可由航模電池直接供電,而單片機(jī)以及其他模塊的供電范圍在4.25 V到6 V左右,因此必須采用12 V轉(zhuǎn)5 V的電源穩(wěn)壓模塊實(shí)現(xiàn)降壓。

      穩(wěn)壓模塊是一個(gè)模擬電路構(gòu)成的集成塊,結(jié)構(gòu)復(fù)雜,穩(wěn)壓能力比穩(wěn)壓管強(qiáng),穩(wěn)壓范圍更小,精度更高。

      3 系統(tǒng)軟件設(shè)計(jì)

      3.1 軟件總體設(shè)計(jì)

      軟件總體設(shè)計(jì)主流程圖如下圖3所示。首先進(jìn)行所有設(shè)備的初始化,分配資源。然后視覺模塊開始掃描,獲取周圍環(huán)境中的二維碼圖像,并將獲取的二維碼進(jìn)行圖像處理和解碼信息判斷,若判斷為目標(biāo),則將數(shù)據(jù)發(fā)送給單片機(jī),目標(biāo)鎖定完成,開始跟蹤。在跟蹤過程中,超聲波測距模塊實(shí)時(shí)測量小車與標(biāo)記物的距離,同時(shí)調(diào)整舵機(jī)轉(zhuǎn)向和電機(jī)速度,使小車能保持一定距離緊隨標(biāo)記物之后。

      當(dāng)超聲波模塊測量的距離發(fā)生突變時(shí),則表示有障礙物出現(xiàn),開始避障。與跟蹤不同的是,此時(shí)超聲波所測距離變?yōu)樾≤嚺c障礙物的距離。為了規(guī)避障礙,單片機(jī)控制舵機(jī)方向使小車左右偏轉(zhuǎn),并使電機(jī)減速,若小車與障礙物的距離又發(fā)生突變且攝像頭能掃描到二維碼,則避障結(jié)束,繼續(xù)跟蹤,否則小車?yán)^續(xù)左右偏轉(zhuǎn)直至避開障礙物。

      圖3 軟件總體設(shè)計(jì)主流程圖

      3.2 二維碼識(shí)別與解碼

      本設(shè)計(jì)在OpenMV視覺模塊基礎(chǔ)上,使用OpenMV IDE軟件和OpenCV庫完成圖像處理。OpenCV庫提供的許多常用視覺識(shí)別算法也為開發(fā)降低了難度[7]。

      視覺模塊在掃描二維碼時(shí),同時(shí)也掃描到了周圍環(huán)境中的圖像,為了更快地從圖像中提取二維碼,需先對所有圖像進(jìn)行圖像預(yù)處理。圖像預(yù)處理的主要目的就是消除圖像中噪聲信息,增強(qiáng)有用信息。預(yù)處理包括:導(dǎo)入圖像、去噪處理、圖像增強(qiáng)、彩色圖像轉(zhuǎn)變成灰度圖、灰度圖轉(zhuǎn)化成二值圖、邊緣檢測/分割、直方圖匹配/輪廓匹配[8]。

      預(yù)處理工作完成后,得到了相應(yīng)的二值化圖像,二維碼的特征也變得更加明顯,然后對二維碼圖像進(jìn)行輪廓查找,即找到二維碼的3個(gè)定位區(qū)域[9]。如圖4所示的二維碼,其定位區(qū)域指的是左上、左下和右上的3個(gè)矩形區(qū)域。在軟件代碼中,主要通過調(diào)用OpenCV里的findContour函數(shù)來實(shí)現(xiàn)二維碼的識(shí)別和定位,即尋找出上述3個(gè)矩形區(qū)域。通過篩選輪廓邊長和邊長之間的比例來篩選出正確的輪廓,其中輪廓邊長比例必須滿足1:1:3:1:1的比例關(guān)系,如圖5所示。

      圖4 二維碼

      圖5 二維碼輪廓邊長比例關(guān)系圖

      完成預(yù)處理后就可進(jìn)行二維碼解碼,將解碼得到的字符串與標(biāo)記物進(jìn)行比較:若相同,表示已經(jīng)尋找到標(biāo)記物并進(jìn)行跟蹤;若不同,攝像頭重新掃描。

      解碼可通過兩種包:zbar和zxing完成,本設(shè)計(jì)使用的是zbar包。二維碼實(shí)際是由若干個(gè)黑白的幾何圖形組成的,并且每個(gè)幾何圖形對應(yīng)于一個(gè)二進(jìn)制數(shù)。所以解碼實(shí)際就是將每個(gè)黑白幾何圖形轉(zhuǎn)化為二進(jìn)制,然后在zbar包中去尋找到二進(jìn)制碼所對應(yīng)的字符串。二維碼識(shí)別與定位流程圖如圖6所示。在代碼實(shí)現(xiàn)中,可以直接調(diào)用OpenCV里的庫就能完成一些復(fù)雜的圖像處理,使程序進(jìn)一步簡化。

      圖6 二維碼識(shí)別與定位流程圖

      3.3 串口通信

      串口通信按照通信方式可分為串行和并行兩種方式。串行通信是將數(shù)據(jù)按位依次傳輸,并且只需地線、發(fā)送、接收這3根線就可以進(jìn)行數(shù)據(jù)傳輸,而并信通信是將數(shù)據(jù)的多個(gè)位同時(shí)傳輸[10]。串行通信根據(jù)數(shù)據(jù)流的傳輸方向又可分為單工、半雙工、全雙工3種傳輸方式[10]。由于本設(shè)計(jì)只需要單片機(jī)接收視覺模塊和超聲波模塊的數(shù)據(jù),所以采用串行單工傳輸。

      波特率 、數(shù)據(jù)位 、奇偶校驗(yàn)和停止位是串口通信最重要的參數(shù),兩個(gè)端口要進(jìn)行通信的前提是這些參數(shù)保持相同。本設(shè)計(jì)初始化串口為:uart = UART(3,115200),其中115 200為波特率。

      3.4 PID控制

      PID控制是通過對偏差信號(hào)進(jìn)行比例、積分、微分運(yùn)算的不同組合形式適用于不同系統(tǒng)的控制原理,從而使偏差趨于零[11]。

      增量式離散PID計(jì)算公式如式(1)所示,其中e(k)表示本次誤差,e(k-1)表示上一次誤差,e(k-2)表示上上次誤差,Pwm表示增量輸出,Kp表示比例增益,Ki表示積分常數(shù),Kd表示微分常數(shù)。

      PID調(diào)節(jié)指調(diào)節(jié)比例增益Kp、積分時(shí)間常數(shù)Ti、微分時(shí)間常數(shù)Td三個(gè)參數(shù),其傳遞函數(shù)如式(2)所示。本設(shè)計(jì)使用PID調(diào)節(jié)來控制電機(jī),使速度變化更加穩(wěn)定,誤差更小,但只需要調(diào)節(jié)PI參數(shù)即可,即比例增益Kp和積分時(shí)間常數(shù)Ti。所以式(1)可簡化為式(3)所示。

      Pwm+=Kp[e(k)-e(k-1)]+Ki×e(k)+

      Kd[e(k)-2e(k-1)+e(k-2)]

      (1)

      G(s)=U(s)/E(s)=Kp(1+1/(Ti×s)+Td×s)

      (2)

      Pwm+=Kp[e(k)-e(k-1)]+Ki×e(k)

      (3)

      3.5 電機(jī)速度調(diào)節(jié)

      想要電機(jī)穩(wěn)定且按照預(yù)期的行進(jìn)路線行走,只是采用對左右電機(jī)的速度的調(diào)整很難達(dá)到預(yù)期的效果,本設(shè)計(jì)采用軟件代碼來克服這些問題,讓小車的行進(jìn)更加穩(wěn)定,具體過程如下。

      轉(zhuǎn)向時(shí)雙輪調(diào)速。具體是指讓小車在轉(zhuǎn)向時(shí)能夠圍繞一個(gè)點(diǎn)選擇,而不只是讓左右電機(jī)的轉(zhuǎn)速不同。轉(zhuǎn)彎時(shí),由于后雙輪行走的距離不同但是行駛的時(shí)間相同,因此,如果只是使左右的速度不同,顯然無法準(zhǔn)確地達(dá)到預(yù)期效果,所以采用后雙輪的差速行駛算法來實(shí)現(xiàn),原理如下:

      令后雙輪的輪距為B,前后輪的間距為L,假設(shè)最優(yōu)路徑為左前方與車正前方成a夾角的直線(a可正可負(fù)),轉(zhuǎn)彎半徑為R,在左邊與后輪齊平,后左輪角速度為w_left,后右輪角速度為w_right,因?yàn)楹箅p輪的角速度相等,也就是:

      w_left=w_right

      (4)

      那么:

      v_left/R_in=v_right/R_out=v/R

      (5)

      其中:v_left為左后輪速度,v_right為右后輪速度,R_in為內(nèi)圈轉(zhuǎn)彎半徑,R_out為外圈轉(zhuǎn)彎半徑。假設(shè)后輪的中間速度為v(即速度設(shè)定值),而且滿足:

      R=L/tana

      (6)

      R_in=R-B/2

      (7)

      R_out=R+B/2

      (8)

      可以推出:

      v_left=v-v×B×tana/2L

      (9)

      v_right=v+v×B×tana/2L

      (10)

      上述兩個(gè)公式即可求出轉(zhuǎn)彎時(shí)后雙輪需要的速度,而不需要調(diào)試各個(gè)轉(zhuǎn)彎時(shí)所需要的左右速度,這不僅使電機(jī)速度的調(diào)節(jié)更加方便,還大大增強(qiáng)了小車的跟蹤效果。

      4 實(shí)驗(yàn)結(jié)果與分析

      4.1 實(shí)驗(yàn)步驟和方法

      1)搭載好車身,檢查外圍設(shè)備是否與主控穩(wěn)定連接。

      2)選取合適的標(biāo)記物,將二維碼(尺寸為6 cm×6 cm)貼于標(biāo)記物正中心。

      3)設(shè)定標(biāo)記物與攝像頭中心的距離即初始距離為D(首次為0.15 m),記錄小車鎖定目標(biāo)所需時(shí)間。

      4)逐漸增加D(最大為1.05 m),重復(fù)步驟3)。

      5)繼續(xù)增加D,直至小車無法鎖定目標(biāo),記錄小車能夠鎖定目標(biāo)的極限距離和鎖定時(shí)間。

      6)保持初始距離D(首次為0.15 m)不變,從2 m逐漸增加跟蹤距離Y(最大為15 m),使標(biāo)記物移動(dòng),同時(shí)小車開始跟蹤,記錄跟蹤效果。

      7)增加初始距離D(最大為1.05 m),重復(fù)步驟6)。

      8)設(shè)置初始距離D(首次為0.15 m),跟蹤距離Y為10 m。將跟蹤距離Y分為五等分,當(dāng)標(biāo)記物剛經(jīng)過0 m、2 m、4 m、6 m、8 m的位置時(shí),在小車與標(biāo)記物之間放入一個(gè)障礙,記錄小車經(jīng)過的障礙物個(gè)數(shù)N。

      9)增加初始距離D(最大為1.05 m),重復(fù)步驟8)。

      4.2 實(shí)驗(yàn)數(shù)據(jù)

      將記錄的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、處理,得到如表1、2、3所示的實(shí)驗(yàn)數(shù)據(jù)。

      表1 小車目標(biāo)鎖定效果

      表2 小車跟蹤效果①

      ①小車跟蹤效果分成A、B、C、D四種等級(jí),A:未出現(xiàn)目標(biāo)丟失情況;B:跟蹤7次,出現(xiàn)1-2次目標(biāo)丟失情況;C:跟蹤7次,出現(xiàn)3-5次目標(biāo)丟失情況;D:跟蹤7次,出現(xiàn)5次以上目標(biāo)丟失情況。

      ②初始距離同時(shí)也表示跟蹤過程中小車和標(biāo)記物之間的近似距離。

      ③跟蹤距離在2~8 m范圍內(nèi)時(shí),路徑中無直角彎道;跟蹤距離為10 m、12 m、15 m時(shí),路徑中分別有1、2、3個(gè)直角彎道。

      表3 小車避障效果

      4.3 數(shù)據(jù)分析

      觀察表1中的數(shù)據(jù)可知,小車鎖定目標(biāo)時(shí)間隨著初始距離的增加而變長。當(dāng)初始距離從0.15 m增加至0.60 m時(shí),鎖定時(shí)間變化較小,而超過0.60 m后,時(shí)間變化較大,鎖定效果明顯下降,且1.28 m是小車能鎖定目標(biāo)的極限距離。因此,當(dāng)初始距離小于0.60 m時(shí),小車的目標(biāo)鎖定效果較好。

      由表2中的數(shù)據(jù)可知,小車跟蹤效果隨著初始距離和跟蹤距離的增大而有所降低,但主要影響因素是初始距離??梢钥闯?,初始距離在0.60~1.05 m范圍內(nèi)的總體跟蹤效果明顯不如初始距離在0.15~0.45 m范圍內(nèi)的。并且,初始距離大于0.45 m時(shí),跟蹤效果在遇到直角彎道時(shí)下降地更為顯著。

      根據(jù)表3中的數(shù)據(jù)可知,小車成功繞過的障礙物個(gè)數(shù)與初始距離近似呈正態(tài)分布。這是因?yàn)楫?dāng)初始距離過小時(shí),小車容易直接撞到障礙物,而當(dāng)距離過大時(shí),小車容易在躲避障礙物之后丟失目標(biāo)??梢钥闯觯?dāng)初始距離近似為0.45 m時(shí),小車的避障能力最好。

      綜合實(shí)驗(yàn)數(shù)據(jù)及以上分析可得,當(dāng)初始距離在0.30~0.45 m范圍內(nèi)時(shí),智能跟蹤小車的整體性能表現(xiàn)最佳。

      5 結(jié)束語

      本文介紹了一款基于視覺模塊OpenMV的智能跟蹤小車,對小車硬件及軟件設(shè)計(jì)部分進(jìn)行了重點(diǎn)描述。經(jīng)實(shí)驗(yàn)測試發(fā)現(xiàn),小車在一定范圍內(nèi)能夠較快鎖定標(biāo)記物,同時(shí)具有優(yōu)秀的跟蹤和避障能力。另外,小車的整體性能還有待進(jìn)一步提升,主要可通過升級(jí)相關(guān)硬件以及進(jìn)一步優(yōu)化軟件設(shè)計(jì)來實(shí)現(xiàn)。本智能跟蹤小車價(jià)格低廉,性能優(yōu)越,簡單改造即可很好地代替目前市場上一些智能化程度低、價(jià)格高昂的跟蹤小車,具有較為廣闊的應(yīng)用前景。

      猜你喜歡
      障礙物小車二維碼
      可以吃的二維碼
      快樂語文(2020年36期)2021-01-14 01:10:32
      二維碼
      童話世界(2020年32期)2020-12-18 18:15:41
      自制小車來比賽
      高低翻越
      SelTrac?CBTC系統(tǒng)中非通信障礙物的設(shè)計(jì)和處理
      劉老師想開小車
      文苑(2018年22期)2018-11-19 02:54:18
      兩輪自平衡小車的設(shè)計(jì)與實(shí)現(xiàn)
      電子制作(2018年8期)2018-06-26 06:43:02
      讓嚴(yán)肅的二維碼呆萌起來
      二維碼,別想一掃了之
      济南市| 资中县| 无为县| 长阳| 左贡县| 手游| 陕西省| 读书| 通州区| 新乐市| 建湖县| 合江县| 延长县| 洱源县| 丹巴县| 措勤县| 镇雄县| 庆阳市| 湟源县| 民勤县| 攀枝花市| 南雄市| 廊坊市| 元朗区| 台南县| 汉阴县| 安乡县| 宿迁市| 开远市| 天镇县| 潼关县| 岳池县| 定陶县| 安平县| 雅江县| 克拉玛依市| 射洪县| 齐齐哈尔市| 综艺| 黄浦区| 嵊州市|