機器人足球實驗報告.doc
實驗一
一、實驗目的
掌握RoboCup仿真機器人足球比賽相關知識點,具體內容如下:
Linux操作系統的熟悉及了解其基本操作。
掌握Linux下如何進行C++編程,了解gcc編譯器以及一些簡單編輯工具,如:vi、emacs、gedit、Anjuta、Kdevelope等。
啟動RoboCup仿真(2D)足球隊的比賽。
二、實驗設備
硬件環境:PC機
軟件環境:操作系統linux
三、實驗內容(1)掌握 Linux 一些常用的命令
a)如何找到用戶主目錄的絕對路徑名?在自己的系統上,用戶主目錄的絕對路徑名是什么? pwd /home/student(2)將當前工作目錄從/home/UVA 轉到/home/Tsinghua 需要使用什么命令?如何顯示當前目錄?cd /home/Tsinghua(3)如何在當前目錄下建立子目錄 RoboCup?mkdir Robcup(4)如何刪除子目錄 RoboCup?rmdir Robcup(5)如何查看當前目錄下的內容?ls(6)如何將文件 start.sh 的權限設定為:start.sh 屬于可讀、可寫、可執行?chmod 777 start.sh(7)如何將當前目錄包括所有子目錄全部做備份文件,備份文件名為 first.tar?tar xvf dir1 first.tar(8)如何將目錄/home 下每一個文件壓縮成.gz 文件?tar -zcwf store.tar
(9)如何把上例中每個壓縮的文件解壓,并列出詳細的信息?tar xvf store.tar
Ls -lg
實驗二
實驗目的
(1)了解Demeer5的工作原理
(2)學會對Demeer5進行簡單的修改
二、實驗設備
硬件環境:PC
軟件環境:Linux
三、實驗內容
(1)如果可踢球就用最大力踢球
else if( WM->isBallKickable()) // 如果球已知,而且當前球在我腳下(可踢)
{
VecPosition pos=( PITCH_LENGTH/2.0,(-1 + 2*(WM->getCurrentCycle()%2)) *
0.4 * SS->getGoalWidth() );
soc=kickTo(pos,SS->getBallSpeedMax());
ACT->putCommandInQueue( soc ); // 放入命令隊列
ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ));
}
(2)如果球不可踢且我是隊友中最快到達球的隊員,則去截球
else if( WM->getFastestInSetTo( OBJECT_SET_TEAMMATES, OBJECT_BALL, &iTmp )
== WM->getAgentObjectType() && !WM->isDeadBallThem() )
// 如果球不在我的控制范圍下,但是當前能最快搶到球的是我,那我就去執行搶球動作
{
Log.log( 100, "I am fastest to ball; can get there in %d cycles", iTmp );
soc = intercept( false );
ACT->putCommandInQueue( soc );
ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ));
(3)其他情況按戰略點跑位
else if( posAgent.getDistanceTo(WM->getStrategicPosition()) >
1.5 + fabs(posAgent.getX()-posBall.getX())/10.0) // 到了這里就是其他距離球相對遠一點的人了,如果離自己的陣形點太遠,就跑回 自己的陣形點去。
{
if(WM->getAgentStamina().getStamina()>SS->getRecoverDecThr()*SS->getStaminaMax()+800)
{
soc = moveToPos(WM->getStrategicPosition(),PS-