我是靠谱客的博主 自觉斑马,最近开发中收集的这篇文章主要介绍Robocup3D如何进行代码的编写1.信息接口2.策略编写,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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中预先写好固定的动作调用逻辑,比如根据队员号数进行分类等。

最后

以上就是自觉斑马为你收集整理的Robocup3D如何进行代码的编写1.信息接口2.策略编写的全部内容,希望文章能够帮你解决Robocup3D如何进行代码的编写1.信息接口2.策略编写所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部