机器人足球学习心得
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机器人足球
学习心得
hefei_torch 2005.11.25
小组成员
符致慧 旦增曲宗 胡永杰 朱华强 石轲
设计思路
1 考虑球员分工 按照实际足球队员的分工,把AGENTS分 按照实际足球队员的分工,把AGENTS分 成前锋中场后卫三种类型分别设计其法。 2 考虑区域 判断球所在的位置,采用不同的算法 3 技术细节 传球,带球,射门,守门等。 4 等等
ቤተ መጻሕፍቲ ባይዱ
2 考虑区域
1) 若球在对方禁区内,射门 2) 若球在己方禁区内,解围 3) 若球在其余区域 , 配合 技术细节 见下
3 具体技术分析
1 ) 射门
if((WM->getAgentGlobalPosition().getX()>35&&fabs(WMif((WM->getAgentGlobalPosition().getX()>35&&fabs(WM>getAgentGlobalPosition().getY())<15)||WM>getAgentGlobalPosition().getY())<15)||WM->getdistancetogoalie()<10) { VecPosition posGoalie=WM>getGlobalPosition(WM>getOppGoalieType()); VecPosition posGoal1(PITCH_LENGTH/2.0,0.4*SS->getGoalWidth()); posGoal1(PITCH_LENGTH/2.0,0.4*SSVecPosition posGoal2(PITCH_LENGTH/2.0,-0.4*SS->getGoalWidth()); posGoal2(PITCH_LENGTH/2.0,-0.4*SSVecPosition agentposition=WM->getBallPos(); agentposition=WMif (WM->isGoalieabovebyline(agentposition, posGoalie)) (WM//if(WM//if(WM->isGoalieabove(posGoalie)) soc=kickTo(posGoal2,SSsoc=kickTo(posGoal2,SS->getBallSpeedMax()) else soc=kickTo(posGoal1,SSsoc=kickTo(posGoal1,SS->getBallSpeedMax()); }
1.4 deMeer5_goalie
if( WM->isBeforeKickOff( ) ) WMif( WM->getConfidence( OBJECT_BALL ) < PSWMPS>getBallConfThr() ) else if( WM->getPlayMode() == PM_PLAY_ON || WMWMWM>isFreeKickThem() ||WM->isCornerKickThem() ) ||WMelse if( WM->isFreeKickUs() == true || WMWMWM>isGoalKickUs() == true ) else soc = turnBodyToObject( OBJECT_BALL )
1.2 deMeer5_midfielder()
设计思路: 三个中场得球后,分析前场三前锋是否有 空档, 若有 则传球; 否则 继续在中场配合,等待进攻时机 的到 来。
1.3 deMeer5_attacker()
设计思路: 两边锋10 11号得球后首先考虑下底, 两边锋10 ,11号得球后首先考虑下底, 在不同的区域会选择传中获射门; 前锋9 前锋9号得球后首先考虑从中路突破,如果 时机不佳,则选择分边,在一定区域,考虑 射门。
1 球员分工 算法调用
/*! This is the main decision loop for a defender. */ void Player::defenderMainLoop( ) { deMeer5_defender() ; } /*! This is the main decision loop for a midfielder. */ void Player::midfielderMainLoop( ) { deMeer5_midfielder() ; } /*! This is the main decision loop for an agent. */ void Player::attackerMainLoop( ) { deMeer5_attacker(); }
具体技术分析
2) 带球 double ang; if(fabs(WMif(fabs(WM->getAgentGlobalPosition().getY())>25) ang=ang=-15; else ang=0; if(WM->isOpponentAtAngleEx(angif(WM->isOpponentAtAngleEx(ang-45,ang,6)) ang+=45; else if(WM->isOpponentAtAngleEx(ang,ang+45,6)) if(WMang-=45; angsoc=dribble(ang,DRIBBLE_SLOW);
1.1 deMeer5_defender()
设计思路: 若球在禁区附内,四个后卫如果能够触到 球就大脚解围。代码如下:
if(WMif(WM->isBallInOwnPenaltyArea()) soc=clearBall(CLEAR_BALL_OFFENSIVE_SIDE);
否则考虑向中场前场传球。
技术的具体分析
3 )传球(太复杂 见源代码) 源代码)
不足之处
1 2 3 4 没有考虑体力模型 关键时刻跑不动; 传球失误太多; 完全手工编码,没用机器学习; 要学习的东西还后很多,需要不断的努 力!!!
希望能和更多的同学或 球队交流!
^_^ 谢谢大家 ^_^ ——the end—— ——the end——
学习心得
hefei_torch 2005.11.25
小组成员
符致慧 旦增曲宗 胡永杰 朱华强 石轲
设计思路
1 考虑球员分工 按照实际足球队员的分工,把AGENTS分 按照实际足球队员的分工,把AGENTS分 成前锋中场后卫三种类型分别设计其法。 2 考虑区域 判断球所在的位置,采用不同的算法 3 技术细节 传球,带球,射门,守门等。 4 等等
ቤተ መጻሕፍቲ ባይዱ
2 考虑区域
1) 若球在对方禁区内,射门 2) 若球在己方禁区内,解围 3) 若球在其余区域 , 配合 技术细节 见下
3 具体技术分析
1 ) 射门
if((WM->getAgentGlobalPosition().getX()>35&&fabs(WMif((WM->getAgentGlobalPosition().getX()>35&&fabs(WM>getAgentGlobalPosition().getY())<15)||WM>getAgentGlobalPosition().getY())<15)||WM->getdistancetogoalie()<10) { VecPosition posGoalie=WM>getGlobalPosition(WM>getOppGoalieType()); VecPosition posGoal1(PITCH_LENGTH/2.0,0.4*SS->getGoalWidth()); posGoal1(PITCH_LENGTH/2.0,0.4*SSVecPosition posGoal2(PITCH_LENGTH/2.0,-0.4*SS->getGoalWidth()); posGoal2(PITCH_LENGTH/2.0,-0.4*SSVecPosition agentposition=WM->getBallPos(); agentposition=WMif (WM->isGoalieabovebyline(agentposition, posGoalie)) (WM//if(WM//if(WM->isGoalieabove(posGoalie)) soc=kickTo(posGoal2,SSsoc=kickTo(posGoal2,SS->getBallSpeedMax()) else soc=kickTo(posGoal1,SSsoc=kickTo(posGoal1,SS->getBallSpeedMax()); }
1.4 deMeer5_goalie
if( WM->isBeforeKickOff( ) ) WMif( WM->getConfidence( OBJECT_BALL ) < PSWMPS>getBallConfThr() ) else if( WM->getPlayMode() == PM_PLAY_ON || WMWMWM>isFreeKickThem() ||WM->isCornerKickThem() ) ||WMelse if( WM->isFreeKickUs() == true || WMWMWM>isGoalKickUs() == true ) else soc = turnBodyToObject( OBJECT_BALL )
1.2 deMeer5_midfielder()
设计思路: 三个中场得球后,分析前场三前锋是否有 空档, 若有 则传球; 否则 继续在中场配合,等待进攻时机 的到 来。
1.3 deMeer5_attacker()
设计思路: 两边锋10 11号得球后首先考虑下底, 两边锋10 ,11号得球后首先考虑下底, 在不同的区域会选择传中获射门; 前锋9 前锋9号得球后首先考虑从中路突破,如果 时机不佳,则选择分边,在一定区域,考虑 射门。
1 球员分工 算法调用
/*! This is the main decision loop for a defender. */ void Player::defenderMainLoop( ) { deMeer5_defender() ; } /*! This is the main decision loop for a midfielder. */ void Player::midfielderMainLoop( ) { deMeer5_midfielder() ; } /*! This is the main decision loop for an agent. */ void Player::attackerMainLoop( ) { deMeer5_attacker(); }
具体技术分析
2) 带球 double ang; if(fabs(WMif(fabs(WM->getAgentGlobalPosition().getY())>25) ang=ang=-15; else ang=0; if(WM->isOpponentAtAngleEx(angif(WM->isOpponentAtAngleEx(ang-45,ang,6)) ang+=45; else if(WM->isOpponentAtAngleEx(ang,ang+45,6)) if(WMang-=45; angsoc=dribble(ang,DRIBBLE_SLOW);
1.1 deMeer5_defender()
设计思路: 若球在禁区附内,四个后卫如果能够触到 球就大脚解围。代码如下:
if(WMif(WM->isBallInOwnPenaltyArea()) soc=clearBall(CLEAR_BALL_OFFENSIVE_SIDE);
否则考虑向中场前场传球。
技术的具体分析
3 )传球(太复杂 见源代码) 源代码)
不足之处
1 2 3 4 没有考虑体力模型 关键时刻跑不动; 传球失误太多; 完全手工编码,没用机器学习; 要学习的东西还后很多,需要不断的努 力!!!
希望能和更多的同学或 球队交流!
^_^ 谢谢大家 ^_^ ——the end—— ——the end——