ROS系统学习7---LCM数据的发送和接收

这篇博客详细介绍了如何在ROS系统中集成LCM进行数据的发送和接收。首先,讲解了在Ubuntu环境下搭建LCM的步骤,包括下载源码、编译安装和配置库路径。接着,通过编写C++的客户端和服务器代码,展示了LCM的基本使用。最后,将这些代码移植到ROS中,创建ROS包,并修改CmakeLists.txt文件进行编译运行。

前面的几篇文章我们简单介绍了ROS的一些基本操作和数据获取的实现。下面,我们将更深入地研究ROS的数据传递,因为这关系到能不能真正把ROS用于实际的工程项目中。

如果工程只用ROS搭建,那么是不需要用到命题所说的LCM的。但如果ROS只是整体系统的一部分,则需要利用内存共享或者网络传输等方式与其他程序进行数据交互,这时候LCM就是一种比较简单的选择(如果不清楚什么是LCM,可以参考这篇文章)。

下面,我们将逐步介绍如何在ROS系统中使用LCM。

联系前面,我们已经知道ROS归根结底是一个多进程的管理工具,因此我们可以把上面的工作分成两步。

第一步:在Ubuntu下把LCM搭建起来,可以直接发送和接收数据。

第二步:把上面做完的用LCM发送和接收的代码移植到ROS中。

下面我们来做第一步(这里只用C++实现,其他版本类似):

先安装编译LCM会用到的依赖项:

sudo apt-get install build-essential autoconf automake autopoint libglib2.0-dev libtool openjdk-8-jdk python-dev

github上下载源码包,这里本人下的是"lcm-1.4.0.zi

### 安装 LCM 库 #### 准备工作 在安装 LCM 库之前,需要先安装一些必要的依赖项。这些工具库用于构建支持 LCM 的功能。 ```bash sudo apt-get update sudo apt-get install build-essential autoconf automake autopoint libglib2.0-dev libtool openjdk-8-jdk python-dev ``` 上述命令会安装 `build-essential`、`autoconf`、`automake` 其他开发所需的工具以及 Java 开发环境[^3]。如果你不需要使用 Java 功能,则可以跳过 `openjdk-8-jdk` 或者替换为更轻量级的版本[^4]。 --- #### 方法一:通过源码编译安装 LCM 1.4.0 以下是基于引用中的方法来安装 LCM 1.4.0 版本的具体操作: 1. **下载并解压 LCM 源码** 假设已经获取到 LCM 的源码包(例如 lcm-1.4.0.tar.gz),将其解压至当前目录下。 ```bash tar -zxvf lcm-1.4.0.tar.gz cd lcm-1.4.0 ``` 2. **创建构建目录并运行 CMake** 使用 CMake 工具配置项目的构建选项,并执行编译过程。 ```bash mkdir build cd build cmake .. sudo make install ``` 完成以上步骤后,LCM 就会被成功安装到系统的默认路径 `/usr/local/lib` 中[^2]。 --- #### 方法二:手动设置动态链接器 pkg-config 路径 为了使系统能够识别新安装的 LCM 库及其头文件,还需要额外配置动态链接器 `pkg-config` 的路径。 1. **更新动态链接器缓存** 设置 LCM 的安装目录为动态链接器的搜索范围之一。 ```bash export LCM_INSTALL_DIR=/usr/local/lib echo "$LCM_INSTALL_DIR" | sudo tee /etc/ld.so.conf.d/lcm.conf sudo ldconfig ``` 2. **扩展 pkg-config 的搜索路径** 更新 `pkg-config` 的路径变量以便其能定位到 LCM 提供的 `.pc` 文件。 ```bash export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig ``` 这样就可以让后续项目顺利找到 LCM 的相关组件[^1]。 --- #### 测试安装是否成功 可以通过简单的测试程序验证 LCM 是否正常工作。下面是一个基本的例子: ```cpp #include <lcm/lcm-cpp.hpp> using namespace std; int main() { lcm::LCM lcm; if (!lcm.good()) { cout << "LCM initialization failed." << endl; return 1; } cout << "LCM initialized successfully!" << endl; return 0; } ``` 保存此代码片段为 `test_lcm.cpp` 并尝试编译它: ```bash g++ test_lcm.cpp -o test_lcm $(pkg-config --cflags --libs lcm) ./test_lcm ``` 如果没有错误提示且显示初始化成功的消息,则说明 LCM 已经正确安装。 --- ### 总结 按照上述流程即可顺利完成 LCM 库在 Ubuntu 16.04 上的安装。需要注意的是,在实际应用过程中可能还会遇到特定场景下的兼容性问题或其他需求调整的情况。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值