ROS学习笔记12(用Python写一个简单的消息发布和消息订阅)

ROS发布/订阅Float64MultiArray数组类消息(C++和Python相互发布和订阅) 再次领略了ROS系统一个很好的特性,能兼容不同语言的节点,只要规范好发布信息的类型是匹配的,就能让不同语言编写的节点互相通信。 Target: 想让python写的node发布数组,而让C++写的node订阅这个发布的数据。 Method: 1.Python发布,C++订阅 1)先选择发布消息的类型,选定为Float64MultiArray 2)然后是python节点的代码: #!/usr/bin/env python # encoding: utf-8 # Echo client program im 阅读详情

1 写一个消息发布节点

$ roscd beginner_tutorials
$ mkdir scripts
$ cd scripts

创建一个talker.py:

#!/usr/bin/env python
# Software License Agreement (BSD License)
#
# Copyright (c) 2008, Willow Garage, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
#  * Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#  * Redistributions in binary form must reproduce the above
#    copyright notice, this list of conditions and the following
#    disclaimer in the documentation and/or other materials provided
#    with the distribution.
#  * Neither the name of Willow Garage, Inc. nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# Revision $Id$

## Simple talker demo that published std_msgs/Strings messages
## to the 'chatter' topic

import rospy
from std_msgs.msg import String

def talker():
    pub = rospy.Publisher('chatter', String, queue_size=10)
    rospy.init_node('talker', anonymous=True)
    rate = rospy.Rate(10) # 10hz
    while not rospy.is_shutdown():
        hello_str = "hello world %s" % rospy.get_time()
        rospy.loginfo(hello_str)
        pub.publish(hello_str)
        rate.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

添加可执行权限

$ chmod +x talker.py

2 写一个消息订阅节点

创建一个listener.py:

#!/usr/bin/env python
# Software License Agreement (BSD License)
#
# Copyright (c) 2008, Willow Garage, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
#  * Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#  * Redistributions in binary form must reproduce the above
#    copyright notice, this list of conditions and the following
#    disclaimer in the documentation and/or other materials provided
#    with the distribution.
#  * Neither the name of Willow Garage, Inc. nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# Revision $Id$

## Simple talker demo that listens to std_msgs/Strings published 
## to the 'chatter' topic

import rospy
from std_msgs.msg import String

def callback(data):
    rospy.loginfo(rospy.get_caller_id() + 'I heard %s', data.data)

def listener():

    # In ROS, nodes are uniquely named. If two nodes with the same
    # name are launched, the previous one is kicked off. The
    # anonymous=True flag means that rospy will choose a unique
    # name for our 'listener' node so that multiple listeners can
    # run simultaneously.
    rospy.init_node('listener', anonymous=True)

    rospy.Subscriber('chatter', String, callback)

    # spin() simply keeps python from exiting until this node is stopped
    rospy.spin()

if __name__ == '__main__':
    listener()

添加可执行权限:

$ chmod +x listener.py

3 构建节点

仍然,我们使用CMake来构建我们的python节点:

$ cd ~/catkin_ws
$ catkin_make

ref:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber(python)

ROS2学习笔记之编写Python发布订阅节点篇 ROS2学习笔记之编写Python发布订阅节点篇背景前期准备学习内容1. 创建Python功能包2. 编写发布节点2.1 代码解释2.2 添加依赖2.3 添加发布者程序入口2.4 检查setup.cfg3. 编译订阅者3.1 代码解释3.2 添加订阅者程序入口4. 编译运行节点总结 学习目标:通过Python实现编写并运行发布订阅节点 背景 在本篇教程当中,我们编写两个节点通过话题的方式进行字符串... 阅读详情

相关推荐

用Python实现ROS节点(编写简单的消息发布器和订阅器)

https://blog.csdn.net/sk950425/article/details/81737170 编写一个简单的发布器和订阅器 1.创建工作空间 建立文件夹hello_rospy,再在该目录下建立子目录src,cd到该src目录,运行如下命令创建工作包 catkin_create_pkg beginner_tutorials std_msgs rospy roscpp 2...

sk950425的博客 9231

ros学习笔记12——python实现发布和接收ros topic

这里就需要CMakeList.txt文件和package.xml文件工程架构。

耶律大石的博客 6370

ROS在同一节点同时订阅和发布消息

ROS版本: ROS Kinetic 操作系统:Ubuntu16.04 LTS 方法一,采用类的方法 参考网站 https://blog.csdn.net/ethan_guo/article/details/80226121 当然也可以用python 实现,我们与例程中的方法为例,这里只谈如何实现在类的订阅并讨论其机制。telker代码不变: #!/usr/bin/env python # lic...

weixin_41425527的博客 5030

ros python发布消息

#!/usr/bin/env python # -*- coding: utf-8 -*- ######################################################################## #### Copyright 2020 GuYueHome (www.guyuehome.com). ### #############################################################.

BAIFOL的博客 810

ROS(一) 写自己的节点

1、创建一个工作空间$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace最后一行效果:在src下创建了一个CMakeLists.txt文件 2、创建一个包$ cd ~/catkin_ws/src $ catkin_create_pkg beginner_tutorials std_msgs rospy ro

weewqrer的博客 3758

带你了解如何分析Jmeter监听器常用图表并定位瓶颈

1.1 Jmeter监听器常用图表 目录 1.1 Jmeter监听器常用图表 1.1-1 查看结果树 1.1-2 汇总报告 1.1-3 集合报告 1.1-4 综合图 1.1-5 断言结果 1.1-6 图形结果 1.1-7 响应时间图 1.2 Jmeter性能瓶颈定位 1.2-1 性能瓶颈产生的原因 1.2-2 性能瓶颈的解决方法 1.2-3 性能瓶颈如何定位 1.1-1 查看结果树 查看结果树:调试利器。可以查看每个请求具体的详情,方便进行测试的比对。有点类似我...

weixin_49029722的博客 4450

python ros发布与订阅_ROS入门(十一)--- 写一个简单的消息发布器和订阅器 (Python)...

Writing the Publisher Node"Node" is the ROS term for an executable that is connected to the ROS network. Here we'll create the publisher ("talker") node which will continually broadcast a message.Chan...

weixin_36378832的博客 604

Meta DINOv3实战指南:如何用7B参数ViT模型提升你的视觉任务性能(附Hugging Face部署教程)

本文提供了Meta DINOv3 7B参数ViT模型的实战部署指南。文章详细解析了该自监督视觉模型的优势,并重点演示了如何在Hugging Face平台上高效加载这一大规模模型,同时给出了图像分类、语义分割等下游任务的性能提升技巧与代码示例,帮助开发者在实际视觉任务中应用这一前沿技术。

pz89012345的博客 324

ROS话题通信案例(一)——发布者订阅者传递消息(C++)

参考视频:【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程_哔哩哔哩_bilibili 参考文档:http://www.autolabor.com.cn/book/ROSTutorials/ 话题通信实现模型是比较复杂的,该模型如下图所示,该模型中涉及到三个角色: ROS Master (管理者) Talker (发布者) Listener (订阅者) ROS M...

蔡军帅 2019

从零打造音乐会级特雷门琴:原理、设计与调试全解析

电子乐器的工作原理通常基于信号生成与调制。特雷门琴作为世界上最早的电子乐器之一,其核心原理是利用射频振荡器和电容传感,将演奏者的手势变化转化为音高与音量信号。这种技术通过外差式混频实现音高控制,并利用压控放大器实现细腻的音量动态,其工程价值在于将抽象的空间位置信息精确映射为连续的音频参数。在音乐制作、声音艺术和交互装置等领域,这类技术为创造独特的演奏体验提供了基础。本文聚焦于如何从电路层面实现一台高稳定性的特雷门琴,详细阐述了从LC振荡器设计、天线场形优化到音色混合检波等关键环节,并分享了基于LTspice

weixin_34046298的博客 170

基于STM32的多参数水质检测仪系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6主控,搭配pH、TDS、浊度、水温四大核心水质检测模块,完整实现了多参数水质检测仪的全流程开发,从多通道ADC采集、数字滤波、温度补偿、专业校准、阈值报警到人机交互,全流程无跳步保姆式拆解,配套逐行注释可直接编译的开源代码,新手跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 484

navfn规划器源码介绍

navfn规划器源码介绍

weixin_44573934的博客 525

玩转ubuntu18 --机器视觉方面(yolo算法识别及摄像头和cmake问题解决)

玩转ubuntu18 --机器视觉方面(yolo v3算法识别) 1.YOLO的简介 工作原理 先前的检测系统重新调整分类器或本地化器以执行检测。他们将模型应用于多个位置和比例尺的图像。图像的高分区域被视为检测。 我们使用完全不同的方法。我们将单个神经网络应用于整个图像。该网络将图像划分为区域,并预测每个区域的边界框和概率。这些边界框按预测概率加权。 我们的模型比基于分类器的系统具有几个优势。它在测试时间查看整个图像,因此其预测由图像中的全球上下文提供信息。它还通过单一网络评估进行预测,这与R-CNN等系统

qq_53951823的博客 1556

ros订阅话题python_ROS学习笔记12(用Python写一个简单的消息发布和消息订阅)

#!/usr/bin/env python# Software License Agreement (BSD License)## Copyright (c) 2008, Willow Garage, Inc.# All rights reserved.## Redistribution and use in source and binary forms, with or without# mo...

weixin_33669611的博客 235

开发具有情感分析能力的AI Agent

本文将深入探讨开发具有情感分析能力的AI Agent的各个方面。我们将首先介绍情感分析的基础知识,包括定义、背景和应用领域。接着,我们将详细讲解情感分析的核心概念、数据处理方法和算法原理。随后,文章将展示如何设计情感分析系统架构,并进行项目实战,包括环境安装、源代码实现和案例分析。最后,我们将总结最佳实践和注意事项,为读者提供进一步学习的资源。情感分析(Sentiment Analysis),也称为意见挖掘,是自然语言处理(NLP)的一个分支。

SuperAGI2025 1146

OSG程序如何适配在无显卡的Ubuntu系统中

osg踩坑,希望遇到同样问题的人,可以尽快出坑,完美开发

大侠的后花园 459

ROS写一个简单的消息发布器和订阅器 (Python) 最后留坑

@TOC 写一个发布器节点 节点就是一个可以用来联入Ros网络的单位, 我们现在来写个发布器节点, 它会在整个ROS网络里广播信息. 确认setup catkin workdpace 以后, 进入beginner_tutorial程序包 roscd beginner_tutorials The Code 用script文件夹来保存我们发布器的功能脚本源码 mkdir scripts cd scripts 下载官网的脚本, 并且给执行权(chmod +x talker.py) wget https://r

GungnirsPledge的博客 1141

【2024遥感应用组一等奖】基于风云四号卫星的小时级大气气溶胶和颗粒物监测

最后,比较AGRI观测反射率和查找表计算的反射率反演得到的1小时分辨率AOD数据。然后,使用广泛应用的MODIS DT和DB产品进行对比,图 5显示了它们逐像元尺度的对比,AGRI LaGA算法可以捕捉亚洲地区AOD高低值空间分布格局,比如南亚次大陆、中南半岛、塔克拉玛干沙漠和华北平原是AOD高值区域(平均AOD高于0.3),中国西北、中国南方、中国东北和韩国地区为AOD中值地区(平均AOD在0.2到0.3之间),北纬45度以上以及日本地区为AOD低值区域(平均AOD小于0.2),与全球平均AOD值接近。

JData_Engineer的博客 373

ROS学习笔记(一)补充篇 参考创客制造

我吧ROS的CPP部分分成7个部分: 1、基础的node param 2、动态调节参数 3、关于TF变换 4、actionlib 5、插件技术 6、movebase 7、nodelet技术前言相比于ros学习笔记一,ros学习笔记一补充篇将会更加注重代码的讲解。ros学习笔记一只是像大观园一样,看看ROS这个领域的山山水水。而ros学习笔记一补充篇将会深入的补充这些山山水水的来源节点n

DavidHan008 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ROS-写一个简单的消息发布器与订阅器(Python)(roswiki初级教程rospy部分翻译以及程序注释)

Topic通信机制---编写简单的Publisher & Subscriber http://wiki.ros.org/cn/ROS/Tutorials/WritingPublisherSubscriber%28python%29 (可参考创客智造中的教程https://www.ncnynl.com/category/ros-python/) "talker"节点发布信息在主题...

芃晟的博客 4808

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ROS-python实现简单的消息发布器和订阅器

因为着急做出东西来糊弄人,所以ROS的wiki看得马马虎虎一目十行,今天有些时间,仔细读了一下tutorials,对ROS有了一种恍然大明白的感觉,记录一下: 1,首先要建一个工作空间,这个先不表了 2,其次要创建一个package,一个完整的程序包是这样的my_package/ CMakeLists.txt package.xml 。这个程序包的路径注意下,在cd ~/das

贾金金金昭的blog 4528

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ROS入门教程 (写一个简单的消息发布器和订阅器 (Python))

Note:This tutorial assumes that you have completed the previous tutorials:创建ROS消息和ROS服务. Description:本教程将通过Python编写一个发布器节点和订阅器节点。 1. 写发布节点 “节点”是连接到ROS网络的可执行文件的ROS术语。在这里,我们将创建发布者(“talker”)节点,该节点将...

qq_42041303的博客 1638

ros消息发布和订阅(python和C++)

ROS传递图像消息(C++) // Use the image_transport classes instead. #include <ros/ros.h> #include <image_transport/image_transport.h> void imageCallback(const sensor_msgs::ImageConstPtr& msg) ...

windistance的博客 3515

树莓派开发板--Linux系统--ROS环境--实现一个简单的消息发布器和订阅器

简单的说就是,在ROS系统中利用话题实现两个子程序之间的信息传递。 举例子说,就好像某条电话线路中,A在一头说话,B在另一头接听,当B听到A发送的他可以理解的消息时,做出对应的行为。(例子可能不太恰当,编程功能各种各样,只是一个简单的举例吧,请见谅哈!)下面入正题。通过我的编程步骤,记录一下我是如何实现消息发布器和订阅器的。1.编程环境与平台信息:树莓派开发板2代 Linux操作系统 实验室牛

u011957515的博客 1573

【ROS】手写消息发布器和订阅器(Python版)

Python进行手写简单的ROS发布器和订阅器

丑小鸭 1827

编写 ROS 消息发布订阅器(五)

编写 ROS 消息发布订阅器

qq_46506007的博客 1689
上一篇: ROS学习笔记11(用C++写一个简单的消息发布和消息订阅)
下一篇: ROS学习笔记13(测试一个简单的消息发布和消息订阅)
刘凯KAI
博客等级 码龄15年 663粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值