ROS基础---ros通信、ros发布者publisher、publisher.cpp、Talker.cpp

创建ros发布者

该篇为发布者Talker.cpp后面文章会有Listener.cpp对应代码CMakeLists.txt设置直接与该篇相连
本人是理科生,做这文档也是为了以后生活中害怕忘记而发布的,并且希望能帮到大家,发布的越多,入坑起来的快。入坑可难受了,天天抠头发。
注:有点详细,免得大家抠头发,阅读可以直接看代码。


我的代码可以不用订阅者Subscriber也可以使用,记得使用前要在终端打开roscore,还有代码的编译catkin_make


配套代码连接区:
配套订阅者Listener
配套CMakeLists.txt设置

详细解读版

#include 
#include "ros/ros.h"
#include "std_msgs/String.h"

int main(int argc, char **argv)
{
	//初始化节点,前面两个参数ros默认可以不管,直接背
	//第三个参数是节点名字,建议和文件名一样,这样出现节点名相同时好排查
	//因为在ros节点名字不能出现两个及以上的节点名相同
	ros::init(argc, argv, "Talker");

	//创建节点句柄,ros默认可以不管,直接背
	ros::NodeHandle n;

	//向Master注册一个Publisher(P为大写),并通过TalkMsg传播方式发布String类型的信息,在订阅端通过TalkMsg接收该文件发送的信息
	//缓冲队列大小为1000
	ros::Publisher TalkMsg_pub = n.advertise("TalkMsg", 1000);

	//设置一个调用时间时间,每调用一次( 1/5=0.2s )
	ros::Rate work_rate(5);

	//初始一个计数的单位,这个可以不要设置的,无影响
	int count = 0;

	//进入while判断,只要该ros节点无异常就是一直执行下去
	while (ros::ok())
	{
		count+=1;

		//将msg定义为String类型,方便打包发送
		std_msgs::String msg;

		//将AllMsgstringstream类型,方便数据组合
		std::stringstream AllMsg;

		//将我已成功发送第n信息装入AllMsg中
		AllMsg << "to" <<  count <<"message"<

精简版

#include 
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char **argv)
{
	
	ros::init(argc, argv, "Talker");
	ros::NodeHandle n;
	ros::Publisher TalkMsg_pub = n.advertise("TalkMsg", 1000);
	
	ros::Rate work_rate(5);
	int count = 0;
	while (ros::ok())
	{
		count+=1;
		std_msgs::String msg;
		std::stringstream AllMsg;
		AllMsg << "to" <<  count <<"message"<

运行结果
ROS基础---ros通信、ros发布者publisher、publisher.cpp、Talker.cpp_第1张图片

你可能感兴趣的:(ROS,c++,自然语言处理,机器学习,深度学习)