论文部分内容阅读
摘要:仿真系统所要做的是在计算机系统上给用户提供一个类似于真实世界的虚拟环境。仿真机器人足球比赛程序:根据赛方给定的仿真平台和底层,研究了底层函数以及机器人足球比赛参数传递机制后,选手需要在底层中的StrategySystem.cpp中编写自己的策略部分,然后双方球队把策略加载到平台上进行比赛,按照既定的规则决出正负。
关键词:机器人足球比赛仿真平台(11vs11)使用;仿真机器人足球比赛(11vs11)底层优化方法
中图分类号:TP242 文献标识码:A 文章编号:1007-9599 (2012) 11-0000-02
仿真机器人足球比赛(SimuroSot)
仿真机器人足球比赛,就是在计算机系统上给用户提供一个类似于真实世界的虚拟环境,我们可以在平台上通过运行编写好的底层程序来实现机器人足球的比赛。
一、机器人足球仿真平台
机器人足球仿真平台相当于现实中的球场场地,主要提供机器人比赛的场地。
(一)平台三大部分
1.CStrategySystem();
//系统层----用编写基本动作函数和处理数据的辅助函数
2.void ReceiveData(ReceiveRobot *r,double GameTime,int GameMode);
//数据层-----用以获取平台返还数据
3.void Action();
//执行层----实现机器人的具体动作
(二)台常用变量定义
FPoint KickTag;
//踢球目标,KickTag含(x,y,angle)三个参数
CPoint KickTag;
//踢球目标,KickTag含(x,y)两个参数
Robot robot[23];
//22号为足球,0——10为我方球员,11——21为对方球员。
Robot *Home[11],*Ball;
//我方队员和足球。由于以上两个变量是结构指针,调用时应该用以下形式
例如: Home[0]->Position.xBall->Position.x
Robot *OGK,*OMK;//对方守门员、主要踢球者
int WhichK; //踢球者
double LenH,LenO;
//足球距自己大门,对方大门的距离
二、仿真机器人足球比赛底层优化
(一)底层的主要结构
主函数:Action()——决策函数,在此进行策略编写构造函数:CStrategySystem()——对成员变量初始值的设定初始计算:CalcSpeed()——对平台数据的计算以及状态判断
数据恢复:DataReset()
——数据的重置
(二)基本函数功能分析
void CalcSpeed(); //计算速度、角度
void PositionAcc(int which, FPoint point, bool NeedSlow=false); //精确跑位
void Position(int which, FPoint point);
//一般跑位
void Position Slow(int which,FPoint point);//慢速跑位
解析:通常用一般跑位函数进行机器的跑位,效果较好。11vs11机器人在比赛时速度都较快,移动速度很快,不适宜用精确跑位和慢速跑位。
void PositionGoal(FPoint point); //守门员跑位
解析:一般不用守门员跑位函数,底层自带的守门员函数已经比较强大了,守门员的主要任务就是防守,所以通常比赛不用守门员函数。
double PositionDirCircle(int which, FPoint tag, double r=CircleR, int lr=0); //切線圆跑位
解析:切线圆跑位函数是个很优质的跑位的函数,它能保证机器人沿切线取很短的距离和很大速度跑出去。这个函数在比赛进攻和防守中都常用到。
void PositionDirMiddle(int which, FPoint tag); //中位线跑位
解析:中位线跑位就是沿着cy()
void Velocity(int which, int vL, int vR); //设置机器人左右轮速
Kick(); //踢球
解析:(缺点)踢球方向不准,未对球运动方向预测,机器人存在卡死现象。
方法调用条件不满足:无防碰撞机制。
三、仿真机器人足球比赛策略
(一)编写策略建议
1.分区不要太细
2.相邻分区阵型要相容
3.不要随意更换机器人角色
4.注意函数使用条件
5.严格控制犯规
(二)比赛策略
1.关于策略的提前说明
(1)编写策略时,都是假定我方是左边。
(2)场地的坐标原点是在对方场地的右上角(不是右方场地边缘)。
(3)右上方的坐标是(65,95),场地边界在我方的左下角坐标为(965,723)。
(4)cx:是center x的缩写。Cy:是center y的缩写,场地中心点的坐标(cx,cy)。
2.具体策略展示
在主函数Action(),CStrategySystem.cpp中编写代码。
思路梗概:
根据分区采取相应的动作。
判断Ball->Position.x与FI.cx的关系,来确定球是在我方场地还是对方场地。
1.进攻(Ball->Position.x (1)对方小禁区上(下)方,采取一组进攻配合动作,只能有一人进入小禁区,注意防止犯规。
(2)对方大禁区上(下)方,采取一组进攻配合动作,只能允许三人进入大禁区,注意防止犯规。
(3)禁区外面(200Position.x <400),采取强势进攻,一些配合跑位。
(4)禁区外面(Ball->Position.x>400),采取强势进攻以及适当的防守。
2.防守:
(1)整个防守过程6,9,一只在球门外防守,避免球靠近。
(2)我方小禁区,避免犯规,一个机器人主踢,其他跑位,负责往外传。
(3)我方大禁区,避免犯规,三个机器人主踢,其他跑位,负责往外传。
(4)当 Ball->Position.x<650,第一防区,六个主踢,6,7,8,9防守,进攻和防守兼顾。
(5)Ball->Position.x>650&&Ball->Position.x<850,第二防区,四个主踢,其余跑位配合,动作以防守为主,进攻为辅。
关键词:机器人足球比赛仿真平台(11vs11)使用;仿真机器人足球比赛(11vs11)底层优化方法
中图分类号:TP242 文献标识码:A 文章编号:1007-9599 (2012) 11-0000-02
仿真机器人足球比赛(SimuroSot)
仿真机器人足球比赛,就是在计算机系统上给用户提供一个类似于真实世界的虚拟环境,我们可以在平台上通过运行编写好的底层程序来实现机器人足球的比赛。
一、机器人足球仿真平台
机器人足球仿真平台相当于现实中的球场场地,主要提供机器人比赛的场地。
(一)平台三大部分
1.CStrategySystem();
//系统层----用编写基本动作函数和处理数据的辅助函数
2.void ReceiveData(ReceiveRobot *r,double GameTime,int GameMode);
//数据层-----用以获取平台返还数据
3.void Action();
//执行层----实现机器人的具体动作
(二)台常用变量定义
FPoint KickTag;
//踢球目标,KickTag含(x,y,angle)三个参数
CPoint KickTag;
//踢球目标,KickTag含(x,y)两个参数
Robot robot[23];
//22号为足球,0——10为我方球员,11——21为对方球员。
Robot *Home[11],*Ball;
//我方队员和足球。由于以上两个变量是结构指针,调用时应该用以下形式
例如: Home[0]->Position.xBall->Position.x
Robot *OGK,*OMK;//对方守门员、主要踢球者
int WhichK; //踢球者
double LenH,LenO;
//足球距自己大门,对方大门的距离
二、仿真机器人足球比赛底层优化
(一)底层的主要结构
主函数:Action()——决策函数,在此进行策略编写构造函数:CStrategySystem()——对成员变量初始值的设定初始计算:CalcSpeed()——对平台数据的计算以及状态判断
数据恢复:DataReset()
——数据的重置
(二)基本函数功能分析
void CalcSpeed(); //计算速度、角度
void PositionAcc(int which, FPoint point, bool NeedSlow=false); //精确跑位
void Position(int which, FPoint point);
//一般跑位
void Position Slow(int which,FPoint point);//慢速跑位
解析:通常用一般跑位函数进行机器的跑位,效果较好。11vs11机器人在比赛时速度都较快,移动速度很快,不适宜用精确跑位和慢速跑位。
void PositionGoal(FPoint point); //守门员跑位
解析:一般不用守门员跑位函数,底层自带的守门员函数已经比较强大了,守门员的主要任务就是防守,所以通常比赛不用守门员函数。
double PositionDirCircle(int which, FPoint tag, double r=CircleR, int lr=0); //切線圆跑位
解析:切线圆跑位函数是个很优质的跑位的函数,它能保证机器人沿切线取很短的距离和很大速度跑出去。这个函数在比赛进攻和防守中都常用到。
void PositionDirMiddle(int which, FPoint tag); //中位线跑位
解析:中位线跑位就是沿着cy()
void Velocity(int which, int vL, int vR); //设置机器人左右轮速
Kick(); //踢球
解析:(缺点)踢球方向不准,未对球运动方向预测,机器人存在卡死现象。
方法调用条件不满足:无防碰撞机制。
三、仿真机器人足球比赛策略
(一)编写策略建议
1.分区不要太细
2.相邻分区阵型要相容
3.不要随意更换机器人角色
4.注意函数使用条件
5.严格控制犯规
(二)比赛策略
1.关于策略的提前说明
(1)编写策略时,都是假定我方是左边。
(2)场地的坐标原点是在对方场地的右上角(不是右方场地边缘)。
(3)右上方的坐标是(65,95),场地边界在我方的左下角坐标为(965,723)。
(4)cx:是center x的缩写。Cy:是center y的缩写,场地中心点的坐标(cx,cy)。
2.具体策略展示
在主函数Action(),CStrategySystem.cpp中编写代码。
思路梗概:
根据分区采取相应的动作。
判断Ball->Position.x与FI.cx的关系,来确定球是在我方场地还是对方场地。
1.进攻(Ball->Position.x
(2)对方大禁区上(下)方,采取一组进攻配合动作,只能允许三人进入大禁区,注意防止犯规。
(3)禁区外面(200
(4)禁区外面(Ball->Position.x>400),采取强势进攻以及适当的防守。
2.防守:
(1)整个防守过程6,9,一只在球门外防守,避免球靠近。
(2)我方小禁区,避免犯规,一个机器人主踢,其他跑位,负责往外传。
(3)我方大禁区,避免犯规,三个机器人主踢,其他跑位,负责往外传。
(4)当 Ball->Position.x<650,第一防区,六个主踢,6,7,8,9防守,进攻和防守兼顾。
(5)Ball->Position.x>650&&Ball->Position.x<850,第二防区,四个主踢,其余跑位配合,动作以防守为主,进攻为辅。