论文部分内容阅读
[摘 要]针对2017年2D仿真生存挑战比赛的规则,从多角度分析生存挑战项目中遇到的一些难以解决的问题。通过对规则以及仿真平台的深究,给出相应的方案和策略思想,该思想在2017届国际水中机器人大赛2D仿真生存挑战中得到了实践,并取得了优异的成绩。
[关键词]2D仿真;生存挑战;防守;进攻
中图分类号:R6 文献标识码:A 文章编号:1009-914X(2018)46-0226-01
1 引言
国家经济的快速发展必然带来科技的进步。随着机器人的深度研究和仿真学的逐渐成熟,仿真机器鱼的学习也越来越热门。近年来,国际水中机器人大赛为仿真机器鱼的研究提供了一个平台,通过这个平台,可以带动机器人事业的发展,也从另一方面影响着青年学子对机器人的认识和探索。在该比赛中,2D仿真项目有花样游泳、生存挑战、抢球博弈、水中搬运四项。在这四项中,生存挑战中的防守进攻问题犹如矛与盾的关系,人们对生存挑战项目的深度研究很少,且对其游动技巧知之甚少,基于此,笔者针对2017年生存挑战项目的规则进行分析,并给出相应的可实现策略。
2 生存挑战项目规则简析
在2017年2D仿真生存挑战项目中,比赛规则如下:初始状态,每队各有4条仿真机器鱼,1号鱼为特殊鱼,在进攻时充当“捉捕手”角色,防守时充当“防御手”角色;2、3、4號鱼为常规鱼,在防守时充当“躲避手”角色,在进攻时不上场。在场地的正中央有三块正方形障碍物。比赛开始后,进攻方“捉捕手”在策略的驱动下,试图去碰撞防守方的“躲避手”,防守方借助“防御手”的掩护,阻止进攻方“捉捕手”碰撞防守方的“躲避手”。
计分规则:进攻方“捉捕手”每触碰一次对方“躲避手”,对方此“躲避手”下场,记录所需时间,进攻方得1分。“捉捕手”与“防御手”相互之间碰撞不计分。当半场时间未到时,防御方三条鱼均已下场,则该半场立即结束,进入交换半场。胜负标准为单场比赛,规定时间(10分钟)内得分多的队伍取胜;得分相同最后得分用时少者获胜,若得分为0:0 或得分相同且最后得分用时相同时,则视为平局。
同2016年生存挑战比赛的规则相比,并没有什么变化。在规则中,规定了常规鱼的速度(Vcode)最大为8,特殊鱼的速度(Vcode)最大为15,由此可知,在比赛策略编写中,我们应该对特殊鱼的速度进行大幅度运用,才可保证防守和进攻中有足够大的胜率。
3 生存挑战项目策略研究
3.1 防守方策略
作为防守方,防御手应起到防御的作用,在进攻方进攻时,防御手的鱼体中心应与捉捕手的鱼体中心成正交,才可从根本上躲避进攻方的捉捕。在防守时,其余的三条躲避手应以最快的速度离开捉捕手的视线范围。在躲避手逃跑时,最令人头疼的是如何避开正中央的三个矩形障碍物,以及如何避免与捉捕手碰撞,而最佳路径算法就可解决这类问题。
在最佳路径算法中,首先我们要将整个仿真平台分成四大区域,建立直角坐标系。坐标零点为中间矩形障碍物的中心,按照平台规定的坐标算法,规定右边为x正半轴,上为z负半轴,如图2所示。其次,在处理鱼通过障碍物时,由于障碍物间隔跟鱼体长度相差无几,故需选择一个临界角度,让鱼恰好可以斜体或直身通过矩形障碍物。
3.2进攻方策略
作为进攻方,首当其冲的是如何获取躲避鱼的坐标位置以及在防御手的阻碍下如何加速追赶躲避鱼。在获取躲避鱼坐标的同时,我们也会想到首先追赶几号鱼?是通过判断二者之间的距离选择还是按照号数依次追赶。在经过2017比赛后的结果来看,选择按照号数依次追赶比选择判断二者之间的距离效果更佳。因为在选择距离时,你会时刻判断三条鱼与自身鱼的距离远近,这不仅会使它难以辨别主体目标,而且很难得分,因为程序总是在判断距离远近。
另外一个问题就是如何让鱼以最快速度追赶躲避鱼。在这个问题上,我们要先弄懂PoseToPose点对点函数,其原型如下:
Public static void PoseToPose(Decision decision,RoboFish fish,xna.Vector3 destPtMm,floatdestDirRad,floatangThreshold,floatdisThreshold,intmsPerCycle,refint times);
在策略编写中,实例调用如下:
StrategyHelper.Helpers.PoseToPose(ref decisions[0], mission.TeamsRef[teamId].Fishes[0], Y1, -(float)(5 * Math.PI / 6),30.0f, 0, mission.CommonPara.MsPerCycle, ref times);
该函数也称作位姿到位姿控制函数,其作用是实现仿真机器鱼从当前位姿到目标位姿的精确控制。在生存挑战项目中,它有一个大的缺点就是该函数的速度是固定的,人为不能改动。故我们应该在这个函数的基础上编写新的速度函数,让它具有快速游动的功能,且在碰到平台边界时,可以反向加速追赶躲避鱼。同样,我们也需要引用前面防守策略中的最佳路径算法,让捉捕手可以在矩形障碍物之间顺利穿梭。
3.3整体策略
综合上述两点,我们再从整体上研究一下最佳的方案。从整体上来说,最大的问题就是如何解决死角的问题。在划分区域之后,必定有四个死角难以避免,对此,我们应该对这四个角特殊对待。笔者的建议是:取四个角的大概范围,让仿真鱼在四个死角附近及时折返,如果在进攻时,躲避手游到死角处,这时就应另当别论。在C#中,使用if、else嵌套或switch、case就可解决所有的情况。
4结束语
笔者就2017年国际水中机器人大赛生存挑战项目给出了一些可实用性的策略,并以此策略在2017届比赛各仿真项目中取得了优异成绩,至此,希望对相关人员有所启发。虽然该策略有一定的比赛效果,但在实现上使程序繁琐,容易出现错误。笔者接下来会在优化策略上进行重点研究。
参考文献:
[1]王梅娟,李易凡,范彬彬.基于URWPGSim2D仿真平台的测试分析与策略改进[J].兵工自动化, 2015, 34(12):82-85.
[2]原鑫,李擎,苏中等.基于区域划分和边角处理的机器鱼协作策略[J].兵工自动化,2015, 34(12):73-76.
[3]李连鹏,苏中,解迎刚等.基于遗传算法的机器鱼水中路径规划[J].兵工自动化, 2015, 34(12):93-96.
作者简介:
兰琴(1996-),女,甘肃人,大学本科,现就读于西北民族大学通信工程专业,主要从事于2D仿真的学习与工作。
樊娟(1983-),通讯作者,甘肃渭源人,实验师,硕士,主要研究方向为大学物理实验教学、物理教育。
基金项目:西北民族大学实验中心大学生实践创新开放基金项目资助。
[关键词]2D仿真;生存挑战;防守;进攻
中图分类号:R6 文献标识码:A 文章编号:1009-914X(2018)46-0226-01
1 引言
国家经济的快速发展必然带来科技的进步。随着机器人的深度研究和仿真学的逐渐成熟,仿真机器鱼的学习也越来越热门。近年来,国际水中机器人大赛为仿真机器鱼的研究提供了一个平台,通过这个平台,可以带动机器人事业的发展,也从另一方面影响着青年学子对机器人的认识和探索。在该比赛中,2D仿真项目有花样游泳、生存挑战、抢球博弈、水中搬运四项。在这四项中,生存挑战中的防守进攻问题犹如矛与盾的关系,人们对生存挑战项目的深度研究很少,且对其游动技巧知之甚少,基于此,笔者针对2017年生存挑战项目的规则进行分析,并给出相应的可实现策略。
2 生存挑战项目规则简析
在2017年2D仿真生存挑战项目中,比赛规则如下:初始状态,每队各有4条仿真机器鱼,1号鱼为特殊鱼,在进攻时充当“捉捕手”角色,防守时充当“防御手”角色;2、3、4號鱼为常规鱼,在防守时充当“躲避手”角色,在进攻时不上场。在场地的正中央有三块正方形障碍物。比赛开始后,进攻方“捉捕手”在策略的驱动下,试图去碰撞防守方的“躲避手”,防守方借助“防御手”的掩护,阻止进攻方“捉捕手”碰撞防守方的“躲避手”。
计分规则:进攻方“捉捕手”每触碰一次对方“躲避手”,对方此“躲避手”下场,记录所需时间,进攻方得1分。“捉捕手”与“防御手”相互之间碰撞不计分。当半场时间未到时,防御方三条鱼均已下场,则该半场立即结束,进入交换半场。胜负标准为单场比赛,规定时间(10分钟)内得分多的队伍取胜;得分相同最后得分用时少者获胜,若得分为0:0 或得分相同且最后得分用时相同时,则视为平局。
同2016年生存挑战比赛的规则相比,并没有什么变化。在规则中,规定了常规鱼的速度(Vcode)最大为8,特殊鱼的速度(Vcode)最大为15,由此可知,在比赛策略编写中,我们应该对特殊鱼的速度进行大幅度运用,才可保证防守和进攻中有足够大的胜率。
3 生存挑战项目策略研究
3.1 防守方策略
作为防守方,防御手应起到防御的作用,在进攻方进攻时,防御手的鱼体中心应与捉捕手的鱼体中心成正交,才可从根本上躲避进攻方的捉捕。在防守时,其余的三条躲避手应以最快的速度离开捉捕手的视线范围。在躲避手逃跑时,最令人头疼的是如何避开正中央的三个矩形障碍物,以及如何避免与捉捕手碰撞,而最佳路径算法就可解决这类问题。
在最佳路径算法中,首先我们要将整个仿真平台分成四大区域,建立直角坐标系。坐标零点为中间矩形障碍物的中心,按照平台规定的坐标算法,规定右边为x正半轴,上为z负半轴,如图2所示。其次,在处理鱼通过障碍物时,由于障碍物间隔跟鱼体长度相差无几,故需选择一个临界角度,让鱼恰好可以斜体或直身通过矩形障碍物。
3.2进攻方策略
作为进攻方,首当其冲的是如何获取躲避鱼的坐标位置以及在防御手的阻碍下如何加速追赶躲避鱼。在获取躲避鱼坐标的同时,我们也会想到首先追赶几号鱼?是通过判断二者之间的距离选择还是按照号数依次追赶。在经过2017比赛后的结果来看,选择按照号数依次追赶比选择判断二者之间的距离效果更佳。因为在选择距离时,你会时刻判断三条鱼与自身鱼的距离远近,这不仅会使它难以辨别主体目标,而且很难得分,因为程序总是在判断距离远近。
另外一个问题就是如何让鱼以最快速度追赶躲避鱼。在这个问题上,我们要先弄懂PoseToPose点对点函数,其原型如下:
Public static void PoseToPose(Decision decision,RoboFish fish,xna.Vector3 destPtMm,floatdestDirRad,floatangThreshold,floatdisThreshold,intmsPerCycle,refint times);
在策略编写中,实例调用如下:
StrategyHelper.Helpers.PoseToPose(ref decisions[0], mission.TeamsRef[teamId].Fishes[0], Y1, -(float)(5 * Math.PI / 6),30.0f, 0, mission.CommonPara.MsPerCycle, ref times);
该函数也称作位姿到位姿控制函数,其作用是实现仿真机器鱼从当前位姿到目标位姿的精确控制。在生存挑战项目中,它有一个大的缺点就是该函数的速度是固定的,人为不能改动。故我们应该在这个函数的基础上编写新的速度函数,让它具有快速游动的功能,且在碰到平台边界时,可以反向加速追赶躲避鱼。同样,我们也需要引用前面防守策略中的最佳路径算法,让捉捕手可以在矩形障碍物之间顺利穿梭。
3.3整体策略
综合上述两点,我们再从整体上研究一下最佳的方案。从整体上来说,最大的问题就是如何解决死角的问题。在划分区域之后,必定有四个死角难以避免,对此,我们应该对这四个角特殊对待。笔者的建议是:取四个角的大概范围,让仿真鱼在四个死角附近及时折返,如果在进攻时,躲避手游到死角处,这时就应另当别论。在C#中,使用if、else嵌套或switch、case就可解决所有的情况。
4结束语
笔者就2017年国际水中机器人大赛生存挑战项目给出了一些可实用性的策略,并以此策略在2017届比赛各仿真项目中取得了优异成绩,至此,希望对相关人员有所启发。虽然该策略有一定的比赛效果,但在实现上使程序繁琐,容易出现错误。笔者接下来会在优化策略上进行重点研究。
参考文献:
[1]王梅娟,李易凡,范彬彬.基于URWPGSim2D仿真平台的测试分析与策略改进[J].兵工自动化, 2015, 34(12):82-85.
[2]原鑫,李擎,苏中等.基于区域划分和边角处理的机器鱼协作策略[J].兵工自动化,2015, 34(12):73-76.
[3]李连鹏,苏中,解迎刚等.基于遗传算法的机器鱼水中路径规划[J].兵工自动化, 2015, 34(12):93-96.
作者简介:
兰琴(1996-),女,甘肃人,大学本科,现就读于西北民族大学通信工程专业,主要从事于2D仿真的学习与工作。
樊娟(1983-),通讯作者,甘肃渭源人,实验师,硕士,主要研究方向为大学物理实验教学、物理教育。
基金项目:西北民族大学实验中心大学生实践创新开放基金项目资助。