第五步:根据队形调整自己的位置
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 年。
转贴于 中国论文下载中心 http://www.studa.net| 对此文章发表了评论 |