1.域描述
与前几年相比,2017年RoboCup 3D模拟联赛的主要变化是取消了拥挤规则。
以前,过多的球员挤在球周围会导致球员被罚站在边线上。拥挤规则的实施主要是为了减少机器人之间的碰撞次数,因为同时发生的多次碰撞会降低模拟器的速度,并可能导致其崩溃。
现有的触碰规则是,如果3名或3名以上的球员相互触碰,一名球员就会被带到边线,2016年增加了犯规,对撞到对手的球员进行惩罚,因此决定不再需要拥挤规则。
2.技术挑战
连续第四年有一个全面的技术挑战,包括三个不同的联赛挑战:自由挑战,传球和得分挑战,Gazebo跑步挑战。 对于每一次联赛挑战,一支参与挑战的球队被授予基于以下等式的整体积分:
2.1 自由挑战
UT的自由挑战提交介绍了团队的快速行走踢在第3节中讨论.此外,UT的自由挑战提交泄露了将踢腿运动的策略表示为神经网络的初步工作,并使用深度学习和信任区域策略优化算法学习更长的踢腿。
团队提供了他们创建的优化框架的详细信息,magmaOffenburg团队谈到了他们用来测试团队策略层的2D模拟器,AIUT3D团队为3D模拟联盟代理引入了一个运动编辑器。
2.2 传球和得分挑战
在传球和得分的过程中, 一支球队的四名球员试图在他们之间传球,这样每个球员至少接触一次球-然后在尽可能少的时间内进球。 在挑战开始时,球被放置在场地的中心,代理必须从至少三米的距离开始,沿着X轴。代理初始岗位不符合规则的,团队奖励85分。
挑战结束时,一个进球,球离开球场,或80秒已经过去。对于每一个不同的球员踢球,判断球自由移动至少2.5米后被踢,分数扣一分。若进球,则减分1分。如果进球是在球被所有四名球员踢后得分的,则得分是从审判开始到得分事件的时间(以秒为单位)。
挑战的目标是获得尽可能低的分数。
UT用于传球和得分挑战的起始位置和策略如图3所示。无论哪个代理最接近球,将球传递到距离目标最远的代理前面大约一米的位置,如图3中的黄色箭头所示。 一旦球在代理之间依次向前传递,并且最接近目标的代理接收球,该代理就会在目标中踢球,如图3中粉红色箭头所示。 当特工不是最接近球的特工时,他们就站在原地。
2.3 Gazebo 跑步挑战
RoboCup社区正在进行的工作是开发插件6用于 Gazebo 机器人模拟器以支持 RoboCup 3D 模拟联盟。因此,举办了一场挑战,机器人试图向前走尽可能快地在 Gazebo 模拟器中保持 20 秒而不摔倒。
UT Austin Villa 优化了快速步行参数用于 Gazebo 模拟器中团队的全向行走引擎 ,使用 CMA-ES 算法。步行引擎参数针300 代 CMA-ES,种群规模为150。Gazebo 跑步挑战赛结果见表 7。每支参赛队伍进行了 4 次跑步尝试,平均得分在他们的三个最佳尝试中前进的步行速度。
- 其它补充
基于代理任务的双足行走优化
* 目标任务和代理任务
* 强化学习中有时会遇到执行采样的开销过大的情况,此时可以通过运行另一个任务来对目标任务进行优化,实际运行的任务称为代理任务
* 本文介绍的方法在通过代理任务学习的过程中同时完成两个目标:一是对目标任务进行优化,二是使代理任务越来越能够反映目标任务
* 本文中的目标任务是在Robocup3D比赛中行走(`SoccerGameplay`),代理任务是在一条特别设计的道路上行走(`ObstacleCourse`),要优化25个参数
* 具体任务介绍
* `SoccerGameplay`: 和一个基准队伍踢一场比赛
* 定义reward函数$reward_{SoccerGameplay}(goalsFor−goalsAgainst)∗ \frac{1}
{2} FieldLength
+avgBallXPosition$
* `ObstacleCourse`: 一个机器人的行走训练
* WAYPOINT: 行走到目标并计时
* STOP:停止
* $reward_{WAYPOINT}=d_{target}\frac{t_{total}}{t_{taken}}
−Fall$
* $reward_{STOP}=−d_{moved}−Fall$
* Fall为5(摔倒)或0(没有摔倒)
* 优化算法
* 每N次循环执行一次如下操作:
* 调用generateNewBasisTasks()生成一批新的`ObstacleCourse`任务加入B中,使B数量加倍
* 使用参数组集合P中每组参数跑一遍`SoccerGameplay`以及每一个`ObstacleCourse`任务
* 调用rankBasisTasks()计算每个`ObstacleCourse`任务和`SoccerGameplay`任务的相似度(即二者对每组参数评价值的Spearman相关系数),淘汰掉相似度较低的一半
* 使用`SoccerGameplay`任务的评价更新P中的参数组
* 其余每次循环使用参数组集合P中每组参数跑一遍任务集B并更新参数组P
* 参数组P的初始化和更新使用CMA-ES算法
* 结果
* 加速了训练,但对`ObstacleCourse`的更新效果不大