robocup学习篇(一)

声明:以下内容是在Ubuntu18.04版本下搭建的比赛环境下的学习笔记。

比赛介绍

RoboCup 仿真比赛是一个能为多智能体系统和模拟智能进行研究、教育的工具。比赛是在一个标准的计算机环境中进行的,提供了一个完全分布式控制、实时异步多智能体环境。通过这个平台,可以测试各种理论、算法和Agent体系结构。在实时异步、有噪声的对抗环境中,研究多智能体的合作对抗问题。当然,仿真组的比赛使用的机器人并非是真的机器人。一个机器人是一个Agent, 它拥有自己的大脑,是一个独立的“主体”。而一个球队实际是由十一个程序组成的。服务器的工作就是计算并更新球场上所有物体的位置、运动和状态,发送视觉和听觉信息给球员,接收和执行球员的命令。
RoboCup仿真组是完全基于软件程序的开发而没有实际的机器人,这是不同与 RoboCup 其他组的重要方面。因此,研究人员可以把精力完全投入到机器人的高层决策中,而无需考虑硬件问题。同时,仿真组比赛所需的仿真平台的开发还可以促进计算机仿真技术的发展。
RoboCup3D是2005年才引入的新的仿真组别。比赛的环境是3D的,球场上各个物理状态的更新是依赖于物理引擎的,所以更逼近现实。05、06年的比赛都是球形环境的,每个Agent都是一个球体,机器人踢球其实就是球撞球的过程。自07年开始,每个球员都是一个仿人的机器人,它们有实实在在的实物机器人模型。这时的比赛就是仿人机器人之间的对抗。由于球员是仿人的,踢球也自然是用脚去踢,这时动作的实现成了一大难题。这是仿真2D组和之前的球形环境的仿真3D所不需要考虑的问题。不过这必然会促进机器人相关理论的研究和发展。

在Ubuntu18.04下打开robocup球场(开机)

1.在下载解包好的RoboViz/bin文件内开启终端输入./roboviz.sh开启赛场
2.在下载解包好的SIMSPARK_0.3.1_RELEASE/simspark-SIMSPARK_0.3.1_RELEASE文件夹内开启终端输入rcssserver3d
3.在下载解包好的源码文件master/utaustinvilla3d-master内开启终端输入./start.sh
4.在3处再次输入./kill.sh可以将机器人下场,注意:若机器人位置不合法右上角会报illegal defendence(在audio文件中将解释)
5.回到球场界面按下O可以选择开球

6.开始比赛的一些命令
gametime 比赛时间
playmode 当前比赛模式
beforekickoff 比赛未开始状态
killoff_left 左边开球
beam 球员上场的位置

虚拟环境球场

在这里插入图片描述
比赛的球场是一个30*20的绿茵场,以中心为坐标原点。满足x∈[-15,15],y∈[-10,10]

小贴士:

.h为头文件
.cc为源文件

audio.cc源文件中关于球场代码注释

//#define HALF_FIELD_X 15.0    field:田(球场)
//#define HALF_FIELD_Y 10.0
//#define NUM_AGENTS 11        agent:代理(机器人代理人)以下简称为球员
/*
  These are x and y limits for the ball and the players.
  这些是球和球员的x和y限制
*/
double minBallX = -HALF_FIELD_X - 2.0;//球的x坐标的最小值
double maxBallX = HALF_FIELD_X + 2.0;//球的x坐标的最大值
double minBallY = -HALF_FIELD_Y - 2.0;//球的y坐标的最小值
double maxBallY = HALF_FIELD_Y + 2.0;//球的y坐标的最大值
double minAgentX = -HALF_FIELD_X - 5.0;//球员的x坐标的最小值
double maxAgentX = HALF_FIELD_X + 5.0;//球员的x坐标的最大值
double minAgentY = -HALF_FIELD_Y - 5.0;//球员的y坐标的最小值
double maxAgentY = HALF_FIELD_Y + 5.0;//球员的y坐标的最大值

worldmodel.h中部分函数功能翻译(持续更新ing)

设置及坐标参数返回 		   VecPosition(x,y,0)
判断球员于目标距离		   temp.getDistanceTo(VecPosition(x,y,0))
获取当前对象的指定坐标      temp.getX() (之前必须在前重新定义对象)
获取当前球员坐标		       getMyPosition()
获取比赛时间                getGameTime()
获取球的位置                getBall()
获取比赛状态                getPlayMode()
获得上一次策略              getLastSkill()
获取摔倒队友的编号          getFallenTeammate()
获得对方球员的位置          worldModel->getOpponent(i)
获取球员编号                worldModel->getUNum()
获取指定球员坐标            worldModel->getTeammate(i)  (i为我方球员编号)
指定当前球员行动方向        SkillType goToTargetRelative(相对球员方向,角度)
动作踢球                   SkillType kickBall(kickTypeToUse,Vecposition &target)
设置及坐标参数返回 		   VecPosition(x,y,0)

尝试理解worldmodel.h头文件public83行到163行的中文注释

public:

    WorldModel();//构造函数
    ~WorldModel();//析构函数

    inline void setMyConfidence(bool confidence) {
        confident = confidence;
    }//?
    inline bool getMyConfidence() const {
        return confident;
    }//?

    inline WorldObject* getWorldObject( int index ) {
        return &worldObjects[index];
    }//?
    void updateGoalPostsAndFlags();//更新球和旗的位置
    void updateMatricesAndMovingObjs( VecPosition& fieldXPlusYPlus,
                                      VecPosition& fieldXPlusYMinus,
                                      VecPosition& fieldXMinusYPlus,
                                      VecPosition& fieldXMinusYMinus );//更新矩阵和移动对象


    inline void setMyPosition( const VecPosition& newPos ) {
        myPosition = newPos;
    }//更新自己的位置
    inline void setMyPosition( const SIM::Point2D& newPos ) {
        myPosition.setX( newPos.getX() );
        myPosition.setY( newPos.getY() );
        // Z is not changed, stays at the default
        //Z 不更改,保持默认值 高是z
    }
    inline VecPosition getMyPosition() const {
        return myPosition;
    }


    inline void setMyAngDeg( SIM::AngDeg newAng ) {
        myAngDegrees = newAng;
    }//更新角度
    inline void setMyAngRad( SIM::AngRad newAng ) {
        myAngDegrees = Rad2Deg( newAng );
    }//更新弧度
    inline SIM::AngDeg getMyAngDeg() const {
        return myAngDegrees;
    }
    inline SIM::AngRad getMyAngRad() const {
        return Deg2Rad( myAngDegrees );
    }


    inline void setMyLastPosition( const VecPosition& newPos ) {
        myLastPosition = newPos;
    }//更新自己最新的位置
    inline VecPosition getMyLastPosition() const {
        return myLastPosition;
    }


    inline void setMyLastAngDeg( SIM::AngDeg newAng ) {
        myLastAngDegrees = newAng;
    }//更新最新的角度
    inline void setMyLastAngRad( SIM::AngRad newAng ) {
        myLastAngDegrees = Rad2Deg( newAng );
    }//更新最新的弧度
    inline SIM::AngDeg getMyLastAngDeg() const {
        return myLastAngDegrees;
    }
    inline SIM::AngRad getMyLastAngRad() const {
        return Deg2Rad( myLastAngDegrees );
    }

    inline RVSender *getRVSender() const {
        return rvsend;
    }

    inline void setUseGroundTruthDataForLocalization(bool fUseGroundTruthDataForLocalization) {
        this->fUseGroundTruthDataForLocalization = fUseGroundTruthDataForLocalization;
    }//更新球场地面实况本地化
    inline bool useGroundTruthDataForLocalization() {
        return fUseGroundTruthDataForLocalization;
    }//返回球场地面实况本地化数据

  • 6
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
·1.【原创资源】内容简介: --------------------------------------------------------------- 这是一个压缩包,里面是国际赛数模训练时,做无线电信道分配所用的资料 --------------------------------------------------------------- ·2.资源使用方法 microsoft word Adobe pdf 浏览 --------------------------------------------------------------- ·3.文件组成形式 格式:doc pdf文件 /**********************************************/ 文件名如下: (Toolkit的具体使用方法)SEU-3D-TOOLKIT使用手册.pdf (三位老队员的毕业设计,可供参考).zip (各个队伍可以此源码作为基础,阅读代码后进行修改使这个基础队伍变强从而参加比赛)seu-base.tar.gz (基础源码的简要介绍)presentation.pdf (更新版本维护了调试工具toolkit,各个队伍可以使用调试工具,更快更专业地调试你们的代码)seu-base-toolkit-update.tar.bz2 (测试队伍可以用来和自己的队伍进行比赛,测试自己开发的队伍的能力到了什么程度。 )teams_for_test.zip (老队员王巍的代码阅读笔记,可供参考。)SEU-3Architecture.doc (这个是server的安装包,参考新手上路进行安装 rcss3d-suse-install-11.X.tar.gz (这个是server的配置文件,如何使用请参阅新手上路)rcssserver3D.rb (这个是开始比赛之前的配置,同样请参考新手上路进行配置agentdb.list 23D introduction by xuyuan v0.4.pdf 3d_rules.pdf FAQ FAQ~ Linux菜鸟教程 国际足球比赛规则.pdf 文件说明.pdf 新手上路.pdf 通知.doc /**********************************************/ --------------------------------------------------------------- ·4. wogeguaiguai的附言: 1.我的其他数学建模资源也欢迎您下载,都是非常好的准备比赛要用的资料。俺一年的搜索资源,同学们一朝即可获得! 2.下载本文件后,您可以获得所有信息,不必再零散下载,给您带来很大的方便。 3.10个资源分,绝对物超所值。评论后,您就可以获得11个资源分,欢迎您评论! --------------------------------------------------------------- ·5.如有问题,请在此留言,谢谢。 --------------------------------------------------------------- ·6.上传时间 2010-2-24-afternoon
·1.内容简介: --------------------------------------------------------------- 这是一个压缩包,里面是文件是东南大学Robocup3D仿真比赛的培训资料,当然包括新手上路等资料和平台和基础源代码 建议,对Robocup机器人比赛感兴趣或者东南大学以及其他高校的参赛同学下载学习。否则,会感觉我的文件都不知道什么东西。 --------------------------------------------------------------- ·2.资源使用方法 suse Linux 环境下编译运行,注意,必须安装好开发环境和仿真环境。 --------------------------------------------------------------- ·3.文件组成形式 格式:tar.gz 创建日期 时间 文件大小 文件名 2008-10-15 15:56 330,241 3D新手上路v0.4.pdf 2008-10-22 17:59 372,952 5v5rule.pdf 2008-10-22 18:05 7,919,214 rcss3d-suse-install-11.0.tar.gz 2008-10-10 23:06 343,552 RoboCup讲稿.ppt 2008-10-22 18:04 459,785 seu-3d-0.3.c.release-5v5.tar.gz 2008-10-22 18:04 240,556 SEU-3D-5v5.tar.gz 2008-10-22 17:57 208,384 SEU-3D框架结构.doc 2008-10-20 10:51 835,301 入门材料v1.01[1].zip 2008-10-22 17:58 3,197,172 毕业设计.rar 2008-11-28 23:53 170,496 第五届RoboCup竞赛获奖名单.doc 2008-10-22 18:05 1,338,283 第四届前十.rar 2008-10-15 16:25 43,520 驱动安装.doc --------------------------------------------------------------- ·4. wogeguaiguai的附言: 1.我的其他数学建模精华资源也欢迎您下载,大学生基本上都听过这个比赛吧,这个比赛比较有意思,而且获奖比例高。我的资料都是非常好的准备比赛要用的资料。我比赛结束之后,这些资料就不用啦,分享给大家!俺一年的搜索资源,同学们一朝即可获得! 2.下载本文件后,您可以获得所有信息,不必再零散下载,给您带来很大的方便。 3.10个资源分,绝对物超所值。评论后,您就可以获得11个资源分,欢迎您评论! --------------------------------------------------------------- ·5.如有问题,请在此留言,谢谢。 --------------------------------------------------------------- ·6.上传时间 2010-2-24-night
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值