一.引言
三种实现策略:
话题通信(发布订阅模式)
服务通信(请求响应模式)
参数服务器(参数共享模式)
二.话题通信
案例
1.实现最基本的发步订阅模型,发步方以固定频率发送一段文字,订阅方接收文本并输出
2.实现对自定义消息的发步与订阅
理论知识:
角色:
1.master--->管理者
2.talker--->发布者
3.listener--->订阅者
流程
master可以根据话题建立发布者和订阅者的联系
注意:
1.使用的协议由RPC和TCP
2.步骤0和步骤1没有顺序关系
3,taker和listener都可以存在多个
4.talker和listener建立连接后,master就可以关闭了
5.上述实现流程已经封装了,以后直接调用即可
案例一:
关键点
1.发布方
2.接方
3.数据
流程:
1.编写发布方实现
2.编写订阅方实现
3.编辑配置文件
4.编译并执行
###
1.先创建一个ros文件夹
mkdir -p demo03_ws/src
cd demo03_ws/
catkin_make
2.在终端中 code .
3.src下
plumbing_pub_sub
roscpp rospy std_msgs
4.编写发布者事件
a.新建C++源文件
demo01_pub.cpp
b.写代码
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc,char *argv[]){
ros::init(argc,argv,"erGouZi");
ros::NOdeHandle nh;
ros::Publisher pub=nh.advertise<std_msgs::String>("fang",10);
std_msgs::String msg;
while(ros::ok()){
msg.data="hello";
pub.publish(msg);
}
return 0;
}
c.在CMakeLists.txt
5.运行
cd demo03_ws/
source ./devel/setup.bash
rosrun plumbing_pub_sub demo01_pub
rostopic echo fang