LCM-VISSIM-U3D
LCM is a set of libraries and tools for message passing and data marshalling, targeted at real-time systems where high-bandwidth and low latency are critical. It provides a publish/subscribe message passing model and automatic marshalling/unmarshalling code generation with bindings for applications in a variety of programming languages.
LCM源码编译
- lcm-proj/lcm
LCM在Linux环境下的安装十分的简单,但是在windows环境中,由于众嗦周知的原因,需要配置各种环境,较为繁琐,可以参考下面这篇博客:LCM通信包在Windows 64位环境下的编译
如果每次使用LCM都要从源码进行编译,显然这是一种非常愚蠢的做法,因此我已经把编译好的dll文件放在我的GitHub上面了,里面包含C++版本的dll和一个C#版本的dll,直接拿来用就可以了。

Visual Studio配置
如果是从源码进行的编译,会在lcm根目录下生成build文件夹,里面是已经配置好的各种示例工程
如果不是从源码进行编译,直接使用预先编译好的dll,则可以参考GitHub仓库中
build文件夹中VS的配置方式,主要使用lcm-listener、lcm-sender、lcm-gen这三个工程



VISSIM-DriverModel.DLL
建议从VISSIM官方给出的DriverModel模板入手,进行开发;一个可以参考的例子是lhcstation/LCM-DLL
需要定义数据模板,即在
lcm-gen文件夹根目录下新建文件example_t.lcm,并配置数据类型,一个示例如下:
1 | package exlcm; |
随后执行
lcm-gen -x example_t.lcm,若使用VS,则添加控制台命令-x example_t.lcm,运行后会在当前文件夹生成一个exlcm/example_t.hpp文件发送端VISSIM-dll提供一个可行的参考示例:LCM-DLL/DriverModel_DLL/DriverModel.cpp
⚠ 请将lhcstation/LCM-DLL文件夹中所有dll文件放置到本机
C:\Windows\System32文件夹下,在编译生成DroverModel.dll,否则VISSIM会提示如下错误:

U3D接收端(基于C#)
首先需要编译C#版的
.dll以供.cs调用,提供一个可用的dll:LCM-DLL/Csharp_dll将
.dll放置在Assets/Plugins/内,并在需要调用的.cs脚本中引用using LCM; using LCM.LCM;,提供一个可用的参考LCM-DLL/Csharp-listener/lcm-server/Program.cs
通信速度
