Welcome to 机器人足球’s documentation!

基本介绍

这是机器人足球的说明文档,你将使用编程的方式控制场上的机器人。

球场环境的基本坐标示意如下:

坐标说明示意图

编程使用

opt 库是一个获取球场环境信息和控制机器人操控的库。里面涵盖非常丰富的角度距离等测量函数,机器人控制函数等。 你可以使用 opt.TANK 获取到当前所需要操控的机器人, 使用 opt.BALL 获取球的信息。

注意,opt.TANK 应当在每一个 update 函数内调用,以获取当前属于此函数的机器人实例。

>>> def tank_update():
>>>     opt.TANK # 获取到所要操控机器人的信息
>>> def tank1_update():
>>>     opt.TANK # 获取到 1 号机器人 的信息
>>> def tank2_update():
>>>     opt.TANK # 获取到 2 号机器人 的信息

以此类推,不同 function 中的 opt.TANK 将代表不同的机器人实例。 如果在函数 function 外使用 opt.TANK 将无法引用到正确的机器人实例。

比赛中规定,控制机器人唯一有效的方法是通过规定的机器人函数输出(前后,左右速度)来控制机器人的运动。举例:

>>> def tank_update():
>>>     # 这里是你的 magic code
>>>     vs, hs = 1, 0    # 这里是你此时决定要如何操控机器人的 前后,左右 速度
>>>     return vs, hs

部分关卡只需要控制一个机器人时,函数名为 tank_update,部分关卡需要控制多个机器人,每个机器人有自己独立的函数名。举例:

>>> def tank1_update():
>>>     return 1, 0
>>>
>>> def tank2_update():
>>>     return 1, 1
>>>
>>> # 其他机器人
>>> def tank5_update():
>>>     return 1, 1

机器人 前后,左右 速度的操控定义类似玩具汽车的操控手柄,分别有前后,左右两个操控杆。 最终速度结果是 vs 和 hs 的叠加结果,类似于遥控汽车手柄的操作方式。

坐标说明示意图

vs:控制前后的力度。取值范围 [-1,+1], -1 为最大后退力度,1 为最大前进力度,0 保持不动

坐标说明示意图 坐标说明示意图

hs: 左转右转控制力度。取值范围 [-1,+1],-1 为最大左转角度,1 为最大右转角度,0 直行。注意!当 vs=0,没有前进动力的时候,hs 无论是什么值,无论转多厉害,机器人都在原地不动,都没有效果。

坐标说明示意图 坐标说明示意图

为了能够对机器人运动有更精确的控制,可以自定义 get_control_speed(angle) 设置不同角度下返回的vs,hs:

>>> import opt
>>>
>>> def get_control_speed(angle):
>>>     #  请按照你的思考,提出你的速度控制方案
>>>     vs, hs = 0,, 0
>>>     if 0 <= angle < 90 or 270 <= angle <= 360:
>>>         vs, hs = 1, 0
>>>     else:
>>>         vs, hs = -1, 0
>>>     return vs, hs  # vertical_speed, horizontal_speed
>>>
>>> def tank_update():
>>>     target_x = opt.BALL.x
>>>     target_y = opt.BALL.y
>>>     tank_angle_to_football = opt.TANK.angle_to(target_x, target_y)
>>>     vs, hs = get_control_speed(tank_angle_to_football)
>>>     return vs, hs

Indices and tables