计算机仿真机器人世界杯足球锦标赛攻防战术的研究
防守算法的实现
1、防守算法的初始想法
第一步:找球的位置,即时更新
第二步:判断球是否在可踢范围:
如果可踢,则根据自己所在的位置作出相应的动作,具体是:
如果再罚球去内,马上把球踢出去,且尽量传给队友;如果再罚球区外,可以适当的带球,把球送往中场;
如果不可踢,则进入第三步;
第三步:判断自己是不是有责任去断球:
有,则毫不犹豫的去断球,断球也要分区域,在罚球区,则要以全力跑过去断球,如果身后有自己的队友,则可以考虑铲球,如果自己在进攻球员的后面(他已经过了我),则要马上从后面铲球;
没有,则要进行协防,进入第四步;
第四步:是协防,这步我觉得是最难的,因为这种情况太多了,现在只有大概的一点思想:还是要把后半场分区,针对各区采取各种mark策略
第五步:根据队形调整自己的位置
2、防守算法的实现流程:
-->如果没有开球:
-->如果是本方开球且球员自己是9号:
->如果球在可踢范围:则以最大力把球kick出去;
->如果球不可踢: 则抢断;
-->如果当前队形不是初始化队形或者球员自己的实际位置偏离队形规定位置(以下称为策略位置)1m以上:则导入初始队形,球员直接移到自己的策略位置;
-->如果是7号或者8号:则准备移动到9号kickto的点,并把头转向球;
-->其他情况:则把身体对向(0,0),并把头转向球;
-->如果已开球:则先导入防守的433队形,
-->如果球的信息不是最新的:则搜索球,并转动头以助以寻找;
-->如果球在可踢范围:
-->如果在球员自己的罚球区:则以最大力把球以相对安全的角度kick出罚球区;
-->如果在自己前方5m,角度为(-80,80)的扇形区域内有对方球员:则以最大力把球转移,即ClearBall;
-->如果在自己前方5m,角度为(-80,80)的扇形区域内没有对方球员 :则以不大的力把球kick出去;
-->其他:则带球前进;
-->如果球员自己是队友中最快可以到达球的位置的球员,即球员自己最有责任断球:
-->如果球正被对方带向球门:
-->如果球员自己和球的距离小于2。5m:则铲球;
-->否则:则加速跑向球;
-->否则:则抢断;
-->如果球员自己的当前位置偏离他的策略位置(1。5+(球员与球的距离)/10。0)m:则即时调整自己的位置;
-->如果球员在自己的半场:则进入mark状态,
-->如果球员在自己的罚球区内:则采用 MARK_GOAL 的mark方法(防止被防球员接球射门);
-->如果球员在自己罚球区两侧:则采用 MARK_BISECTOR 的mark方法(既防止被防球员接球,又防止其接球射门);
-->在其他区域 :则采用 MARK_BALL 的mark方法(防止被防球员接球);
-->如果球员自己与球的相对角度大于1:则把身体转向球,并把头转向球;
-->其他情况:转头(观察);
注:以上的流程遇到“;”就返回,得到一个soc(命令),最后将soc返回。
【参考文献】
[1]李实、徐旭明、叶榛、孙增圻编著,《综述:国际机器人足球比赛及其相关技术》,清华大学计算机系国家智能技术与系统重点实验室,1999 年。
[2]孙增圻、李实编著,《RoboCup 与智能自动化》,清华大学计算机科学与技术系,1999 年。