ROS Tutorials: Publisher 与 Subscriber

0. rqt_graph 显示当前所有节点的关系

1. Create Publisher

talker.cpp:

   #include <sstream>
   #include "ros/ros.h"
   #include "std_msgs/String.h"
   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(ros::ok()) {
       std_msgs::String msg;
       std::stringstream stringStream;
       stringStream << "hello world" << count;
       msg.data = stringStream.str();
       chatter_pub.publish(msg);

      ros::spinOnce();
      loop_rate.sleep();
      ++count;
   }
   return 0;
   }

2. Create Subscriber

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;
    }

3. Compile. 编辑CmakeLists.txt.

    include_directories(include ${catkin_INCLUDE_DIRS})
    add_executable(talker src/talker.cpp)
    add_executable(listener src/listener.cpp)
    add_dependencies(talker ${PROJECT_NAME}_generate_messages_cpp)
    add_dependencies(listener ${PROJECT_NAME}_generate_messages_cpp)
    target_link_libraries(talker ${catkin_LIBRARIES})
    target_link_libraries(listener ${catkin_LIBRARIES})

使用 catkin_make 编译

4. Run Publisher and Subscriber

In Terminal 1:

    source ./devel/setup.bash
    roscore

In Terminal 2:

    source ./devel/setup.bash
    rosrun learning_communication talker

In Terminal 3:

   source ./devel/setup.bash
   rosrun learning_communication listener

引用

内容整理自 《ROS 机器人开发实践》3.6 话题中的Publisher 与Subscriber.
Github Repo: https://github.com/huchunxu/ros_exploring.git

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 支持或反对改变 你是否支持改变?唯一合理的答案是“取决于为什么改变”改变一些重要的事件,或使事情变得更加糟糕。然而...
    Reiko丶阅读 204评论 0 0
  • 初醒狸奴子,闲居五柳人。 烛明薄云夜,花泛碧螺春。 烟落沾衣久,水微凝色匀。 宿茶时忘味,淡极始逾新。
    姑射阅读 391评论 1 9
  • 提高智商方法之一: 经常花时间“设身处地”地从他人角度思考(暂时把关注焦点从自己身上挪到他人身上),绝对是提高“智...
    大人黄桃阅读 227评论 0 0
  • 印象深刻三部分. ①作业啊!作业!成绩啊!成绩。因为作业的原因,被扣去了5分,想一想这也是应该的吧。同时也明白了,...
    朔方故乡阅读 157评论 1 1
  • 1.对待朋友要真心 有时候在你看来不重要的小举动,可能会给别人带去无尽的安慰。 昨天下班还没踏进家门,就收到朋友发...
    诗城冀遇阅读 263评论 2 1