第四周作业

二轴桌面冰球游戏的软件设计

一.游戏规则和策略的分析

桌面冰球的规则很简单,双方各操控一个击球器在各自半场运动,将冰球击打至对方的球门内即获得胜利。不过由于这次是通过仿真模拟一个二轴机械臂来控制击球器,而且击球策略的定制完全依赖算法,也就是是一个自动的击球过程。

首先先梳理一下整个击球的过程:
1.根据仿真环境提供的冰球当前的运动状态,预测冰球的运动轨迹
2.根据程序编好的运动策略,确定击球点,即确定击球器在何处与冰球相撞,而且是以何种方式相撞(只是静止相撞,还是带有动能的状态相撞),不同的方式得到的球速也是不同的
3.发送运动控制指令给机械手控制器,使其能在给定时间点,在预期的位置以预期的速度击打到冰球

在确定运动策略之前,个人认为应当先限制二轴机械臂所能达到的最快速度,因为若不加以限制,那么无论球速有多快,轨迹有多复杂,机械臂都能接到球,便无法分出胜负了。

- 预测轨迹

轨迹的预测个人认为比较简单,即根据两个时间点冰球的坐标便可以算出运动轨迹,然后再加上两个时间点的时间差可以得到冰球的移动速度,至于碰撞之后的结果交给下次监测的结果即可,不需要进行整个轨迹(即加入碰撞的所有轨迹)的计算,因为我们需要考虑有对方击球这个不确定的因素存在。

- 击球策略

由于得分机制是只要球越过球门线即为得分,因此我们只需要在预测轨迹指向球门的时候再驱动击球器进行反击,击球完毕之后令击球器停止在该次击球的位置,等待下次击球的命令。
击球点的确定
由于冰球和击球器均是有体积的,因此不同的碰撞会导致冰球的返程有不同的角度和速度,但是最终的目的都是将球打进对方的球门,因此,通过数学方法我们是可以计算出在一定范围内的击球点是可以使冰球改变角度,朝向对方球门的。至于如何选择击球点,粗略的想了两种方法,一是产生一个随机数,从而随机确定一个一定能进球的击球点,二是根据对方击球器目前的位置,进而推算出以哪个角度击球可能可以得到最优解。

我想了两种击球的策略
1)消极式
将击球器的运动范围限制在球门外的所画的半圆之内,当检测到有球向球门运动时,控制击球器垂直运动(与预测轨迹垂直)至预测的轨迹上,0动能与球碰撞,将球击回。这种方法可以起到比较好的防守效果,但是可能造成我方无法得分的结果。
2)主动式
击球器可以在半场内自由运动,当检测到有球向球门运动或者有球进入我方半场时,控制击球器加速至最高速时进行击球。具体如何进行路径的规划目前由于情况太多还没有细想。

其实上述两种模式均可以在一场比赛中运用,根据比赛的情况实时进行变换,比如比分处于劣势或者多次无法接到球的时候,则自动采取消极的防守方式。

- 执行阶段

机械手控制器解析并执行运动控制指令,并通过轨迹插补和加减速控制使运动平滑

posted @ 2016-12-20 18:05  sombra  阅读(326)  评论(0编辑  收藏  举报