Robocup3D如何进行代码的编写

1.信息接口

对于机器人的代码编写而言,最重要的部分就是对环境和场上的具体情况有较为清楚的认知,一般这些数据都会整合到统一的接口中,这个接口就放在主目录下的worldmodel文件中。其中,worldmodel.h是声明关于一些场上信息,比如球的位置等等,而worldObject.h则主要是用于提供队友的或对手的信息。

比如,场上的11个机器人都有自己的对应编号,当某个机器人想知道自己哪一号时,就可以通过以下语句进行调用:

worldModel->getUNum()

worldModelworldmodel.h中的类WorldModel的实例,具体在文件路径“behaviors/naobehavior.h“中声明过,所以只要include这个路径就能直接使用worldModel这个实例。

比较特殊的是WorldObject这个结构体,它在worldObject.h中被定义,在WorldModel这个类中被实例化,所以要使用WorldObject这个结构体来调用队友等的信息,需要用worldModel这个实例。比如,我要调用队友(2号)的位置信息:

worldModel->getWorldObject(WO_TEAMMATE2)->pos

其中,WO_TEAMMATE2是宏定义,代表着2号队友。

这几个文件中还有其它很多的信息接口,可以在查询后按照上述规则添加。

2.策略编写

整个策略的主要由三个文件构成,分别是naobehavior.hnaobehavior.cc,以及strategy.cc,三个文件都在主目录下的behavior文件夹中。下面分别介绍一下三个文件的主要内容:

  • naobehavior.h:该文件中声明了主要的动作调用接口,比如走向某个位置,或者踢球等动作。所以只需要include该文件,就可以调用其命名空间内的动作。动作本身不一定需要在该文件中声明,但是该文件主要是将动作接口统一了起来,更加方便使用。
  • naobehavior.cc:头文件naobehavior.h中声明的一些动作的集中实现。
  • strategy.cc:策略的执行文件,整个代码的执行逻辑都在该文件中进行编写。

我们可以看到,前两个文件主要是给我们提供了动作的使用接口,而最后一个文件才是编写代码需要重视的地方,接下来将重点解析一下strategy.cc中的结构。

初始的strategy.cc文件中有三个函数:

函数名功能
void NaoBehavior::beam初始化函数,用于定义载入机器人时的机器人初始位置
SkillType NaoBehavior::selectSkillskill选择函数,该函数会在比赛过程中不断执行,同时根据判断条件去选择对应的动作执行。
SkillType NaoBehavior::demoKickingCircle自定义函数,在这里作为初始的演示函数,实现了功能:绕成一圈,离球最近的机器人去踢球

如果我们想添加我们自己的执行策略,就应该像SkillType NaoBehavior::demoKickingCircle一样,调用信息接口和动作接口来编写函数。而对于一场比赛而言,不同的队员会执行不同的动作,这就需要在SkillType NaoBehavior::selectSkill中预先写好固定的动作调用逻辑,比如根据队员号数进行分类等。

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值