Robocup3D第一次笔记

初学robocup3D,还不太了解。

首先我们安装好robocup3D的环境,先测试一下demo

1:在roboviz文件夹里打开终端,输入 ./roboviz.sh 打开仿真模拟器

2:在SIMSPARK_0.3.1_RELEASE文件夹打开终端,输入rcsss后tap键补全,打开足球场。

3:在代码文件夹打开终端,./ 编译运行代码

我的demo就是机器人转圈;

SkillType NaoBehavior::demoKickingCircle() {
    // Parameters for circle
    VecPosition center = VecPosition(-HALF_FIELD_X/2.0, 0, 0);
    double circleRadius = 5.0;
    double rotateRate = 2.5;

    // Find closest player to ball
    int playerClosestToBall = -1;
    double closestDistanceToBall = 10000;
    for(int i = WO_TEAMMATE1; i < WO_TEAMMATE1+NUM_AGENTS; ++i) {
        VecPosition temp;
        int playerNum = i - WO_TEAMMATE1 + 1;
        if (worldModel->getUNum() == playerNum) {
            // This is us
            temp = worldModel->getMyPosition();
        } else {
            WorldObject* teammate = worldModel->getWorldObject( i );
            if (teammate->validPosition) {
                temp = teammate->pos;
            } else {
                continue;
            }
        }
        temp.setZ(0);

        double distanceToBall = temp.getDistanceTo(ball);
        if (distanceToBall < closestDistanceToBall) {
            playerClosestToBall = playerNum;
            closestDistanceToBall = distanceToBall;
        }
    }

    if (playerClosestToBall == worldModel->getUNum()) {
        // Have closest player kick the ball toward the center
        return kickBall(KICK_FORWARD, center);
    } else {
        // Move to circle position around center and face the center
        VecPosition localCenter = worldModel->g2l(center);
        SIM::AngDeg localCenterAngle = atan2Deg(localCenter.getY(), localCenter.getX());

        // Our desired target position on the circle
        // Compute target based on uniform number, rotate rate, and time
        VecPosition target = center + VecPosition(circleRadius,0,0).rotateAboutZ(360.0/(NUM_AGENTS-1)*(worldModel->getUNum()-(worldModel->getUNum() > playerClosestToBall ? 1 : 0)) + worldModel->getTime()*rotateRate);

        // Adjust target to not be too close to teammates or the ball
        target = collisionAvoidance(true /*teammate*/, false/*opponent*/, true/*ball*/, 1/*proximity thresh*/, .5/*collision thresh*/, target, true/*keepDistance*/);

        if (me.getDistanceTo(target) < .25 && abs(localCenterAngle) <= 10) {
            // Close enough to desired position and orientation so just stand
            return SKILL_STAND;
        } else if (me.getDistanceTo(target) < .5) {
            // Close to desired position so start turning to face center
            return goToTargetRelative(worldModel->g2l(target), localCenterAngle);
        } else {
            // Move toward target location
            return goToTarget(target);
        }
    }
}


然后就可以尝试着理解代码了

我首先看了worldmodel模块

class WorldModel {

private:

    unsigned long cycle;
    int scoreLeft;
    int scoreRight;
    double time;
    double gameTime;
    int playMode;
    int lastPlayMode;
    int lastDifferentPlayMode;
    int uNum;
    int side;

    bool uNumSet;
    bool sideSet;

    WorldObject worldObjects[NUM_WORLD_OBJS];
    VecPosition myPosition;
    SIM::AngDeg myAngDegrees;
    bool confident;

    VecPosition myLastPosition;
    SIM::AngDeg myLastAngDegrees;
    RVSender *rvsend;
    bool fUseGroundTruthDataForLocalization;
    // TODO: comment it out if we don't want ground truth
#define GROUND_TRUTH_SERVER
#ifdef GROUND_TRUTH_SERVER
    VecPosition myPositionGroundTruth;
    SIM::AngDeg myAngGroundTruth;
    VecPosition ballGroundTruth;
#endif

    double lastBallSightingTime;
    double lastLineSightingTime;

    // This is where we actually saw the ball ourself
    vector<VecPosition> lastBallSeenPosition;
    vector<double> lastBallSeenTime;

    // remember last two skills
    vector<SkillType> lastSkills;
    vector<SkillType> executedSkillsForOdometry;

    // record last odometry from particle filter
    SIM::Point2D lastOdometryPos;
    double lastOdometryAngDeg;

    bool fLocalized;
    bool fFallen;

    HCTMatrix localToGlobal, globalToLocal;

    vector<bool> fallenTeammate;
    vector<bool> fallenOpponent;

模块太长了所以没给完全

我们可以看到很多定义,重载来实现函数功能。

其中部分函数通过教程与摸索知道了其功能

getMyPosition(获取球员的位置)
getUNum() (判断球员的号码)
getPlayMode()(获取比赛模式)
getTime()(比赛时间)
setPlayMode()(设置比赛模式)
setUNum()(设置球员)
VecPosition(x,y,z)(初始化位置)
getOpponent()(获取敌方守门员的位置)
等等还有很多

比较懒就写了一个很简单的例子(11号就直接冲)

SkillType NaoBehavior::demokick(){
    if(worldModel->getUNum()==11){
        return kickBall(KICK_11M,VecPosition(HALF_FIELD_X,0,0));
    }
    else  return SKILL_STAND;

    }
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
·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.内容简介: --------------------------------------------------------------- 这是一个压缩包,里面是5个文件是东南大学Robocup3D仿真比赛的源代码。对于参加Robocup比赛绝对有帮助。学习别人如何组织代码,这样可以在一个更高的起点进行编程。 建议,对Robocup机器人比赛感兴趣或者东南大学以及其他高校的参赛同学下载学习。否则,会感觉我的文件都不知道什么东西。 --------------------------------------------------------------- ·2.资源使用方法 suse Linux 环境下编译运行,注意,必须安装好开发环境和仿真环境。 --------------------------------------------------------------- ·3.文件组成形式 格式:tar.gz 源代码,在src文件夹里 --------------------------------------------------------------- ·4. wogeguaiguai的附言: 1.我的其他数学建模精华资源也欢迎您下载,大学生基本上都听过这个比赛吧,这个比赛比较有意思,而且获奖比例高。我的资料都是非常好的准备比赛要用的资料。我比赛结束之后,这些资料就不用啦,分享给大家!俺一年的搜索资源,同学们一朝即可获得! 2.下载本文件后,您可以获得所有信息,不必再零散下载,给您带来很大的方便。 3.10个资源分,绝对物超所值。评论后,您就可以获得11个资源分,欢迎您评论! --------------------------------------------------------------- ·5.如有问题,请在此留言,谢谢。 --------------------------------------------------------------- ·6.上传时间 2010-2-24-night
·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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值