国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenMV視覺模塊和MPU6050角度傳感器的智慧尋路小車

2022-02-17 11:58沈中坤徐勁節(jié)
電子制作 2022年3期
關(guān)鍵詞:巡線灰度平均值

沈中坤,徐勁節(jié)

(南京信息工程大學(xué) 電子與信息工程學(xué)院,江蘇南京,210000)

0 引言

傳統(tǒng)的智能小車巡線通常采用光電傳感器一類的解決方案,但近年來機(jī)器視覺技術(shù)的飛速發(fā)展,傳統(tǒng)的模擬圖像處理方式升級為嵌入式視覺處理模塊,本課題受此啟發(fā),設(shè)計了以O(shè)penMV視覺模塊為主,以MPU6050角度傳感器為輔的小車系統(tǒng)。

1 OpenMV視覺模塊對于復(fù)雜道路信息的處理

1.1 基于灰度平均值的十字路口識別方法

1.1.1 灰度平均值識別十字路口的原理

利用OpenMV進(jìn)行顏色識別與圖像二值化,可以提取圖像中目標(biāo)顏色并輸出圖像中的灰度平均值。本課題根據(jù)此算法識別十字路口。

(1)首先對道路顏色進(jìn)行識別,道路顏色識別的關(guān)鍵在于閾值(THRESHOLD)的選取,其中THRESHOLD=(min L,maxL,minA,minB,maxB),元組里面的數(shù)值分別是LAB(L代表明度,A代表從綠色到紅色的分量,B代表從藍(lán)色到黃色的分量)的最大值和最小值。根據(jù)閾值即可確定需識別的顏色。例如在圖1中,圖1(a)為拍攝的RGB圖像,設(shè)定閾值THRESHOLD為(26, 60, 12, 72, -21, 53),該值為紅色閾值,對圖像進(jìn)行二值化處理,得到黑白效果圖。二值化后的圖像如圖1(b)所示,原圖像中紅色被提取出來。同理,分別設(shè)置THRESHOLD為綠色閾值或藍(lán)色閾值,對應(yīng)顏色均可被提取出來。

圖1 道路顏色識別示例

(2)隨后計算圖像的灰度平均值,根據(jù)灰度平均值的大小判斷十字路口是否出現(xiàn)在OpenMV拍攝的畫面中。若灰度平均值達(dá)到目標(biāo)值,即對十字路口識別成功,同時根據(jù)灰度平均值的大小判斷小車前端到十字路口的距離?;叶绕骄档拇笮∨c車前端到十字路口的距離關(guān)系如圖2所示。當(dāng)十字路口開始出現(xiàn)在OpenMV拍攝的圖像中時,圖像的灰度平均值會隨著小車前端到十字路口距離的減小逐漸增大,當(dāng)距離減小到12.5cm時,灰度平均值將達(dá)到最大。之后十字路口會在圖像中逐漸消失,同時灰度平均值也逐漸減小至初始值。

圖2 經(jīng)過十字路口時灰度平均值變化圖

1.1.2 算法設(shè)計

設(shè)定目標(biāo)顏色的閾值,提取目標(biāo)顏色,調(diào)用sensou.snapshot().binary()函數(shù),將圖像二值化,調(diào)用img.get_statistics()函數(shù)返回二值化圖像的灰度平均值。得到灰度平均值后,判斷該值是否在目標(biāo)范圍內(nèi)。若在,說明十字路口已出現(xiàn)在圖像中,則可向單片機(jī)發(fā)送指令。同時,根據(jù)灰度平均值的大小判斷小車距離目標(biāo)十字路口的距離。

1.2 基于泰爾森線性回歸的巡線方法

1.2.1 泰爾森線性回歸巡線方法基本原理

在使用泰爾森線性回歸之前,需先設(shè)置目標(biāo)道路的顏色閾值,將圖像二值化,利用最小二乘法對圖像中所有閾值像素進(jìn)行線性回歸計算,以達(dá)到識別直線的目的。當(dāng)識別到直線時,使用泰爾森線性回歸算法計算圖像中所有閾值像素的斜率的中位數(shù)。之后返回一個直線對象(image.line),由霍夫變換得到該直線的兩個參數(shù),分別為角度值(line.theta)和偏離值(line.rho),將該直線與垂直在畫面中央直線對比,得到角度誤差(theta.error)與偏離誤差(rho.error)。圖3為小車左偏時OpenMV拍攝的道路偏置情況,此時角度誤差為21°,偏離誤差為37mm。

圖3 小車左偏

1.2.2 算法設(shè)計

設(shè)置目標(biāo)道路閾值(THRESHOLD),將圖像二值化,調(diào)用泰爾森線性回歸函數(shù)image.get_regression(),得到目標(biāo)道路的角度值(line.theta)和偏離值(line.rho),計算角度誤差與偏離誤差。

1.3 基于模板匹配的路標(biāo)識別方法

1.3.1 模板匹配識別路標(biāo)的基本原理

模板匹配采用的是歸一化互相關(guān)(NCC)算法,該算法將在圖像中找到與目標(biāo)模板匹配的圖像并返回其位置的邊界框元組(x,y,w,h)。x、y、w、h分別為其位置的左上角的x坐標(biāo)、左上角的y坐標(biāo)、寬度和高度。使用模板匹配法可識別與模板圖片大小和擺放角度基本一致的圖案。在本課題中,OpenMV可以識別左轉(zhuǎn),右轉(zhuǎn)和直行的路標(biāo),圖4中識別到的是直行路標(biāo),直行路標(biāo)被黑色框框出。式(1)為NCC算法的計算公式,其中I為目標(biāo)圖像,T為模板圖像,模板大小為m*n。

圖4 路標(biāo)識別

1.3.2 算法設(shè)計

導(dǎo)入左轉(zhuǎn)、右轉(zhuǎn)和直行的圖片模板,將OpenMV拍攝的圖像轉(zhuǎn)為灰度圖,調(diào)用ing.find_template()函數(shù),判斷圖像中是否存在與導(dǎo)入模板相匹配的圖像,若存在,判斷是左轉(zhuǎn)、右轉(zhuǎn)還是直行。識別成功后傳達(dá)指令給MSP430單片機(jī)。

2 小車系統(tǒng)

2.1 硬件設(shè)計

小車實物圖如圖5所示。小車以MSP430為控制芯片,控制芯片根據(jù)OpenMV視覺模塊的指令,執(zhí)行前進(jìn)、后退、轉(zhuǎn)向、停止指令;利用MPU6050角度傳感器控制每次轉(zhuǎn)向的角度。小車硬件設(shè)計示意圖如圖6所示。

圖5 小車實物圖

圖6 小車硬件設(shè)計示意圖

2.1.1 轉(zhuǎn)向舵機(jī)

舵機(jī)又稱為伺服電機(jī),是一種帶有輸出軸的裝置。向伺服器發(fā)送一個控制信號時,輸出軸就可以轉(zhuǎn)到特定的位置。只要控制信號持續(xù)不變,伺服機(jī)構(gòu)就會保持軸的角度位置不改變。如果控制信號發(fā)生變化,輸出軸的位置也會相應(yīng)發(fā)生變化。舵機(jī)角度是由控制信號脈沖的持續(xù)時間決定的,這叫做脈沖編碼調(diào)制(PCM)。舵機(jī)的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍,總間隔為2ms。脈沖的寬度將決定馬達(dá)轉(zhuǎn)動的距離。例如:1.5ms的脈沖,電機(jī)將轉(zhuǎn)向90度的位置(通常稱為中立位置);1.0ms的脈沖,電機(jī)將轉(zhuǎn)45度的位置;2.0ms的脈沖,電機(jī)將135度的位置。舵機(jī)控制信號由MSP430單片機(jī)提供,單片機(jī)輸出不同的脈沖可控制舵機(jī)轉(zhuǎn)角。

2.1.2 MPU6050角度傳感器

MPU6050是6軸運動處理傳感器,它集成了 3 軸MEMS陀螺儀,3 軸MEMS加速度計,以及一個可擴(kuò)展的數(shù)字運動處理器DMP。用它可以測得小車x、y、z軸的傾角(俯仰角Pitch、翻滾角Roll、偏航角Yaw)。單片機(jī)通過 I2C 讀取到 MPU6050 的六個數(shù)據(jù)(三軸加速度 AD 值、三軸角速度 AD 值)經(jīng)過姿態(tài)融合后就可以得到 Pitch、Roll、Yaw角。在此課題中,MPU6050用來控制小車每次轉(zhuǎn)向的角度,因此僅需考慮偏航角。式(2)為MPU6050的偏航角(Yaw)的解算式,其中q0,q1,q2,q3是DMP輸出的四元數(shù)。

2.2 算法設(shè)計

2.2.1 巡線控制算法

小車巡線的過程中采用PID控制算法。PID即:Proportiona(l比例)、Integra(l積分)、Differentia(l微分)的縮寫。PID控制算法是結(jié)合比例、積分和微分三種環(huán)節(jié)于一體的控制算法,它是連續(xù)系統(tǒng)中技術(shù)最為成熟、應(yīng)用最為廣泛的一種控制算法。連續(xù)控制系統(tǒng)的理想PID控制規(guī)律為式(3),式中 u(t)為PID控制器的輸出信號;e(t)為誤差函數(shù);KP為比例調(diào)節(jié)系數(shù);KI為積分調(diào)節(jié)系數(shù);KD為微分調(diào)節(jié)系數(shù)。

在本課題中,巡線時的誤差有角度誤差(theta.error)與偏離誤差(rho.error)。因此我們利用舵機(jī)對角度誤差(theta.error)進(jìn)行修正,利用后輪差速的方法對偏離誤差(rho.error)進(jìn)行修正。算法實現(xiàn)如下:式(4)中的error為誤差量;total_error為誤差累積量,式(5)中的u為PID算法的輸出。

根據(jù)PID算法輸出的結(jié)果,調(diào)整舵機(jī)的轉(zhuǎn)角和后輪的轉(zhuǎn)速,實現(xiàn)巡線功能。

2.2.2 轉(zhuǎn)向控制算法

小車在十字路口轉(zhuǎn)向時,利用MPU6050角度傳感器控制小車的轉(zhuǎn)向角度。為了簡化算法我們將傳感器固定在車頭。同樣采用PID控制算法,轉(zhuǎn)向時誤差量error的表達(dá)式為式(7),其中Target_Angle為目標(biāo)轉(zhuǎn)向角度,Yaw為實時偏航角,Yaw0為轉(zhuǎn)向前的偏航角。

2.2.3 整車算法

設(shè)定目標(biāo)道路的顏色閾值,當(dāng)OpenMV視覺模塊識別到目標(biāo)道路時,發(fā)送啟動指令,MSP430單片機(jī)啟動小車,OpenMV持續(xù)巡線,保持小車前進(jìn)方向與道路方向一致。當(dāng)OpenMV識別到十字路口時,啟動轉(zhuǎn)向程序,OpenMV開始識別路標(biāo),如需轉(zhuǎn)向,MPU6050角度傳感器將控制小車轉(zhuǎn)向90°,轉(zhuǎn)向完成后OpenMV再次識別直線道路,擺正小車姿態(tài),以此循環(huán)直至終點。系統(tǒng)算法流程圖如圖7所示,小車行駛示意圖如圖8所示。

圖7 系統(tǒng)算法流程圖

圖8 小車行駛至①號點的示意圖

3 系統(tǒng)測試

小車行駛示意圖如圖8所示,對圖中每個目標(biāo)點均進(jìn)行超過30次的測試,測試結(jié)果如圖表1所示。

表1 不同目標(biāo)點的測試結(jié)果

由表1可知,小車前往行駛路線較為簡單的目標(biāo)點時,成功率達(dá)到100%,前往所有目標(biāo)點的成功率均可達(dá)到95%。①號點和⑥號點少次失敗的原因為:較短時間內(nèi)連續(xù)轉(zhuǎn)彎時的系統(tǒng)可能會出現(xiàn)故障??梢酝ㄟ^降低速度來避免。

4 結(jié)語

本系統(tǒng)基于OpenMV視覺模塊和MPU6050角度傳感器,實現(xiàn)了巡線功能、十字路口識別功能、路標(biāo)識別功能。小車采用了簡單普遍的人工智能技術(shù),具有硬件穩(wěn)定,算法可靠的特點。在全球疫情的大背景下,智慧尋路小車在防疫工作中大有可為,這也是我們研究本課題的初衷。有點遺憾的是在本系統(tǒng)中沒有采用道路顏色閾值自適應(yīng)的辦法,光線的明暗變化可能造成OpenMV視覺模塊的識別偏差,閾值自適應(yīng)將會是我們下一階段的研究方向。

猜你喜歡
巡線灰度平均值
基于二值化灰度圖像的大豆蛋白液噴霧相對霧化程度的研究
基于共振磁耦合供電及電磁傳感定位的無人機(jī)智能巡線技術(shù)與應(yīng)用
基于移動互聯(lián)網(wǎng)的智能化巡線管理系統(tǒng)的建設(shè)與應(yīng)用
天津港智慧工作平臺灰度發(fā)布系統(tǒng)和流程設(shè)計
Arduino小車巡線程序的灰度閾值優(yōu)化方案
無人機(jī)為仁化高山電網(wǎng)線路“把脈”
讓機(jī)器人巡線不脫線
巧用1mol物質(zhì)作標(biāo)準(zhǔn) 快速確定混合物組成
變力做功時運用F=F1+F2/2的條件
平面圖形中構(gòu)造調(diào)和平均值幾例