ROS订阅者Subscriber的编程实现

Posted 等不到星光等时光呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS订阅者Subscriber的编程实现相关的知识,希望对你有一定的参考价值。

编程实现

前言: 和上一个教程创建过程一样,这里不进行详细介绍,上一个教程链接如下

ROS发布者Publisher的编程实现(五)

正文开始

首先,在src文件夹下创建pose_subscriber.cpp的文件。
在这里插入图片描述

然后在上一步创建的文件下编写代码。

代码如何实现:

初始化ROS节点;
订阅需要的话题;
循环等待话题消息,接受到消息后,进入回调函数;
在回调函数中完成消息的处理;

代码如下:

//该例程将订阅/turtle1/pose话题,消息类型turtlesim::pose

#include <turtlesim/Pose.h>
#include <ros/ros.h>

void poseCallback(const turtlesim::Pose::ConstPtr& msg)
{
	//将接收到的消息打印出来
	ROS_INFO("Turtle pose: x:%0.6f,y:%0.6f",msg->x, msg->y);	
}
int main(int argc, char **argv)
{


 	//ROS节点初始化,引号中的为节点的名字
        ros::init(argc,argv,"pose_subscriber");

        //创建节点句柄
        ros::NodeHandle n;

        //创建一个pose_subsciber,订阅名为/turtle1/cmd_vel的topic,注册回调函数poseCallback
        ros::Subscriber pose_sub =n.subscribe("/turtle1/pose",10,poseCallback);

        //设置等待回调函数
        ros::spin();
        
        return 0;
        
 }

在这里插入图片描述

配置CmakeLists.txt中的编译规则

之后打开src/learning_topic下的CMakeList.txt文件
在这里插入图片描述

在该文件中加入如下俩句:

add_executable(pose_subscriber src/pose_subscriber.cpp)
target_link_libraries(pose_subscriber ${catkin_LIBRARIES})

在这里插入图片描述

保存并推出。

之后在进行编译,输入

catkin_make

在这里插入图片描述

最后,运行代码:

roscore

rosrun turtlesim turtlesim_node

rosrun learning_topic pose_subscriber

之后可以看到输出了小海龟的位置,也可打开键盘节点,来控制其运动,看其数值是否发生变化。

在这里插入图片描述

以上是关于ROS订阅者Subscriber的编程实现的主要内容,如果未能解决你的问题,请参考以下文章

ROS编程基础发布者节点的创建和运行

编写第一个ROS程序-发布器(Publisher)

ROS编写第一个订阅器

ROS中的基本概念释义

ROS与Arduino学习订阅与发布

《ROS理论与实践》学习笔记ROS通信编程