仿真机器人球队程序框架分析.pptVIP

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章仿真机器人球队程序框架 基本原理介绍 4.1消息的解析和发送模块 4.2几何计算模块 4.3辅助模块 4.4WorldModel模块 4.5基本动作模块 4.6决策模块 4.7日志模块 4.8启动球员上场模块 基本原理 基本原理 基本原理 负责消息接受和动作发送的模块: Connetion、ActHandler和SenseHandler类 辅助模块: Geometry类、Parse、GenericValues、ServerSettings、SoccerTypes、PlayerSettings、Formations…….等类 世界模型模块: WorldModel类 基本动作模块:BasicPlayer类 决策模块:Player类 日志模块:Logger类 启动球员上场模块:main.C 4.1消息的解析和发送模块 Server与Client之间是通过基于UDP/IP协议进行信息(普通字符串)传输的。 Connection.h定义了——_socket和Connection类负责最底层的信息传递,它只负责字符串的传输。 SenseHandler.h定义了一个类SenseHandler,它是基于Connection基础上进行感知信息的处理的,然后把处理好的信息交给WorldModel. ActHandler.h定义了一个类ActHandler,它是基于Connection基础上进行特定动作的发送处理的,要把特定动作(包括原子动作和高级动作)处理成Server能够理解的字符序列。 4.1.1Connection.h和Connection.C Connection.h文件包含有_socket结构(被重定义成Socket类型)和Connection类;它是球员Cient与Server进行通讯的基础。 socket结构(套接字)是一个文件描述符与服务器地址的结合,包含以下成员: int socketfd //套接字文件描述符 struct sockaddr_in serv_addr //服务器套接字信息 注意:sockaddr结构在netdb.h和arpa/inet.h中说明, 因此,Connnection.h文件需要包含这两个文件。 Connection类 通过定义服务器名和端口号等属性与服务器建立Socket连接。 连接建立好以后就可以通过连接接收和发送消息;它是球员Client与Server通讯的基础。 Connection类 成员: Socket m_soc //服务器通信协议,一个Socket类型的对象成员 int m_iMaxMsgSize //最大信息长度 成员函数: Connection () //缺省构造函数,只是设置最大信息长度 Connection (const char *hostname, int port, int iSize) //构造函数。与指定服务器服务器建立连接;其中参数:hostname可以是字符串也可以是Ip地址,port表示端口号,isize表示可以接受和发送信息的最大长度 ~Connection () //析构函数。断开连接 bool connect (const char *host, int port) //注意,这不是构造函数,它主要是建立与指定服务器名和端口号的服务器建立连接;参数说明同上,函数根据连接是否成功返回1和0 void disconnect (void) //断开当前socket连接 bool isConnected (void) const //判断是否已连接。如果已经建立连接返回1,否则返回0 int message_loop (FILE *fpin, FILE *fpout) //该方法保持循环状态等待输入。如果从fpin接到输入,则将该输入通过连接发送到服务器;如果从服务器接到消息,则将该消息送到fpout。参数说明:fpin和fpout分别是文件读指针和文件写指针。当读写失败时返回0 int receiveMessage (char *msg, int maxsize) //该方法从连接读入一个消息,如果没有消息则阻塞直到接到消息。参数说明:msg表示从连接中读入信息的指针,maxsize表示最长可以读的字节数。当读入出错时返回-1,读入0个字节还在等到信息时返回0,成功读入信息返回1 bool sendMessage (const char *msg) //该方法通过连接向服务器发送消息。参数说明:msg指针指向内容就是要发送的信息。发送成功返回1 void show (ostream os) //该方法向指定的输出流打印是否处于连接状

文档评论(0)

四月 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档