实验六 数据采集及个体技术训练

1、实验目的

掌握 RoboCup仿真2D 中训练或比赛数据的采集的基本方法,以及实现球员智能体 的传球、射门、截球等个体技术的。
(1)Trainer基本使用方法;

2、实验设备

硬件环境:PC 机
软件环境:操作系统 Linux

3、实验内容

(1)Trainer的功能简介

Trainer通过与server的功能消息传递来实现其功能,其功能主要有以下几点:

  • 可以控制比赛模式;
  • 可以向球员广播自定义格式和内容的消息;
  • 可以把球员和足球放置到任意的球场位置,并且可以设置它们的方向和速度;
  • 可得到无噪音的移动对象信息;
  • 更换异构球员。

agent2d中的trainer是在sample_trainer.cpp中。主要的函数与player一致,为actionImpl,其sampleAction中有部分实例。我们根据实际需要编写相应的训练程序进行相关技术的训练。

(2)Trainer中的功能函数

很多函数都在TrainerAgent类中。对应cpp为trainer_agent.cpp Trainer的功能函数是对功能消息发送的封装,主要有以下几种:

doChangeMode(PlayMode mode)//设置比赛模式 
doMoveBall( const Vector2D & pos,
            const Vector2D & vel ) //移动足球按指定的坐标和速度 
doMovePlayer( const std::string & teamname,
                            const int unum,
                            const Vector2D & pos,
                            const AngleDeg & angle )//移动球员按指定的坐标、朝向和速度 (速度它没写,可以自己加上。
doRecover()//恢复球员的身体状态 
doChangePlayerType( const std::string & teamname,
                             const int unum,
                             const int type );//更换异构球员,teamname为队名,unum为被更换的球员号码,type为更换的异构球员类型

(3)Trainer的使用方法
① 修改Server的配置文件; 在用户目录下键入gedit .rcssserver/server.conf; 将half_time:300改为half_time:具体的数据,这样半场的时间不再是300周期,而 是根据训练模块具体要求设置时间; 将#coach_w_referee改为coach_w_referee,开启训练器端口。
② 为了看到效果,将src/sample_trainer.cpp # actionImpl函数的sampleAction() 取消注释。并且重新编译源码。
③ 启动server和 monitor。
④ 根据训练模块的具体要求上相应数目的球员,例如截球模块就需要上两个球员。(可以忽略,上所有队员)
⑤ 键入./src/start.sh 启动球队,新开终端键入./src/sample_trainer 启动在线教练。开球就可以开始训练。 当然,为了避免每次训练都重复调用上述命令,我们也可以编写训练脚本来简化工作。可以将start.sh进行修改。加上sample_trainer的启动命令。
在其末尾添加: 就可以启动trainer。

trainer="${DIR}/sample_trainer"
trainer -h $host -t $teamname -p `expr ${port} + 1` &
  • 实验内容
    实验中的trainer并没有更改球员速度的函数。仿照doMovePlayer增加关于球员速度的函数。并且实验验证。
Copyright@Njupt-Apollo-2d-2021 all right reserved,powered by Gitbook该文件最新修订时间: 2022-02-26 09:05:41

results matching ""

    No results matching ""