ROS之话题创建(一) 发布者创建

发布者Publisher

cd ~/my_catkin_ws/src/learning_communication/src
touch asker.cpp
gedit asker.cpp

如果没有先安装gedit,然后复制下列代码保存

#include 
#include "ros/ros.h"
#include "std_msgs/String.h"
 int main(int argc, char **argv)
 {
     
 	ros::init(argc,argv,"name");//ROS节点初始化,节点名称
 	ros::NodeHandle n;//创建节点句柄
 	//创建发布者,定义话题名
 	ros::Publisher chatter_pub = n.advertise<std_msgs::String>("asker", 1000);//asker 是话题名,1000是队列大小
 	
 	ros::Rate  loop_rate(10);//设置循环的频率,后面会用
 	int count = 0;
 	while(ros::ok())
 	{
     
 		std_msgs::String msg;
 		std::stringstream ss;
 		ss << "hello world " << count;
 		msg.data = ss.str();

		ROS_INFO("%s", msg.data.c_str());
		chatter_pub.publish(msg);

		ros::spinOnce();//等待一次
		loop_rate.sleep();
		count++;
	}
	return 0;
}

发布者解析

发布话题的步骤:
1)初始化节点,定义节点名称
2) 创建句柄
3)定义发布者ros::Publisher,同时话题名,队列大小,消息类型
4)循环发送,涉及到循环的频率 ros::Rate
5)循环发送,chatter_pub.publish(msg);
6) 等待一次,ros::spinOnce();

结束条件

ros::ok()出现以下情况会返回false
1)CTRL+C
2)被相同名称的节点踢下线
3)节点调用关闭函数ros::shutdown()
4)所有ros::NodeHandles句柄被销毁

你可能感兴趣的:(ROS学习之路,topic发布,ROS消息)