创建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;
}
运行结果