zoukankan      html  css  js  c++  java
  • ROS 订阅者的创建及使用

    上期创建了 msg 文件和发布者,这期创建订阅者 Subscriber。上期入口

    本文所用代码为个人独自编写仅用于测试的代码,实现效果为:接收发布者发布的消息并将其打印出来。

    创建订阅者 Subscriber

    打开终端,开始新建 cpp 文件:gedit ~/catkin_ws/src/ros_topic/src/subscriber_score.cpp

    在弹出的框中,粘贴如下测试代码并保存:

    #include "ros/ros.h"
    #include "ros_topic/score.h"
    
    void infoCallback(const ros_topic::score::ConstPtr& msg);
    
    int main(int argc, char **argv) {
    
        // 初始化 ROS 节点
        ros::init(argc, argv, "subscriber_score");
    
        // 创建节点句柄
        ros::NodeHandle n;
    
        // 创建一个Subscriber
        // 订阅名为 /score 的 topic
        // 注册回调函数 infoCallback
        ros::Subscriber score_sub = n.subscribe("/score", 10, infoCallback);
    
        // 循环等待回调函数
        ros::spin();
    
        return 0;
    }
    
    // 接收到订阅的消息后,则进入消息回调函数
    void infoCallback(const ros_topic::score::ConstPtr& msg) {
    
        // 将订阅者所接收到的消息打印出来
        ROS_INFO("Subcriber: %s got %.1f points in the exam and was rated as %s", 
            msg->student_name.c_str(), 
            msg->score, 
            msg->evaluation.c_str());
    }
    

    现在,我们打开文件管理器,打开 /主目录/catkin_ws/src/ros_topic/src,就可以看到刚才创建的 cpp 文件了:

    配置订阅者

    打开终端,配置 CMakeLists.txt 文件:gedit ~/catkin_ws/src/ros_topic/CMakeLists.txt

    下拉到最后一行,添加如下代码并保存:

    add_executable(subscriber_score src/subscriber_score.cpp)
    add_dependencies(subscriber_score ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
    target_link_libraries(subscriber_score ${catkin_LIBRARIES})
    

    到此,我们就全部配置完毕。

    运行

    先返回工作空间主目录下:cd ~/catkin_ws/

    进行编译:catkin_make

    编译完成后,启动 roscoreroscore

    然后再打开第二个终端 ( Ctrl + Alt + T),输入:rosrun ros_topic subscriber_score

    接着再打开第三个终端 ( Ctrl + Alt + T),输入:rosrun ros_topic publisher_score

    我们就可以看到订阅者在实时显示发布者的消息。

  • 相关阅读:
    linux cmake安装方法
    Linux下安装numpy
    linux下安装opencv3.0
    linux升级gcc
    php session获取不到的解决方法
    python Tesseract安装方法
    SQLite-编译指示
    第十章:定积分
    7. 错误、调试和测试
    钱纳里的工业化阶段理论
  • 原文地址:https://www.cnblogs.com/zhangxiaochn/p/12482630.html
Copyright © 2011-2022 走看看