【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的编程实现

如何实现一个订阅者

  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

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP中变量类型的判断

PHP中变量类型的判断 一、gettype() gettype 会根据 参数类型返回下列值 “boolean”&#xff08;从 PHP 4 起&#xff09; “integer” “double”&#xff08;如果是 float 则返回“double”&#xff0c;而不是“float”&#xff09; “string” “array” “object”…

SqlServer优化:当数据量查询不是特别多,但数据库服务器的CPU资源一直100%时,如何优化?...

最近和同事处理一个小程序&#xff0c;数据量不是特别大&#xff0c;某表的的数据记录&#xff1a;7000W条记录左右&#xff0c;但是从改别执行一次查询时&#xff0c;却发现查询速度也不快&#xff0c;而且最明显的问题就是CPU100%。 sql语句&#xff1a; select gridid,lng,l…

【RK3399Pro学习笔记】八、ROS话题消息的定义与使用

目录自定义话题消息定义msg文件在package.xml中添加功能包依赖在CMakeLists.txt添加编译选项编译结果使用C编写程序person_publisher.cppperson_subscriber.cpp配置CMakeLists.txt编译并运行python编写程序person_publisher.py运行平台&#xff1a;华硕 Thinker Edge R 瑞芯微 …

【RK3399Pro学习笔记】九、ROS客户端Client的编程实现

目录如何实现一个客户端C创建功能包编写程序配置CMakeLists.txt编译并运行python创建并编写脚本运行平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | 一学就会的…

(原创)UML要点总结

今天我们总结要点&#xff1a; 我们就从这张图慢慢讲。 一。类图部分 基础&#xff1a; 类图→长方形表示。类名在最上栏&#xff0c;下面是数据&#xff0c;第三栏是方法。其存在两种关系&#xff1a;关联和泛化 属性&#xff1a; 全形&#xff1a; 可见性 名&#xff1a;类…

Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/46290985 Container技术&#xff1a; 传统的虚拟化技术&#xff1a; 通过对硬件层模拟&#xff0c;从而实现了能够在一套硬件上面运行多个操作…

【RK3399Pro学习笔记】十、ROS服务端Server的编程实现

目录如何实现一个服务器C编写程序配置CMakeLists.txt编译并运行python创建并编写脚本运行平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | 一学就会的ROS机器人入…

【RK3399Pro学习笔记】十一、ROS服务数据的定义与使用

目录自定义服务数据定义srv文件在package.xml中添加功能包依赖在CMakeLists.txt添加编译选项编译生成语言相关文件使用C编写程序person_server.cppperson_client.cpp配置CMakeLists.txt编译并运行python编写程序person_server.pyperson_client.py运行平台&#xff1a;华硕 Thin…

Windows server 2012 之路由功能

今天给大家介绍的是Windows服务器的软路由功能&#xff0c;那么什么事软路由呢&#xff1f;软路由&#xff1a;就是将Windows 系统配置成一个路由器下面我们通过一个示例来给大家介绍软路由先说一下实验环境&#xff0c;三台服务器&#xff0c;server02&#xff08;ip地址为192…

【51单片机快速入门指南】8:看门狗定时器(WDT)

目录硬知识测试程序main.c现象普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《STC89C52系列单片机器件手册》 适用型号: STC89C51,STC89C52,STC89C53,STC89C14,STC89LE51,STC89LE52,STC89LE53,STC89LE14,STC89C54,…

[转]带花树,Edmonds's matching algorithm,一般图最大匹配

看了两篇博客&#xff0c;觉得写得不错&#xff0c;便收藏之。。 首先是第一篇&#xff0c;转自某Final牛 带花树……其实这个算法很容易理解&#xff0c;但是实现起来非常奇葩&#xff08;至少对我而言&#xff09;。 除了wiki和amber的程序我找到的资料看着都不大靠谱 比如昨…

firstVue

这是生成的第一个VUE的列子&#xff0c;目录如上所示。config目录里主要表示配置目录&#xff0c;包括端口号等&#xff0c;其中配置文件中dev.env.js&#xff0c;出现了webpack-merge模块&#xff0c;可以把分开配置的config合并&#xff0c;分开生产环境和调试环境 node_modu…

【51单片机快速入门指南】9:省电模式(低功耗)

目录硬知识实验正常工作掉电模式空闲模式普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《STC89C52系列单片机器件手册》 仅支持掉电模式&#xff0c;不支持空闲模式 STC89C52系列单片机可以运行2种省…

HAproxy部署配置

HAproxy部署配置 拓扑图 说明&#xff1a; haproxy服务器IP&#xff1a;172.16.253.200/16 &#xff08;外网&#xff09;、192.168.29.140/24&#xff08;内网&#xff09; 博客服务器组IP&#xff1a;192.168.29.130/24、192.168.29.131/24 网站服务器组IP&#xff1a;192.16…

Javascript验证上传图片大小[前台处理]

2019独角兽企业重金招聘Python工程师标准>>> 需求分析&#xff1a; 在做上传图片的时候&#xff0c;如果不限制上传图片大小&#xff0c;后果非常的严重。那么我们怎样才可以解决一个棘手的问题呢&#xff1f;有两种方式&#xff1a; 1)后台处理&#xff1a; 也就是…

【RK3399Pro学习笔记】十二、ROS参数的使用与编程方法

目录创建功能包参数命令行使用YAML参数文件rosparamC编写程序配置CMakeLists.txt编译并运行python编写程序运行平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | …

Yii2.0 ActiveForm Input Fields

2019独角兽企业重金招聘Python工程师标准>>> 之前5月学习Yii2的时候发现的一个不错的博客内容&#xff0c;这里转载保存。 Use the namespace For ActiveForm Active Form Begin And End Text Input Field TextArea Field Password Input Field HTML5 Email I…

【RK3399Pro学习笔记】十三、ROS中的坐标系管理系统

目录TF功能包能干什么&#xff1f;TF坐标变换如何实现&#xff1f;例程view_framestf_echorviz平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 记录自【古月居】古月ROS入门21讲 | 一学就会的ROS机…

本地搭建wp,更新升级时需要ftp的解决办法

https://jingyan.baidu.com/article/fd8044fa2e7af35031137af2.html 本地安装完mysql&#xff0c;php&#xff0c;apache后&#xff0c;进行了wordpress的安装。安装完wordpress&#xff0c;发现wordpress已经有了新版本&#xff0c;点击“立即更新”后却跳转到一个填写ftp地址…

【RK3399Pro学习笔记】十四、ROS中tf坐标系广播与监听的编程实现

目录创建功能包如何实现一个tf广播器创建tf广播器代码&#xff08;C&#xff09;如何实现一个tf监听器创建tf监听器代码&#xff08;C&#xff09;配置编译规则编译并运行python编写程序turtle_tf_broadcaster.pyturtle_tf_listener.py运行平台&#xff1a;华硕 Thinker Edge R…