基于LCM通讯的java版本使用 原创
Lightweight Communications and Marshalling (LCM)是消息传递和数据编码的工具库,高带宽和低延迟的实时系统,提供发布/订阅消息传递模型。
官方开源地址:https://github.com/lcm-proj/lcm
本文主要基于官方文档介绍JAVA版本的使用,本文在ubuntu下编译,下文设计的命令在ubuntu下有效。
lcm-gen编译安装
参考文档 build-instructions.md,相关命令如下:
$ git clone https://github.com/lcm-proj/lcm lcm-proj
$ cd lcm-proj
$ mkdir build
$ cd build
$ sudo apt install openjdk-8-jdk-headless cmake libglib2.0-dev build-essential
$ cmake ..
$ make
编程完成后,会在build目录生成相关的文件,将会用到以下两个文件
build/lcmgen/lcm-gen
build/lcm-java/lcm.jar
LCM 使用
LCM是基于发布、订阅消息模型,参考docs/content/tutorial-java.md。
- 发送消息源码:
examples/java/example_t_demo/SendMessage.java - 订阅消息的源码:
examples/java/example_t_demo/MySubscriber.java - 编译运行前,准备所需要的
example_t.lcm
和lcm.jar
$ cd examples/java/example_t_demo
$ cp ../../types/example_t.lcm ./
$ cp ../../../build/lcm-java/lcm.jar ./
-
使用lcm-gen将
*.lcm
转换为exlcm/example_t.java
../../../build/lcmgen/lcm-gen -j example_t.lcm
-
编译所有的java文件
javac -cp .:lcm.jar *.java exlcm/*.java
-
运行订阅者
MySubscriber
java -cp .:lcm.jar MySubscriber
-
新建一个命令窗口,运行发布者
SendMessage
java -cp .:lcm.jar SendMessage
-
运行正常,会在
MySubscriber
窗口显示如下数据
问题备注
- 在WIFI下,收不到局域网的数据包,或者丢包严重
- 收发数据包太大,WIFI路由器性能受限;
- 收发设备性能受限,可以参考 multicast_setup 修改
- 关于JAVA UPD 包大小限制说明,可以参考 java-datagrampacket-udp-maximum-send-recv-buffer-size
本文来自博客园,作者:清霜辰,转载请注明原文链接:https://www.cnblogs.com/cnjim/p/18443474
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了