1、话题通信(发布订阅模式):分为发送方和接收方,发送方发送话题,接收方接受
2、服务通信(请求响应模式):分为Client端和Server端,Client端给Server端发送请求,Serer端响应请求
3、参数服务器(参数共享模式):有放data的容器,每一个节点都可以从容器中存取数据。
发送方代码
#include"ros/ros.h"
#include"std_msgs/String.h"
#include"sstream"
/*
发布方实现
1、包含头文件
ROS中文本类型--->std_msgs/String.h
2、初始化ros节点
3、创建节点句柄
4、创建发布者对象
5、编写发布逻辑并发布数据
*/
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
//2、初始化ros节点
ros::init(argc,argv,"erGouZi");
// 3、创建节点句柄
ros::NodeHandle nh;
// 4、创建发布者对象
ros::Publisher pub=nh.advertise<std_msgs::String>("fang",10);
// 5、编写发布逻辑并发布数据
//要求以10Hz的平吕发布数据,并且文本后添加编号
//先创建被发布的消息
std_msgs::String msg;
//;发布频率
ros::Rate rate(0.5);//表示一秒钟几次
//设置频率
int count = 0;
//编写一个循环,循环中发布数据
while (ros::ok())
{
count++;
//msg.data = "hello";
//实现字符串的拼接
std::stringstream ss;
ss << "hello--->"<<count;
msg.data = ss.str();
pub.publish(msg);
//日志输出,添加日志
ROS_INFO("发布的数据是%s",ss.str().c_str());
rate.sleep();
ros::spinOnce();//官方建议添加的函数,用于处理回调函数
}
return 0;
}
接收方代码
#include"ros/ros.h"
#include"std_msgs/String.h"
#include"sstream"
/*
发布方实现
1、包含头文件
ROS中文本类型--->std_msgs/String.h
2、初始化ros节点
3、创建节点句柄
4、创建发布者对象
5、编写发布逻辑并发布数据
*/
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
//2、初始化ros节点
ros::init(argc,argv,"erGouZi");
// 3、创建节点句柄
ros::NodeHandle nh;
// 4、创建发布者对象
ros::Publisher pub=nh.advertise<std_msgs::String>("fang",10);
// 5、编写发布逻辑并发布数据
//要求以10Hz的平吕发布数据,并且文本后添加编号
//先创建被发布的消息
std_msgs::String msg;
//;发布频率
ros::Rate rate(0.5);//表示一秒钟几次
//设置频率
int count = 0;
//编写一个循环,循环中发布数据
while (ros::ok())
{
count++;
//msg.data = "hello";
//实现字符串的拼接
std::stringstream ss;
ss << "hello--->"<<count;
msg.data = ss.str();
pub.publish(msg);
//日志输出,添加日志
ROS_INFO("发布的数据是%s",ss.str().c_str());
rate.sleep();
ros::spinOnce();//官方建议添加的函数,用于处理回调函数
}
return 0;
}