上期创建了 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
编译完成后,启动 roscore
:roscore
然后再打开第二个终端 ( Ctrl + Alt + T),输入:rosrun ros_topic subscriber_score
接着再打开第三个终端 ( Ctrl + Alt + T),输入:rosrun ros_topic publisher_score
我们就可以看到订阅者在实时显示发布者的消息。
原文链接: https://www.cnblogs.com/zhangxiaochn/p/12482630.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/372804
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!