倪天偉,方正,趙大暑
(1.信陽(yáng)學(xué)院,河南信陽(yáng),464000;2皖江工學(xué)院,安徽馬鞍山,243031;3.安徽省教育廳“無(wú)人機(jī)開發(fā)及數(shù)據(jù)應(yīng)用”重點(diǎn)實(shí)驗(yàn)室,安徽馬鞍山,243031)
關(guān)鍵字:雙足機(jī)器人;進(jìn)攻策略;RoboCup3D;世界模型
RoboCup3D 仿真平臺(tái)最早于2008年引入法國(guó)A ldebar an Robotics公司的NAO型仿人機(jī)器人基礎(chǔ)模型而設(shè)計(jì),是目前最接近現(xiàn)實(shí)中人類足球比賽的仿真系統(tǒng),需要多個(gè)Agent 系統(tǒng)協(xié)同配合、世界模型設(shè)計(jì)、系統(tǒng)實(shí)時(shí)推理決策等才能解決復(fù)雜問(wèn)題[1-2]。在RoboCup3D仿真系統(tǒng)中,決策系統(tǒng)是雙足機(jī)器人的大腦,如果沒有對(duì)機(jī)器人的行為加以策略的控制,機(jī)器人就無(wú)法在比賽過(guò)程中做出有效、準(zhǔn)確的反應(yīng)。球隊(duì)的進(jìn)攻和防守的好壞主要由機(jī)器人的決策系統(tǒng)決定,一個(gè)好的進(jìn)攻策略可以給你創(chuàng)造更好的防守[3-4]。本文是結(jié)合筆者在RoboCup3D 仿真系統(tǒng)的開發(fā)和比賽項(xiàng)目的實(shí)踐,深入研究前鋒進(jìn)攻策略,設(shè)計(jì)了一套較好的雙足機(jī)器人進(jìn)攻策略,其中大腳球進(jìn)攻策略為反擊爭(zhēng)取更多的時(shí)間,最終可使我方更積極的掌握和控制比賽主導(dǎo)權(quán)。
世界模型(World Model)是機(jī)器人通過(guò)各種感知器獲取的對(duì)球場(chǎng)上各對(duì)象狀態(tài)的感知信息,通過(guò)對(duì)這些信息的存儲(chǔ)與說(shuō)明。World Model推出Agent在一個(gè)給定情況下最有可能的行動(dòng)。在RoboCup3D仿真機(jī)器人程序中,需要描述的世界是一個(gè)虛擬的足球場(chǎng),足球場(chǎng)中有靜態(tài)對(duì)象(如場(chǎng)地信息、標(biāo)志桿坐標(biāo)等)和動(dòng)態(tài)對(duì)象(如Agent的感知、Agent的動(dòng)作等)。在 RoboCup3D仿真程序中,世界模型是仿真機(jī)器人對(duì)當(dāng)前世界狀態(tài)的存儲(chǔ)和解釋。世界模型把Agent通過(guò)各種感知器獲取的對(duì)球場(chǎng)上狀態(tài)的感知信息保存下來(lái),從而為機(jī)器人進(jìn)行決策,并推測(cè)出在給定情況下最優(yōu)的動(dòng)作。為了實(shí)現(xiàn)World Model在RoboCup3D仿真競(jìng)賽中可以實(shí)時(shí)的更新Agent對(duì)當(dāng)期世界的感知外,還可以做出一定的預(yù)測(cè),KylinSky3D仿真程序?qū)orld Model劃分成兩個(gè)部分:場(chǎng)地狀態(tài)和Agent狀態(tài),如圖1所示。

圖1 我校KylinSky3D隊(duì) World Model 結(jié)構(gòu)
其中,場(chǎng)地狀態(tài)反映了整個(gè)球場(chǎng)場(chǎng)地的狀態(tài),由動(dòng)態(tài)和靜態(tài)的信息組成。靜態(tài)信息用來(lái)存儲(chǔ)場(chǎng)地大小、標(biāo)志桿坐標(biāo)、服務(wù)器說(shuō)明等一些固定的值,動(dòng)態(tài)信息存儲(chǔ)的是每個(gè)服務(wù)器周期中更新的信息,如球的速率和位置、球員的位置等。Agent 狀態(tài)描述的是Agent在當(dāng)前環(huán)境下的狀態(tài),它同樣也包括靜態(tài)和動(dòng)態(tài)的信息,Agent中的靜態(tài)信息是組成機(jī)器人模型的各種參數(shù),動(dòng)態(tài)信息則是包括機(jī)器人關(guān)節(jié)角度、步行速率和當(dāng)前策略。
Agent可以進(jìn)行基本動(dòng)作的實(shí)現(xiàn),但這只是具備了比賽的基本條件,如果沒有對(duì)機(jī)器人的行為加以策略的控制,機(jī)器人就無(wú)法在比賽過(guò)程中做出有效、準(zhǔn)確的反應(yīng),這就需要高層策略的分析與設(shè)計(jì)。目前,主流的動(dòng)作設(shè)計(jì)方法為選取關(guān)鍵幀插值。首先,確定動(dòng)作規(guī)劃中的關(guān)鍵點(diǎn),關(guān)鍵點(diǎn)中各個(gè)關(guān)節(jié)角度的集合則為當(dāng)前關(guān)鍵幀,最終,將相鄰關(guān)鍵幀中插值獲得完整動(dòng)作[5]。我校KylinSky 3D機(jī)器人足球隊(duì)采用了大腳開球、長(zhǎng)傳、帶球和快踢等多種踢球動(dòng)作。由于開球的角色是通過(guò)前鋒完成的,所以,目前我隊(duì)程序采取的開球策略是:首先判斷當(dāng)前比賽模式,當(dāng)是我方開球時(shí),會(huì)進(jìn)行角色選擇,當(dāng)角色是前鋒時(shí),會(huì)再根據(jù)動(dòng)作決策做出角色所需要進(jìn)行的動(dòng)作。本文主要針機(jī)器人開球動(dòng)作進(jìn)行研究并設(shè)計(jì)進(jìn)攻策略,在比賽中應(yīng)對(duì)具體情況。
在現(xiàn)有的足球機(jī)器人系統(tǒng)程序中,以單個(gè)機(jī)器人上場(chǎng)的狀態(tài)為例,在比賽開始前,雙足機(jī)器人站位正常,機(jī)器人與球之間還有一段距離,如圖2所示。比賽開始后,圖3是機(jī)器人走向球的過(guò)程,當(dāng)走到球的跟前,機(jī)器人會(huì)進(jìn)行位置上的微調(diào)、判斷是否可以開球等一些行為,等所有動(dòng)作完成好后,機(jī)器人開始開球。目前,假設(shè)我隊(duì)前鋒所采取的開球動(dòng)作是帶球方式(HandleBall),采用現(xiàn)有程序開球方式進(jìn)攻陣型和開球情況如圖4所示。

圖2 現(xiàn)有程序單個(gè)機(jī)器人上場(chǎng)站位

圖3 機(jī)器人走位進(jìn)行開球

圖4 現(xiàn)有程序進(jìn)攻陣型及開球
從以上實(shí)踐結(jié)果分析可知,我隊(duì)現(xiàn)有程序中,前鋒上場(chǎng)站位離球有一段距離,開球之前需要先走到球前面,進(jìn)行微調(diào)后才開始開球。開球力度不大,開球距離不遠(yuǎn),并且前鋒開球結(jié)束會(huì)出現(xiàn)摔倒等現(xiàn)象。針對(duì)這些情況,有必要對(duì)現(xiàn)有程序進(jìn)行改進(jìn)。
我隊(duì)現(xiàn)有程序中,前鋒上場(chǎng)使用初始開球方式,使用Handle_Ball這種方式開球,力度不大,開球距離短,致使對(duì)反方造成的威脅有限,使得我方很容易失球。針對(duì)這種情況,究其原因,是我方前鋒站位及開球方式的問(wèn)題。下面就這兩個(gè)問(wèn)題進(jìn)行進(jìn)攻策略的重新設(shè)計(jì)。
(1)調(diào)整前鋒站位。比賽之前,機(jī)器人會(huì)進(jìn)行一系列信息的初始化工作,其中就包含初始化站位。程序會(huì)首先初始化站位,由于平臺(tái)默認(rèn)開球方在球場(chǎng)的左側(cè),所以當(dāng)我方開球時(shí),我方處于球場(chǎng)的左側(cè),要及時(shí)針對(duì)球員坐標(biāo)進(jìn)行初始化。再通過(guò)離線調(diào)試,將我隊(duì)前鋒上場(chǎng)坐標(biāo)調(diào)整到較好位置,使得前鋒可以開大腳球,程序流程圖如圖5所示。

圖5 優(yōu)化開球動(dòng)作程序流程圖
(2)優(yōu)化開球方式。調(diào)整好前鋒上場(chǎng)坐標(biāo)后,需要改進(jìn)前鋒現(xiàn)有的開球方式。競(jìng)賽中,球員在完成好初始化工作后,會(huì)進(jìn)行策略選擇:首先,根據(jù)世界模型中獲取的比賽模式選擇哪方開球,確定我方開球后,再根據(jù)角色的不同選擇不同的策略,改進(jìn)的程序重寫前鋒函數(shù),專門進(jìn)行前鋒的行為控制。在該函數(shù)中,不進(jìn)行決策判斷,直接將其賦值為大腳球方式(Shoot_Ball),由于前鋒上場(chǎng)之前已經(jīng)調(diào)整好開球的最佳角度,所以采用Shoot_Ball開球方式后,前鋒可以直接開球,并且開球效果明顯優(yōu)于現(xiàn)有開球方式。
本次實(shí)驗(yàn)采用 SimSpark仿真平臺(tái)進(jìn)行仿真實(shí)驗(yàn),SimSpark仿真平臺(tái)是RoboCup 3D的比賽環(huán)境。參加RoboCup 3D仿真比賽需要一臺(tái)電腦當(dāng)作服務(wù)器,比賽雙方的二進(jìn)制代碼通過(guò)上傳到服務(wù)器后,啟動(dòng)腳本程序運(yùn)行[6]。通過(guò)RoboViz[7]作為Rcssserver3D監(jiān)視器來(lái)觀測(cè)雙足機(jī)器人在球場(chǎng)中的運(yùn)動(dòng)情況。針對(duì)我隊(duì)進(jìn)攻時(shí)的開球方式, 結(jié)合本文中提出的設(shè)計(jì)思路, 改進(jìn)了我隊(duì)現(xiàn)有程序的開球方式。改進(jìn)后單個(gè)機(jī)器人上場(chǎng)時(shí)的站位,如圖6所示,從圖中可以看出,機(jī)器人距離球的位置很近,這樣使得機(jī)器人不需要再走到球的位置,而選擇直接開始開球。改進(jìn)后的單個(gè)機(jī)器人的開球,如圖7所示。將單個(gè)機(jī)器人開球應(yīng)用到進(jìn)攻陣型中,改進(jìn)現(xiàn)有程序進(jìn)攻時(shí)開球方式,如圖8所示。

圖6 改進(jìn)后的單個(gè)機(jī)器人站位

圖7 改進(jìn)后的單個(gè)機(jī)器人開球

圖8 改進(jìn)后的程序進(jìn)攻陣型以及開球
針對(duì)程序改進(jìn)前后各執(zhí)行100次開球?qū)嶒?yàn),實(shí)驗(yàn)對(duì)比結(jié)果,如表1所示。

表1 采用不同開球方式的平均開球距離比較(m/s)
由實(shí)驗(yàn)結(jié)果可以明顯看出,程序改進(jìn)后,我方開球距離增大了,采取的大腳開球可以直接打到對(duì)方防御陣型后方,極具攻擊性,提高了我隊(duì)整體的進(jìn)攻力度。值得注意的是,在改進(jìn)的程序中,前鋒不進(jìn)行開球方式的選擇,而直接進(jìn)行大腳球方式(Shoot_Ball)開球,會(huì)存在當(dāng)我方二次開球時(shí),前鋒無(wú)法開球的情況,這時(shí)可以設(shè)計(jì)一個(gè)IsTimeOut 函數(shù)對(duì)開球時(shí)間進(jìn)行控制,當(dāng)超過(guò)這個(gè)時(shí)間,前鋒需要走到球的位置,對(duì)球進(jìn)行Handle_Ball開球方式處理。
本文針對(duì)RoboCup3D仿真中雙足機(jī)器人的踢球動(dòng)作出現(xiàn)踢球力度不大、距離不遠(yuǎn)和摔倒等現(xiàn)象,提出了一種基于大腳開球的進(jìn)攻策略。經(jīng)仿真實(shí)驗(yàn)證明,采用此策略可以使傳球距離超越整個(gè)半場(chǎng),這是我方掌握和控制比賽主動(dòng)權(quán),取得勝利的一個(gè)有效手段,此時(shí),我方明顯占據(jù)優(yōu)勢(shì)。同時(shí),改進(jìn)后的程序也存在一些問(wèn)題,在測(cè)試過(guò)程中,出現(xiàn)大腳開球開出的距離不穩(wěn)定的情況,改進(jìn)后的代碼仍需要做進(jìn)一步優(yōu)化處理。