【写在前面】本专栏文章以Apollo开发者社区云实验平台为基础,大家可以通过我们提供的链接直接进入云实验,再根据文章内容进行操作,边阅读边上手!
本文云实验地址👉Cyber通信之Talker-Listener通信_Apollo课程
一、内容简介
假设我们想要一直获取车的速度,该需求不需要向发送方返回什么消息,也不需要发送方对消息进行进一步处理。该种情况下,我们可以选择Listener-Talker通信方式实现该功能。
Listener-Talker通信一方主动送消息,一方被动接收。Listener-Talker通信首先创建了两个Node,分别是Talker Node和 Listener Node。每个Node实例化Writer类和Reader类对Channel进行消息的读写。Writer和Reader通过Topic连接,对同一块共享内存(Channel)进行读写处理。在这里,Talker Node 为了实现其“诉说”的功能,选择实例化Writer,通过Writer来对Channel进行消息写操作。而Listener Node为了实现其“聆听”功能,选择实例化reader类,通过Reader来对channel进行读操作。该通信方式适合于持续性通信的应用场景,比如雷达信号,摄像头图像信息这类数据的传输。数据交互路径如下图所示:
二、实践流程
1.编写代码
1、在/apollo_workspace/examples/proto下创建car1.proto文件,用于保存车的车身信息。
vim /apollo_workspace/examples/proto/car1.proto
在car1.proto中输入自定义的车身信息。