• 
    

    
    

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

      基于RoboMaster機甲大師賽的計算機視覺應(yīng)用開發(fā)

      2021-04-11 02:28:12梁睿哲李承蒙謝祥平謝昊璋
      中阿科技論壇(中英文) 2021年3期
      關(guān)鍵詞:預(yù)判懸臂矩形

      梁睿哲 李承蒙 謝祥平 謝昊璋 唐 亮

      (桂林電子科技大學(xué)機電工程學(xué)院,廣西 桂林 541004)

      1 背景

      RoboMaster機甲大師賽是大疆創(chuàng)新發(fā)起創(chuàng)建的機器人競技與學(xué)術(shù)交流平臺,其為我們提供了很好的計算機視覺應(yīng)用開發(fā)平臺,需要機器人在賽場實現(xiàn)識別追蹤、目標(biāo)檢測、預(yù)判以及精準(zhǔn)打擊等功能。本文基于RoboMaster2020~2021賽季比賽內(nèi)容,以機器人所需的視覺功能為背景,研究計算機視覺領(lǐng)域下的多種技術(shù)的開發(fā)和應(yīng)用。

      2 裝甲板自動瞄準(zhǔn)系統(tǒng)

      2.1 裝甲板的識別鎖定

      自動瞄準(zhǔn)作為RoboMaster視覺中最基礎(chǔ)的功能,自動瞄準(zhǔn)裝甲板大幅度提高打擊效率。機器人身上的裝甲板是主要承受傷害的區(qū)域,有兩根平行的燈條,中間是數(shù)字或者兵種圖標(biāo),所以需要從眾多的燈條中準(zhǔn)確地篩選出真正的裝甲板,以確定最佳目標(biāo)進行瞄準(zhǔn)打擊[1]。

      首先對從攝像頭獲取的圖像做預(yù)處理操作,好的二值化處理可以真實地還原燈條的輪廓,減少燈條的篩選錯誤;以上一幀圖像的識別到的裝甲板為中心,從長寬兩個方向擴大合適的倍數(shù)作為ROI區(qū)域,可以減少跳變,再對ROI圖像進行處理可以提高圖像處理的速度,提高數(shù)據(jù)的連續(xù)性,而后對找到的所有輪廓進行篩選;將獲得的燈條放入數(shù)組中逐個進行配對,圖像中的燈條相對于真實的燈條可能會有一些變形,通過合成裝甲板的角度與燈條角度之差,刪除誤差較大的裝甲板,再通過RGB判斷燈條顏色是否為應(yīng)該識別顏色,最后通過BP模型判斷得到的裝甲板中間是否為數(shù)字或者兵種圖標(biāo),得到正確的裝甲板,并且保持了較高的圖像處理幀率。

      2.2 BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用

      通過燈條配對的裝甲板依然有誤識別現(xiàn)象出現(xiàn)的可能,所以需要判斷裝甲板中間是否有數(shù)字或圖標(biāo),我們采用了BP(back propagation)神經(jīng)網(wǎng)絡(luò)來分類各種數(shù)字和圖標(biāo)。BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)的主要特點是信號前向傳遞,誤差反向傳播。基本思想是梯度下降,最終讓網(wǎng)絡(luò)的實際輸出值和期望輸出值的誤差均方差最小;訓(xùn)練的核心算法為前向傳播和反向傳播[2]。

      研究表明,隱含層的節(jié)點數(shù)表示該網(wǎng)絡(luò)的數(shù)據(jù)處理能力。為了保證程序的運算速度,這里BP模型的隱藏層只有一層,樣本的分辨率是20×20,隱藏層的結(jié)點為64。輸出層為7類,分別是數(shù)字1(英雄)、2(工程)、3(步兵)、4(步兵)、8(前哨站)、9(基地)、7(哨兵),因為使用此網(wǎng)絡(luò)用于多分類,tanh函數(shù)在特征相差明顯時的效果會更好,在循環(huán)過程中會不斷擴大特征效果,所以隱藏層激活函數(shù)使用了tanh函數(shù)。整個過程如下:

      (1)樣本采集

      我們采集了每個種類的樣本圖片800張,樣本的亮度在一個范圍之內(nèi),可以減少燈光條件對識別的影響。

      (2)數(shù)據(jù)預(yù)處理

      將樣本處理成一個xml文件作為網(wǎng)絡(luò)訓(xùn)練的輸入文件。

      (3)網(wǎng)絡(luò)訓(xùn)練

      ①先設(shè)置每層神經(jīng)元個數(shù),初始化權(quán)重。

      ②輸入訓(xùn)練文件。

      ③設(shè)置閾值、學(xué)習(xí)速率和激活函數(shù)。

      ④訓(xùn)練,達到停止訓(xùn)練的條件后停止。

      ⑤保存模型,樣本測試。

      2.3 目標(biāo)解算與預(yù)判

      (1)坐標(biāo)變換

      從相機中我們可以獲取到目標(biāo)在圖像上的位置,我們通過針孔相機模型來構(gòu)建這種從二維到三維的對應(yīng)關(guān)系。

      針孔相機模型描述了三維空間中的點的坐標(biāo)與其在理想針孔相機的圖像平面上的投影之間的數(shù)學(xué)關(guān)系,將相機光圈視為一個點,根據(jù)小孔成像原理來形成投影。針孔相機模型是理想化的模型,我們引入了畸變參數(shù)來修正形變,畸變參數(shù)可以在相機標(biāo)定過程中求得。在針孔相機模型下,我們可以用矩陣來表示坐標(biāo)系之間的線性關(guān)系,從而實現(xiàn)不同坐標(biāo)系下的坐標(biāo)相互轉(zhuǎn)換。我們用到了3個坐標(biāo)系:圖像物理坐標(biāo)系、圖像像素坐標(biāo)系、相機坐標(biāo)系。圖像物理坐標(biāo)系為二維平面坐標(biāo)系,用來描述投影實像中的點,以投影像中心為原點;圖像像素坐標(biāo)系用來描述二維圖像中的點,原點一般為圖像左上角并以像素為單位;相機坐標(biāo)系為右手系,以相機光心為原點[3]。

      根據(jù)小孔成像原理,我們可以得到相機坐標(biāo)與圖像物理坐標(biāo)之間的關(guān)系:

      其中x、y為圖像物理坐標(biāo)系下的坐標(biāo),X,Y,Z為相機坐標(biāo)系下的坐標(biāo),fx、fy為相機焦距。

      圖像物理坐標(biāo)系到圖像像素坐標(biāo)系的變換需要平移和縮放,使其原點重合單位統(tǒng)一,這種對應(yīng)關(guān)系可以這樣描述:

      其中u、v為圖像像素坐標(biāo)系下的坐標(biāo),x、y為圖像物理坐標(biāo)系下的坐標(biāo),dx、dy為單位轉(zhuǎn)化系數(shù),u0、v0為圖像物理坐標(biāo)系原點在圖像像素坐標(biāo)系下的坐標(biāo)。

      因此,圖像像素坐標(biāo)寫成齊次坐標(biāo)形式后與相機坐標(biāo)之間的線性關(guān)系可以用矩陣描述為:

      兩個矩陣的乘積即為相機的內(nèi)參矩陣,內(nèi)參矩陣與相機畸變參數(shù)可以由張正友標(biāo)定法求得。但圖像畢竟是二維的,想要求得三維世界中的真實坐標(biāo)還需要更進一步計算。

      (2)PnP解算求解坐標(biāo)

      為了能精準(zhǔn)打擊到敵方裝甲板,需要知道敵方裝甲板中心在相機坐標(biāo)系下的坐標(biāo)。每塊裝甲板上都有一對燈條,燈條的長度和燈條之間的間距是已知的。因此,可以引入第四個坐標(biāo)系——世界坐標(biāo)系,并以燈條矩形中心為世界坐標(biāo)系的原點,根據(jù)矩形的尺寸賦給矩形四個點相應(yīng)的世界坐標(biāo)系下的值,從而將其視作一個PnP(Perspective-n-Point)問題。

      通過PnP解算獲得A、B、C三個點的相機坐標(biāo)后,可以使用ICP(Iterative Closest Point)的方式迭代求解相機的位姿,最終解出旋轉(zhuǎn)矩陣R與平移向量T。由于我們選定燈條矩形中心為世界坐標(biāo)系的原點,因此,解出的平移向量T就是矩形中心在相機坐標(biāo)系下的坐標(biāo)。

      (3)預(yù)判打擊

      預(yù)判打擊需要結(jié)合相機和陀螺儀兩個傳感器的數(shù)據(jù)。相機獲得到的目標(biāo)圖像經(jīng)過識別和解算后,即可得到相機坐標(biāo)系下目標(biāo)的坐標(biāo)數(shù)據(jù),而陀螺儀則反映了當(dāng)前云臺的姿態(tài)。陀螺儀的零點在忽略零漂的情況下是不會發(fā)生變化的,因此,可以根據(jù)陀螺儀的角度數(shù)據(jù)將相機坐標(biāo)系進行反向旋轉(zhuǎn)得到一個坐標(biāo)系。該坐標(biāo)系除原點會隨著戰(zhàn)車移動外,各個坐標(biāo)軸方向是固定不變的。

      至此,已獲得了一個相對靜止的坐標(biāo)系,通過這個坐標(biāo)系即可將預(yù)判打擊轉(zhuǎn)換為一個運動學(xué)問題。將我方戰(zhàn)車視為靜止?fàn)顟B(tài),通過觀測一段連續(xù)時間中目標(biāo)的位置變化即可近似計算出目標(biāo)此時的運動狀態(tài)(速度、加速度)。

      接下來是通過當(dāng)前時刻的運動狀態(tài)來推算正確的彈丸落點,使得敵方目標(biāo)到達該處時我們的彈丸剛好可以打擊到。可以使用迭代法來求得飛行時間的近似解。將彈丸飛行至當(dāng)前時刻目標(biāo)位置所用的時間設(shè)為迭代初值t0并開始迭代。計算出經(jīng)過t0時間后目標(biāo)所處的位置p1,求得彈丸飛行至p1所用時間t1。用t1與t0作差得到時間差△t,并將△t作為本次迭代的步長。用t1加上步長得到t2,并將t2作為新的迭代初值進行下一輪迭代。當(dāng)△t小于一定值或迭代次數(shù)到達上限即停止迭代,可獲得最終的彈丸飛行時間tn??梢越o△t乘上一個系數(shù)α,通過調(diào)節(jié)α的值來縮短迭代時間,但要注意α的取值以防發(fā)散。最后用tn求得最終的預(yù)判坐標(biāo)。

      3 能量機關(guān)的激活

      3.1 能量機關(guān)的識別

      能量機關(guān)的激活在RoboMaster比賽中非常重要,大幅度的攻防屬性加成往往決定著比賽的勝負(fù)走向。

      (1)能量機關(guān)定位圓心的識別

      根據(jù)傳入的類正方形的輪廓和矩形進行判別。遍歷所有的輪廓和矩形,先在形態(tài)學(xué)上進行篩選,如果滿足形態(tài)學(xué)條件,那么獲取該矩形。在原圖的對應(yīng)坐標(biāo)位置,截取出比該矩形略大的ROI區(qū)域,然后對ROI區(qū)域進行歸一化,傳入SVM進行二分類。

      這里重點運用了機器學(xué)習(xí)中的SVM(支持向量機),簡單應(yīng)用了其二分類的功能。我們利用OpenCV中的ml庫封裝好的SVM類建立起一套完整的SVM的項目。首先,我們利用上面的識別部分獲取樣本。采集樣本時便同時將其分類,以是否為正確的圓心R圖像為標(biāo)準(zhǔn),分為正負(fù)兩類樣本,按照1/4的比例分為測試集和訓(xùn)練集(此比例是參考周治華老師編寫的《機器學(xué)習(xí)》一書)。其次,對樣本進行歸一化操作后,通過調(diào)用SVM類中的外部接口進行訓(xùn)練,得出訓(xùn)練結(jié)果xml文件。然后,通過調(diào)用預(yù)測函數(shù)對測試集進行測試,反復(fù)測試后得到最好的xml文件。

      (2)懸臂擊打狀態(tài)的識別判定

      當(dāng)懸臂未發(fā)光時,該懸臂處于未打擊狀態(tài);當(dāng)懸臂出現(xiàn)流水燈時,則該懸臂處于待打擊狀態(tài);當(dāng)懸臂燈光常亮?xí)r,則該懸臂處于已打擊狀態(tài)。將已獲取的圓心坐標(biāo)和每一塊裝甲板矩形進行連線,并把這條線段四等分。在原圖像上截取垂直于每一條線段,并且靠近裝甲板的矩形作為待識別區(qū)域,獲得該旋轉(zhuǎn)矩形的外接矩形作為ROI區(qū)域。對此,ROI區(qū)域先將選裝矩形外的部分填充為黑色。然后,進行預(yù)處理獲得ROI區(qū)域的二值圖。因為已打擊的懸臂呈現(xiàn)常亮狀態(tài),未打擊的懸臂只有中間的主區(qū)域呈現(xiàn)流水燈狀態(tài),二值圖下兩個狀態(tài)的白色像素點數(shù)量具有很明顯的界限。統(tǒng)計每個ROI區(qū)域的白色像素點數(shù)量,尋找數(shù)量最小的ROI區(qū)域。

      3.2 能量機關(guān)目標(biāo)預(yù)判

      能量機關(guān)有大小兩個模式,大能量機關(guān)的旋轉(zhuǎn)策略為角速度關(guān)于正弦函數(shù)變化,如下所示。

      其中 spd的單位為rad/s,t 的單位為s;小能量機關(guān)的旋轉(zhuǎn)策略為固定轉(zhuǎn)速10rpm。

      首先確定基準(zhǔn),以能量機關(guān)圓心R的中心點為基準(zhǔn)點,沿圖像二維坐標(biāo)系的X軸正方向作射線,以此為基準(zhǔn)線。計算出每一幀圖像中待打擊裝甲板的中心和圓心R的連線與基準(zhǔn)線的角度。每次處理記錄上一次的角度,根據(jù)角度的變化判斷出能量機關(guān)的旋轉(zhuǎn)方向。特別地,要剔除掉懸臂跳變的情況,當(dāng)角度變化過大時認(rèn)為懸臂發(fā)生跳變現(xiàn)象。依然根據(jù)角度變化再計算角速度的極值,每0.1s計算一次,當(dāng)極值連續(xù)固定達到一定次數(shù),認(rèn)為計算出了正確的極值。記錄現(xiàn)在的角速度和上一次計算的角速度,判斷出現(xiàn)在能量機關(guān)處于加速還是減速狀態(tài)。根據(jù)以上給出的目標(biāo)函數(shù)式反解出當(dāng)前所處的時刻。然后進行決策,若是勻速,則為小能量機關(guān),那么每一次預(yù)置固定的預(yù)判量;若是非勻速,則為大能量機關(guān),那么就要根據(jù)計算出的實際角速度和時刻,利用給出的正弦函數(shù)式進行積分,獲得角度變化。

      4 雷達站的目標(biāo)追蹤

      雷達站機器人作為RoboMaster機甲大師賽中唯一的輔助類型機器人,它的任務(wù)主要是監(jiān)控全場,從繁雜的信息中提取出對我方有效的信息,從而達到輔助我方取得比賽勝利的目的。

      4.1 目標(biāo)檢測算法

      (1)數(shù)據(jù)采集和預(yù)處理

      前期測試使用RoboMaster機甲大師賽官方提供的RoboMaster 2019比賽目標(biāo)檢測數(shù)據(jù)集,該數(shù)據(jù)集已經(jīng)標(biāo)注了object的name屬性、armor的armor_color屬性以及若干本文未使用的屬性。其中name屬性有5種屬性值,分別為car,watcher,base,ignore,armor。armor_color有3種屬性值,分別為red、blue、gray。前者用于區(qū)分機器人種類,后者區(qū)分機器人所屬陣營。從中隨機抽取5 000張樣本作為訓(xùn)練集,該數(shù)據(jù)集的原始圖片大小為1 920×1 080。

      訓(xùn)練前,須將數(shù)據(jù)集圖片統(tǒng)一修改為608×608,以提高訓(xùn)練速度。除此以外,還會通過去除相似圖片來達到提高模型的精度。

      (2)YOLOV4算法

      YOLOV4網(wǎng)絡(luò)可以劃分為Backbone、Neck、Head三部分,其中Backbone采用CSPDarknet53作為骨干網(wǎng)絡(luò),Neck使用PANet和SPP(空間金字塔池化)來加強特征融合,而Head則沿用YOLOV3檢測頭。

      在YOLOV4網(wǎng)絡(luò)中,它首先會將一張圖片劃分成N×N個網(wǎng)格,如果某個機器人的中心落在某個網(wǎng)格內(nèi),則這個網(wǎng)絡(luò)就負(fù)責(zé)預(yù)測這個機器人對象。每個網(wǎng)格需要預(yù)測M個邊界框的位置和置信度,位置信息包括模型預(yù)測的對象的中心坐標(biāo)及寬高aw、ah。

      下一步是利用模型預(yù)測的中心坐標(biāo)和寬高求出預(yù)測框的中心坐標(biāo)(bx,by)及寬高bw、bh。

      將bx、by、bw、bh除以對應(yīng)的特征圖尺寸,再乘以原始輸入圖片尺寸(608×608)便可得到預(yù)測的邊界框在原圖中的實際坐標(biāo)。

      預(yù)測位置和預(yù)測種類是同時進行的,每張圖片劃分的N2個網(wǎng)格都會預(yù)測一個分類值,代表的是待測物在每個邊框上的概率。

      現(xiàn)在已經(jīng)預(yù)測出了N×N×M個目標(biāo)窗口,再根據(jù)設(shè)定的閾值篩出一定的低概率窗口,最后利用非極大值抑制法來選擇置信度高的目標(biāo)窗口。

      5 結(jié)語

      機器智能化的前提是其得具有感知能力,而計算機視覺給予了機器“看”的感知能力。本項目不僅能夠完成基本的燈光和數(shù)字的識別鎖定,還能進行精準(zhǔn)的測量與打擊,并且可以對目標(biāo)的運動進行預(yù)判。將項目實際運用于RoboMaster機甲大師賽,有著很好的自適應(yīng)性,高內(nèi)聚低耦合使其更具實用性。

      猜你喜歡
      預(yù)判懸臂矩形
      2021年下半年集裝箱海運市場走勢預(yù)判
      對書業(yè)的30個預(yù)判
      出版人(2020年5期)2020-11-17 01:45:18
      兩矩形上的全偏差
      化歸矩形證直角
      懸臂式硫化罐的開發(fā)設(shè)計
      整體供大于求 蘋果行情預(yù)判
      當(dāng)液壓遇上懸臂云臺 捷信GHFG1液壓懸臂云臺試用
      從矩形內(nèi)一點說起
      探討掛籃懸臂灌注連梁的施工
      LF爐懸臂爐蓋防傾覆結(jié)構(gòu)
      金溪县| 都江堰市| 盐池县| 贡嘎县| 囊谦县| 永德县| 湘阴县| 吉林省| 黎城县| 左贡县| 烟台市| 全州县| 灵川县| 全椒县| 会东县| 赤水市| 灵川县| 额济纳旗| 三都| 宣威市| 思茅市| 牡丹江市| 高平市| 双牌县| 望江县| 东乡| 上林县| 周宁县| 阳原县| 孟连| 平阳县| 科尔| 邵阳县| 长汀县| 龙胜| 大渡口区| 陈巴尔虎旗| 泾源县| 武清区| 宁阳县| 崇义县|