《机器人足球技术培训.ppt》由会员分享,可在线阅读,更多相关《机器人足球技术培训.ppt(62页珍藏版)》请在三一办公上搜索。
1、机器人足球技术培训(基础篇),SimuroSot 5vs5(仿真),本讲主要内容,机器人足球概述仿真(5vs5)平台介绍使用VC开发简单的策略程序 第,机器人技术,机器人技术是在新技术革命中迅速发展起来的一项高新技术,是一门综合性学科,它综合了多种基础学科、技术学科及新兴科技领域的多方面知识,突出地体现了当代科学技术发展的高度分化而又高度综合这一特点,并已在众多的科学领域与工业部门中得到应用,且显示出强大的生命力。因此世界各国都非常重视机器人技术的研究。,机器人足球,机器人足球比赛淋漓尽致地表现现实世界的基本特征,即分散存在的一个群体与另一个群体在动态复杂环境中如何以实时方式进行竞争和行动决策
2、的问题在足球比赛中充满着队员之间协调与合作之美,决策与智谋之美,生命与力量之美及超级的艺术之美。,机器人足球,它以高技术对抗的形式赢得了学术界的认同,一些学术刊物刊登了机器人足球的专辑,一些有影响的国际学术会议也安排了专题讨论。一年一度的FIRA CUP也同时召开国际学术会议,推动相关科技的发展。机器人足球成为高科技与体育,学术与兴趣,科技与娱乐的完美结合,这便是它发展的活力所在。,国际机器人足球赛事,(1).国际机器人足球联合会 FIRA(Federation of Internatinal Robot Soccer Association)(2).机器人世界杯 RoboCup(The Ro
3、bot World Cup Initiative),(1).Fira简介,国际机器人足球联合会,成立于1997年6月,总部设在韩国大田的韩国科学(技术)(KAIST)。已有30余个国家的近百个学校与科研院所是其成员单位,主要分布在亚洲、澳洲、北美和南美洲等地区。Fira从1996年开始举办微型机器人的世界杯足球赛(MiroSotMicro-Robot Soccer Tournament)。由于前两届只进行了MiroSot类型的机器人足球赛,故那两届世界杯赛分别称为MiroSot96和MiroSot97。以后机器人足球比赛类型增多了,世界杯赛便称之为FIRA CUP。,FIRA CUP的主要比赛
4、项目,M i roSot:(3对3)、(5对5)、(1 1对1 1)S i muroSot:(5对5)、(1 1对1 1)RoboSot:(3对3)HuroSot:(3对3)类人型机器人基本性能比赛:(包含四种比赛 项目机器人队形比赛:(并行队形、串行队形、交义队形)多机器人追捕比赛:(4对1)人一机器人射门比赛:(儿童年龄不超过3岁)舞蹈比赛:(半自主2人组)、(半自主4人组)、(类人型组),人型机器人足球比赛,全自主机器人足球比赛,半自主机器人足球比赛(5VS5),半自主机器人足球比赛(5VS5),仿真机器人足球(5vs5),1,5,2,1,2,4,3,5,机器人足球仿真系统(11Vs11
5、),(2)RoboCup简介,机器人世界杯,成立于1996年,总部设在名古屋,是国际人工智能学会组织的国际机器人足球协会。第一届机器人足球世界杯赛于1997年8月25日在日本名古屋,与国际最高级别的人工智能学术会议-国际人工智能联合大会(IJCAI-97)同时举行。来自美、欧、日、澳的40多支球队参加了比赛,5000多名观众现场观看了比赛。1998年7月,正当第16届世界杯足球赛渐入佳境之时,第二届机器人足球世界杯赛在巴黎隆重举行,60多支球队参加了比赛。1999年7月,第三届机器人足球世界杯赛在瑞典斯德哥尔摩举行,参赛队多达90余支。一些著名的大学、研究机构和大公司均参与了相关的活动和比赛。
6、RoboCup在日本、欧洲和美国都有很大的影响,现已成为世界上有较大影响的机器人足球比赛组织。,Robocup的比赛项目,(一)RoboCup足球机器人比赛 1、仿真组(2D)2、仿真组(3D)3、小型组 4、中型组 5、标准平台组 6、类人组(二)RoboCup救援组比赛 1、仿真组 2、机器人组(三)RoboCup家庭组比赛(四)FIRA足球机器人比赛 1、仿真组(5:5)2、仿真组(11:11)3、小型组(3:3)4、小型组(5:5)5、小型组(11:11)(五)微软(MS)足球机器人仿真比赛 1、Nao类人仿真 2、3D类人仿真 3、轮式微型机器人5:5仿真 4、轮式微型机器人11:1
7、1仿真,Robocup仿真组,RoboCup小型组(5VS5),RoboCup中型组(4VS4),RoboCup四腿组(3VS3),Robocup类人组,四川大学机器人发展状况,四川大学于2003年开始机器人足球技术的培训和训练,开始时就有10多各学院的16支队伍参见了培训和比赛。我校机器人足球代表队由制造学院、生命学院、数学学院等各学院本科生、研究生组成,制造学院姚进教授为指导老师,几年来我校代表队已经参加了近10次全国性机器人足球比赛,参加2次世界杯大赛(FIRA CUP),并取得了较好的成绩。现在我们每年都要进行一次大规模的机器人足球培训,越来越多的机器人足球爱好者参与到我们的队伍中来。
8、,四川大学比赛成绩,12004年5月参加了首届西南地区机器人足球大赛,获得SimuroSot(5VS5)项目冠军,SimuroSot(11vs11)项目亚军;22004年6月参加了在武汉举行的第五届全国机器人足球锦标赛,获得SimuroSot(11vs11)(LLS)项目比赛第二名;32004年10月参加了韩国釜山举行的第九届机器人足球世界杯,获得SimuroSot(11VS11)项目第四名;42005年7月参加了全国机器人足球大赛获得SimuroSot(11vs11)季军;52005年8月参加常州全国机器人大赛获得SimuroSot(5vs5)项目比赛二等奖。62006年6月在甘肃省平凉市举
9、办的“华媒杯”第七届全国机器人足球锦标赛中,四川大学代表队获得SimuroSot(5vs5)全国季军,SimuroSot(11vs11)一等奖的好成绩,7 四川大学代表队在2006年7月举行的德国FIRA世界杯上再次获得SimuroSot(11vs11)第四名。82007年5月,四川大学再次征战在武汉举行的“思远+1杯”第八届全国机器人足球锦标赛,获得了仿真5vs5二等奖,仿真11vs11二等奖。,图片资料,微型足球机器人系统结构,平台和底层,平台:机器人足球比赛专用软件底层:体现人策略思想的C语言代码,平台,动态连接库(dll),底层程序,返回球场信息,给机器人指定驱动力,仿真系统与实体系统
10、的比较,平台相当于足球机器人系统中的机器人实体、比赛场地、CCD摄像头DLL相当于实体系统中的计算机主机,相当于机器人的大脑,它获取场上信息,然后将处理结果发送给平台 平台和DLL每个周期互相交换数据,保证了比赛的实时性理论上每个周期时长为1/60S,在一个周期,DLL接受平台传递过来的信息,然后行处理,最后将处理的结果发送给平台,仿真5VS5平台,平台的功能,1.接收DLL传递过来 的机器人驱动力。2.根据运动学模型计算机各个机器 人的速度位置等参数3.传递机器人的位置,朝向等参数给DLL4.显示模块负责显示机器人运动过程,动态链接库(策略程序)的功能,1.接收平台发送过来的球、我方与对方机
11、器人的速度、位置等参数;2.根据敌我双方的位置和已有的策略库进行分析与决策;3.计算机出我方每个机器人的左右轮驱动力,以此完成基本的动作;4.将计算出的机器人左右轮驱动力传递给平台。,动态链接库(策略程序)的功能,如何让机器人动起来,(1)生成DLL文件步骤一:用C打开Strategy.dsw步骤二:找到NormalGame函数,修改其中部分内容(刚接触可以不用去理会)步骤三:编译代码(Ctrl+F7)步骤四:生成DLL文件,注意仅仅编译程序就可以了,不要去运行,我们的大多数代码将会在normalgame中写,第一次接触时可以不去理会这一步,我们已经在里面写了部分动作,如何让机器人动起来,(2
12、)复制策略(strategy.dll)步骤一:在上一步编译结束后会在底层程序文件夹中的debug或者release文件夹下面有strategy.dll文件 步骤二:将上一步产生的strategy.dll复制到C盘下的Strategy文件夹下面的yellow或者blue文件夹下。,复制过去以后可以修改文件名(方便下一步装载策略时输入方便,比如在这里我们改成1.dll),但是后缀名(dll)不能变。,至于是复制到yellow,还是blue就要看你测试时用哪一方了,刚开始的时候我们可以给两个文件夹里都复制进去,在安装平台的时候默认的会在C盘下新建strategy文件下,几起里面的子文件夹yellow
13、和blue,如何让机器人动起来,(3)将dll文件载入到平台中 步骤一:打开平台,单击右上角的STRATEGIS选项,出现如右图所示的效果 步骤二:单击blue和yellow后面的Lingo将其改成c+;在blue或者yellow下面输入我们放到相应文件夹下面文件的文件名 步骤三:点击下面的Send,然后点击START,这样机器人就可以 按照我们的策略运动了,假如我们在c:strategyyellow中放了一个1.dll,那现在就可以在yellow下面输入1(不需要加后缀名),如何生成DLL,编译文件1.组建组建2.Ctrl+F7,release文件夹下或者debug文件夹下的strategy
14、.dll就是我们生成的策略文件,(2)实现简单踢球动作,Kick(Environment*env,int robot,Vector3D ToPos)让robot把球踢到ToPos的位置例:(将这段代码插入到NormalGame函数中,如下图)Vector3D go;go.x=93;go.y=43;Kick(env,1,go);然后按照前面的步骤编译,复制,装载,运行DLL即可以看到效果,实现简单踢球动作,Vector3D go;定义一个Vector3D类型的变量,Vector3D是底层程序中定义的一个结构体,typedef struct double x,y,z;Vector3D;,这个结构体
15、表示三维坐标上的一个点;go.x=93;go.y=43;给go这个点赋值,相当于确定三维坐标上GO这个点的坐标Kick(env,1,go);调用Kick函数让1号机器人将球踢到go这个点,env是环境变量用于保存场上信息。,从协会网站上可以下载,机器人编号,0,1,3,2,4,蓝方和黄方以球场中心点对称,0,1,2,3,4,机器人跑位,PositionAndStop(Environment*env,int robot,Vector3D pos,double bestangle,double limit)让robot 跑到pos,并且停下来,bestangle 是停下来之后的朝向,limit控制
16、停在pos附近的距离例:(同样在NormalGame函数中插入以下代码)Vector3D go;go.x=40;go.y=20;PositionAndStop(env,2,go);,机器人角度,0,90,-90,180,-180,机器人模型是边长约等于3的小车,以不同的颜色区分。,机器人的角度初始状态下除了0号机器人角度为90度之外,其余机器人角度均为0度,,常用底层函数,void PositionAndStopX(Environment*env,int robot,Vector3D pos,double Xangle,double limit)/PositionAndStopX 让robot
17、 跑到pos,并且停下来原地旋转,Xangle旋转的角速度,limit控制停在pos附近的距离,常用底层函数,void PositionAndStop(Environment*env,int robot,Vector3D pos,double bestangle,double limit)/PositionAndStop 让robot 跑到pos,并且停下来,bestangle 是停下来之后的朝向,limit控制停在pos附近的距离,常用底层函数,void PositionAndThrough(Environment*env,int robot,Vector3D pos,double MAX)
18、/PositionAndThrough 让robot以最快MAX 冲向pos,中间没有减速控制 void PAngle(Environment*env,int robot,double angle,double speed)/PAngle 让robot朝angle的方向跑,并且speed控制它的最大轮速,常用底层函数,void Angle(Environment*env,int robot,double angle)/Angle 让robot转到angle的方向void Angle(Environment*env,int robot,Vector3D pos)/Angle 让robot转到正对
19、pos的方向,常用底层函数,void Kick(Environment*env,int robot,Vector3D ToPos)/Kick让robot把球踢到ToPos的位置void PredictBall(Environment*env,int steps)/预测steps周期后球的位置,结果保存在p-preball中,常用底层函数,int Count(Environment*env,int robot,Vector3D pos)/计算robot跑到pos点所需要的周期Vector3D Meetball_p(Environment*env,int robot)/求出robot追到球的最佳位
20、置,常用底层函数,void Goalie(Environment*env,int robot)/守门员函数,robot指定我方守门员的编号,平台刚打开的时候默认守门员为0号,机器人,所在建议大家还是让0号机器人做守门员吧。,底层中定义的一些常量,const long PLAYERS_PER_SIDE=5;/表示每一方机器人个数const double FTOP=77.2392;const double FBOT=6.3730;const double FRIGHT=93.4259;const double FLEFT=6.8118;/FTOP,FBOT,FLEFT,FRIGHT分别表示球场上、
21、下、左、右四个边界线,底层中定义的一些常量,const double PENALTYRIGHT=78.329132;/点球点的X坐标const double PENALTYLEFT=22.216028;/点球点的Y坐标const long CAR=3;/小车边长 2.95,常用变量及结构体,typedef structdouble x,y,z;Vector3D;/Vector3D 可以用来定义球场的一个点。其中Z坐标在定义点时无实际意义。例如:Vector3D pos1=10,20,0;或者Vector3D pos2;pos2.x=10;pos2.y=20;,常用变量及结构体,typedef
22、structVector3D pos;Ball;/Ball结构体用来表示球的位置,常用变量及结构体,typedef structVector3D pos;/机器人所在的位置double rotation;/机器人朝向double velocityLeft,velocityRight;/机器人左右轮轮速(驱动力)Robot;例如在NormalGame函数中,p-robot1.pos就表示我方1号机器人当前的坐标(注意:Robot结构体是用来表示我方机器人的),常用变量及结构体,typedef structVector3D pos;/机器人的位置double rotation;/机器人的朝向 Op
23、ponentRobot;例如在NormalGame函数中,p-opp1.pos就表示对方1号机器人当前的坐标(注意:OpponentRobot结构体是用来表示对方机器人的),常用变量及结构体,typedef structVector3D myoldposPLAYERS_PER_SIDE;/记录 我方 队员的旧坐标,方向Vector3D myspeedPLAYERS_PER_SIDE;/纪录 我方 队员的速度,跑位的方向Vector3D myoldvelocityPLAYERS_PER_SIDE;/纪录 我方 队员上次驱动力Vector3D opoldposPLAYERS_PER_SIDE;/记
24、录 对方 队员的旧坐标,方向Vector3D opspeedPLAYERS_PER_SIDE;/纪录 对方 队员的速度,跑位的方向Robot robotPLAYERS_PER_SIDE;/我方 球员OpponentRobot oppPLAYERS_PER_SIDE;/对方 球员Vector3D oldball;/纪录球 过去 的坐标Vector3D curball;/纪录球 现在 的坐标Vector3D preball;/纪录球 预测 的坐标Vector3D ballspeed;/纪录球 预测 的坐标 Mydata;,常用变量及结构体,Robot robotPLAYERS_PER_SIDE;/
25、我方 球员,注意这是个结构体数组,数组中元素的个数为PLAYERS_PER_SIDE(前面介绍过的一个常量其值为5),每个元素表示一个机器人,比如要在NormalGame函数中使用3号机器人当前的坐标:p-robot3.posOpponentRobot oppPLAYERS_PER_SIDE;/对方 球员,常用变量及结构体,Vector3D oldball;/纪录球 过去 的坐标,这里说的过去是指上一周期Vector3D curball;/纪录球 现在 的坐标Vector3D preball;/纪录球 预测 的坐标其中Vector3D curball是写程序过程中用的最多的一个变量,例如在NormalGame函数中P-curball.x;P-curball.y;分别表示当前球的X和Y坐标,一个简单组合动作,当球在后场时,1号机器人把球往前踢,当球在前场时,1号机器人沿着某一条直线上下来回运动,两个机器人配合,如果球在上边。1号机器人把球传给2号机器人,如果球在下边。2号机器人把球传给1号机器人,谢谢,