ROS中节点在每次接收到消息之后都发布一条消息的反馈topic
2014-11-13 23:09
525 查看
#include "ros/ros.h" #include "std_msgs/String.h" #include <sstream> ros::Publisher chatter_pub; ros::Subscriber sub; void callback() { std_msgs::String msg; std::stringstream ss; msg.data = "test"; ROS_INFO("%s", msg.data.c_str()); chatter_pub.publish(msg); } void function(const std_msgs::StringPtr &msg) { callback(); } int main(int argc, char **argv) { ros::init(argc, argv, "talker"); ros::NodeHandle n; chatter_pub = n.advertise<std_msgs::String>("chatter", 1000); sub = n.subscribe("/test", 1, &function); ros::Rate loop_rate(10); ROS_INFO("Please send message!"); ros::spin(); return 0; }
如果发布一条消息之后直接退出节点,则可以这样:
#include "ros/ros.h" #include "std_msgs/String.h" #include <sstream> int main(int argc, char **argv) { ros::init(argc, argv, "talker"); ros::NodeHandle n; ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000); ros::Rate loop_rate(10); int count = 0; while (count < 1) { std_msgs::String msg; std::stringstream ss; ss << "hello world " << count; msg.data = ss.str(); ROS_INFO("%s", msg.data.c_str()); if(chatter_pub.getNumSubscribers() == 1) { chatter_pub.publish(msg); count ++; ros::spinOnce(); loop_rate.sleep(); ++count; } } return 0; }
相关文章推荐
- ROS 基础: 在同一个节点里订阅和发布消息
- ROS:三个节点相互传递消息,每个节点都可以同时发布和订阅主题
- ROS(一):使用python创建消息发布及接收node
- 我的ROS入门(五):总算搞通ROS的服务节点订阅发布消息话题了
- ROS实战之节点发布/接收图片
- ROS-消息发布与接收
- (七)ROS使用OpenCV读取图像并发布图像消息在rviz中显示
- ROS:两个节点同时具有发布和订阅图像信息的功能
- ROS回顾学习(2)----连接串口和查看节点/话题消息
- (五)ROS 发布tf消息并在rviz中显示
- activiti 工作流会签 / 多人审批时一人通过也可 / 在当前节点获取下一节点的信息 / 流程部署之后发布之前获取所有节点的信息 / 流程启动开始之前传送之后节点办理人 / 同一结点设置多个监听
- ROS笔记——创建简单的主题发布节点和主题订阅节点
- ROS学习(十二)—— 编写简单的消息发布器和订阅器(C++)
- 安卓UI线程向ROS节点发送消息的方法
- MQTT协议之websocket方式发布接收消息
- ros 参数服务器 消息发布和订阅 机器人避障
- ROS节点,消息,话题,服务的介绍
- ROS下视频消息发布与订阅
- (六)ROS发布里程计(Odometry)消息并在rviz中显示
- ROS中发布激光扫描消息