【RK3399Pro学习笔记】七、ROS订阅者Subscriber的编程实现
目录
- 如何实现一个订阅者
- C++
- 编写程序
- 配置CMakeLists.txt
- 编译并运行发布者
- python
- 创建并编写脚本
- 运行
平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro
固件版本:Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615
记录自【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程 —— 古月居GYH P11 11.订阅者Subscriber的编程实现
如何实现一个订阅者
- 初始化ROS节点;
- 订阅需要的话题;
- 循环等待话题消息,接收到消息后进入回调函数;
- 在回调函数中完成消息处理。
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的编程实现相关推荐
- ROS学习笔记七:使用rqt_console和roslaunch
ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码
吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...
- websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...
- 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
[K210]K210学习笔记七--使用K210拍摄照片并在MaixHub上进行训练 前言 K210准备工作 K210如何拍摄照片 准备工作 拍摄相关代码定义 用K210拍摄到的照片在MaixHub平台 ...
- window的dos命令学习笔记 七
文章目录 一.dos历史学习笔记(后期整合到这里,我想能学到这里的应该不多了,嘿嘿,加油) 二.执行状态返回值(`%errorlevel%`,和shell中`$?`相似): 三.视窗 1.color ...
- ROS学习笔记(十)——ROS试用练习(一)
ROS学习笔记(十)--ROS试用练习 在此说明:之前使用的ROS是indigo,前两天电脑"炸"了,所以换了kinetic. 一.ROS文件系统导览 1.1如果你想找到turtl ...
- ESP32学习笔记(七) 复位和时钟
ESP32学习笔记(七) 复位和时钟 目录: ESP32学习笔记(一) 芯片型号介绍 ESP32学习笔记(二) 开发环境搭建 VSCode+platformio ESP32学习笔记(三) 硬件资源介绍 ...
最新文章
- 《大道至简》一书第三版,与编辑就本书写作风格的讨论
- mysql8安装错误_Windows安装MySQL8.0.16 的步骤及出现错误问题解决方法
- android 如何终止线程
- # javascript 总结
- Redis 中的过期元素是如何被处理的?「视频版」——面试突击 002 期
- python unittest断言_python接口自动化(二十四)--unittest断言——中(详解)
- JavaScript HTML DOM 1
- iOS 知名公司资讯汇集~招聘内推
- P1_M4_L5 Lateral Dynamic Bicycle Model(自行车模型的横向动力学建模)
- Mongodb分组查询
- 完全卸载 HP 打印机
- [UE4]射击产生弹孔:Spawn Decal At Location、Spawn Decal Attached
- 记一次互联网寒冬下的阿里面试总结
- 计算机组成及原理ppt课件,计算机组成原理第五章课件.ppt
- python实训名片管理程序_python实现名片管理系统
- web前端学习路线-20个真实web开发项目集合
- 计算机系统中常用的进制,计算机中常用 二进制 八进制 十进制 十六进制的特点...
- linux 安装docker简易方法
- 南邮 OJ 1531 A ? Sixth Grade Math
- 【干货分享】最新WHQL徽标认证申请流程