news 2026/5/31 21:59:31

用python写一个ros话题发布和订阅(launch启动节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用python写一个ros话题发布和订阅(launch启动节点

所用rosrun启动节点的有两个不方便的地方:
(1)先要运行roscore
(2)一个终端只能运行一个节点
所以下面用roslaunch运行以下
1、在功能包下创建scripts文件夹,在该文件夹下创建publish.py文件,代码输入

#! /usr/bin/env python3 import rospy from std_msgs.msg import String def talk(): pub=rospy.Publisher("chatter",String,queue_size=10) rospy.init_node("hel") rate=rospy.Rate(1) while not rospy.is_shutdown(): str="hi,world~" pub.publish(str) rate.sleep() #的防护 if __name__=="__main__": talk()
在创建一个subscribe.py文件,输入以下代码
#! /usr/bin/env python3 import rospy from std_msgs.msg import String def fff(num): rospy.loginfo("I heaerd %s",num.data) def listen(): rospy.init_node("hear") rospy.Subscriber("chatter",String,fff) rospy.spin() if __name__=="__main__": listen()

2、在功能包目录下新建一个roslaunch文件夹,新建一个listener.launch文件
输入以下代码

<launch> <node pkg="topics" type="publish.py" name="hel" output="log" respawn="true"/> <node pkg="topics" type="subscribe.py" name="hear" output="screen" respawn="true"/> </launch> <!-- pkg=""(功能包名), type=""(可执行文件名,一般是创建的.py文件),name=""(节点名)--> <!--output=""(‘screen/log‘,输出在终端或者日志文件中,存放在~/.ros/log目录中)--> <!--respawn=""("true/false",节点结束后是否需要重启)-->

ok,运行代码不再需要roscore了,只要输入以下代码就可行了

source ./devel/setup.bash roslaunch topics listener.launch

另外,launch’文件中,respawn="true"是表示如果节点意外结束则需要重启节点,如下图,通过rosnode list可以看到运行的节点,我设置的发布节点是hel,订阅节点是hear。通过rosnode kill hear结束订阅节点后,左侧代码停止了一下又继续输出,再rosnode list查看运行的节点,hear仍然在运行
注:要记得写完保存以下(orz,忘了好多次)
如果开了新终端执行roslaunch前,先source ./devel/setup.bash一下,否则会变成下面的情况。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 22:43:28

基于PLC的城市智能交通灯三路口控制系统设计

摘要 可编程控制器(Programmable Logic Controller)简称PLC。是一种综合了通讯、自动控制和计算机技术发展而来的主要用于工业生产的自动控制系统。PLC运用数字运算操作系统&#xff0c;采用可编程序存储器&#xff0c;来于储存内部程序。执行逻辑运算、定时控制、顺序控制、计…

作者头像 李华
网站建设 2026/5/29 23:57:19

Android Compose 基础系列:您的第一个 Kotlin 程序

简介Kotlin 是一门现代、简洁、安全的编程语言&#xff0c;由 JetBrains 开发&#xff0c;并被 Google 作为 Android 官方首选语言。它可以与 Java 完美互操作&#xff0c;并支持跨平台开发&#xff0c;是现代 Android 开发的首选。&#x1f6e0;️ Kotlin 的主要用途✅ Androi…

作者头像 李华
网站建设 2026/5/30 17:34:48

BurpSuite工具HaE插件好用正则收集

0. 如何使用HaE HaE 主要由三块部分组成: Rules(规则信息管理):管理匹配特定信息的正则表达式 Config(配置信息管理):配置文件和忽略后缀名的管理 Databoard(数据集合面板):对匹配到的信息进行集中查询和管理 先说 Rules 规则信息管理,我们点击 Add ,界面如下: 通…

作者头像 李华
网站建设 2026/5/27 5:12:08

系统编程—线程的互斥与同步

线程的互斥和同步是多线程编程的核心问题&#xff0c;用于解决资源竞争和执行时序协调的问题&#xff0c;确保多线程程序的正确性、稳定性和可预测性。核心概念铺垫临界区&#xff08;Critical Section&#xff09;&#xff1a;多个线程共享的资源&#xff08;如全局变量、硬件…

作者头像 李华
网站建设 2026/5/25 8:40:51

解锁本地大模型推理性能:llama.cpp动态批处理实战指南

解锁本地大模型推理性能&#xff1a;llama.cpp动态批处理实战指南 【免费下载链接】llama.cpp Port of Facebooks LLaMA model in C/C 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 你是否遇到过这样的场景&#xff1f;当多个用户同时访问你的本地大模型…

作者头像 李华
网站建设 2026/5/31 1:31:29

【干货收藏】RAG分块策略全解析:7种方法提升大模型效果的实战指南

文章详解了RAG系统中提升效果的关键环节——分块(Chunking)策略&#xff0c;系统介绍了固定大小、语义、递归、文档、智能体、句子和段落七种主流分块方法&#xff0c;分析其优缺点与应用场景。实践建议从512 tokens搭配10-15%重叠率起步&#xff0c;优先采用递归和句子分块&am…

作者头像 李华