下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于sm32的p2p通信的研究与实现
0lego的单机器人仿真模型legogrouplego组件(以下简称lego组件)是一种广泛用于青少年创新能力培训的智能“电子积木”组件。该组件实际上是一个自定义的嵌入应用程序。中央控制器nxt是一个独立的应用程序模块(系统通讯设备,套),此外还有各种传感器模块、时间统计模块和机械传动模块。面向LEGO套件的软件开发工具也越来越多,目前流行的有基于C、C++、JAVA、C#、G(Labview)等软件开发环境和平台,从原理上讲,除了资源有限和积木式肢体脆弱,LEGO机器人与科学机器人具有相似的研究过程,能够完成类似的任务,例如LEGO行走机器人、棋类机器人、舞蹈机器人等。与目前流行的LEGO单机器人相比,多机器人系统由于涉及到机器人间协同,需要对人类行为的理解和仿真、乃至简单的分布式和并行计算方面的知识和实践,而且在构建具体系统和编写控制软件过程中,大量的归纳/演绎等思维方法被反复应用,因此,多机器人系统更加适合青少年创新能力的培养。然而多机器人系统的建立要比单机器人系统复杂得多,即便是作为系统基础的多机器人间组网通信就不是一个简单问题,尤其是对LEGO套件而言,其控制核心部件NXT的资源十分有限,虽然LeJOSNXJ提供了蓝牙通信机制,但由于复杂多机器人将使用很多NXT,所以常用的蓝牙Scatternet技术难以在LEGO复杂多机器人系统中实现对等(Peer-to-Peer,P2P)通信,另外,晦涩难懂的组网通信底层细节也让人望而却步。本文针对LEGONXT特点,基于LEGO套件的蓝牙通信技术,采用对资源需求比Scatternet小得多的Piconet,通过Piconet主设备上的数据转发,实现了多NXT组网和P2P通信,该组网通信机制命名为基于Piconet的P2P通信(PiconetBasedPeer-to-Peer,PBP2P)。1pc上的养分通信对于2节点蓝牙通信而言,通信链路建立之初,两个节点分别被定义为具有initiator(初始化模块)的主设备和具有receiver(接收模块)的从设备,从设备的recerver提出通信请求,而主设备的initiator则用来建立通信连接通道。多节点蓝牙通信组网方式有两种:其一为Piconet网络,该方式简单,对资源需求低,网络设备分为1个主设备和多个从设备,主从设备间可直接双向通信,从设备间不能直接通信;其二是Scatternet网络,该网络将Piconet从设备同时作为其他Piconet主设备,因此可为每个设备都建立一个以其为主设备的Piconet形成Scatternet网,该网络功能强大,可实现节点间P2P通信,但需要较多资源。显然,如果以n个LEGONXT建立Scatternet,则每个NXT至少要含有n-1个与其他NXT的receiver对应的initiator,即需要在NXT上建立众多独立运行的线程,而NXT的资源十分有限,难以负担。考虑到NXT资源有限、多机器人系统规模可伸缩性、以及系统运行监控的需求,本文以带有蓝牙模块的PC为中控机(以下简称PC),建立以PC为主设备,所有NXT为从设备的Piconet。尽管NXT只能与主设备PC通信,NXT之间不能直接通信,但通过在PC上提供通信服务模块CCommServer用于转发来自NXT的通信数据到其目标NXT,通过封装底层通信细节,在较高的软件层次上实现了多机器人间的P2P通信。其具体通信机制和过程如图1的UML活动图所示。由图1可知,具体通信功能由CCommServer、相关机器人的CCommunicator、CMsgProxy对象协作而共同完成。机器人调用函数CCommunicator:SendMsgToAnotherRobot(StringsRobotName,intnMsgID,intnParam,StringsTxt)向名字为sRobotName的机器人发送消息,消息类型为nMessageID,两个消息参数分别为nParam和sText。该函数根据sRobotName查找通信录得到目标NXT端口地址,然后将整条消息放置到NXT的待发队列CMsgProxy:m_qMsgToSend尾部。CCommServer为独立线程,运行时会交替进入“读取”和“转发”消息时段。在“读取”时段,遍历所有NXT,从其读取发送到PC的消息,将它们存放至转发队列CCommServer:m_msgpQue尾部;在“转发”时段,解析转发队列CCommServer:m_msgpQue队首消息,如其目标为当前正连接着的NXT,则将其传送到该NXT。此过程反复进行,直到队首不再有发往该NXT的消息为止。各NXT的CMsgProxy也是独立线程,运行时交替进入“发送”和“读取”时段。“发送”时段将待发队列CMsgProxy:m_qMsgToSend队首消息拆分并转换成LeJOSNXJ蓝牙通信格式的数据,然后逐一将其发送给目标NXT;“读取”时段从当前连接的NXT读取数据,然后调用CCommunicator:DispatchMsgToUnit(CMsgPkgmp),将消息散发至本地CRobot的各个相关对象。2基于android的对象消息机制由于leJOS等Java软件开发平台没有类似MFC之类的对象消息机制,这对协同多机器人系统的软件开发十分不变,为此,作者在参考文献后建立了基于Java语法标准的对象消息机制,而本文机器人间通信是该对象消息机制的底层支撑,因此其具体实现与对象消息机制的实现密切相关。2.1管理系统的结构由于LEGO多机器人组网硬件由多个NXT和带有蓝牙通信模块的PC机构成,因此宏观上系统的软件可以看作主要由三个部分组成,如图2所示。1ccpmnser维度位于中间控制台上的通信服务器上承担向NXT发送通信数据或从NXT接收通信数据的任务,这些任务包括解析通信目标地址、通信数据缓存等。2ccommserper-ccummserpers新通信NXT与中控机的通信实际上由该类控制和实施,接收通信数据时,该类读取CCommServer发送给本地NXT的数据;发送通信数据时,该类将本地NXT发送的数据传送给CCommServer。作为通信代理,CMsgProxy的实现调用了LeJOSNXJ的蓝牙通信功能。3压力和状态信息封装该模块封装了机器人之间通信的接口,该接口支持以面向对象消息的形式进行机器人之间的通信,即数据格式不是LeJOSNXJ规定的底层通信数据格式。为了封装底层硬件相关信息和更好地处理多机器人之间系统动作,机器人所有行为和状态信息均封装在抽象类CRobot内部成员对象中,任何机器人从软件角度看都是CRobot派生类的对象实例,例如与通信相关模块的CCommunicator、CMsgProxy均为CRobot内部对象。本文聚焦于多机器人组网通信机制,仅重点介绍CMsgProxy和CCommServer,关于Java对象间消息机制请参见参考文献,而CRobot的其他细节将另行撰文,在此不加赘述。2.2osi数据链路层和物理层虽然PBP2P的实现并不复杂,但是其功能也基本覆盖了OSI模型七层中的表示、会话、传输、网络等四层(图3),而OSI数据链路层和物理层由LEGO蓝牙通信模块和leJOSNXJ提供。当然,为了提高效率,PBP2P实现中的软件层次界限并不十分严格。2.2.1ccommserper控制CCommServer类是中控机上的独立线程,作为Piconet主设备,提供3种功能:通信初始化与通信过程控制、消息发送与接收、通信设备管理与转发控制,分别对应于OSI的会话、传输、网络等三层,为了实现上的方便和运行效率,CCommServer实现中没有追求明确的划分;关于另一重要模块CMsgProxy,由于将来与应用层程序有密切关系,因此在具体实现时层次和模块划分相对明确,各模块与OSI对应关系如图3所示。2.2.2发送或发送其他机器人CMsgProxy类是CRobot的组成部分之一,每个机器人的NXT中均有其一个运行实例,这也是一个并行运行的线程,主要用来负责接收中控机转发来的其他机器人发来的消息,同时负责将本机器人所要发往其他机器人的消息发送给中控机中的CCommServer,将接收到的消息调用CCommunicator中的函数voidDispatchMsgToUnit(CMsgPkgmsgp)分发到具体部件的消息队列中(目前规定其他机器人不能与本机器人的部件之间直接消息联系,外界的消息只能发给本机器人的执行机构CExecutive)。该函数在通信连接建立过程中的角色是扮演initiator,对于消息的发送和收取过程与CCommServer类似。2.2.3基于x-msg的对象消息支持消息封装对应于OSI的表示层,由CRobotMsg和CMsgPkg两个类实现,其中CRobotMsg定义了机器人系统的对象消息模式,即应用层通信数据格式,而CMsgPkg提供了消息的会话层数据格式。2.2.4面向网络的方案该部分对应于OSI网络层部分功能。CCommServer承担的消息转发需要根据所接收消息的目标地址,调用网络路由功能并将消息发送给目标机器人。与复杂网络不同,PBP2P网络的路由功能十分简单,各节点的路由信息以通信录的形式加以维护,由类CAddrInfo和类CAddrList承担,其中所含主要数据信息及功能如图4所示。CAddrList除维护通信录外,还提供各机器人及中控机上通信录的同步等功能。由于有了通信录,通信时可以直接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育场馆广告牌施工协议
- 2025版跨境电子商务平台用户隐私保护合同3篇
- 2025年度温州二手房交易市场风险防控合作协议3篇
- 城市环境卫生分层管理办法
- 2025版电子商务平台用户行为分析合同6篇
- 2024年茶叶生产设备升级与购买合同
- 2025年度劳动密集型产业劳动合同3篇
- DB1331T 096-2024 雄安新区市政公用工程绿色评价标准
- 2024年钻石购销合同样本3篇
- 2025版酒店品牌战略规划与委托管理协议3篇
- 建立进出校园安全控制与管理的方案
- 阿里菜鸟裹裹云客服在线客服认证考试及答案
- 水库防恐反恐应急预案
- 供应商管理培训资料课件
- 绿植租摆服务投标方案(完整技术标)
- 幼儿园优质公开课:大班科学《有趣的仿生》课件
- 通用短视频拍摄脚本模板
- 公司信息安全管理制度五篇
- GB/T 12574-2023喷气燃料总酸值测定法
- 2023-2024学年广东广州番禺区四年级数学第一学期期末综合测试试题含答案
- 急性胰腺炎病案分析
评论
0/150
提交评论