RoboCup是由哥伦比亚大学的Mackworth教授于1992年提出, 现已发展成为最高水平和最大规模的机器人赛事之一[1], RoboCup2D仿真比赛作为RoboCup中历史最悠久的联赛之一, 取得了巨大的成功, 并激励了世界各地的许多研究人员每年都从事这个项目.
2D仿真比赛还提供了一个重要的实验平台, 人工智能研究人员一直在使用这个平台进行各种领域的研究, 包括多智能体系统中的合作、协调和协商. 许多人类足球的战术策略都被用到2D比赛中, 例如进攻、防守、传球、阵型战术等, 对球队的优化也变得多样化, 目前对RoboCup2D的研究不断加快, 为智能仿真机器人技术的发展做出了巨大的贡献.
1 球队实现途径目前的球队策略改进主要有两种方法: 直接编码方法和数据驱动方法. 直接编码方法主要是对球队底层策略进行改进. 陈粮[2]将数学模型的泛函分析应用到区域协防策略中. 张毅等[3]提出双五角星阵型策略和26分区进攻策略. 蔡军等[4]通过预测模型对守门员和后卫的防守站位进行分析. 张彦铎等[5]提出一种新的基于预测的射门方法. Chen等[6]提出了一种基于多群体蚁群优化的进攻策略. 陈冰等[7]提出了“单独进攻”和“合作进攻”两种进攻模式. 李敏等[8]提出了一种不同角色、不同分区的有针对性的防守策略. 周奕丽等[9]对RoboCup的传球策略进行了研究.
数据驱动方法利用强化学习和数据提取来对球队进行优化. Akiyama等[10]将强化学习应用于球队的决策模块中, 利用神经网络对球员进攻和防守进行优化. 陈冰等[11]用强化学习对Agent2D底层的动作链机制进行优化. 陈荣亚等[12]采用马尔可夫决策过程对RoboCup2D的人墙站位和球员传球进行分析. 李学俊等[13]用强化学习对抢球球员的决策进行研究. 章惠龙等[14]将Q学习应用于RoboCup2D比赛的前场进攻决策中. 在数据提取方法方面, 宋园等[15]对仿真2D日志文件进行分析, 并将其应用到进攻跑位策略设计中. 余培[16]从日志文件中提取球员传球数据, 用多元逐步回归对边界球进行了分析. 秦锋等[17]从日志文件中提取球员传球数据, 用偏最小二乘法对其进行了分析, 得出长传对比赛结果影响最大的结论. 程泽凯等[18,19]对阵型文件解析, 探索球队攻守态的判定优化因素, 对球队的阵型和进攻决策进行分析.
针对上述方法, 直接编码方法修改代码所耗费的时间少, 具有快速性的特点, 使用数据驱动方法的球队的实力更强, 但数据驱动方法需要提取大量的数据样本, 并需要训练学习多次才能得出结论. 本篇文章采取直接编码方法运用于球队底层中. 对球队的防守和进攻问题进行分析, 提出多人防守策略和三角进攻策略, 并在RoboCup2D平台进行仿真实验, 结果表明所设计的策略是可行有效的.
2 Agent2D球员智能体结构本文是针对Agent2D底层代码来进行讨论, 并对相关代码进行分析. 在Agent2D的底层中, 球员有几种常见的模型, 感知模型、世界模型、决策分析模型等. 球员通过视觉和听觉等感知模型获取这些信息, 在获取信息过程中会受到噪声的影响, 造成信息偏差; 球员的决策分析模型分析世界模型中的信息来决策要执行的动作; 世界模型记载从听觉模型中接收的球场信息. 球员智能体结构设计如图1所示.
![]() |
图 1 球员智能体结构设计图 |
在Agent2D底层中决策模型中用统一的决策文件来控制角色球员的有球决策和无球决策. 有球状态的决策分析框架结构如图2所示.
![]() |
图 2 有球状态的决策框架 |
通过分析bhv_basic_offensive_kick.cpp可以得出, 在执行有球决策时, 首先判断是否适合传球, 并调用进行判断, 如果此时适合传球并且距离自己最近的防守球员的距离小于设定某个值, 则调用Body_Pass: :execute(agent)将球传出去. 离自己最近的对手距离自己为5个单位, 表示很安全, 直接调用Body_Dribble带球; 带球速度比较快可以调用Body_HoldBall()来控制球. 最后就是执行射门, 如果自己处于越位线, 向对方边角踢球调用Body_KickToCorner将球踢到球门的边角, 没有越位的话调用Body_AdvanceBall()直接向前踢球, 评价射门是否最优主要取决于射门点的选取, 如果这一部分区域内没有防守队员或是防守队员最少, 就选取这个点作为射门点.
无球状态的决策分析框架结构如图3所示.
通过分析bhv_basic_move.cpp得出, 在执行无球决策时, 首先判断当球在对方球员脚下, 我方球员是否离球近, 当我方球员离球比较近, 我方球员可以采取拦截球的方式, 调用Body_Intercept; 当我方球员离球比较远, 跑到阵型中自己本来的指定位置, 即Home_pos, 调用Body_GoToPoint方法; 如果没有回到阵型指定位置就将身子转向球, 调用Body_TurnToBall函数. 当对方持球并且可能进行进球时球员要采取铲球的方式进行防守, 调用Bhv_BasicTackle.
![]() |
图 3 无球状态的决策框架 |
3 策略改进设计与实现 3.1 球场的定义
在RoboCup2D仿真比赛中, 球场上情况复杂, 球员在通信的过程中, 需要对球场周围环境进行分析制定相应的策略. 因此, 对球场进行区域划分, 根据球的位置将球场分为我方禁区、防守区、进攻区和对方禁区, 如图4所示.
![]() |
图 4 球场区域划分 |
3.2 多人防守策略的设计和实现
防守分为单人防守和多人防守. 单人防守是指当对方球员持球进攻时, 我方负责防守的球员处于有利位置, 可以抢断球. 多人防守是指当对方球员持球进攻时我方并没有球员处于好的防守位置, 这时我方派出2名以上球员去抢断. 对方球员逐渐接近我方球门时, 我方部分防守球员应该快速回防, 靠近球门, 封住敌方可能进攻的方向来阻碍对方进攻, 其他队友去接近持球的球员, 迫使对方传球, 这样对方球员丢球的机会增加.
3.2.1 多人防守的模型构建将单人防守区域投影到二维平面上, 它将变为一个近似的圆形. 多人防守的空间意义是防守的连续性. 这样, 单人防守的“圆形”形成了多人防守区域. 如图5所示.
![]() |
图 5 多人防守区域平面图 |
在确保防守空间连续性的情况下, 多人防守形成m和n两点.
$ 定义: {D}_{mn}={\displaystyle \sum _{i}^{k}{d}_{i}} $ | (1) |
其中,
具体的防守策略形成算法描述如下:
Step 1. 如果满足单人防守的条件, 到Step 2, 否则到多人防守Step 6;
Step 2. 检测球和对方接球球员的距离, 找出拦截点, 如果拦截点存在到Step 3, 否则到Step 6;
Step 3. 如果到达拦截点成功, 则到Step 4, 失败到Step 5;
Step 4. 如果抢到球, 调用传球的指令, 退出防守策略;
Step 5. 如果没有获得球, 则到Step 1;
Step 6. 和队友通信, 进行多人协作防守.
球员进行防守跑位, 如图6所示, defence-radius定义所规定防守球员跑位的精确位置.
![]() |
图 6 防守拦截图 |
防守球员跑位的精确位置是以我方球门中心为圆心, defence-radius为半径的圆弧上, 也在球和我方球门中心的连线上, width为场地长度, 球的位置坐标为
$ \left\{ {\begin{array}{*{20}{l}} {{d_{m1}} = - \dfrac{{width}}{2} + ({\textit{defence-radius}}) \times \cos (\rho )} \\ {{d_{n1}} = ({\textit{defence-radius}}) \times \sin (\rho ){\text{ }}} \end{array}} \right. $ | (2) |
其中,
单人防守如图7(a)所示, 当对方持球球员将球传给对方接球球员时, 我方球员1检测球和对方接球球员速度和方向, 并计算出最佳拦截点, 然后快速移动, 直到到达拦截点并控球为止. 多人防守如图7(b)所示, 当对方多名球员带球进攻时, 我方派出球员1和球员2去逼抢对方持球球员, 当对方持球球员想给对方接球球员1号和2号传球时, 我方球员3号和4号进行跑位防守.
3.3 三角进攻策略的设计和实现根据第3.1节对球场定义, 球进入进攻区域时, 球会被识别出进攻状态, 图8为三角进攻策略实现流程图, 该策略以球的位置坐标作为决策参考, 并根据球的位置信息来判断球场上的情况. 如果判断我方处于控球状态, 则执行进攻策略; 否则, 应执行防守策略. 在我方执行进攻策略的过程中, 首先应根据球与球门的位置关系, 获取球员的位置坐标和击球角度; 其次选择出三角形进攻策略中核心进攻球员和辅助进攻球员, 最后执行动作选择决策.
![]() |
图 7 防守示意图 |
![]() |
图 8 三角进攻策略流程图 |
3.3.1 进攻射门示意图
三角进攻策略射门示意图如图9所示, 当我方球员在场上持球进攻的时候, 另外两名球员迅速的向其靠近, 3个人在场上形成不同形状的任意三角形, 当对方防守球员上前对我方持球进攻的球员进行防守的时候, 将球传给其他两名球员, 然后自己在重新跑位, 使3个人重新形成三角形的队形. 进攻最重要的能力是射门和进球, 射门成功率是影响进球的主要因素.
![]() |
图 9 射门示意图 |
图9中蓝色圆圈表示对方防守球员, 橙色圆圈表示我方进攻球员, 黑色矩形表示对方球门. 进攻球员要把球踢入黑色矩形内, 才算取得进球. 将射门成功率shot-success(d, e, f, g)定义为:
$ {\textit{shot-success}} = \dfrac{1}{{g + 1}} \times \left\{ \begin{array}{l} \dfrac{1}{{{{(1 + d)}^2}}}\dfrac{e}{\pi } + \dfrac{{ef}}{{{f_{\max }}(1 + d)\pi }} \\ \times \left[ {1 - \dfrac{1}{{{{(1 + d)}^2}}}\dfrac{e}{\pi }} \right] \end{array} \right\} $ | (3) |
其中, d表示最近的射门的距离, e表示进攻球员射门的视角, f表示进攻球员的能力指数, g表示防守球员的干扰因数.
$ e = \frac{{\arccos \left[ {({p_1} - p)({p_2} - p) + ({q_1} - q)({q_2} - q)} \right]}}{{\sqrt {{{({p_1} - p)}^2} + {{({q_1} - q)}^2}} \times \sqrt {{{({p_2} - p)}^2} + {{({q_2} - q)}^2}} }} $ | (4) |
其中,
在执行三角进攻策略的过程中, 球员们根据自己在不同的时间段遇到的不同的问题而采取不同的动作. 因此, 要赋予他们适当的角色, 以便他们可以在比赛中充分发挥作用. 本文主要根据球员与球的位置和击球角度来选择核心进攻球员和辅助进攻球员, 将对方主要防守球员、对方球门中心和球定义为a, b, c. 核心进攻球员的选择如图10所示.
![]() |
图 10 核心进攻球员选择图 |
在图10中, 我方3名球员与球的位置关系和击球角度关系为:
$ \left( \begin{array}{l} {k_1} = \mu {\sigma _1}D{H_1}c + {\sigma _2}\alpha \\ {k_2} = \mu {\sigma _1}D{H_2}c + {\sigma _2}\beta \\ {k_3} = \mu {\sigma _1}D{H_3}c + {\sigma _2}\gamma \end{array} \right) $ | (5) |
其中,
根据我方球员在球场上不同时刻与球的位置和角度关系, 计算出
当我方核心进攻球员的进攻受到阻碍时, 要将球传给我方的其他球员. 因此, 如何选择主要的辅助进攻球员也变得很重要, 主要的辅助进攻球员的选择如图11所示.
在图11中, 我方2名球员与对方主要防守球员、对方球门中心的位置关系:
$ \left( {\begin{array}{*{20}{c}} {{k_4} = {\sigma _1}D{H_2}a + {\sigma _2}D{H_2}b} \\ {{k_5} = {\sigma _1}D{H_3}a + {\sigma _2}D{H_3}b} \end{array}} \right) $ | (6) |
其中
![]() |
图 11 主要辅助进攻球员选择图 |
根据在场上我方2号和3号球员与核心进攻球员不同时刻的位置关系分别求出
核心进攻球员可以执行运球、传球和射门动作. 影响核心进攻球员的动作选择的因素如图12所示.
将影响核心进攻球员选择动作的变量作为输入变量定义如下:
$ \left( \begin{array}{l} {m_1} = {I_1} = dx/dy \\ {m_2} = {I_2} = d{x_1}/d{y_1} \\ {m_3} = \mu {\sigma _1}Dbc + {\sigma _2}{\theta _{bc}} \\ {m_4} = \mu {\sigma _1}D{H_1}b + {\sigma _2}{\theta _{b{H_1}}} \\ {m_5} = \mu {\sigma _1}D{H_2}b + {\sigma _2}{\theta _{b{H_2}}} \\ {m_6} = \mu {\sigma _1}D{H_1}a + {\sigma _2}{\theta _{a{H_1}}} \\ {m_7} = \mu {\sigma _1}D{H_2}a + {\sigma _2}{\theta _{a{H_2}}} \end{array} \right) $ | (7) |
其中,
![]() |
图 12 影响核心进攻球员的动作选择的因素 |
主要辅助进攻球员可以进行跑位、掩护动作. 影响辅助进攻球员的动作选择因素如图13所示.
![]() |
图 13 影响辅助进攻球员的动作选择的因素 |
将影响主要辅助进攻球员选择动作变量作为输入变量定义如下:
$ \left( \begin{array}{l} {m_8} = \mu {\sigma _1}D{H_2}b + {\sigma _2}{\theta _{b{H_2}}} \\ {m_9} = \mu {\sigma _1}D{H_2}c + {\sigma _2}{\theta _{c{H_2}}} \\ {m_{10}} = \mu {\sigma _1}D{H_2}{H_1} + {\sigma _2}{\theta _{{H_1}{H_2}}} \\ {m_{11}} = \mu {\sigma _1}D{H_2}a + {\sigma _2}{\theta _{a{H_2}}} \end{array} \right) $ | (8) |
其中,
本文是在比赛官方使用的平台RoboCup2D仿真平台上进行仿真实验的, 根据文献[20]使用Ubuntu 16.04搭建Linux系统并下载安装RoboCup2D仿真平台和相关依赖库. 将上述策略添加到Agent2D底层代码中, 在RoboCup2D仿真平台上测试结果. 实验的目的是检验策略改进对底层动作的影响, 根据实验结果, 判断改进策略对提高球队自身能力是否有效.
4.1 RoboCup2D仿真平台RoboCup2D仿真平台使用的是服务器/客户端模式. 仿真平台主要有Client (客户端)、Server (服务器)和Monitor (监视器)3部分, Client来模拟球员和球的运动, 比赛的双方各有11个 Client, 每一个Client都控制一名场上的球员; Server控制看场上球员的行为, 主要用来与Client交互信息, 仿真球员的运动, 控制比赛的进程; Monitor来将虚拟环境场景展示给参赛者, 参赛者看到的信息有双方球队的名称、比分、球员和足球. 比赛后一般使用Logplayer来观看比赛生成的录像, 通过录像来分析球队的长处和不足、球队的战术策略, 这对提升球队实力非常重要. 图14为RoboCup2D平台结构图.
4.2 实验验证本论文进行了大量的仿真实验, 首先是Agent2D底层代码的球队和将多人防守策略和三角进攻策略加入Agent2D代码后的球队进行50场比赛测试; 然后将数据驱动方法的YuShan、WrightEagle、UVA等球队的底层代码作为测试队伍, 与加入多人防守策略和三角进攻策略前后的Agent2D底层代码的球队分别进行20场的比赛测试. 仿真实验结果说明多人防守策略和三角进攻策略具有一定的有效性, 在处于进攻和防守状态下, 能够加强协作能力, 最终有效提升球员进攻和防守协作中的决策能力.
![]() |
图 14 RoboCup2D平台结构 |
表1为Agent2D底层代码球队和加入多人防守和三角进攻策略优化后的Agent2D代码球队的仿真实验结果, 可以看出, 采用多人防守策略和三角进攻策略优化后的球队获胜率略高于优化前的球队.
![]() |
表 1 加入策略优化前后Agent2D底层球队测试结果 |
加入多人防守和三角进攻策略优化前后的Agent2D底层代码的球队与YuShan、WrightEagle、UVA等球队仿真实验结果表2所示.
![]() |
表 2 策略优化前后Agent2D底层代码球队与数据驱动底层代码球队测试结果 |
从表2可以得出两点结论: (1) Agent2D底层代码的基本策略比较简略, 在对方球队的协作紧密的情况下很难采取有效的措施. 加入多人防守策略和三角进攻策略优化后的Agent2D底层代码球队与数据驱动方法的YuShan、WrightEagle、UVA等球队进行比赛的获胜场次比优化前有所提升, 获胜场次增加率为75%、100%和50%. (2)数据驱动方法的球队的实力更强, 但数据驱动方法需要对比赛数据进行提取、学习和挖掘球员的信息特征, 而直接编码方法只需要观看比赛录像, 发现球队的不足之处, 直接对底层模块的代码进行修改, 减少了对球员数据提取、学习和训练的时间, 具有快速性的特点.
表3为测试过程中各球队的平均被进球数. 从表3的数据看出加入多人防守和三角进攻策略后的Agent2D底层球队相对于原始的Agent2D底层球队, 进攻和防守实力都有所提升.
![]() |
表 3 平均被进球数统计 |
5 结论
针对单一的防守和进攻方式的特点, 本文对防守和进攻策略进行优化, 在Agent2D底层进行了以下改进:
(1)提出了多人防守策略, 在保持单人防守的前提下, 当对方持球进攻, 我方并没有球员处于好的防守位置, 我方派出至少2名球员去抢断拦截, 增加了对方丢球的机会, 提高了我方的防守效率.
(2)提出了三角进攻策略, 当我方处于进攻状态, 由球和球门的位置关系, 选择出核心过的球员和辅助进攻球员, 组成一个三角进攻小组, 核心进攻球员进行带球、传球和射门动作, 辅助进攻球员进行跑位和掩护动作, 提高了我方的控球率和进攻效率.
仿真结果表明, 加入多人防守策略和三角进攻策略的球队的胜率和场均进球都有所提升. 多人防守策略和三角进攻策略可以有效的提高我方球队的防守和进攻效率. 在后续研究中, 可以将直接编码方法和数据驱动方法同时应用于球队中, 进一步加强球员的决策能力.
[1] |
包胜刚, 董春晨, 刘钊. 基于PSO算法的RoboCup2D机器人研究. 计算机测量与控制, 2016, 24(9): 227-230. DOI:10.16526/j.cnki.11-4762/tp.2016.09.063 |
[2] |
陈粮. 足球比赛中区域多人防守站位数学模型分析. 怀化学院学报, 2011, 30(5): 63-64. DOI:10.16074/j.cnki.cn43-1394/z.2011.05.024 |
[3] |
张毅, 杨伟, 徐晓东, 等. 机器人足球仿真组进攻策略研究. 机器人技术与应用, 2010(4): 52-53. DOI:10.3969/j.issn.1004-6437.2010.04.020 |
[4] |
蔡军, 张毅洋, 匡仲琴, 等. 基于预测模型的机器人足球最佳防守站位策略. 实验科学与技术, 2014, 12(3): 44-46. DOI:10.3969/j.issn.1672-4550.2014.03.016 |
[5] |
张彦铎, 王朝亮, 闵锋, 等. 仿真机器人足球比赛中的射门策略. 武汉工程大学学报, 2012, 34(10): 62-65. DOI:10.3969/j.issn.1674-2869.2012.10.015 |
[6] |
Chen SB, Lv G, Wang XF. Offensive strategy in the 2D soccer simulation league using multi-group ant colony optimization. International Journal of Advanced Robotic Systems, 2016, 13(1): 25. DOI:10.5772/62167 |
[7] |
陈冰, 张亨, 程泽凯, 等. Robocup2D仿真对抗中进攻行为的挖掘与验证. 系统仿真学报, 2018, 30(12): 4718-4726. DOI:10.16182/j.issn1004731x.joss.201812028 |
[8] |
李敏, 李彬, 黄浩, 等. 基于5VS5仿真机器人足球区域防守策略设计. 数字技术与应用, 2011(10): 172-173. DOI:10.19695/j.cnki.cn12-1369.2011.10.122 |
[9] |
周奕丽, 薄祥岑. 基于速度选择的RoboCup传球策略. 计算机光盘软件与应用, 2013, 16(16): 312, 314. |
[10] |
Akiyama H, Nakashima T, Igarashi H. Representation and learning methods for situation evaluation in robocup soccer simulation. Journal of Japan Society for Fuzzy Theory and Intelligent Informatics, 2020, 32(2): 691-703. DOI:10.3156/jsoft.32.2_691 |
[11] |
陈冰, 许非凡, 徐涵延, 等. Robocup2D项目中Agent2D底层动作链机制的分析优化. 系统仿真学报, 2017, 29(11): 2782-2787. DOI:10.16182/j.issn1004731x.joss.201711026 |
[12] |
陈荣亚, 陈小平. 多智能体分层协作规划及在RoboCup中的应用. 计算机系统应用, 2016, 25(1): 17-23. |
[13] |
李学俊, 陈士洋, 张以文, 等. 基于强化学习的RoboCup Keepaway高层抢球策略. 计算机应用与软件, 2015, 32(10): 101-104. DOI:10.3969/j.issn.1000-386x.2015.10.022 |
[14] |
章惠龙, 李龙澍. Q学习在RoboCup前场进攻动作决策中的应用
. 计算机工程与应用, 2013, 49(7): 240-242. DOI:10.3778/j.issn.1002-8331.1108-0114 |
[15] |
宋园, 刘乾, 王灿, 等. RoboCup2D日志文件数据挖掘研究及应用. 大庆师范学院学报, 2015, 35(6): 31-34. DOI:10.13356/j.cnki.jdnu.2095-0063.2015.06.008 |
[16] |
余培. 基于多元逐步回归的RoboCup边界球研究. 六盘水师范学院学报, 2020, 32(3): 70-74. DOI:10.16595/j.1671-055X.2020.03.013 |
[17] |
秦锋, 田杰, 程泽凯. 基于偏最小二乘法的RoboCup传球研究. 计算机工程, 2014, 40(9): 275-279. DOI:10.3969/j.issn.1000-3428.2014.09.055 |
[18] |
程泽凯, 凌兆龙, 秦锋. 一种新的RoboCup阵型分析方法. 苏州科技学院学报(自然科学版), 2016, 33(2): 41-44, 50. DOI:10.3969/j.issn.1672-0687.2016.02.009 |
[19] |
程泽凯, 谢宁宇, 杨思春, 等. 基于RoboCup仿真2D的数字孪生框架应用. 苏州科技大学学报(自然科学版), 2020, 37(4): 64-67. DOI:10.12084/j.issn.2096-3289.2020.04.010 |
[20] |
李学俊, 陈士洋. Robocup仿真2D实验平台. 实验室研究与探索, 2014, 33(4): 58-61, 76. DOI:10.3969/j.issn.1006-7167.2014.04.015 |