Ubuntu16.04 安装1.4.0版本的LCM与使用教程

写在前面

说到自动驾驶间的通讯,最常见的就是ROS以及一些基于ROS的改进,例如Apollo的Cyber就可以看作是升级版的ROS,今天介绍一种适用于高速自动驾驶场景的LCM通信协议,其特点是轻量化、传输速度快,易封装。

LCM(Lightweight Communications and Marshalling)是一组用于消息传递和数据编组的库和工具,其基于UDP传输的属性,传输速度较快,其目标是高带宽和低延迟的实时系统。它提供了一种发布/订阅消息传递模型以及带有各种编程语言C++、Java、python等应用程序绑定的自动编组/解组代码生成,LCM通过将消息封装在不同的Channel中进行通信,这点类似于ROS中的Topic。
LCM官方的学习文档
LCM1.40版本下载地址
首先下载lcm-1.4.0.zip
然后解压,或者使用命令行解压

 unzip lcm-1.3.1.zip

之后进入lcm-1.4.0文件夹,要注意的是1.40版本及之后已经不提供 ./configure的安装方式了,所以直接按照cmake安装即可。

 cd lcm-1.3.1
 mkdir build
 cd build
 cmake ..
 sudo make install

至此lcm就算是安装完成了!
关于教程可以直接看官方教程以及文档。lcm类型定义与编程语言无关,这里介绍一下利用C++收发消息,参考这篇博客

使用C ++发送和接收LCM消息

进入lcm_example文件夹,新建example_t.lcm空白文档,写入以下内容

package exlcm;

struct example_t
{
   
    int64_t  timestamp;
    double   position[3];
    double   orientation[4]; 
    int32_t  num_ranges;
    int16_t  ranges[num_ranges];
    string   name;
    boolean  enabled;
}

打开终端,执行命令

 lcm-gen -x example_t.lcm

如果你使用其他语言,用lcm-gen -h 获取帮助。运行之后生成一个文件夹exlcm,并包含一个文件example_t.hpp,到这里lcm结构体定义完成。

发送消息

在lcm_example目录下,新建send_message.cpp复制以下内容

// file: send_message.cpp
//
// LCM example program.
//
// compile with:
//  $ g++ -o send_message send_message.cpp -llcm
//
// On a system with pkg-config, you can also use:
//  $ g++ -o send_message send_message.cpp `pkg-config --cflags --libs lcm`

#include <lcm/lcm-cpp.hpp>

#include "exlcm/example_t.hpp"

int main(int argc, char ** argv)
{
   
    lcm::LCM lcm;
    if(!lcm.good())
        return 1;

    exlcm::example_t my_data;
    my_data.timestamp = 0;

    my_data.position[0] = 1;
    my_data.position[1] = 2;
    my_data.position[2] = 3;

    my_data.orientation[0] = 1;
    my_data.orientation[1] = 0;
    my_data.orientation[2] = 0;
    my_data.orientation[3] = 0
  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值