机器人足球实验报告.docx

上传人:b****1 文档编号:263701 上传时间:2022-10-08 格式:DOCX 页数:10 大小:17.80KB
下载 相关 举报
机器人足球实验报告.docx_第1页
第1页 / 共10页
机器人足球实验报告.docx_第2页
第2页 / 共10页
机器人足球实验报告.docx_第3页
第3页 / 共10页
机器人足球实验报告.docx_第4页
第4页 / 共10页
机器人足球实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

机器人足球实验报告.docx

《机器人足球实验报告.docx》由会员分享,可在线阅读,更多相关《机器人足球实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

机器人足球实验报告.docx

实验一

一、实验目的

掌握RoboCup仿真机器人足球比赛相关知识点,具体内容如下:

(1)Linux操作系统的熟悉及了解其基本操作。

(2)掌握Linux下如何进行C++编程,了解gcc编译器以及一些简单编辑工具,如:

vi、emacs、gedit、Anjuta、Kdevelope等。

(3)启动RoboCup仿真(2D)足球队的比赛。

二、实验设备

硬件环境:

PC机

软件环境:

操作系统linux

三、实验内容

(1)掌握Linux一些常用的命令

a)如何找到用户主目录的绝对路径名?

在自己的系统上,用户主目录的绝对路径名是什么?

pwd /home/student

(2)将当前工作目录从/home/UVA转到/home/Tsinghua需要使用什么命令?

如何显示当前目录?

cd/home/Tsinghua

(3)如何在当前目录下建立子目录RoboCup?

mkdirRobcup

(4)如何删除子目录RoboCup?

rmdirRobcup

(5)如何查看当前目录下的内容?

ls

(6)如何将文件start.sh的权限设定为:

start.sh属于可读、可写、可执行?

chmod777start.sh

(7)如何将当前目录包括所有子目录全部做备份文件,备份文件名为first.tar?

tarxvfdir1first.tar

(8)如何将目录/home下每一个文件压缩成.gz文件?

tar-zcwfstore.tar

(9)如何把上例中每个压缩的文件解压,并列出详细的信息?

tarxvfstore.tar

Ls-lg

1、 实验目的

实验二

(1)了解Demeer5的工作原理

(2)学会对Demeer5进行简单的修改

二、实验设备

硬件环境:

PC

软件环境:

Linux

三、实验内容

(1)如果可踢球就用最大力踢球

elseif(WM->isBallKickable()) //如果球已知,而且当前球在我脚下(可踢)

{

VecPositionpos=(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)如果球不可踢且我是队友中最快到达球的队员,则去截球

elseif(WM->getFastestInSetTo(OBJECT_SET_TEAMMATES,OBJECT_BALL,&iTmp)

==WM->getAgentObjectType()&&!

WM->isDeadBallThem())

//如果球不在我的控制范围下,但是当前能最快抢到球的是我,那我就去执行抢球动作

{

Log.log(100,"Iamfastesttoball;cangettherein%dcycles",iTmp);soc=intercept(false);

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

(3)其他情况按战略点跑位

elseif(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->getPlayerWhenToTurnAngle());ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

(4)将球踢向对方球门

elseif(WM->isBallKickable()) //如果球已知,而且当前球在我脚下(可踢)

{

VecPositionpos=(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));

(5)将球踢向距自己最近的球员

elseif(WM->isBallKickable()) //如果球已知,而且当前球在我脚下(可踢)

{

VecPositionvec=WM->globalPosition(WM->getClosestInSetTo

(OBJECT_SET_TEAMMATES,posAgent));

soc=kickTo(vec,2.0);

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

(7)用不同的带球模式带球dribble(vec,DRIBBLE…)

分别用DRIBBLE_FAST 快速带球

DRIBBLE_SLOW 慢速带球

DRIBBLE_WITHBALL安全带球的模式带球

(8)向对方球门带球

elseif(WM->isBallKickable())

{

AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);

ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

(9)不同的带球组合

elseif(WM->isBallKickable())

{

if(WM->isInTheirPenaltyArea(WM->getBallPos()))

{

VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM->getCurrentCycle()%2))*

0.4*SS->getGoalWidth());

soc=kickTo(pos,SS->getBallSpeedMax());

}

else

{

AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);

}

AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);

ACT->putCommandInQueue(soc);//放入命令队列

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

一、.实验目的



实验三

熟悉demeer5并学会demeer5的基本使用方法,具体内容如下:

(1)理解UVA程序的的么而内容

(2)能修改demeer5

(3)能进行底层动作的组合

二、实验设备:

硬件设备:

pc机

软件设备:

操作系统linux

三、实验内容

(1)如果在对方禁区内就射门,否则,如果时7、8、9号队友就超前方带球,其他队

友传球给9号

elseif(WM->isBallKickable())

{

if(WM->isInTheirPenaltyArea(WM->getBallPos()))

{

VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM->getCurrentCycle()%2))*

0.4*SS->getGoalWidth());soc=kickTo(pos,SS->getBallSpeedMax());

}

else

{

if(WM->getAgentObjectType()==OBJECT_TEAMMATE_7||WM-

>getAgentObjectType()==OBJECT_TEAMMATE_8||WM->getAgentObjectType()==OBJECT_TEAMMATE_9)

{

AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);

}

else

{

soc=leadingPass(OBJECT_OPPONENT_9,1);

}

}

AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

(2)如果队员的位置在自己半场就向对方球门踢球,否则就向前方带球

elseif(WM->isBallKickable()<=0)

{

if(WM->getBallPos().getX()<=0)

{

VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM->getCurrentCycle()%2))*

0.4*SS->getGoalWidth());soc=kickTo(pos,SS->getBallSpeedMax());

}

else

{

AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);

}

AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);ACT->putCommandInQueue(soc);

ACT->putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));

}

(3)担忧人来抢球时,就将球传给离自己最近的队友,否则就自己带球

elseif(WM->isBallKickable())

{

Circlecir(posAgent,2.5);

intnum=WM->getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);if(num<2)

{

VecPositionvec=WM->getGlobalPosition(WM-

>getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent));soc=kickTo(vec,2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1