ROS基础---ros通信、ros订阅者Subscriber、Subscriber.cpp、Listener.cpp

创建ros发布者

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


该代码配合前面的发布者代码使用,记得使用前要在终端打开roscore,还有代码的编译catkin_make


配套发布者Talker
配套CMakeLists.txt设置

详细解读版

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


void listenMsg(const std_msgs::String::ConstPtr& msg)
{
  // 将接收到的消息打印出来
  ROS_INFO("%s", msg->data.c_str());
}

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

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

	  //向Master注册一个Subscriber(S为大写),并通过TalkMsg接收Talker发布的String类型的信息
	  //缓冲队列大小为1000
	  //通过listenMsg回调处理信息打印到终端
	  ros::Subscriber listen_sub = n.subscribe("TalkMsg", 1000, listenMsg);

	  //回调函数ros默认背下来就好了
	  ros::spin();

	  return 0;
}

详细解读版

#include "ros/ros.h"
#include "std_msgs/String.h"
void listenMsg(const std_msgs::String::ConstPtr& msg)
{
  ROS_INFO("%s", msg->data.c_str());
}

int main(int argc, char **argv)
{
	
	  ros::init(argc, argv, "Listener");
	  ros::NodeHandle n;
	  ros::Subscriber listen_sub = n.subscribe("TalkMsg", 1000, listenMsg);
	  ros::spin();
	  return 0;
}

运行结果
运行结果

发布了18 篇原创文章 · 获赞 3 · 访问量 212

猜你喜欢

转载自blog.csdn.net/weixin_44692299/article/details/104263084