ROS學習話題通信之Python實現

與上一篇C++實現同理 下面給出相關的Python實現代碼

關于py文件的 talker:(demo01_talker_str_py

import rclpy
from rclpy.node import Node
from std_msgs.msg import Stringclass Talker(Node):def __init__(self):super().__init__("talker_node_py")self.get_logger().info("sender create!")self.publisher = self.create_publisher(String,"chatter",10)self.timer = self.create_timer(1.0,self.on_timer)self.count = 0def on_timer(self):message = String()message.data = "hello world!" + str(self.count)self.publisher.publish(message)self.count += 1self.get_logger().info("publish:%s"% message.data)def main():rclpy.init()rclpy.spin(Talker())rclpy.shutdown()if __name__ == '__main__':main()

Listen:(semo02_listener_str_py

import rclpy
from rclpy.node import Node
from std_msgs.msg import String
class Listener(Node):def __init__(self):super().__init__("listener_node_py")self.get_logger().info("subscribution!")self.subscirption = self.create_subscription(String,"chatter",self.do_cb,10)def do_cb(self,msg):self.get_logger().info("訂閱數據:%s"%msg.data)def main():rclpy.init()rclpy.spin(Listener())rclpy.shutdown()if __name__ == '__main__':main()

package.xml:

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3"><name>py01_topic</name><version>0.0.0</version><description>TODO: Package description</description><maintainer email="xwh@todo.todo">xwh</maintainer><license>TODO: License declaration</license><depend>rclcpp</depend><depend>std_msgs</depend><depend>baseinterfaces</depend><test_depend>ament_copyright</test_depend><test_depend>ament_flake8</test_depend><test_depend>ament_pep257</test_depend><test_depend>python3-pytest</test_depend><export><build_type>ament_python</build_type></export>
</package>

setup.py:

from setuptools import find_packages, setuppackage_name = 'py01_topic'setup(name=package_name,version='0.0.0',packages=find_packages(exclude=['test']),data_files=[('share/ament_index/resource_index/packages',['resource/' + package_name]),('share/' + package_name, ['package.xml']),],install_requires=['setuptools'],zip_safe=True,maintainer='xwh',maintainer_email='xwh@todo.todo',description='TODO: Package description',license='TODO: License declaration',tests_require=['pytest'],entry_points={'console_scripts': ['demo01_talker_str_py = py01_topic.demo01_talker_str_py:main','demo02_listener_str_py = py01_topic.demo02_listener_str_py:main'],},
)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909662.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909662.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909662.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring MVC 入門案例:從代碼到原理的深度剖析

一、引言 Spring MVC 是一種基于 Java 的實現了 MVC 設計模式的請求驅動類型的輕量級 Web 框架&#xff0c;它為開發 Web 應用提供了強大而靈活的解決方案。本文將通過一個簡單的 Spring MVC 入門案例&#xff0c;詳細介紹其工作流程&#xff0c;幫助讀者深入理解 Spring MVC …

零基礎學前端-傳統前端開發(第四期-JS基礎-數組)

注&#xff1a;JS文章流程為&#xff1a;數據類型>>運算>>語法&#xff0c;語句>>對象>>數組>>函數>>類 什么是數組&#xff1a;數組是一種非常常用的數據結構&#xff0c;用于存儲一組有序的值。這些值可以是數字、字符串、對象&#xff…

深入理解 Docker 及常用命令

在云計算與容器化技術飛速發展的今天&#xff0c;Docker 已成為開發者必備的核心技能。本文將從底層原理到實戰操作&#xff0c;系統梳理 Docker 的核心知識體系&#xff0c;結合大量實操案例幫助讀者快速掌握容器化部署的全流程。 一、Docker 核心概念與底層原理 1.1 容器技…

【衛星通信】衛星與5G深度融合的架構研究——釋放非地面網絡潛能,構建全球無縫連接【3GPP TR 23.700-19 V0.1.0 (2025-04)】

引言 隨著5G網絡部署的持續推進&#xff0c;衛星通信在覆蓋偏遠地區、保障應急通信等場景中的重要性日益凸顯。3GPP Technical Report&#xff08;TR&#xff09;23.700-19 V0.1.0&#xff08;2025-04&#xff09;作為Release 20階段的最新研究成果&#xff0c;系統性地探討了…

kicad運行時出錯,_Pnext->_Myproxy = nullptr;訪問內存出錯

花費了比較長的時間&#xff0c;解決了編譯過程中遇到的許多問題后&#xff0c;終于把這個開源的工程編譯好了&#xff0c;運行post build 腳本將需要的鏈接文件拷貝好。正當我以為沒有任何問題了&#xff0c;雙擊可執行程序運行。 結果運行起來的時候報錯了&#xff0c;提示無…

資深Java工程師的面試題目(一)并發編程

以下是幾道針對Java并發編程的面試題&#xff0c;涵蓋基礎知識、高級概念和實際應用場景&#xff0c;適合資深Java工程師的面試評估&#xff1a; 1. 線程池與任務調度 題目: 描述Java線程池的核心參數&#xff08;如corePoolSize、maximumPoolSize、keepAliveTime等&#xff…

解決Spark4.0.0依賴問題

Apache Spark 4.0.0 沖突解決指南 1. 問題背景 在嘗試運行一個基于 Apache Spark 4.0.0 的 Java 應用程序。根據 Spark 4.0.0 的發布說明&#xff0c;該版本默認支持 Scala 2.13 和 JDK 17。在初始設置和運行過程中&#xff0c;遇到了以下主要問題&#xff1a; 依賴沖突 (PO…

什么是SeaTunnel

SeaTunnel&#xff1a;高性能、分布式數據集成平臺 1. 什么是SeaTunnel&#xff1f; SeaTunnel&#xff08;原名Waterdrop&#xff09;是一個高性能、分布式、可擴展的數據集成平臺&#xff0c;專為大規模數據同步、ETL&#xff08;Extract, Transform, Load&#xff09;和實…

Android 使用OkHttp 下載文件失敗問題定位和修復

一、背景 使用Okhttp下載文件時,存在失敗情況,剛開始以為是網絡問題,后面添加相關日志發現,是在網絡波動比較大的情況下,被判為timeout超時,結束了下載任務。 二、解決方案 有問題的下載配置寫法: 注:這里只是展示配置下載的關鍵代碼 val client OkHttpClient()val request…

【Docker基礎】Docker核心概念:命名空間(Namespace)之PID詳解

目錄 引言 1 基礎概念回顧 1.1 命名空間概述 1.2 命名空間的類型 2 PID命名空間詳解 2.1 PID命名空間的概念 2.2 PID命名空間的作用 2.3 PID命名空間的工作原理 2.3.1 PID命名空間的創建與銷毀 2.3.2 PID命名空間的層次結構 2.3.3 PID命名空間的進程ID映射 3 PID命…

SSM框架:企業級Java開發利器

SSM框架詳解&#xff1a;Java企業級開發的核心基石 SSM框架是Java企業級開發中最流行的框架組合&#xff0c;由Spring、Spring MVC和MyBatis三大框架整合而成。這個輕量級的框架組合為Java開發者提供了高效、靈活的企業級應用解決方案。 一、SSM框架組成解析 1. Spring框架 …

網絡安全中的人工智能應用

人工智能&#xff08;AI&#xff09;在網絡安全中的應用從根本上改變了企業抵御網絡威脅的方式。它利用先進的機器學習&#xff08;ML&#xff09;算法分析多源海量風險數據&#xff0c;挖掘威脅模式&#xff0c;從而更輕松地快速應對新興風險。AI 能以驚人的速度和準確性幫助發…

Vue + Spring Boot 前后端交互實踐:正確使用 `Content-Type: application/json` 及參數傳遞方式

在前后端分離開發中&#xff0c;前端通過 HTTP 請求與后端進行數據交互是常見的操作。其中&#xff0c;Content-Type 是決定請求體格式的重要字段之一。本文將以一個具體的例子出發&#xff0c;講解如何在 Vue 前端 使用 Axios 發送 JSON 格式請求&#xff0c;并在 Spring Boot…

微服務拆分 SpringCloud

拆分原則 什么時候拆分 大多數小型項目&#xff1a; 一般是先采用單體架構&#xff0c;隨著用戶規模擴大、業務復雜后再逐漸拆分為微服務架構&#xff08;前易后難&#xff09;。確定的大型項目&#xff1a; 資金充足&#xff0c;目標明確&#xff0c;可以直接選擇微服務架構…

DataX Hive寫插件深度解析:從數據寫入到Hive表關聯實戰

引言 在大數據處理流程中&#xff0c;將數據高效寫入Hive表是數據倉庫建設的關鍵環節。DataX作為阿里巴巴開源的數據同步工具&#xff0c;其Hive寫插件&#xff08;Hdfswriter&#xff09;提供了將數據寫入HDFS并與Hive表無縫關聯的能力。本文將系統介紹Hdfswriter的功能特性、…

基于國產USRP搭建十六通道同步采集系統, 耗費200萬 歡迎免費體驗

隨著無線通信、雷達探測和電子偵察等技術的發展&#xff0c;多通道信號同步采集的需求日益突出。我司基于8臺USRP-LW N321設備&#xff0c;構建了一套高精度十六路通道信號同步采集系統&#xff0c;該系統通過并行采集與精確時頻對齊&#xff0c;可為空間譜測向和MIMO系統等關鍵…

《前端編譯工具源映射配置:Webpack與Gulp的深度剖析》

當我們深入探索不同前端編譯工具時&#xff0c;Webpack與Gulp在源映射配置上的差異與特色&#xff0c;如同隱藏在代碼深處的神秘寶藏&#xff0c;等待我們去挖掘、去解讀。 Webpack作為現代前端構建的核心工具&#xff0c;在源映射配置方面展現出了高度的靈活性與可定制性。它…

4. 時間序列預測的自回歸和自動方法

4.1自回歸 自回歸是一種時間序列預測方法&#xff0c;僅依賴于時間序列的先前輸出&#xff1a;該技術假設下一個時間戳的未來觀測值與先前時間戳的觀測值存在線性關系。 在自回歸中&#xff0c;前一個時間戳的輸出值成為預測下一個時間戳的輸入值&#xff0c;并且誤差遵循簡單線…

Android 多屏幕旋轉控制原理與實戰

在嵌入式設備、雙顯示終端或定制系統中&#xff0c;Android 多屏幕控制&#xff08;尤其是屏幕方向旋轉&#xff09;是一個兼具挑戰與價值的功能模塊。本文將深入分析如何識別多個顯示、如何通過系統 API 控制旋轉&#xff0c;并討論為何某些 displayId 無法旋轉。 &#x1f4c…

faiss上的GPU流程,GPU與CPU之間的聯系

GPU使用流程 1、初始化階段 1.1:初始化GPU資源對象 目的: 為GPU上的操作分配和管理資源,例如臨時內存和CUDA流。 操作: 創建StandardGpuResources對象來管理GPU的內存和計算資源。例如: faiss::gpu::StandardGpuResources res; res.setTempMemory(1024 * 1024 * 512); …