第3章-FIRA仿真比赛_第1页
第3章-FIRA仿真比赛_第2页
第3章-FIRA仿真比赛_第3页
第3章-FIRA仿真比赛_第4页
第3章-FIRA仿真比赛_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章FIRA仿真比赛刘钊目录一、背景二、仿真平台介绍三、创建一个简单的策略程序四、比赛规则五、方法与模式举例六、调试方法一、背景半自主型机器人足球类人型机器人足球全自主型机器人足球仿真机器人足球足球机器人系统基本框架机器人执行子系统——动作执行体机器人感知子系统——了解环境信息和位置信息机器人策略子系统——多机器人协作、单机器人的技术动作和运动规划机器人通讯子系统——信息交换在机器人足球的四个子系统中,决策子系统是核心和灵魂,它决定机器人足球系统的智能度,是人工智能的先进理论应用和测试的平台FIRA:基于视觉的遥控足球机器人系统足球机器人策略子系统简介策略子系统(大脑)到底要什么功能?建立、并灵活使用各种模型;建立、并灵活使用各种规则;存储、选择足球机器人策略子系统简介是一个典型的智能系统:获得信息(感知、记忆、学习)分析决策(信息处理)输出动作(执行)设计模型设计模型1:输入输出响应设计模型设计模型2:世界模型执行决策规则输入输出设计模型2优点:建立世界模型,具有记忆功能;规则分离出来,形成模块;输出是有缓冲的;设计模型2问题:世界模型单一;规则的使用不连续;前锋后卫守门员足球机器人系统四层决策推理模型示意图设计模型3:二、仿真平台介绍电脑:

奔腾Ⅲ600MHZ的处理器内存265MWindows982000XP操作系统此仿真软件(1.5版本)可以在下面的网站上下载:

Http:///soccer/simurosot/R_Soccer_v15a_030204.exe

机器人的场地分配Home代表己方机器人Opp代表对方机器人箭头所指的方向为机器人的方向home1home2home3home4opp1opp2opp3opp4opp0home0比赛基本过程1.双方将自己的DLL文件放入C:\Strategy\blue(yellow)里面.2.输入自己的DLL文件名.3.系统会自动调用一次你的程序.三、创建一个简单的策略程序1。打开V或VC++6.02。创建(MFCDLL或win32dll)项目,取项目名,比如Strategy.3。添加指定结构定义(一般在stdafx.h里):typedefstruct{doublex,y,z;}Vector3D;typedefstruct{longleft,right,top,bottom;}Bounds;typedefstruct{Vector3Dpos;}Ball;typedefstruct{Vector3Dpos;doublerotation;}OpponentRobot;typedefstruct{Vector3Dpos; doublerotation,velocityLeft,velocityRight;}Robot;typedefstruct{ Robothome[5]; OpponentRobotopponent[5]; BallcurrentBall,lastBall,predictedBall;BoundsfieldBound,goalBound;longgameState;longwhosBall;void*userData;}Environment;4。添加指定外部函数:在Strategy.h里:extern"C"void__declspec(dllexport)Create(Environment*env);extern"C"void__declspec(dllexport)Strategy(Environment*env);extern"C"void__declspec(dllexport)Destroy(Environment*env);在Strategy.cpp里:extern"C"voidCreate(Environment*env){}extern"C"voidStrategy(Environment*env){}extern"C"voidDestroy(Environment*env){}5。完成!Strategy(…)函数voidStrategy(Environment*env){ switch(env->gameState) { case0: MoonFollowOpponent(&env->home[1],&env->opponent[2]); MoonFollowOpponent(&env->home[2],&env->opponent[3]); MoonFollowOpponent(&env->home[3],&env->opponent[4]);

MoonAttack(&env->home[4],env); Goalie(&env->home[0],env); break; caseFREE_BALL:四、比赛规则见附件。比赛演示演示比赛……传中射门…门前盘带…五、方法与模式举例1.信息获取与存储信息获取、积累、预测信息获取:感觉、查询、解析。信息积累:保存必要的信息。信息预测:①非常重要、困难;②空间大,要有针对性;球的位置预测考虑因素:速度衰减(建立速度正常衰减模型)边界反弹与衰减(建立边界反弹模型)队员干扰(建立对手干扰模型)关于坐标系建立;Vector3Dturn_blue(Vector3Dp){ Vector3Dpp; pp.x=p.y-41.8; pp.y=93.4-p.x;returnpp;}Vector3Dturn_yellow(Vector3Dp){ Vector3Dpp; pp.x=41.8-p.y; pp.y=p.x-6.8;returnpp;}doubleturn_blue(doublerotate){ rotate=270+rotate;if(rotate>=0) rotate-=360; return(rotate+360);}doubleturn_yellow(doublerotate){ rotate=450+rotate; if(rotate>=0) rotate-=360; return(rotate+360);}关于球的信息:voidpredict_ball_pos(void){ doubledx

=

my_head.ball.loc_now.x-my_head.ball.loc_last.x;

doubledy

=

my_head.ball.loc_now.y-my_head.ball.loc_last.y; doublera=0.45;

//速度衰减率 for(inti=1;i<Pre_View_No;i++)

//预测 {doubletry_x=my_head.ball.loc_array_pre[i-1].x+dx;doubletry_y=my_head.ball.loc_array_pre[i-1].y+dy;if(try_x<BALL_MOST_LEFT||try_x>BALL_MOST_RIGHT) dx=-dx*ra;elseif(try_y<BALL_MOST_DOWN||try_y>BALL_MOST_UP) dy=-dy*ra;elseif(try_y<try_x-29.6) {dx=-dy*ra;dy=-dx*ra;}elseif(try_y<-try_x-29.6) {dx=dy*ra;dy=dx*ra;}elseif(try_y>try_x+116) {dx=dy*ra;dy=dx*ra;}elseif(try_y>-try_x+116) {dx=-dy*ra;dy=-dx*ra;}my_head.ball.loc_array_pre[i].x=my_head.ball.loc_array_pre[i-1].x+dx;my_head.ball.loc_array_pre[i].y=my_head.ball.loc_array_pre[i-1].y+dy;}//foreveryseconds;}//endpredictball关于队员的信息:typedefstructmyRobot{ intFREE; intfore_back; Vector3Dloc_last; Vector3Dloc_now; Vector3Dloc_next; Vector3Dsudu_vector;

doublesudu_abs; doubleangle_last; doubleangle_now; doubleangle_next; doubleangle_v; doubleangle_move; Vector3Dloc_catch_ball; Vector3Dloc_shoot_to_point; doubledist_to_ball; doubledist_to_ball_next_time;

doubledist_to_my_goal; doubledist_to_shoumen_loc; doubledist_to_fangshou_loc; doubleangle_ball_to_me; doublekey_time; doublepower; doubledist_to_catch_ball; doubledist_to_catch_ball_next_time; doubleangle_catch_ball_to_me; doubleangle_ball_should; doubleQ; doublelast_add_r; doublelast_add_l; boolis_ready_outline; int

out_line_num; booloutline_is_left_or_right; doubleoutline_long; boolcould_turn;}myRobot;关于世界的信息:typedefstructmyData{ Environment*env; myBallball; myRobothis[5]; myRobotmy[5]; Vector3Dloc_shoumen; Vector3Dloc_fangshou; intp_my_qianfeng; intp_my_youyi; intp_my_zuoyi; intp_my_houwei; intp_my_shoumen; intp_his_qianfeng; intp_his_xiezu; intp_his_youyi; intp_his_zuoyi; intmy_qianfeng_state;}myData;关于自动信息获取:边界信息;球速度衰减,反弹;球员加速度(线速度\角速度);球员减速情况等.常用决策框架集中控制型分布控制型时时规划型阶段规划型常用决策框架集中控制型、时时规划型举例:获取信息;局势判断;总体任务确定;角色分配;任务分配;动作确定;输出.足球机器人系统四层决策推理模型示意图模块间的关系?模块间的关系策略:决定目标(短期、中期目标);模式:定义角色,分配角色;动作:具体的安排。==========特点===========层次不同;需要评价;相互作用;决策形成的基本模式在数据与模型中叠代:①选择目标;②搜索行动方案;③更新数据与模型直到收敛(满意)。FIRA中的例子当前状态:“我”在A点,球在B点,其速度为V。目标:尽快上前,经过1次击球,球以最大速度到C。如何行动?分析:确定击球可能发生的时间是问题的关键。搜索方法1(确定步伐):尝试:1s,2s,3s,……,之后,球员是否能够刚好到达合适的位置。改变步伐算法描述:①step初值设置,一般为1;②如果要改变方向,step=step/2;③如果不要改变方向,step=step*2;④如果满意则完成,否则,转②.子问题:当前状态:“我”在A点。目标:尽快上前到B,且到达B后运动速度向C。如何行动?时间耗费多少?=========方法1:查表。方法2:数学函数计算法。方法1:十字交叉法在A点与B点连线的中点,作垂线,与目的方向BC交与X点,则射线AX为目前小车的前进的方向;动态地跟踪点X,即可以完成任务(到达B点,方向大约为BC)。方法2:如何行动?r=abs(Q)/60+dist_to_key_point/6;Key_po

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论