ROBOT & AI

首页 | 新闻 | 产品 | 竞赛 | 学苑 | 读书 | 硬件 | 软件 | 智能 | 制作 | 项目 | 资源 | 论坛
 您的位置:首页 >> 软件 >> 机器人编程 >> 正文
站内搜索:   

机器人策略程序设计

来源:本站整理   字体:[ ]  2007-03-13

关键词:


机器人策略程序设计框架

当欧洲足球联赛踢的漫天飞舞的时候,当国人又为国足难过的时候,机器人足球比赛也在热火朝天的举行着,这是考虑的一个3对3机器人的策略!

建立一个机器人群体类,该类实现机器人群体对球场形式的感知和提炼,综合形式决定战略目标,角色分配和各机器人的运动规划;用基本动作实现当前运动规划。总之,机器人群体完成了形式分析――判断和决定――行动的三阶段任务,最终由动作控制命令实现整体意图。其作用时把策略库组织成一个自包容的参数,方法库,模拟一个智能群体的全部功能:感知――决定――行动:office" />



1.机器人群体类的头文件:

CRobot

{

//预处理数据

RAWDATA rawData;//原始数据(当前机器人 球的方向)

NXTDATA nxtData;;//预测的后几个时刻机器人和球的方位

REFDATA refData; //提炼的决策依据



//预处理函数

Void GerRawData();//从VisionView.cpp获取当前全局数据 设置rawData

Void Predict();//根据当前和以前的机器人,球方位预测 预测器

Void SetRefData();//预处理器 一次调用三个预处理函数



//协调层数据

#define KICK_OFF 10 //标准形式化

#define PENALTY_KICK 11

#define FREE_KICK 12

#define FREE_BALL 13

#define GOALIE_LICK 14

#define DEFENS15



#define GoalieDefend 0 //禁区防守,120阵型

#define DoubleDefend 1 //重叠防守,120阵型

#define PassiveAttack 2//保守进攻,111阵型

#define ActiveAttack 3 //积极进攻,102阵型



Int nSituation;//形式,取以上4种值之一

Int attacker1;//主攻角色

Int attacker2;//协攻角色

Int defender1;//主守角色

Int defender2;//协守角色



//协调层函数

Void JudgeSituation();//依据refData判断形式,对nSituation赋值

Void InitRole();//根据形势和refData分配角色,即各角色赋值相应机器人ID





//运动规划层数据

#define Shoot 100 //单人射门技术动作

#define ………….. //其它战术动作

#define 2pass1 200 //2过1战术动作

#define ………….. //其它战术动作

#define Move 00 //直走基本动作

#define Angle 01 //转角基本动作

#define Position 02 //移动基本动作

#define …………. //其它基本动作



PATH path; //规划路径结构(链表30)-2个机器人

BOOL bIfChange;//是否维持原路径

Int nTechAct;.//技术动作代号

Int nCorAct;//战术动作代号 不包含具体参数

ACT act; //当前动作结构(包含int nBaseAct1,double x1,y1,&1,v1

// int nBaseAct2,double x1,y1, &2,v2

// int nBaseAct3,x3,y3, &3,v3)



//运动规划层函数

Void Makedecision(); //根据形式,角色和refData规划路径,确定2个机器人的技术动作

Void IfchangeDecision();//是否改变当前路径

MakeDecision 的工作原理






No IfchangeDecision() Yes 形式判断



禁区防守 重叠防守 保守防守 积极进攻 用switch-case语句



分别根据角色 refData决定战术动作序号

决定3个机器人的战术动作序号

决定3个机器人的技术动作序号

决定3个机器人的当前基本动作,存入act结构



//动作控制层函数;

Void Velocity(whichrobot,Vl,Vr);

Move(whichrobot,v) //左右轮速度相同

Void Angle(whichrobot,cur_&,desired_&); 反馈控制机制精确控制

Void Position(whichrobot,x,y, &,dx,dy,d&);

Void MakeAction();

{

Switch act.nBaseAct1

{

Case Move:

Move(Home1,v1);

Break;

Case Angle:

Case Position:

}

Switch act.nBaseAct2

{

Case ……….

}

Switch act.nBaseAct2

{

Case ……….

}

}



说明:MakeActions()的输入是act结构


录入:master 点击:

[发表评论] [打印文章] [关闭窗口]  

原创文章属本站所有,转载请注明来源:Robotain.com  
相关文章

 网友评论(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

发表评论 昵称:

  

  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
最新推荐
热门文章
论坛精华
网站简介设为首页 加入收藏在线留言友情链接联系我们 - 广告服务 - 版权申明

Copyright © Robotain.com  all rights reserved  浙ICP备07003355号

版权所有 机器与智能网