本發(fā)明屬于圖像識別技術(shù)領(lǐng)域,尤其涉及一種機(jī)器人自動射擊方法。
背景技術(shù):
全國大學(xué)生機(jī)器人大賽robomasters是由共青團(tuán)中央、全國學(xué)聯(lián)、深圳市人民政府聯(lián)合主辦的賽事,是中國最具影響力的機(jī)器人項(xiàng)目,是全球獨(dú)創(chuàng)的機(jī)器人競技平臺,包含機(jī)器人賽事、機(jī)器人生態(tài)、以及工程文化等多項(xiàng)內(nèi)容,正在全球范圍內(nèi)掀起一場機(jī)器人科技狂潮。作為國內(nèi)首個(gè)激戰(zhàn)類機(jī)器人競技比賽,robomasters大賽在其誕生伊始就憑借其顛覆傳統(tǒng)的比賽方式、震撼人心的視聽沖擊力、激烈硬朗的競技風(fēng)格,吸引到全國數(shù)百所高等院校、近千家高新科技企業(yè)以及數(shù)以萬計(jì)的科技愛好者的深度關(guān)注。參賽隊(duì)員將通過比賽獲得寶貴的實(shí)踐技能和戰(zhàn)略思維,將理論與實(shí)踐相結(jié)合,在激烈的競爭中打造先進(jìn)的智能機(jī)器人。
在robomasters全國大學(xué)生機(jī)器人大賽中,比賽雙方的機(jī)器人需要發(fā)射彈丸射擊對方機(jī)器人的“裝甲板”,每射中一次,對方機(jī)器人扣除一定的“血量”,直至扣除完所有的血量。在這個(gè)過程中,可引入“自動射擊”,即我方機(jī)器人自動識別攻擊對方機(jī)器人。一般自動射擊方案為,在己方機(jī)器人的槍管處加一個(gè)攝像頭,攝像頭光軸方向與槍管平行,攝像頭采集到圖像后,識別出目標(biāo)機(jī)器人的“裝甲板”,并根據(jù)目標(biāo)在圖像中距離圖像中心點(diǎn)的誤差調(diào)整槍管方向。此種方法無法測量出目標(biāo)的精確距離,在面對多個(gè)目標(biāo)時(shí),難以精確鎖定目標(biāo);難以解決遠(yuǎn)距離攻擊時(shí)重力對彈丸的影響;難以攻擊運(yùn)動的目標(biāo)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的發(fā)明目的是:為了解決現(xiàn)有技術(shù)中存在的以上問題,本發(fā)明提出了一種機(jī)器人自動射擊方法。
本發(fā)明的技術(shù)方案是:一種機(jī)器人自動射擊方法,包括以下步驟:
a、采用雙相機(jī)獲取射擊目標(biāo)圖片,分別對圖片進(jìn)行射擊目標(biāo)匹配,再對射擊目標(biāo)進(jìn)行雙相機(jī)匹配;
b、采用雙相機(jī)對射擊目標(biāo)進(jìn)行雙目測量,得到射擊目標(biāo)相對于機(jī)器人的三維坐標(biāo);
c、選取距離機(jī)器人最近的射擊目標(biāo)進(jìn)行鎖定,將步驟b中射擊目標(biāo)相對于機(jī)器人的三維坐標(biāo)轉(zhuǎn)換為射擊目標(biāo)相對于射擊云臺的三維坐標(biāo),計(jì)算射擊云臺的豎直和水平軸角度,利用主控系統(tǒng)根據(jù)射擊云臺的豎直和水平軸角度完成自動射擊。
進(jìn)一步地,所述步驟a中采用雙相機(jī)獲取射擊目標(biāo)圖片,分別對圖片進(jìn)行射擊目標(biāo)匹配,具體包括以下分步驟:
a11、獲取射擊目標(biāo)圖片,提取目標(biāo)燈條信息;
a12、依次計(jì)算并比較各個(gè)燈條的匹配誤差;
a13、選取步驟a12中匹配誤差最小的兩個(gè)燈條匹配為一個(gè)射擊目標(biāo),并將該射擊目標(biāo)信息存入鏈表。
進(jìn)一步地,所述步驟a11獲取射擊目標(biāo)圖片,提取目標(biāo)燈條信息,具體包括以下分步驟:
a111、將獲取的射擊目標(biāo)圖片進(jìn)行灰度化處理,通過設(shè)置閾值提取灰度化圖片的高亮部分,并標(biāo)記為圖片1;
a112、將圖片中的rgb三通道劃分為三種像素顏色圖片,將需要提取顏色燈條對應(yīng)像素顏色圖片的像素值分別減去剩余兩種像素顏色圖片的像素值,并將得到的圖片標(biāo)記為圖片2;
a113、計(jì)算步驟a111中圖片1與步驟a112中圖片2的交集,并將得到的圖片標(biāo)記為圖片3;
a114、分別對步驟a113中的圖片3進(jìn)行面積篩選和角度篩選處理,得到需要提取顏色燈條的燈條信息并存入鏈表。
進(jìn)一步地,所述步驟a12中計(jì)算各個(gè)燈條的匹配誤差的計(jì)算方法為
e=a*(l1-l2)+b*(theta1-theta2)+c*(row1-row2)
+d*((col1-col2)/(l1+l2)-e)
其中,e為匹配誤差,a,b,c,d為匹配系數(shù),l1,l2分別為燈條1和燈條2的長度,theta1,theta2分別為燈條1和燈條2的角度,row1,row2分別為燈條1和燈條2的行坐標(biāo),col1,col2分別為燈條1和燈條2的列坐標(biāo),e為射擊目標(biāo)的標(biāo)準(zhǔn)長寬比值。
進(jìn)一步地,所述步驟a中對射擊目標(biāo)進(jìn)行雙相機(jī)匹配,具體包括以下分步驟:
a21、采用雙相機(jī)分別對射擊目標(biāo)的三維坐標(biāo)進(jìn)行測量;
a22、將步驟a21中射擊目標(biāo)相對于雙相機(jī)的左相機(jī)的三維坐標(biāo)變換為射擊目標(biāo)相對于雙相機(jī)的右相機(jī)的三維坐標(biāo);
a23、分別計(jì)算所有步驟a22中射擊目標(biāo)相對于左相機(jī)變換后的三維坐標(biāo)與射擊目標(biāo)相對于右相機(jī)的三維坐標(biāo)的歐式距離,選擇距離最短的兩個(gè)射擊目標(biāo)進(jìn)行匹配。
進(jìn)一步地,所述步驟a21采用雙相機(jī)分別對射擊目標(biāo)的三維坐標(biāo)進(jìn)行測量,具體包括以下分步驟:
a211、采用單個(gè)相機(jī)測量射擊目標(biāo)與相機(jī)之間的距離,計(jì)算公式表示為:
d=(f*l)/d*l
其中,d為射擊目標(biāo)距離相機(jī)的距離,f為相機(jī)焦距,l為射擊目標(biāo)實(shí)際高度,d為相機(jī)像原長度,l為射擊目標(biāo)在相機(jī)拍攝的圖片上的長度;
a212、分別計(jì)算射擊目標(biāo)在相對于相機(jī)的坐標(biāo)系中坐標(biāo)軸方向的角度,計(jì)算公式分別表示為:
thetax=((col-col0)/widht)*thetaw
thetay=((row-row0)/hight)*thetah
其中,thetax,thetay分別為射擊目標(biāo)沿坐標(biāo)軸方向的角度,row,col分別為射擊目標(biāo)的行、列坐標(biāo),widht,hight分別為相機(jī)橫向和縱向的總像素?cái)?shù),thetaw,thetah為相機(jī)橫向和縱向的視角;
a213、根據(jù)步驟a211和a212得到射擊目標(biāo)的極坐標(biāo),并將射擊目標(biāo)的極坐標(biāo)轉(zhuǎn)換為三維直角坐標(biāo)。
本發(fā)明的有益效果是:本發(fā)明采用燈條匹配方法實(shí)現(xiàn)圖片顏色與射擊目標(biāo)匹配,再進(jìn)行雙相機(jī)與射擊目標(biāo)匹配,根據(jù)雙相機(jī)對射擊目標(biāo)的雙目測量結(jié)果結(jié)合雙相機(jī)與射擊目標(biāo)的匹配結(jié)果實(shí)現(xiàn)對射擊目標(biāo)的鎖定,從而實(shí)現(xiàn)機(jī)器人自動射擊。
附圖說明
圖1是本發(fā)明的機(jī)器人自動射擊方法的流程示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,為本發(fā)明的機(jī)器人自動射擊方法的流程示意圖。一種機(jī)器人自動射擊方法,包括以下步驟:
a、采用雙相機(jī)獲取射擊目標(biāo)圖片,分別對圖片進(jìn)行射擊目標(biāo)匹配,再對射擊目標(biāo)進(jìn)行雙相機(jī)匹配;
b、采用雙相機(jī)對射擊目標(biāo)進(jìn)行雙目測量,得到射擊目標(biāo)相對于機(jī)器人的三維坐標(biāo);
c、選取距離機(jī)器人最近的射擊目標(biāo)進(jìn)行鎖定,將步驟b中射擊目標(biāo)相對于機(jī)器人的三維坐標(biāo)轉(zhuǎn)換為射擊目標(biāo)相對于射擊云臺的三維坐標(biāo),計(jì)算射擊云臺的豎直和水平軸角度,利用主控系統(tǒng)根據(jù)射擊云臺的豎直和水平軸角度完成自動射擊。
在步驟a中,本發(fā)明采用雙相機(jī)獲取射擊目標(biāo)圖片,分別對圖片進(jìn)行射擊目標(biāo)匹配,具體包括以下分步驟:
a11、獲取射擊目標(biāo)圖片,提取目標(biāo)燈條信息,具體包括以下分步驟:
a111、將獲取的射擊目標(biāo)圖片進(jìn)行灰度化處理,通過設(shè)置閾值提取灰度化圖片的高亮部分,并標(biāo)記為圖片1;
a112、將圖片中的rgb三通道劃分為三種像素顏色圖片,將需要提取顏色燈條對應(yīng)像素顏色圖片的像素值分別減去剩余兩種像素顏色圖片的像素值,并將得到的圖片標(biāo)記為圖片2;即當(dāng)需要提取藍(lán)色燈條信息時(shí),用b圖的像素值分別減去r圖和g圖的像素值,將得到的圖片標(biāo)記為圖片2;當(dāng)需要提取紅色燈條信息時(shí)、用r圖的像素值分別減去b圖和g圖的像素值,將得到的圖片標(biāo)記為圖片2。
a113、計(jì)算步驟a111中圖片1與步驟a112中圖片2的交集,并將得到的圖片標(biāo)記為圖片3;
a114、分別對步驟a113中的圖片3進(jìn)行面積篩選和角度篩選處理,得到需要提取顏色燈條的燈條信息并存入鏈表。這里對圖片3進(jìn)行角度篩選是指在豎直方向上進(jìn)行處理,提取顏色燈條的燈條信息包括中心點(diǎn)行列坐標(biāo)信息、長度信息、角度信息。
a12、依次計(jì)算并比較各個(gè)燈條的匹配誤差,計(jì)算方法為
e=a*(l1-l2)+b*(theta1-theta2)+c*(row1-row2)
+d*((col1-col2)/(l1+l2)-e)
其中,e為匹配誤差,a,b,c,d為匹配系數(shù),l1,l2分別為燈條1和燈條2的長度,theta1,theta2分別為燈條1和燈條2的角度,row1,row2分別為燈條1和燈條2的行坐標(biāo),col1,col2分別為燈條1和燈條2的列坐標(biāo),e為射擊目標(biāo)的標(biāo)準(zhǔn)長寬比值。優(yōu)選地,e取值為射擊目標(biāo)的標(biāo)準(zhǔn)長寬比值的兩倍。
a13、選取步驟a12中匹配誤差最小的兩個(gè)燈條匹配為一個(gè)射擊目標(biāo),并將該射擊目標(biāo)信息存入鏈表。這里的射擊目標(biāo)信息包括中心點(diǎn)行列信息,高度信息。
本發(fā)明對射擊目標(biāo)進(jìn)行雙相機(jī)匹配,具體包括以下分步驟:
a21、采用雙相機(jī)分別對射擊目標(biāo)的三維坐標(biāo)進(jìn)行測量,即采用左右兩個(gè)相機(jī)分別對射擊目標(biāo)進(jìn)行單目測量,具體包括以下分步驟:
a211、采用單個(gè)相機(jī)測量射擊目標(biāo)與相機(jī)之間的距離,計(jì)算公式表示為:
d=(f*l)/d*l
其中,d為射擊目標(biāo)距離相機(jī)的距離,f為相機(jī)焦距,l為射擊目標(biāo)實(shí)際高度,d為相機(jī)像原長度,l為射擊目標(biāo)在相機(jī)拍攝的圖片上的長度;
a212、分別計(jì)算射擊目標(biāo)在相對于相機(jī)的坐標(biāo)系中坐標(biāo)軸方向的角度,計(jì)算公式分別表示為:
thetax=((col-col0)/widht)*thetaw
thetay=((row-row0)/hight)*thetah
其中,thetax,thetay分別為射擊目標(biāo)沿坐標(biāo)軸方向的角度,row,col分別為射擊目標(biāo)的行、列坐標(biāo),widht,hight分別為相機(jī)橫向和縱向的總像素?cái)?shù),thetaw,thetah為相機(jī)橫向和縱向的視角;
a213、根據(jù)步驟a211和a212得到射擊目標(biāo)的極坐標(biāo),并將射擊目標(biāo)的極坐標(biāo)轉(zhuǎn)換為三維直角坐標(biāo)。
a22、將步驟a21中射擊目標(biāo)相對于雙相機(jī)的左相機(jī)的三維坐標(biāo)變換為射擊目標(biāo)相對于雙相機(jī)的右相機(jī)的三維坐標(biāo),即將左相機(jī)在左相機(jī)坐標(biāo)系下測得的三維坐標(biāo)變換到右相機(jī)坐標(biāo)系下;
a23、分別計(jì)算所有步驟a22中射擊目標(biāo)相對于左相機(jī)變換后的三維坐標(biāo)與射擊目標(biāo)相對于右相機(jī)的三維坐標(biāo)的歐式距離,即分別計(jì)算所有步驟a22中左相機(jī)變換后的三維坐標(biāo)與右相機(jī)測得的三維坐標(biāo)的歐氏距離,選擇距離最短的兩個(gè)射擊目標(biāo)進(jìn)行匹配。
在步驟b中,本發(fā)明采用雙相機(jī)對射擊目標(biāo)進(jìn)行雙目測量,得到射擊目標(biāo)相對于機(jī)器人的三維坐標(biāo),將射擊目標(biāo)相對于機(jī)器人的三維坐標(biāo)按照目標(biāo)1-n保存到鏈表中。
在步驟c中,本發(fā)明根據(jù)步驟a從多個(gè)射擊目標(biāo)中選擇與雙相機(jī)距離最近的射擊目標(biāo)進(jìn)行匹配,實(shí)現(xiàn)選取距離機(jī)器人最近的射擊目標(biāo)進(jìn)行鎖定,使得一定距離范圍內(nèi)只攻擊這一個(gè)目標(biāo);再將步驟b中射擊目標(biāo)相對于機(jī)器人的三維坐標(biāo)轉(zhuǎn)換為射擊目標(biāo)相對于射擊云臺的三維坐標(biāo),計(jì)算射擊云臺的豎直和水平軸角度,利用主控系統(tǒng)根據(jù)射擊云臺的豎直和水平軸角度完成自動射擊。為了進(jìn)一步提高射擊準(zhǔn)確性,本發(fā)明在射擊目標(biāo)相對于射擊云臺的三維坐標(biāo)的基礎(chǔ)上,加入重力對彈丸的影響,再根據(jù)目標(biāo)之前的坐標(biāo)對目標(biāo)下一時(shí)刻的位置坐標(biāo)進(jìn)行預(yù)判,具體為對最近的400ms內(nèi)目標(biāo)的運(yùn)動坐標(biāo)進(jìn)行局部二次擬合,并預(yù)測100ms以后目標(biāo)的位置,得到機(jī)器人所要攻擊的射擊目標(biāo)的實(shí)際坐標(biāo)點(diǎn),解決了彈丸飛行過程中運(yùn)動目標(biāo)位移的問題,從而解算出云臺應(yīng)有的豎直和水平軸角度,將信息發(fā)送到主控系統(tǒng)進(jìn)行射擊。
本領(lǐng)域的普通技術(shù)人員將會意識到,這里所述的實(shí)施例是為了幫助讀者理解本發(fā)明的原理,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實(shí)施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開的這些技術(shù)啟示做出各種不脫離本發(fā)明實(shí)質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。