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,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/170222097040542.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:機器人足球開發入門指南(FIRA 5 vs 5 仿真).doc
本文 PDF 下載地址:機器人足球開發入門指南(FIRA 5 vs 5 仿真).pdf
| 留言與評論(共有 0 條評論) |