ROS学习--(十三)编写简单的订阅器(subscriber),编译,测试
来源:互联网 发布:2016淘宝客微信教程 编辑:程序博客网 时间:2024/05/22 00:43
1.现在在beginner_tutorials package下创建src/listener.cpp。粘贴代码:
#include "ros/ros.h"#include "std_msgs/String.h"void chatterCallback(const std_msgs::String::ConstPtr& msg){ ROS_INFO("I heard: [%s]", msg->data.c_str());}int main(int argc, char **argv){ ros::init(argc, argv, "listener"); ros::NodeHandle n; ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback); ros::spin(); return 0;}
只说与发布器不同的部分
1.
void chatterCallback(const std_msgs::String::ConstPtr& msg){ ROS_INFO("I heard: [%s]", msg->data.c_str());}
回调函数,消息到达chatter topic时会被调用,消息是以boost shared_ptr指针的形式传输,我们可以存储它而不需要复制数据
2.
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
这是告诉master我们要订阅chatter上的消息,有消息到达topic时,ROS会调用chatterCallback()的函数。第二个参数是队列的大小,同publicer的参数。返回ros::Subscriber。
3.
ros::spin();
ros::spin()进入自循环,尽可能快的调用消息回调函数。如果没有消息到达,不会占用很多CPU,一旦ros::ok()返回FALSE,ros::spin()会立刻跳出自循环。
编译节点
将下列代码加到CMakeLilst.txt的尾
include_directories(include ${catkin_INCLUDE_DIRS})add_executable(talker src/talker.cpp)target_link_libraries(talker ${catkin_LIBRARIES})add_dependencies(talker beginner_tutorials_generate_messages_cpp)add_executable(listener src/listener.cpp)target_link_libraries(listener ${catkin_LIBRARIES})add_dependencies(listener beginner_tutorials_generate_messages_cpp)
这样可以加入两个可执行文件,talker和listener,这两个会自动在devel下生成,路径是~/catkin_ws/devel/lib/share/
add_dependencies(talker beginner_tutorials_generate_messages_cpp)添加对生成的消息文件的依赖
运行catkin_make
测试
1.运行roscore
2.运行talker
$ rosrun beginner_tutorials talker
3.运行订阅器
$ rosrun beginner_tutorials listener
可以看到两个终端分别是发布消息和订阅消息(hello world和heard hello world)
0 0
- ROS学习--(十三)编写简单的订阅器(subscriber),编译,测试
- ROS的初步学习(五)--自己写一个简单的发布(Publisher)、订阅(Subscriber)程序
- ROS 编写消息发布器(publisher)和订阅器(subscriber)-精简
- ROS(二)自己动手写一个简单的发布(Publisher)、订阅(Subscriber)程序
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 11 编写简单的消息发布器和订阅器 (C++)
- ROS学习手记 - 8 编写ROS的Publisher and Subscriber
- ROS学习第五弹(发布和订阅 Python写 Publisher and Subscriber)
- ROS教程(十三):编写简单的服务器和客户端
- ROS教程(十一):编写简单的消息发布器和订阅器
- ROS入门_1.14 编写及测试简单的消息发布器和订阅器 (C++)
- 创建ROS消息发布器(publisher)、订阅器(subscriber)
- ROS的学习(十五)验证publisher和subscriber
- ROS的学习(十九)用rosserial创建一个subscriber
- ROS学习第六弹 (Publisher和Subscriber的运行)
- ROS学习--RoboWare Studio的使用和发布器/订阅器的编写与测试
- ROS:编写简单的发布、订阅
- ROS中编写Publisher和Subscriber的方法(Python版)
- ROS中编写Publisher和Subscriber的方法(C++版)
- 字典序排列的算法
- 学习C++11之引用
- HTTP中POST与GET 区别介绍
- Android基础之Activity四种启动模式
- Contiki例(三)使用etimer定时器激活被阻塞的任务
- ROS学习--(十三)编写简单的订阅器(subscriber),编译,测试
- AngularJs学习笔记__3、AngularJs模板
- centos 6实现ssh无密码登录的简便方法
- UITableView Cell
- 【C++】sizeof
- 黑马程序员——SQL四种连接查询及实例
- 【背包总结I】
- OpenGL像素缓冲对象(PBO)
- 【树结构】CodeForces 396C