第一阶段小结
(2005.1.8~2005.2.18)
利用寒假这一段时间,我阅读了一些关于Robocup3D比赛的一些资料,并翻译了3篇文章:〈〈2005 Osaka Robocup 3D仿真比赛规则〉〉、〈〈FC PORTUGAL 3D 仿真足球队:体系机构,底层技术和根据新的RoboCup3D仿真器优化的队伍策略〉〉、〈〈Agent库(SPADES v0.7的一部分)用户指导和参考手册〉〉。对Robocup3D有了进一步的了解,归结起来主要是以下几个方面:
agent的生存周期:
——启动阶段:
发送Create——>接收到done("D")——>执行初始化程序——>发送 initdone("I")
(初始化阶段要发送Init动作)
——运行阶段:
接收感觉信息——>思考——>发送动作信息;
循环;
——退出阶段:
接收到退出信息——>退出
或
发送退出信息——>退出
关于server规则:
现在的server版本还很低,agent接收的感觉信息还很少,视觉是360度,能做的动作也很少——只有drive和kick,而且还有很多方面的限制。
关于server接口:
由于3Dserver是基于SPADES的,所以实际上agent是和SPADES直接通讯,SPADES通讯有自己的格式,所以我们就要使用Agent库来方便地实现与server的通讯。Agent库提供了一些已经有的函数,就相当于UvA_2D中的Connection,但Agent库还包含了Log输出等功能。
关于赛制规则:
虽然是仿真比赛,但真正比赛的时候人的干预还是很多。主要是比赛规则和进程有了详细的了解。
关于agent实现:
与2D类似,是感觉—思考—动作的一个循环,但由于动作不需要同步,这又与2D有所区别。Agent的结构仍然是分模块的结构,这与2D也类似。FC PORTUGAL 3D就移植了他们2D中的SBPS技术。所以2D中有很多东西是可以借鉴的,特别是一些方法和经验。
我们的主要任务:
——熟悉SPADES使用方法,尤其是Agent库的使用方法。
——分析例子agent,希望尽快实现agent与server通讯。
——建立SenseHandler和ActHandler,即将分析接受的信息和生成要发送的信息
——需要建立agent完整的世界模型
——设计底层动作
——中高层动作
由于光盘的原因,我手头的资料不全,还有就是现在与server相关的文档本来就少,我在阅读中还有一些不明白的地方:
——我对动作不需要同步的机制有了初步了解,但是发送动作的限制还是不明白。
——360的视觉有没有什么限制的地方,如太远就看不清
——不明白Agent库中的有些函数的作用
——动作参数的单位不明白:力的单位是什么?100牛?
——物体相互碰撞的作用力怎么计算
——还有许多细节的地方需要在实际操作的时候才能发现
……
PS:
由于刻的CD读不出来,假期里就只能看打印出的材料了。所以翻译的文章还缺少插图和参考文献。