1 发布方的实现
/*包含的头文件*/
#include "ros/ros.h"
#include"std_msgs/String.h"
#include <sstream>
/*
发布一个话题 hello,消息类型为string
*/
int main(int argc,char *argv[])
{
setlocale(LC_ALL,"");
/*初始化ros节点
argc,和argv可用于在调用launch文件时输入参数
*/
ros::init(argc,argv,"talker");
/*创建句柄*/
ros::NodeHandle n;
/*在rosmaster端注册一个Publisher*/
ros::Publisher chatter_pub=n.advertise<std_msgs::String>("chatter",100);/*告诉master要有一个发布方来注册,注册的话题chatter*/
ros::Rate r(1);
ros::Duration(3.0).sleep();/*为了确保publisher注册成功,休眠一段时间*/
int count=0;
while(ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello" << count;
msg.data=ss.str();
chatter_pub.publish(msg); /*把消息发布出去*/
ROS_INFO("%s",msg.data.c_str());
ros::spinOnce();
r.sleep(); /*上一个sleep和目前的sleep的间隔时间是1s*/
count++;
/* 测试程序,看一下shutdone的后果,即所有的ros服务都不能使用了,包括ROS——INFO
if(count==10)
{
ros::shutdown();
}*/
}
ROS_INFO("END"); /*测试程序,测试while循环退出的条件*/
return 0;
}