LCM和ZMQ比较

 

http://www.doc88.com/p-6711552253536.html 基于LCM和ZeroMQ的进程间通信研究

2、简介

LCM(Lightweight Commuciation and Marshalling) 它是作为消息传递和封装的通信库,其首要任务是简化低时延消息传递系统的开发。目前广泛应用于无人驾驶汽车领域。

其通信效率比基于TCP的ros库里面的效率要高,和IPC( Inter-Process Communication 系统自带的进程间通信)相比,也要高一些。

3、个人理解

此LCM可以理解为ROS里面的一个通信机制,ROS里面也有Package的概念,然后ros_make 之后,也会出现很多的头文件,然后我们通过ROS_RUN调用ros里面的库,进行publish 和 subcrible(订阅和请求)。

而在LCM里面,其实原理是一样的,由LCM里面的LCM_GEN小程序编译生成头文件,然后把这些头文件放到目录当中,我们在编写程序的时候,引入LCM第三方库,LCM里面有自己的publish和subcrible等。

 

 

配置步骤如下:

查看readme

在拿到第三方开源库之前,我们首先先查看README 文档,查看如何使用此开源代码。

 

LCM 轻量级通信组件-风君雪科技博客

 

打开文档,根据系统要求进行编译

LCM 轻量级通信组件-风君雪科技博客

我们目前是Ubuntu 系统,编译需要的依赖库如下。

 

LCM 轻量级通信组件-风君雪科技博客

 

4、如果想查看详细信息,可参考文件INSTALL

 

LCM 轻量级通信组件-风君雪科技博客

 

 

安装后的路径如下:

LCM 轻量级通信组件-风君雪科技博客

LCM 轻量级通信组件-风君雪科技博客

LCM 轻量级通信组件-风君雪科技博客

 

实例代码

LCM 轻量级通信组件-风君雪科技博客

 

选用IDE为codeblocks

 

下载后直接安装即可。

LCM 轻量级通信组件-风君雪科技博客

配置完编译

一直出错,未定义的引用 lcm_create()等。

原因:codeblocks不能加载环境变量,即使我们已经用ldconfig 命令进行配置完依然是这样的。

解决方案:配置库和头文件(在ros里面有此IDE也是需要配置的)

LCM 轻量级通信组件-风君雪科技博客LCM 轻量级通信组件-风君雪科技博客

然后编译即可进行调试。

 

我们可以再建立一个subcribe的工程实例,然后在通过IDE里面同时运行多个实例。参考资料:http://blog.csdn.net/clever101/article/details/7299670

LCM 轻量级通信组件-风君雪科技博客