宇海萍 馮靈清
摘 要: 針對FIRA 5VS5機(jī)器人仿真足球項(xiàng)目,在研究已有比賽策略的基礎(chǔ)上,提出了分區(qū)協(xié)同防守策略,并對策略中的角色分配、守門員策略和防守球員防守策略進(jìn)行了深入的分析,最終給出了防守流程和算法設(shè)計(jì)。平臺(tái)驗(yàn)證和比賽成績表明,該策略能大大提高防守率,達(dá)到較好的防守效果。
關(guān)鍵詞: Fira 5vs5; 仿真機(jī)器人足球; 防守; 策略
中圖分類號:TP242 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2018)07-13-04
Abstract: In view of the FIRA 5vs5 robot soccer simulation project, on the basis of the existing competition strategy, put forward the collaborative partition defense strategy, and carried on the thorough analysis of role assignment strategy, goalkeeper strategy and defense strategy, finally give the defensive process and algorithm design. The results of platform verification and competition show that these strategy can greatly improve the defense rate and achieve good defensive effect.
Key words: FIRA 5VS5; simulation robot soccer; defense; strategy
0 引言
機(jī)器人足球仿真賽是一種用軟件模擬足球賽場的比賽,其主要內(nèi)容是研究比賽策略,通過將策略輸入軟件來控制機(jī)器人,完成跑位、踢球、傳球、射門、防守等動(dòng)作。機(jī)器人足球仿真賽不僅要求編程者熟悉比賽平臺(tái)及足球比賽規(guī)則,而且要擁有強(qiáng)大的編程能力,是人類智慧的完美體現(xiàn)。
FIRA全稱國際機(jī)器人足球協(xié)會(huì)聯(lián)合會(huì)(FIRA——Federation of International Robot Soccer Association),簡稱國際機(jī)器人足聯(lián)。FIRA機(jī)器人足球比賽種類很多,包括半自主型機(jī)器人足球(MiroSot)、全自主型機(jī)器人足球(RoboSot)、仿真機(jī)器人足球(Simuro-Sot)、類人機(jī)器人足球(HuroSot) 等比賽項(xiàng)目[1]。FIRA 5VS5屬于仿真機(jī)器人足球(Simuro-Sot)的一種。
FIRA 5VS5機(jī)器人足球仿真賽開賽近二十年來,前人提出了諸多比賽策略。寧建華等[2]提出了多智能體足球機(jī)器人策略;張彥鐸等[3]通過分析實(shí)體的運(yùn)動(dòng)規(guī)律,提出了預(yù)測法射門策略;李敏等[4]提出了一種不同角色不同分區(qū)的針對性防守策略;余軻, 鄧本再[5]對足球機(jī)器人守門員的路徑規(guī)劃進(jìn)行了深入的研究。本文在前人研究的基礎(chǔ)上,提出了一種新的分區(qū)協(xié)同防守策略,進(jìn)一步提高了防守效果。
1 FIRA 5VS5仿真平臺(tái)介紹
FIRA 5VS5仿真機(jī)器人足球賽以FIRA SimuroSot 5VS5為比賽平臺(tái),該平臺(tái)由澳大利亞Dr.Jun Jo領(lǐng)導(dǎo)的Griffith大學(xué)信息技術(shù)學(xué)院RRS開發(fā)小組來開發(fā)完成,平臺(tái)采用三維仿真高度模擬了小球碰撞的真實(shí)情景[6]。平臺(tái)界面如圖1所示。
FIRA 5VS5仿真系統(tǒng)分為黃藍(lán)兩隊(duì),每隊(duì)由1名守門員和4名球員組成,雙方將各自的策略提供給仿真程序進(jìn)行比賽。其中策略由三部分組成。①基本行為的實(shí)現(xiàn):如多人搶球、搶點(diǎn)射門、站位、邊路頂球、多人攔截和守門等。②上層策略的實(shí)現(xiàn):如進(jìn)攻策略,防守策略和守門員策略,在每個(gè)策略中,五個(gè)機(jī)器人都有不同的站位和陣型;③定位球策略的實(shí)現(xiàn):如開球、點(diǎn)球、任意球,門球、自由球。
2 機(jī)器人防守策略研究
一支球隊(duì)防守的強(qiáng)弱,將直接關(guān)系到球隊(duì)的成敗。在機(jī)器人足球仿真賽中,守門員防守策略的設(shè)計(jì),以及防守球員角色的分配和配合策略至關(guān)重要。
2.1 角色分配
本策略將五名球員進(jìn)行了角色分配,分工明確,各司其責(zé)。其中,0號是守門員,這是一個(gè)固定角色,1號是鐵后衛(wèi),2號是助攻兼后衛(wèi),3號的角色是進(jìn)攻、助攻兼防守,4號負(fù)責(zé)助攻和包抄,這四名球員的角色是不固定的,策略中有專門的角色互換函數(shù)Change(),通過判斷球員和球的相對位置和距離,實(shí)現(xiàn)四個(gè)角色間的互換。
2.2 守門員策略
守門員策略可以分為兩種:積極防守和消極防守[2]。積極防守是指守門員主動(dòng)出擊對球進(jìn)行攔截并踢出;消極防守是指守門員站在球門區(qū)通過預(yù)測球可能的落點(diǎn)進(jìn)行防守。本守門員策略將結(jié)合兩種防守方式,以求達(dá)到最大的防守率。
本策略將整個(gè)防守區(qū)域分成了五個(gè)區(qū)域,不同的區(qū)域守門員將采取不同的防守動(dòng)作[7]。如圖2所示。當(dāng)球位于區(qū)域①時(shí),球的y坐標(biāo)在球門范圍,并且x坐標(biāo)離守門員過近,守門員的動(dòng)作是出擊,出擊流程如圖3所示;當(dāng)球位于區(qū)域③時(shí),由于離守門員較近,守門員通過不同方向的旋轉(zhuǎn),將球轉(zhuǎn)出去;當(dāng)球位于區(qū)域②④⑤時(shí),通過預(yù)測球的位置調(diào)整守門員的y坐標(biāo)進(jìn)行防守。具體的防守流程如圖4所示。
通常情況下,守門員的中心點(diǎn)始終保持在L線上運(yùn)動(dòng),如圖5所示。球與球門上邊界GTOP的連線d1,以及球與球門下邊界GBOT的連線d2之間的區(qū)域,是球最可能的進(jìn)攻區(qū)域[8]。通過不斷預(yù)測球的y坐標(biāo),守門員的y坐標(biāo)也在不斷地微調(diào),它總是有預(yù)見性地站位在球可能進(jìn)攻的位置點(diǎn)。
本策略中守門員函數(shù)Goalie()的主要程序代碼如下:
if(ball.x< x0+1.5 ) //球危險(xiǎn)的底線
{ if(ball.y
//球位于區(qū)域①
{ Goalie_out(g,robot);
return;
}
else//球位于區(qū)域②
{ gy=ball.y;
}
}
else//中路
{ //如果只有守門員離球最近
if(g->robot[robot].ToBall.dis<3.5&&ball.y;
[robot].pos.y+1.5 &&ball.y;>g->robot[robot].pos
.y-1.5 &&g-;>HisSmallDis>20) //區(qū)域③
{ if(ball.y>41.7)
Velocity(g,robot,-125,125); //獅子甩尾,將球順時(shí)針轉(zhuǎn)出去
else
Velocity(g,robot,125,-125); //將球逆時(shí)針轉(zhuǎn)出去
}
if(can_in)//如果可以打進(jìn),區(qū)域④
{ y=meet_y(g->ball.pos,g->ball.speed.z,x0+1.5);
//計(jì)算球與守門員的所在位置X軸的交點(diǎn)
if(y>41.7+1.5)
gy=y-0.5;
else if(y<41.7-1.5)
gy=y+0.5;
else
gy=y;
}
else//區(qū)域⑤,預(yù)防
{ FromTo gateto1=preball-Vect(FLEFT,GTOP,0);
//計(jì)算預(yù)測球與球門上邊界的相對位置
FromTo gateto2=preball-Vect(FLEFT,GBOT,0);
//計(jì)算預(yù)測球與球門下邊界的相對位置 double k=gateto1.dis/gateto2.dis;//工程力學(xué)中的轉(zhuǎn)角系數(shù)k
k=k/(1+k);
k=(k+0.5)/2;
//以下為門將跑位目標(biāo)位置的y值的計(jì)算
double angle=gateto1.z*(1-k)+gateto2.z*k;
gy=preball.y+tan(angle*PI/180)*(x0 - preball.x);
//根據(jù)夾角重新計(jì)算gy
}
}
gy=Cut(gy,GBOT-3,GTOP+3);
//將gy控制[GBOT-3,GTOP+3]范圍內(nèi)
go.y=gy;
go.x=gx;
GoaliePosition(g,robot,go,90,0.2); //守門員專用跑位函數(shù),
其以90度角跑位到go的位置
2.3 防守球員防守策略
防守球員的主要作用是及時(shí)判斷對方進(jìn)攻的可能性,對球進(jìn)行攔截或干擾對手進(jìn)球。本策略中,1、2、3號球員充當(dāng)了防守球員的角色。其中1號球員是鐵后衛(wèi),它的主要策略是首先判斷球是否到了己方半場,當(dāng)預(yù)判steps個(gè)周期后球過半場,要及時(shí)果斷出擊,調(diào)用push_out()將球擊回前場,其余時(shí)間始終堅(jiān)守后方。如圖6箭頭所指的機(jī)器人即為1號鐵后衛(wèi)。
1號鐵后衛(wèi)的程序代碼如下:
void soldier1(Game *g,int robot,double the_x)
{ Vector3D ball=g->robot[robot].BestBall;
FromTo to_ball=ball-g->robot[robot].pos;
if(ball.x>50)
Position(g,robot,Vect(20,41.7,0),to_ball.z,2);
//跑位到(20,41.7,0)的位置防守
else
push_out(g,robot); //將球擊回前場
}
2、3號球員的主要角色是前鋒,同時(shí)又是對球把握、跟蹤、以及防守?cái)撤降闹匾M成部分,是全場最為活躍的兩位球員[9]。程序中定義了一個(gè)狀態(tài)變量how,它的值可能為-1,1,2,分別代表防守狀態(tài),進(jìn)攻狀態(tài)和邊路擠狀態(tài),通過判斷狀態(tài)how,預(yù)測球的位置和對方球員的位置來決定2、3號球員的角色分配。兩位球員的動(dòng)作流程如圖7所示,其中函數(shù)kick()的作用是將球從一個(gè)位置踢到另一個(gè)位置。
3 結(jié)束語
本文討論了機(jī)器人足球的防守策略,通過守門員對不同區(qū)域的防守,以及防守球員的配合,實(shí)現(xiàn)整體防守的效果。通過在FIRA SimuroSot 5VS5仿真平臺(tái)反復(fù)試驗(yàn)論證,該防守策略能明顯提高防守的效率,提高球隊(duì)的整體競爭實(shí)力。該策略在2014年華北五省機(jī)器人大賽FIRA 5VS5仿真賽中獲得了冠軍,并在2017年中國機(jī)器人大賽FIRA 5VS5仿真賽中獲得了一等獎(jiǎng)的好成績。但該策略并未充分考慮犯規(guī)的情況,對此我們將進(jìn)一步完善。
參考文獻(xiàn)(References):
[1] 李實(shí),徐旭明,葉榛等.國際機(jī)器人足球比賽及其相關(guān)技術(shù)[J].機(jī)器人,2000.22(5):420-426
[2] 寧建華,俞輝,趙英凱.多智能體足球機(jī)器人策略研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2009.30(17):4064-4065
[3] 張彥鐸,王朝亮,閔鋒等.仿真機(jī)器人足球比賽中的射門策略[J].武漢工程大學(xué)學(xué)報(bào),2012.34(10):62-65
[4] 李敏,李彬,黃浩等.基于5VS5仿真機(jī)器人足球區(qū)域防守策略設(shè)計(jì)[J].數(shù)字技術(shù)與應(yīng)用,2011.10:172-173
[5] 余軻,鄧本再.基于標(biāo)準(zhǔn)可加性模糊系統(tǒng)的足球機(jī)器人守門員的路徑規(guī)劃[J].電子設(shè)計(jì)工程,2016.24(18):155:158
[6] 戴皓,李小堅(jiān).機(jī)器人足球比賽策略仿真系統(tǒng)的設(shè)計(jì)與建模[J].北方工業(yè)大學(xué)學(xué)報(bào),2004.16(1):25-29
[7] 張小川,李祖樞,尚路顏.機(jī)器人足球比賽球場分區(qū)的研究[A].2004中國機(jī)器人足球比賽暨學(xué)術(shù)研討會(huì)論文集[C],2004:210-212
[8] 羅俊濤.MiroSot機(jī)器人足球比賽決策系統(tǒng)研究[D].華中師范大學(xué),2008.
[9] 唐賢倫,周家林,李臘梅,張毅.基于蟻群系統(tǒng)的仿真機(jī)器人足球攻防轉(zhuǎn)換策略[J].計(jì)算機(jī)仿真學(xué)報(bào),2015.27(3):534-541