目录

  • 如何实现一个订阅者
  • C++
    • 编写程序
    • 配置CMakeLists.txt
    • 编译并运行发布者
  • python
    • 创建并编写脚本
    • 运行

平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro
固件版本:Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615


记录自【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程 —— 古月居GYH P11 11.订阅者Subscriber的编程实现

如何实现一个订阅者

  1. 初始化ROS节点;
  2. 订阅需要的话题;
  3. 循环等待话题消息,接收到消息后进入回调函数;
  4. 在回调函数中完成消息处理。

C++

编写程序

nano ~/catkin_workspace/src/learning_topic/src/pose_subscriber.cpp
/***********************************************************************
Copyright 2020 GuYueHome (www.guyuehome.com).
***********************************************************************//*** 该例程将订阅/turtle1/pose话题,消息类型turtlesim::Pose*/#include <ros/ros.h>
#include "turtlesim/Pose.h"// 接收到订阅的消息后,会进入消息回调函数
void poseCallback(const turtlesim::Pose::ConstPtr& msg)
{// 将接收到的消息打印出来ROS_INFO("Turtle pose: x:%0.6f, y:%0.6f", msg->x, msg->y);
}int main(int argc, char **argv)
{// 初始化ROS节点ros::init(argc, argv, "pose_subscriber");// 创建节点句柄ros::NodeHandle n;// 创建一个Subscriber,订阅名为/turtle1/pose的topic,注册回调函数poseCallbackros::Subscriber pose_sub = n.subscribe("/turtle1/pose", 10, poseCallback);// 循环等待回调函数ros::spin();return 0;
}

配置CMakeLists.txt

nano ~/catkin_workspace/src/learning_topic/CMakeLists.txt

Build内,Install前加入

add_executable(pose_subscriber src/pose_subscriber.cpp)
target_link_libraries(pose_subscriber ${catkin_LIBRARIES})

编译并运行发布者

cd ~/catkin_workspace
catkin_make# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
roscore
# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rosrun turtlesim turtlesim_node
# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rosrun learning_topic velocity_publisher# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rosrun learning_topic pose_subscriber# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rqt_graph


python

创建并编写脚本

nano ~/catkin_workspace/src/learning_topic/scripts/pose_subscriber.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-########################################################################
####          Copyright 2020 GuYueHome (www.guyuehome.com).          ###
######################################################################### 该例程将订阅/turtle1/pose话题,消息类型turtlesim::Poseimport rospy
from turtlesim.msg import Posedef poseCallback(msg):rospy.loginfo("Turtle pose: x:%0.6f, y:%0.6f", msg.x, msg.y)def pose_subscriber():# ROS节点初始化rospy.init_node('pose_subscriber', anonymous=True)# 创建一个Subscriber,订阅名为/turtle1/pose的topic,注册回调函数poseCallbackrospy.Subscriber("/turtle1/pose", Pose, poseCallback)# 循环等待回调函数rospy.spin()if __name__ == '__main__':pose_subscriber()

运行

sudo chmod +x ~/catkin_workspace/src/learning_topic/scripts/pose_subscriber.py# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
roscore
# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rosrun turtlesim turtlesim_node
# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rosrun learning_topic velocity_publisher.py# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rosrun learning_topic pose_subscriber.py# 新建一个终端
source ~/catkin_workspace/devel/setup.bash
rqt_graph


【RK3399Pro学习笔记】七、ROS订阅者Subscriber的编程实现相关推荐

  1. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

  2. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  3. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  5. websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...

    Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...

  6. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练

    [K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...

  7. window的dos命令学习笔记 七

    文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...

  8. ROS学习笔记(十)——ROS试用练习(一)

    ROS学习笔记(十)--ROS试用练习 在此说明:之前使用的ROS是indigo,前两天电脑"炸"了,所以换了kinetic. 一.ROS文件系统导览 1.1如果你想找到turtl ...

  9. ESP32学习笔记(七) 复位和时钟

    ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...

最新文章

  1. 《大道至简》一书第三版,与编辑就本书写作风格的讨论
  2. mysql8安装错误_Windows安装MySQL8.0.16 的步骤及出现错误问题解决方法
  3. android 如何终止线程
  4. # javascript 总结
  5. Redis 中的过期元素是如何被处理的?「视频版」——面试突击 002 期
  6. python unittest断言_python接口自动化(二十四)--unittest断言——中(详解)
  7. JavaScript HTML DOM 1
  8. iOS 知名公司资讯汇集~招聘内推
  9. P1_M4_L5 Lateral Dynamic Bicycle Model(自行车模型的横向动力学建模)
  10. Mongodb分组查询
  11. 完全卸载 HP 打印机
  12. [UE4]射击产生弹孔:Spawn Decal At Location、Spawn Decal Attached
  13. 记一次互联网寒冬下的阿里面试总结
  14. 计算机组成及原理ppt课件,计算机组成原理第五章课件.ppt
  15. python实训名片管理程序_python实现名片管理系统
  16. web前端学习路线-20个真实web开发项目集合
  17. 计算机系统中常用的进制,计算机中常用 二进制 八进制 十进制 十六进制的特点...
  18. linux 安装docker简易方法
  19. 南邮 OJ 1531 A ? Sixth Grade Math
  20. 【干货分享】最新WHQL徽标认证申请流程

热门文章

  1. ggplot2 theme相关设置—文本调整
  2. 升级nginx,查看已经安装的模块,并隐藏或者修改版本号
  3. ubuntu 手动安装mysql
  4. 从源代码角度看Struts2返回JSON数据的原理
  5. 机器学习 啤酒数据集_啤酒数据集上的神经网络
  6. Pytorch中DNN入门思想及实现
  7. 1646. 获取生成数组中的最大值
  8. leetcode 1074. 元素和为目标值的子矩阵数量(map+前缀和)
  9. leetcode537. 复数乘法
  10. 蓝牙调试工具如何使用_使用此有价值的工具改进您的蓝牙项目:第2部分!