2023年12月10日发(作者:写事作文开头)
目录
第一章 、5V5仿真组(Middle Simurosot)介绍Fira Simurosot Game
1.1 仿真型机器人足球介绍
1.2 仿真系统基本结构
1.3 仿真平台及系统特点
1.4 运行环境和开发工具
1.5 仿真平台的使用介绍
第二章、仿真平台与策略关系及其运动策略开发指南
2.1 什么是策略程序
2.2 仿真平台与策略的运行关系
2.3 仿真平台场地数据
2.4 接口代码解析
2.5 程序开发流程
2.6 动作函数介绍
2.7 在策略中调用动作的基本方法
2.8 简单策略开发
2.9 各种定位球
第三章、比赛规则
3.1 名词解释
3.2 比赛规则
3.3 犯规与处罚
3.4 裁判
3.5 环境
3.6 其他
1
第一章 5V5仿真组(Middle League Simurosot)介绍FIRA SimuroSot Game
1.1 仿真型机器人足球介绍
仿真型机器人足球(SimuroSot)
SimuroSot 是一种仿真的软件系统,在该项比赛中,参赛的每个机器人不是 实际的机器人,而是用计算机模拟的虚拟机器人,它主要研究比赛策略,以软件为主,忽略机器人的硬件相关的需求。比赛中,我们仅关注的好似软件部分,主要研究用软件来实现既定的策略,完成给定的程序逻辑,主体的程序对语言要求很低,主要是要求拥有清晰的逻辑和编程思想。换言之,SimuroSot 类型的比赛是智力与智力的碰撞。
1.2 仿真系统基本结构
仿真系统是有FIRA 提供的仿真程序,这个程序通过DLL(动态连接库)接收双方策略,决策系统由各队提供自己的DLL程序。场上的数据由仿真程序计算给出,DLL接收处理并将要发给机器人的命令传给仿真程序。
2
1.3 仿真平台及系统特点
开发者:澳大利亚的 Jo 领导的Griffith大学信息技术学院RSS开发小组
系统特点:
1. 机器人模型:Yujin机器人的物理模型
2. 模拟精确:碰撞检测完全,碰撞处理精确(采用商业游戏引擎公司Havok的碰撞处理引擎)
3. 界面:3维(采用Direct设计界面,3D Max模型)
1.4 运行环境和开发工具
仿真系统:3D Robot Soccer Simulator 1.5a
编程语言:C/C++
开发环境:MS Visual C++ 6.0 / MS VS2003
模 板:使用仿真系统提供的源程序模板
3 程序模板说明:程序使用动态连接库(DLL)方式
硬件需求:
Pentiun III 600 MHz或其以上级别的显示卡
256M系统内存
具有32M以上显存的TNT2或其以上级别的显示卡
能够支持800×600以上分辨率的显示器
软件需求:
Windows98或以上版本的操作系统
DirectX 8.0或以上的版本
1.5 仿真平台的使用介绍
1.5.1 运行程序的方法
1. 先将自己编写好的代码编译成dll文件,黄队程序拷到C:strategyyellow,蓝队程序拷到C:strategyblue。
2. 在仿真平台中点击STRATEGIES按钮,选择C++,然后输入策略文件名,点击nd。
3. 选择相应的比赛模式,按照规则摆放好球和球员后,点击start,开始比赛。
1.5.2 主菜单
A-各队载入策略
B-选择以何种方式开球,依次为(
自由球,
开球,
点球,
任意球,
球门球)
C-选择开球方
黄队
蓝队
D-开始比赛
E-比赛时间和比分
F-修改时间和比分
G-开始一场新的比赛
H 平台帮助以及规则
4 1.5.3 策略载入菜单
选择使用何种开发语言(Lingo/C++)
输入蓝队程序的文件名
输入黄队程序的文件名
将各队程序载入平台
打开状态查看窗口(相识了球和机器人的一些基本信息)
1.5.4 比赛控制菜单
A-立即回放 B-暂停 C-结束比赛
1.5.5 回放控制菜单
A-
B-
C-
D-
E-
F-
G-
从头开始回放
从前300个周期开始回放
一般速度回放
慢速度回放
逐帧回放
推出回放模式
当前进球无效
5 1.5.6 机器人的编号
Home代表己方机器人
Opp代表对方机器人
箭头所指的方向为机器人当前的正方向
1.5.7 鼠标和键盘操作
鼠标:在比赛开始前或比赛暂停时,可以用鼠标拖动球机器人到场地的任何位置
键盘:在比赛开始前或比赛暂停时,当鼠标点击某一个机器人后可以用<-或->键来调整该机器人的角度。
第二章 仿真平台与策略关系及其运动策略开发指南
2.1 什么是策略程序
定义:策略程序就是自己编写的能够使仿真平台中机器人按照预定方式运动的程序。通俗的来说,就是能够打比赛的程序。
2.2 仿真平台与策略的运行关系
2.2.1 仿真平台与策略程序的通信方式
6
2.2.2 策略程序每个周期接受的数据
仿真平台传递给策略程序的数据:
1. 己方、对方机器人坐标、角度(当前周期,上一周期)
2. 球的坐标(当前周期,上一周期)
2.2.3 策略程序每个周期发送的数据
策略程序发送给仿真平台的数据:
己方(home[i])每个机器人的左轮速(pwm1)和右轮速(pwm2)
2.3 仿真平台场地数据
2.3.1 场地顶点坐标
7 2.3.2 场地的各种标志及尺寸
单位(厘米)
机器人小车为理想模型。
速度限制在-125~125。
提供比赛状态(GameState)和控球方(WhosBall)两个参数。
度量单位:英寸(如转换成厘米,需乘2.54)。
球员方位角单位为角度。
每方队员有五名,分别用不同的颜色来标示,右上角是黑色来区分前后,中间是代表队伍的颜色,在左下角是区分不同队员的标识:
0号一般是守门员,用大红色表示;
1号用紫色表示,2号用紫红色表示,这两个一般用作防守;
3号用绿色表示,4号用蓝绿色表示,这两个一般用作进攻;
2.4 接口代码解析
程序的接口API函数:
函数接口Create主要是程序的初始化,在程序开始时由系统调用,主要作用是定义所有的数据,如创建对应于:Environment->urData的函数,其中可以用来存储我们的策略执行状态等 Extern “C” STRATEGY_API void Create (Enviroment *env);
函数接口Destroy主要是程序的销毁,在程序结束时由系统调用,主要作用是释放自定义的数据,如删除对应于:Environment->urData的数据
Extern “C” STARTGY_API void Destroy (Enviroment *env);
函数接口Strategy是程序的主要执行逻辑,由系统反复调用,每次调用相当于真实系统下计算出新的机器人左右轮的速率,并发送给小车,在这里,我们必须处理针对赛场上每一时刻的对策,每秒调用60次,即仿真周期为1/60秒。
8 Extern “C” STARTGY_API void Strategy (Enviroment *env);
实际上程序只需要这三个接口,而我们的工作就是完成这几个接口的处理。
程序的基本数据定义
Vector3D //位置向量定义
typedef struct
{
double x, y, z;
}Vector3D;
Bounds //区域范围定义
typedef struct
{
long left, right, top, bottom;
} Bounds;
Robot //我方机器人的信息定义
typedef struct
{
Vector3D pos; //机器人的坐标位置
double rotation; //机器人当前的角度
double velocityLeft, velocityRight; //机器人的左右轮速
} Robot;
OpponentRobot //对方机器人信息的定义
typedef struct
{
Vector3D pos; //机器人的坐标位置
double rotation; //机器人当前的角度
}OpponentRobot;
Ball //小球信息的定义
typedef struct
{
Vector3D pos; //小球的坐标位置
}Ball;
Environment //最重要的数据定义,包含所有运行时的信息,由系统刷新
typedef struct
{
Robot home[PLAYERS_PER_SIDE]; //我方机器人数组
OpponentRobot opponent[PLAYERS_PER_SIDE]; //敌方机器人数组
Ball currentBall, //当前小球的位置
lastBall, //上一次小球的位置
9 predictedBall; //调用PredictBall()函数后可获得数据
Bounds fieldBounds, //场地范围
goalBounds; //球门的位置与范围
long gameState; //当前比赛状态(各种定位球的标志变量)
long whosBall; //由谁控制球
void * urData; //用户自定义信息
}Environment;
仿真系统每秒会调用dll中的接口函数Straegy接口60次,也就是我们的每个处理周期是16.67毫秒,在每次调用时,系统通过Environment * env这个指针向我们传递当前的系统的运行信息,然后我们运算后设置我方所有机器人的左右轮速,依此来控制机器人进行足球比赛。
需要注意的是:程序对于左右半场,应该分别处理。
2.5 程序开发流程
1. 在C:Programe FilesRobot Soccer v1.5a目录下找到Stragegy Source文件。
2. 将此文件夹的代码拷出,并在VC6.0或.NET2003下打开,可以看到系统提供的接口代码,同时也有一些系统提供的策略,这些策略只是提供参考,如果想要写出好的程序,必须改进,或重新编写。
3. 在我们看到的程序中像下面这样一类函数都是开发者留给我们参考的,这些以后都需要自己改进,自己编写。
void PredictBall(Environment *env); //预测球的位置
void Goaliel(Robot *robot, Envirnment *env); //守门员策略
void NearBound2(Robot *robot, double vl, double vr, Envirnment *env);
void Attack2(Robot *robot, Environment *env); //机器人向小球移动方法
void Defend(Robot *robot, Environment *env, double low, double high); //防守(后卫)
void MoonAttack(Robot *robot, Environment *env); //移动攻击
void MoonFollowOpponent(Robot *robot , OpponentRobot *opponent); //跟随对方球员
void Velocity(Robot *robot, int vl, int vr); //给机器人发送左右轮速
void Angle(Robot *robot , int desired_angle); //机器人转到指定角度
void Positon (Robot *robot, double x, double y); //机器人移动到指定的坐标
2.6 动作函数介绍
为了完成各种策略,基本的做法是用分而治之,逐步求精的方法,将主要的策略分为若干个基础策略,每个完整的策略分别由这些基本的策略组成,而这些策略又由一些基本的行为动作方式组成,我们的机器人控制程序最后就是由这些方法和行为动作方式来构成。
下面是一些基本的动作函数:
void Angle (Robot *robot ,int desired_angle) //该动作可以让机器人转到任意指定的角度
{
int theta_e, vl, vr;
theta_e = desired_angle – (int) robot -> rotation;
while( theta_e >180) theta_e -= 360;
while(theta_e <-180) theta_e +=360;
if (theta_e < -90) theta_e +=180;
10 el if (theta_e>90) theta_e -= 180;
if (abs(theta_e) > 50)
{
vl = ( int ) (-9.0/90.0 * (double) theta_e);
vr= (int ) (9.0/90.0 * (double) theta_e);
}
el if(abs(theta_e) > 20)
{
vl = (int ) (-11.0/90.0*(double)theta_e);
vr=(int ) (11.0/90.0 *(double) theta_e);
}
Velocity (robot, vl, vr);
}
void Attack (Robot * robot, Environment *env)
// 机器人向小球的位置移动的方法
{
PredictBall (env); //估计小球的位置
Position( robot , env-> .x, env->.y);
} //移动机器人到小球的位置
void PredictBall( Environment *env) //预估小球的位置
{
double dx = env ->.x – env->.x;
double dy = env ->.y – env ->.y;
env->.x = env->.x + dx;
env->.y = env->.y + dy;
}
void Position( Robot *robot, double x, double y )
//该动作使移动小车到指定位置
{
int desired_angle = 0, theta_e = 0, d_angle = 0, vl, vr, vc = 70;
double dx, dy, d_e, Ka = 10.0/90.0;
dx = x - robot->pos.x; //计算当前位置与目标的相对位移
dy = y - robot->pos.y;
d_e = sqrt(dx * dx + dy * dy); //计算机器人到目标位置的直线距离
if (dx == 0 && dy == 0) //计算当前位置到目标点的角度
desired_angle = 90;
el
desired_angle = (int)(180. / PI * atan2((double)(dy), (double)(dx)));
11
theta_e = desired_angle - (int)robot->rotation;
// 当前机器人的角度与机器人到目标连线角度的夹角
while (theta_e > 180) theta_e -= 360;
while (theta_e < -180) theta_e += 360;
if (d_e > 100.)
Ka = 17. / 90.;
el if (d_e > 50)
Ka = 19. / 90.;
el if (d_e > 30)
Ka = 21. / 90.;
el if (d_e > 20)
Ka = 23. / 90.;
el
Ka = 25. / 90.;
if (theta_e > 95 || theta_e < -95)
{
theta_e += 180;
if (theta_e > 180)
theta_e -= 360;
if (theta_e > 80)
theta_e = 80;
if (theta_e < -80)
theta_e = -80;
if (d_e < 5.0 && abs(theta_e) < 40)
Ka = 0.1;
vr = (int)(-vc * (1.0 / (1.0 + exp(-3.0 * d_e)) - 0.3) + Ka * theta_e);
vl = (int)(-vc * (1.0 / (1.0 + exp(-3.0 * d_e)) - 0.3) - Ka * theta_e);
}
el if (theta_e < 85 && theta_e > -85)
{
if (d_e < 5.0 && abs(theta_e) < 40)
Ka = 0.1;
vr = (int)( vc * (1.0 / (1.0 + exp(-3.0 * d_e)) - 0.3) + Ka * theta_e);
vl = (int)( vc * (1.0 / (1.0 + exp(-3.0 * d_e)) - 0.3) - Ka * theta_e);
}
el
{
vr = (int)(+.17 * theta_e);
vl = (int)(-.17 * theta_e);
12 }
Velocity(robot, vl, vr);
}
2.7 在策略中调用动作的基本方法
1. 让小车沿直线跑到指定的点
switch ( env->gameState)
{
ca 0:
Position (&env->home[1],env->Home[1].pos.x, 60);
//让小车1沿着直线跑到X轴与机器人位置相等Y轴为60这个点去
Position (&env->home[2],env->Home[2].pos.y, 60);
//让小车2沿着直线跑到Y轴与机器人位置相等X轴为60这个点去
break;
ca FREE_BALL:
break;
ca PLACE_KICK:
break;
ca PENALTY_KICK:
break;
ca FREE_KICK:
break;
ca GOAL_KICK:
break;
}
让小车跑到指定的点对球员之间的配合有很大的关系,对于策略的配合极其重要。
2. 让小车转弯跑
switch (env->gameState)
{
ca 0:
Position( &env->home[1], 50, 60);
//让小车跑到指定的坐标(50 ,60)
break;
ca FREE_BALL:
break;
ca PLACE_KICK:
break;
ca PENALTY_KICK:
break;
ca FREE_KICK:
break;
ca GOAL_KICK:
13 break;
}
3. 让小车跟着球跑
switch (env->gameState)
{
ca 0:
Position(&env->home[1], env-> .x,
env-> .y); //让小车1跟着球跑
break;
ca FREE_BALL:
break;
ca PLACE_KICK:
break;
ca PENALTY_KICK:
break;
ca FREE_KICK:
break;
ca GOAL_KICK:
break;
}
让小车跟着球跑也是一种进攻方法,这适合初学开发者。但这有一个毛病,容易犯规或造成乌龙球。
4. 让守门员根据球的Y轴的移动而移动
switch (env->gameState)
{
ca 0:
Position(&env->home[1], 91.0000, env->.y);
//让小车1守门,并且根据球的位置的移动而移动
break;
ca FREE_BALL:
break;
ca PLACE_KICK:
break;
ca PENALTY_KICK:
break;
ca FREE_KICK:
break;
ca GOAL_KICK:
break;
}
让守门员跟随着球的Y轴和移动是一种很有效的守门办法,但守门员又不能离球门太远,所以守门员的移动还得在一定范围之内。
14 5.让小车以最快的速度到达指定的点
switch (env->gameState)
{
ca 0:
Position(&env->home[1], 60, env->.x);
//让小车1沿直线跑到X轴与机器人位置相等Y轴为60这个点去 break;
Position(&env->home[2], 60, env->.y);
//让小车2沿直线跑到Y轴与机器人位置相等X轴为60这个点去
Velocity(& env->home[1],125,125);
//让小车1以最快的速度移动,125为左右轮最大的速度
Velocity(& env->home[2],125,125);
//让小车2以最快的速度移动,125为左右轮最大的速度
break;
ca FREE_BALL:
break;
ca PLACE_KICK:
break;
ca PENALTY_KICK:
break;
ca FREE_KICK:
break;
ca GOAL_KICK:
break;
}
2.8简单策略开发
程序主要是在接口Strategy中按照当前的状态处理比赛时的信息,通过分支-选择结构来分别处理各种不同的状况
switch(env->gameState)
{
ca 0:
//default 却省情况下的策略(即没有选择任何比赛模式)
//三个机器人进行追逐对方的策略
MoonFollowOpponent(&env->home[1], &env->opponent[2]);
MoonFollowOpponent(&env->home[2], &env->opponent[3]);
MoonFollowOpponent(&env->home[3], &env->opponent[4]);
//第四个抢球
MoonAttack( &env->home [4],env);
Goaliel (&env->home [0], env); //守门员守门
break;
ca FREE_BALL: //发球坠球(自由球)时的策略
//跟随对方
MoonFollowOpponent(&env->home[1], &env->opponent[2]);
MoonFollowOpponent(&env->home[2], &env->opponent[3]);
15 MoonFollowOpponent(&env->home[3], &env->opponent[4]);
MoonAttack( &env->home [4],env); //第四个抢球
Goaliel (&env->home [0], env); //守门员守门
break;
ca PLACE_KICK: //开球时的策略
MoonAttack( &env->home [2],env); //由二号小车发球
break;
ca PENALTY_KICK: //发生罚球(点球)时的策略
switch (env->whosBall)
{
ca ANYONES_BALL:
MoonAttack( &env->home [1],env);
break;
ca BLUE_BALL:
MoonAttack( &env->home [4],env);
break;
ca YELLOW_BALL:
MoonAttack( &env->home [0],env);
break;
}
break;
ca FREE_KICK: //发生任意球时的策略(在比赛中通常不会用到该模式 )
MoonAttack( &env->home [0],env);
break;
ca GOAL_KICK: //发生球门球的策略
MoonAttack( &env->home [0],env);
break;
}
}
2.9 各种定位球
2.9.1 各种定位球坐标确定方法
载入两个空策略,点击Open Viewer 菜单,打开RSViwer,选择Ball,将球移动到待测试点后点击Start进入比赛状态,点击RSViwer中的Display可以看到球的坐标。
2.9.2 自由球
球与机器人摆放原则
1. 将场地分成四个区域,每个区域都有一个自由球罚球点,在哪个区域犯规,就在那个区域罚自由球
2. 球应该摆放在罚球点上
3. 每对有一个机器人放在离球25厘米的发球线上
4. 其他机器人应该放在这个犯规区域以外
5. 防守方机器人应在靠近自己底线的一边
6. 防守方先摆放机器人
16
自由球在程序中的判断
1. 判断球场上所有机器人和球的速度非常小
2. 判断球的位置是否在发球点上
3. 判断我方和对方是否有且仅有一个机器人在球的附近(相距25厘米左右)
结合以上三个条件起来就可以判断是否在罚自由球。
2.9.3 点球
球与机器人摆放原则
1. 踢球机器人必须放在球的后方
2. 防守的守门员必须压球门线
3. 除了踢球机器人和防守守门员外,其他机器人都在另外半场
4. 防守方先摆机器人
点球的判断
1. 判断球场上所有的机器人和球的速度非常小
2. 判断球的位置是否在发球点上
3. 判断我方和对方是否有且仅有一个机器人在发球的那个半场
结合以上三个条件起来就可以判断是否在罚点球。
17
2.9.4 球门球
球与机器人摆放原则
1. 发球方只允许有一个守门员在大禁区内
2. 球应该放在大禁区内
3. 防守方机器人必须在自己半场
4. 防守方先摆机器人
球门球的判断
1. 判断球场上所有的机器人和球的速度非常小
2. 判断球的位置是否在大禁区内
3. 判断我方是否有且仅有一个机器人在大禁区内
4. 判断所有对方球员都不在我方半场
结合以上四个条件起来就可以判断是否在罚点球门球。
18
2.9.5开球
球与机器人摆放原则
1. 发球方只允许有一个机器人在中场本方半圆内
2. 球应该放在中场圆心上
3. 防守方机器人必须在自己半场,并不得进入中场本方半圆
4. 防守方先摆机器人
开球的判断
1. 判断球场上所有的机器人和球的速度非常小
2. 判断球的位置是否在中场圆心
3. 判断我方是否有且仅有一个机器人在中场本方半圆内
4. 判断所有对方球员都不在我方半场
结合以上四个条件起来就可以判断是否在开球。
19
第三章 比赛规则
一、名词解释
1、 进球:足球完全越过球门线,即为进球。
2、 死球:足球被机器人和墙夹在中间无法移动、或足球被多个机器人包围卡住不动超过10秒时,则为死球。
3、 比赛中断:裁判员吹哨宣布比赛开始或继续后,在20秒内没有任何机器人触到球,而且看上去没有机器人将会触到球,可以比赛中断。
4、 坠球(自由球):当发生死球或比赛中断后,继续开始比赛时所采用的方式。
5、 任意球:发生犯规判罚、点球未中时所采用的继续开始比赛的方式。
二、比赛规则
1、赛前准备:
为了验证机器人的编程是否参赛选手自己制作完成,在比赛前将要求参赛选手陈述其机器人的编程思路。
2、猜边:
参赛双方用投币的方式选定开球或场地。选定后,参赛双方有2分钟的准备时间。
20 3、开球:
开球时,所有的机器人都必须位于自己的半场,且必须处于静止状态,所有不开球的机器人必须离球大于25cm。开球方将开球机器人放置在距足球2cm至5cm位置。裁判可以调整机器人的位置,并宣布完成调整。由裁判将比赛双方代码调入。开球机器人触球后,其他机器人方可触球。
某方进球后,应由对方以同样方式,重新开球继续比赛。
下半场,参赛双方互换场地及开球权。
4、比赛时间:
常规赛:比赛分上下两个半场,各5分钟,中场休息时间2分钟,比赛开始前,每队有2分钟的准备调试时间。
加时赛:比赛需有胜负时,且双方在10分钟比赛中打成平局,另加加时赛。加时赛分上下两个半场,各2分钟,中间不休息。加时赛规则同上(包括猜边、开球等)。加时赛采取突然死亡法,即一方进球后比赛结束。
5、点球:
胜负点球:比赛需有胜负,且双方在加时赛中无进球,则以互罚点球决胜负。
首轮罚点球采用3球制,双方猜边、猜球后,轮流罚点球:完成3个点球后,双方仍平局,则采用轮流各罚1个点球,直至分出胜负。罚点球所用机器人为加时赛结束时所用的机器人。罚点球时,除罚球机器人和对方守门机器人外,其他机器人均应在另外半场。对方守门机器人在球被踢出前,必须站在球门线的前的中间点。由裁判将球放置在点球位,罚球方将机器人放置在距足球2cm至5cm位置。
如果踢出的球直接或触及守门机器人而进入球门,或主罚机器人将球带入球门,只要没有犯规现象发生,均应判为进球。
如果守门机器人在球被踢出前发生移动,且足球未进,则判守门机器人违例,重新罚点球。
犯规点球:指常规或加时赛中,机器人严重犯规被裁判罚的点球。罚球方式同上。如果点球未中,换由对方在原点球位开任意球。
6、 防守违例:
防守方的两个机器人不能同时并排在己方球门线前(主动而非被动)停留超过5秒钟,否则判进攻方罚点球。
7、 坠球:
由裁判员将足球放在距原在位置最近的坠球点上,双方机器人可摆放在距足球15cm以外的任意地方;裁判吹哨后,开始继续比赛。在摆放机器人位置时,各队在自己半场具有优先摆放权。在出现死球或比赛中断时,判罚坠球。
8、 任意球:
获得任意球的一方可以在球附近放置一个机器人,其他参赛机器人应放置在离球25cm以外。
由裁判员将足球放在发生犯规的地方,如果犯规地点距墙壁小于15cm,则将球放在距墙壁15cm处。
防守违例、点球未中时,判对方在最近的坠球点罚任意球。
比赛后开任意球的机器人触球后,其他机器人方可触球。任意球为“两脚球”(即开球直接入门无效),否则换由对方在坠球点罚任意球。
9、 参赛队员:
比赛过程中,未经裁判允许,参赛选手不能操作演示机器。除非当比赛中断,摆放各种定位球时参赛选手可以操作机器,但不允许调试程序;
21 10、越位:
比赛没有越位规则。
11、时间暂停:
比赛中没有时间暂停。
12、计胜方法:
在比赛中,进球多的一方为得胜队,如双方均未进球或进球数目相等,则这场比赛应为“平局”。
13、当犯规与进球同时发生时,判进球有效,如果防守方向犯规在前,判进球有效,进攻方犯规在前,判进球无效,开球门球。
三、犯规与处罚
1、防守违例:防守方的两个机器人同时在己方球门线前主动而非被动停留超过5秒钟以上。判对方罚任意球。
2、直接判负: 出现下述情况时,直接判定该队为比赛负方:
参赛队员不服从裁判判决并顶撞裁判。
四、裁判
每场比赛委派一名裁判员执行裁判任务,一名记分员记录比赛过程和控制比赛时间。裁判员在比赛过程中所作的判决,为最后判决。
裁判员的责任:
1. 公平公正地执行规则。
2. 避免作出对犯规队有利的判罚。
3. 遇到有争议的问题时,由大赛的技术裁判最终作出工正的仲裁。
4. 比赛完毕后判定比赛的胜负。
五、环境
比赛现场不允许有不礼貌的行为,否则,根据裁判和管理委员会的决定,将会被驱逐出比赛现场并有可能取消其比赛资格。
六、其他
1.本规则的解释权属于微软千人机器足球大赛组委会。
2.现场比赛成绩由裁判员确定并由参赛选手当场确认。逾期不的追诉和更改。
3.参赛选手对于裁判的决定必须服从。如有不同意见可以向机器人足球大赛组委会相关成员申述意见,但在竞赛现场不得干扰竞赛的正常秩序。
22
本文发布于:2023-12-10 23:09:30,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/170222097040542.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:机器人足球开发入门指南(FIRA 5 vs 5 仿真).doc
本文 PDF 下载地址:机器人足球开发入门指南(FIRA 5 vs 5 仿真).pdf
留言与评论(共有 0 条评论) |