发布方
#include"ros/ros.h"
#include"std_msgs/String.h"
#include<sstream>
/* 包含头文件(ros中的文本类型三 std_msgs/ String.h) 初始化ros节点 创建节点句柄 创建发布者对象 编写发布逻辑并且发布数据 */
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");//避免乱码
/* code */
ros::init(argc,argv,"ergouzi");
ros::NodeHandle nh;
//创建发布者对象
ros::Publisher pub = nh.advertise<std_msgs::String>("fangzi",10);
//发布逻辑 发布数据
//创建被发布的消息 创建循环发布数据
std_msgs::String msg;
//发布频率10hz
ros::Rate rate(10);
//设置编号
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 包含头文件
初始化节点 创造订阅者对象 处理订阅的数据
spin 函数
*/
void doMsg(const std_msgs::String::ConstPtr &msg)
{
//通过msg函数来处理订阅到的数据
ROS_INFO("翠花订阅到的数据是:%s",msg->data.c_str());
}
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");//避免乱码
/* code */
ros::init(argc,argv,"cuihua");
ros::NodeHandle nh;
ros::Subscriber sub=nh.subscribe("fangzi",10,doMsg);
ros::spin(); // 回头
return 0;
}