何芮 蔣昊 李欣雨
摘? 要:為充分合理地利用場(chǎng)地,增加防守魚的生存時(shí)間,提出一種基于URWPGSim2D仿真平臺(tái)的生存挑戰(zhàn)策略:基于障礙物動(dòng)態(tài)平衡的防守策略。介紹了防守策略的實(shí)現(xiàn)方法,一種可控速的位姿到位姿函數(shù),對(duì)動(dòng)態(tài)平衡路線加以分析。經(jīng)過實(shí)驗(yàn)和比賽驗(yàn)證表明:防守策略表現(xiàn)出優(yōu)秀的防御性能,能夠有效地躲避進(jìn)攻魚的攻擊,增加了防守魚的存活率。
關(guān)鍵詞:2D仿真;生存挑戰(zhàn);障礙物動(dòng)態(tài)平衡;可控速的位姿到位姿函數(shù)
中圖分類號(hào):TP242? ? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號(hào):2095-2945(2020)06-0139-02
Abstract: In order to make use of the site, increase the survival time of defensive fish, puts forward a survival challenge strategy based on URWPGSim2D simulation platform: defense strategy based on dynamic balance of obstacles. This paper introduces the implementation of defense strategy, a controllable speed function and analyzing dynamically balanced routes. The results of experiments and competitions show that: The defense strategy shows excellent defense performance, which can effectively avoid the attack of attacking fish and increase the survival rate of defending fish.
Keywords: 2D simulation; survival challenge strategy; defense strategy based on dynamic balance of obstacles; a controllable speed function
引言
URWPGSim2D仿真平臺(tái)提供一種仿真機(jī)器魚的實(shí)時(shí)系統(tǒng),采用面向?qū)ο笏枷?。從?duì)象建模的角度看,包括仿真機(jī)器魚、仿真環(huán)境和仿真使命(比賽或?qū)嶒?yàn)項(xiàng)目)三類模型,以仿真使命模型為中心,較真實(shí)地仿真出仿生機(jī)器人的運(yùn)動(dòng)狀態(tài)。筆者基于使用2018年URWPGSim2D仿真平臺(tái)參加比賽時(shí)使用的策略對(duì)生存挑戰(zhàn)項(xiàng)目進(jìn)行研究和改進(jìn),提出一種圍繞障礙物動(dòng)態(tài)平衡的策略和一種可控速的位姿到位姿函數(shù),能較好的使防守魚和進(jìn)攻魚達(dá)到一種動(dòng)態(tài)平衡狀態(tài),延長(zhǎng)了防守魚的存活時(shí)間。
1 生存挑戰(zhàn)項(xiàng)目介紹
2D 仿真生存挑戰(zhàn)是由2支隊(duì)伍參與,每支隊(duì)伍4條仿真機(jī)器魚,生存挑戰(zhàn)比賽項(xiàng)目比賽場(chǎng)地采用標(biāo)準(zhǔn)仿真場(chǎng)地(3000mm*2000mm)的1.5倍尺寸的場(chǎng)地,即規(guī)格為4500mm*3000mm,場(chǎng)地中央有三塊固定的正方形障礙物,其邊長(zhǎng)為 400mm,中心點(diǎn)坐標(biāo)分別為(0,700),(0,0),(0,-700)。
比賽初始狀態(tài)時(shí),防守方有4條機(jī)器魚,1號(hào)魚為特殊魚,充當(dāng)“防御手”的角色;2,3,4號(hào)魚為常規(guī)魚,充當(dāng)“躲避手”的角色,進(jìn)攻方只有一條魚,為特殊魚,充當(dāng)“捉捕手”的角色。比賽總時(shí)長(zhǎng)10分鐘,分上下半場(chǎng),一個(gè)半場(chǎng)時(shí)長(zhǎng)5分鐘,上下半場(chǎng)切換,進(jìn)攻方和防守方亦交換。
比賽時(shí),“捉捕手”要盡量抓捕“躲避手”, “躲避手”要盡量躲避“捉捕手”。比賽結(jié)束后,通過“捉捕手”抓捕的“躲避手”數(shù)量和抓捕時(shí)間判斷輸贏。
2 動(dòng)態(tài)平衡路線分析
由生存挑戰(zhàn)項(xiàng)目介紹可知,進(jìn)攻魚的最大速度檔是15檔,而防守2、3、4號(hào)魚的最大速度檔是8檔。假設(shè)進(jìn)攻魚和防守魚暴露在一條直線上,憑借進(jìn)攻魚在速度上的優(yōu)勢(shì),進(jìn)攻魚可以很輕松的抓捕到防守魚。而當(dāng)進(jìn)攻魚的路線為一條曲線時(shí),進(jìn)攻魚的速度不能時(shí)刻保持15檔,運(yùn)動(dòng)曲線的半徑越小,進(jìn)攻魚能達(dá)到的最大速度檔越小。在此基礎(chǔ)上,經(jīng)筆者反復(fù)測(cè)試后得出結(jié)論:當(dāng)運(yùn)動(dòng)曲線半徑趨近于0時(shí),進(jìn)攻魚的速度檔位為0檔;當(dāng)進(jìn)攻魚的前進(jìn)路線大致是一個(gè)半徑約300mm的圓時(shí),進(jìn)攻魚的速度在8檔左右??紤]到障礙物對(duì)角線長(zhǎng)約為566mm,對(duì)角線長(zhǎng)度小于計(jì)劃路徑圓的直徑600mm,所以當(dāng)以平臺(tái)的三個(gè)障礙物的中心為前進(jìn)路線的圓心,300mm為半徑時(shí)的前進(jìn)路線時(shí),防守魚和進(jìn)攻魚之間至少存在一個(gè)障礙物,進(jìn)攻魚改變進(jìn)攻策略時(shí),防守魚也有充足的時(shí)間和機(jī)會(huì)做出相應(yīng)的調(diào)整,大大增加了防守魚的容錯(cuò)率,使防守2、3、4號(hào)魚的生存機(jī)會(huì)得到提升。
3 防守策略
針對(duì)目前主流的進(jìn)攻策略,筆者以進(jìn)攻魚抓捕防守3號(hào)魚為例來說明防守策略(防守2、4號(hào)魚策略與防守3號(hào)魚策略相同)。首先,以障礙物的對(duì)角線為分割可將平臺(tái)分割為4個(gè)區(qū)域(如圖1)。
根據(jù)進(jìn)攻魚所在區(qū)域,判斷防守3號(hào)魚的目標(biāo)區(qū)域。具體代碼如下:
Z31=mission.TeamsRef[(1+teamId)%2].Fishes[0].PositionMm.x;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)
Z32=mission.TeamsRef[(1+teamId)%2].Fishes[0].PositionMm.x*-1;? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)
判斷進(jìn)攻魚的X坐標(biāo)與0的大小關(guān)系和Z坐標(biāo)與Z31、Z32的大小關(guān)系,可以判斷進(jìn)攻魚所在區(qū)域。而防守魚所在區(qū)域,應(yīng)是和進(jìn)攻魚所在區(qū)域相對(duì)的區(qū)域,這樣才能確保進(jìn)攻魚和防守魚之間至少有一個(gè)障礙物。
3.1 如果進(jìn)攻魚在1號(hào)區(qū)域
此時(shí)防守3號(hào)魚目標(biāo)點(diǎn)坐標(biāo)應(yīng)在3號(hào)區(qū)域。根據(jù)進(jìn)攻魚的坐標(biāo)和障礙物的中心坐標(biāo)可通過兩點(diǎn)確定一條直線,將Z=300帶入直線中,可以得到防守3號(hào)魚的目標(biāo)點(diǎn)X坐標(biāo)。
3.2 如果進(jìn)攻魚在2號(hào)區(qū)域
此時(shí)防守3號(hào)魚應(yīng)在4號(hào)區(qū)域。根據(jù)進(jìn)攻魚的坐標(biāo)和障礙物的中心坐標(biāo)可通過兩點(diǎn)確定一條直線,將X=300,帶入直線中,可以得到防守3號(hào)魚的目標(biāo)點(diǎn)Z坐標(biāo)。
以此類推,可以得到進(jìn)攻魚在3號(hào)區(qū)域、4號(hào)區(qū)域時(shí)防守3號(hào)魚的目標(biāo)點(diǎn)。通過控制防守魚的運(yùn)動(dòng)軌跡可使進(jìn)攻魚的前進(jìn)路線大致是一個(gè)半徑約300mm的圓,初步達(dá)到預(yù)想方案。
4 可控速的位姿到位姿函數(shù)
防守魚如果使用自帶的PoseToPose函數(shù),當(dāng)目標(biāo)點(diǎn)的變化程度較大時(shí),防守魚會(huì)出現(xiàn)先轉(zhuǎn)向在前行的情況。在這種情況下,進(jìn)攻魚會(huì)以最大直線速度抓捕防守魚,防守魚毫無逃生機(jī)會(huì)。為不出現(xiàn)此類情況,筆者根據(jù)目標(biāo)點(diǎn)和仿生魚當(dāng)前坐標(biāo)開發(fā)了一個(gè)可控速的位姿到位姿函數(shù),可根據(jù)具體的魚體轉(zhuǎn)向角度,調(diào)整轉(zhuǎn)向速度、前行速度。有效的克服了仿生魚先轉(zhuǎn)向再前行的困難。
魚體所需轉(zhuǎn)向角度=仿生魚此時(shí)的魚體方向角度-目標(biāo)點(diǎn)角度。其中,仿生魚此時(shí)的魚體方向可由TeamsRef [teamId].Fishes[i].BodyDirectionRad得到當(dāng)前隊(duì)伍第 i 條魚魚體方向。
目標(biāo)點(diǎn)角度可通過此方式得到:目標(biāo)點(diǎn)和魚體前端剛體中心兩點(diǎn)得到一個(gè)向量,將該向量單位化。因?yàn)閳?chǎng)地是從正X軸到負(fù)X軸,順時(shí)針為0~π,逆時(shí)針為0~-π,所以將單位化后的向量與(1, 0, 0)單位向量做點(diǎn)積運(yùn)算,并對(duì)結(jié)果做反三角函數(shù)運(yùn)算。應(yīng)該注意的是所得到的角度應(yīng)控制在-π~π之間。
最后,將-π~π區(qū)間劃分為很多個(gè)小區(qū)間,為每一個(gè)小區(qū)間分配不同的速度值和角速度值,當(dāng)某一時(shí)刻魚體所需轉(zhuǎn)向角度在該小區(qū)間內(nèi),就會(huì)按照設(shè)定速度檔和轉(zhuǎn)向檔前進(jìn)。魚體所需轉(zhuǎn)向角度不斷變化,就會(huì)導(dǎo)致速度檔和轉(zhuǎn)向檔變化,從而達(dá)到可控速的位姿到位姿的要求。
采用該區(qū)間的速度值、角速度值。不斷調(diào)整后,可使防守魚游動(dòng)路線為一個(gè)半徑約300mm的圓。當(dāng)面臨更加復(fù)雜的情況時(shí),比如進(jìn)攻魚在一段時(shí)間沒有任何進(jìn)展時(shí),采取掉頭、停止等動(dòng)作都可以離開設(shè)定的規(guī)劃路線。
筆者根據(jù)所寫防守策略和所使用的可控速的位姿到位姿函數(shù)分析,當(dāng)進(jìn)攻魚采取掉頭時(shí),對(duì)于防守魚來說,目標(biāo)點(diǎn)變化程度不大且目標(biāo)點(diǎn)均位于防守魚原定路線的前方,防守魚幾乎不可能出現(xiàn)用魚身塞住障礙物之間的通道。并且目標(biāo)點(diǎn)和進(jìn)攻魚之間一直存在一個(gè)障礙物,當(dāng)進(jìn)攻魚再次發(fā)動(dòng)進(jìn)攻時(shí),防守魚有充足的時(shí)間,調(diào)整路線,再次進(jìn)入計(jì)劃路線。當(dāng)進(jìn)攻魚采取停止游動(dòng)時(shí),目標(biāo)點(diǎn)沒有變化,防守魚到了目標(biāo)點(diǎn)后也會(huì)采取停止游動(dòng)的動(dòng)作,而當(dāng)進(jìn)攻魚再次發(fā)起進(jìn)攻時(shí),目標(biāo)點(diǎn)同樣會(huì)變化,防守魚也同時(shí)游動(dòng),再次進(jìn)入計(jì)劃路線。
5 結(jié)束語
采用該防守策略,大大增加了防守魚的生存率,增加了防守魚的存活時(shí)間。而可控速的位姿到位姿函數(shù)不僅能應(yīng)用躲避對(duì)方魚的攻擊,用于進(jìn)攻魚時(shí)也能達(dá)到比較好抓捕的效果。
參考文獻(xiàn):
[1]國(guó)際水中聯(lián)盟2D仿真會(huì).URWPGSim2D開發(fā)人員手冊(cè)v1.2Rev
ised20120101[Z].北京:北京大學(xué)智能控制實(shí)驗(yàn)室,2012:1-2.
[2]夏慶鋒,陸偉乾,顧雋逸.基于線性回歸的2D仿真生存挑戰(zhàn)策略[J].2018(11):93-96.
[3]謝良松,馮治國(guó),趙馴峰,等.基于URWPGSim2D仿真平臺(tái)的生存挑戰(zhàn)策略[J].2018(3):9-11
[4]仇紅劍,趙偉,夏慶鋒.水中機(jī)器人2D仿真的策略優(yōu)化[J].兵工自動(dòng)化,2011(12):91-93.
[5]趙國(guó)冬,田璐璐,楊帥峰.2D仿真機(jī)器魚生存挑戰(zhàn)關(guān)鍵技術(shù)策略[J].兵工自動(dòng)化,2018(9):21-23.