- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于LCM无人水面机器人软件系统设计
基于LCM无人水面机器人软件系统设计
摘 要: 针对港口安全的需要,为了提高监视港口安全的水面机器人软件系统的可靠性与实时性,提出了基于LCM的改进的机器人软件系统设计。它可以实时采集水面机器人各传感器参数,然后利用收集到的参数进行UPSV自身的运动控制,实现智能避障,监测港口安全等功能。在数据采集与通信方面,这套软件系统是基于LCM进行设计的;在行为控制方面,对其进行了改进,主要采用的是IvP控制模型。
关键字: LCM; UPSV; 水面机器人; IvP; 实时系统
中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2013)20?0038?03
0 引 言
一个机器人软件系统一般分成如下三部分:数据采集,状态估计,任务执行。为了完成特定的任务,模块与模块间需要进行信息交互。现行的操作系统可以很方便的实现在不同计算机上组织不同软件模块的通信,这样以来,就把模块间数据交换的研究转变成了对不同进程间的通信的研究。
本软件采用的是基于发布/订阅模式的LCM(Lightweight Communications and Marshalling)进行设计的,采用的是UDP多播技术进行通信[1]。LCM是一个针对开发实时性要求较高的消息传递系统的开发套件。采用模块化的设计方式,不同的模块可以运行在同一个或不同的硬件平台上,并且不同模块的开启与停止互不影响[2]。此外,LCM还提供了一系列的调试工具,方便软件开发过程中的调试。
1 LCM的基本原理
LCM主要可以分成以下几个模块:类型定义模块、数据编组模块、通信模块、调试工具。类型定义模块,对复合数据类型定义的语法进行了说明,LCM中的不同数据都是通过一个或多个复合数类型进行定义与声明的;编组模块主要功能是实现消息的编码/解码,经过编码的数据都以二进制的形式进行传递; 通信模块基于发布/订阅模式的消息传递系统进行设计,采用UDP多播技术作为底层的通信手段。
1.1 类型定义模块
LCM定义了一个统一的数据类型模式来定义开发过程所用到的一些数据,每一个数据类型的声明都是一个消息结构体,并且数据类型的定义与平台无关。下面是一个LCM进行变量声明的一个例子:
从面可以看出,LCM允许成员变量的嵌套定义。每一个变量都会放在自己相应的filename.lcm文件中,如struct waypoint_t会在文件waypoint_t.lcm中进行定义。LCM中的支持的基本数据类型有整型:int8_t,int16_t,int32_t,int64_t;浮点型:float,double;字符串类型:string;布尔类型: boolean。
另外,LCM还支持用户自定义的数组类型。数组可采用固定长度和可变长度的方式进行定义。
1.2 数据编组模块
数据编组将用户定义的数据编码成二进制流,这一部分是由LCM自身进行处理的,用户可以不用关心内部是如何实现的。编组模块还可以给特定的消息模块添加一个“数字签名”处理,“数字签名”是一个占8 B的变量,它的计算是通过一个Hash函数来求得的。LCM客户端接收到一个消息时,它首先会解析消息中的“数字签名”,如果这个“签名”与它所期待的不一样,那么客户端就会报告错误。
1.3 通信模块
LCM中采用的UDP多播技术,它会把接收到的消息全都发送到所有的客户端,然后客户端会忽略掉那些所不关心的数据。LCM最大的消息大小为4 GB,它提供了一种最大可能的包传递机制,可以最大可能的降低数据传递过程中的丢包现象。LCM中的消息通过UDP多播技术在网络中进行传输,当一个进程在一个特定的命名的信道上发送数据后,网络中的另一个进程可以订阅同一信道中的数据从而接收传递来的消息包。
2 IvP简介及LCM系统的改进
IvP(Interval Programming)[3]的关键在于可以对目标函数分段定义,然后通过设计一个IvP solver,可对近似后的目标函数进行全局优化。
图1中所示的行为目标函数定义为:
[f(x,y)=Ae-(x-x0)2+(y-y0)22σ2]
式中:A=150;σ=32.4;x0=50;y0=1 150;x,y是该行为的决策变量,取值范围均为[-250,250]。
图1(a)是直接把目标函数平均分成了7 056(每一块小区域的大小是84×84)块近似的结果;图1(b)是把目标函数分成了289(每一块小区域的大小是17×17)块近似的结果;图1(c)是直接把目标函数平均分成732块小的区域。
IvP问题,可归结为:对于每一个行为,都有与之相对应的目标函数,针对目标函数,利用IvP函数对它进行一系
文档评论(0)