• 
    

    
    

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

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

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

      沈中坤,徐勁節(jié)

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

      0 引言

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

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

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

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

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

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

      圖1 道路顏色識別示例

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

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

      1.1.2 算法設計

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

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

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

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

      圖3 小車左偏

      1.2.2 算法設計

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

      1.3 基于模板匹配的路標識別方法

      1.3.1 模板匹配識別路標的基本原理

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

      圖4 路標識別

      1.3.2 算法設計

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

      2 小車系統(tǒng)

      2.1 硬件設計

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

      圖5 小車實物圖

      圖6 小車硬件設計示意圖

      2.1.1 轉(zhuǎn)向舵機

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

      2.1.2 MPU6050角度傳感器

      MPU6050是6軸運動處理傳感器,它集成了 3 軸MEMS陀螺儀,3 軸MEMS加速度計,以及一個可擴展的數(shù)字運動處理器DMP。用它可以測得小車x、y、z軸的傾角(俯仰角Pitch、翻滾角Roll、偏航角Yaw)。單片機通過 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 算法設計

      2.2.1 巡線控制算法

      小車巡線的過程中采用PID控制算法。PID即:Proportiona(l比例)、Integra(l積分)、Differentia(l微分)的縮寫。PID控制算法是結(jié)合比例、積分和微分三種環(huán)節(jié)于一體的控制算法,它是連續(xù)系統(tǒng)中技術(shù)最為成熟、應用最為廣泛的一種控制算法。連續(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)。因此我們利用舵機對角度誤差(theta.error)進行修正,利用后輪差速的方法對偏離誤差(rho.error)進行修正。算法實現(xiàn)如下:式(4)中的error為誤差量;total_error為誤差累積量,式(5)中的u為PID算法的輸出。

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

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

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

      2.2.3 整車算法

      設定目標道路的顏色閾值,當OpenMV視覺模塊識別到目標道路時,發(fā)送啟動指令,MSP430單片機啟動小車,OpenMV持續(xù)巡線,保持小車前進方向與道路方向一致。當OpenMV識別到十字路口時,啟動轉(zhuǎn)向程序,OpenMV開始識別路標,如需轉(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所示,對圖中每個目標點均進行超過30次的測試,測試結(jié)果如圖表1所示。

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

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

      4 結(jié)語

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

      猜你喜歡
      巡線平均值小車
      “平均值代換”法在數(shù)學解題中的應用
      春光美巡線忙
      大車拉小車
      快樂語文(2020年36期)2021-01-14 01:10:32
      自制小車來比賽
      科學大眾(2020年17期)2020-10-27 02:49:02
      出沒風波里,踏浪去巡線
      劉老師想開小車
      文苑(2018年22期)2018-11-19 02:54:18
      無人機在電力巡線中的應用模式研究
      無人機(2018年1期)2018-07-05 09:51:06
      兩輪自平衡小車的設計與實現(xiàn)
      電子制作(2018年8期)2018-06-26 06:43:02
      飛滑式巡線機器人自平衡控制方案設計與實現(xiàn)
      電測與儀表(2015年3期)2015-04-09 11:37:48
      平面圖形中構(gòu)造調(diào)和平均值幾例
      六盘水市| 错那县| 石柱| 即墨市| 清远市| 禄劝| 西乌珠穆沁旗| 吕梁市| 隆尧县| 抚远县| 固阳县| 普陀区| 文登市| 正蓝旗| 武川县| 阳春市| 洛宁县| 万宁市| 桐柏县| 商河县| 肃北| 北海市| 惠安县| 商洛市| 宁阳县| 巴南区| 赤城县| 永修县| 朝阳市| 东山县| 汽车| 林西县| 衡山县| 英吉沙县| 隆德县| 墨江| 长海县| 台江县| 保康县| 将乐县| 海伦市|