1. 背景:
- simulink可以用来搭建各种模型及算法,且可以自动生成汽车级的c/c++代码,支持从原型开发到工业级代码生成。
- 使用simulink搭建自动驾驶需要的算法,并与其他自动驾驶模块及仿真环境通讯,实现快速模型验证。
- LCM是基于UDP广播通讯的跨平台,跨语言的数据交换工具,多家自动驾驶公司均有使用。https://lcm-proj.github.io/
- Protobuf是google开发的跨平台,跨语言的数据交换工具,https://github.com/protocolbuffers/protobuf/tree/master
- 这里主要讨论是基于LCM和protobuf的simulink与其他模块的通讯(跨平台)
2. 架构:
- 所有的数据结构都通过protobuf定义,好处就是数据结构变更之后,依然可以兼容之前保存的log数据
- protobuf序列化为byte[](不要用string)之后,通过LCM广播。LCM虽然也可以定义数据结构并序列化,但是数据结构修改之后,那么代码不能使用之前的log数据。
- matlab的m脚本可以直接使用jar包,故需要将LCM的publish和subscribe