【ROS2】 核心概念2——功能包package

官方英文文檔:Creating a package — ROS 2 Documentation: Humble documentation

中文參考:古月ROS2 功能包講解 - 圖書資源

省流,就學習一個命令

ros2 pkg create --build-type <build-type> <package_name>

ROS2的重要概念

工作空間(Workspace)??:【ROS2 】工作空間(workspace)——ROS2核心概念1
??功能包(Package)??:解耦的功能代碼,一個workspace可有不同的編譯代碼(python、C++
??節點(Node)??:機器人的“工作細胞”,最小執行單元,負責單一功能(如傳感器驅動)。
??話題(Topic)??:節點間異步傳遞數據的“橋梁”,基于發布/訂閱模型(如傳感器數據流)。
??服務(Service)??:同步的“你問我答”機制,適用于需即時響應的短任務(如開關控制)。
??動作(Action)??:復雜行為的“流程管理”,支持長時間任務、反饋與取消(如導航到目標點)。
??通信接口(Interface)??:數據傳遞的“標準結構”,定義消息(.msg)、服務(.srv)、動作(.action)格式。
??參數(Parameter)??:機器人系統的“全局字典”,動態鍵值對配置(如超時時間、IP地址)。
??分布式通信(Distributed Communication)??:跨多計算平臺的“任務分配”,支持機器人集群協同工作。
??DDS(Data Distribution Service)??:ROS2底層的“神經網絡”,實現實時、可靠的通信中間件

功能包與workspace的關系

在源碼下,有多個子代碼,不同的編譯方式

workspace_folder/src/cpp_package_1/CMakeLists.txtinclude/cpp_package_1/package.xmlsrc/py_package_1/package.xmlresource/py_package_1setup.cfgsetup.pypy_package_1/...cpp_package_n/CMakeLists.txtinclude/cpp_package_n/package.xmlsrc/

功能包的創建

創建命令

ros2 pkg create --build-type <build-type> <package_name>
ros2 pkg create --build-type --help
  • pkg:表示功能包相關的功能;

  • create:表示創建功能包;

  • package_name:新建功能包的名字

  • build-type:說明

  • 可選值 {cmake,? ament_cmake,ament_python} 表示新創建的功能包是C++還是Python的,

    • ament_cmake:使用C++或者C,那這里就跟,如果

    • ament_python:使用Python,;

    • cmake:開發非ROS2的C/C++庫 → CMake(避免ROS2生態干擾)

擴展閱讀: ament

  • ament?原意為??植物的「柔荑花序」??(如柳絮),其特點是??多個小單元緊密連接成鏈狀結構??,隱喻ROS2構建系統將??多個獨立功能包串聯成完整應用??的過程。
  • 這一命名延續了ROS生態的「自然隱喻」風格(如ROS1的catkin意為「柳絮」?
Q1: 能否在ament_cmake包中混合Python代碼?
  • ? 可以,但需手動配置安裝規則(如ament_python自動處理更便捷)。
Q2: 為什么ament_python不需要CMakeLists.txt
  • 因為它使用setup.py替代了CMake的角色,通過setuptools管理構建流程。

?
案例:分別創建c++ 和python版本的功能包

cd ~/dev_ws/src # 自定義機器人工程的src庫
ros2 pkg create --build-type ament_cmake learning_pkg_c               # C++
ros2 pkg create --build-type ament_python learning_pkg_python # Python

c++ 創建后文件

python 創建后文件

編譯功能包

在創建好的功能包中,我們可以繼續完成代碼的編寫,之后需要編譯和配置環境變量,才能正常運行:

cd ~/dev_ws
colcon build   # 編譯工作空間所有功能包
source install/local_setup.bash

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

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

相關文章

Java內存對象實現聚合查詢

文章目錄 什么是聚合查詢excel表格演示插入透視表透視表操作 sql聚合查詢創建表和插入數據按照國家業務類型設備類型統計總銷量按設備類型統計總銷量 Java內存對象聚合查詢普通對象方式創建對象聚合查詢條件查詢方法調用方式結果 Record對象方式Recor對象創建對象聚合查詢條件查…

VSCode開發調試Python入門實踐(Windows10)

我的Windows10上的python環境是免安裝直接解壓的Python3.8.x老版本&#xff0c;可參見《Windows下Python3.8環境快速安裝部署。 1. 安裝VSCode 在Windows 10系統上安裝Visual Studio Code&#xff08;VS Code&#xff09;是一個簡單的過程&#xff0c;以下是詳細的安裝方法與…

Tomcat DOS漏洞復現(CVE-2025-31650)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 前…

使用Qt QAxObject解決Visual Fox Pro數據庫亂碼問題

文章目錄 使用Qt QAxObject解決Visual Fox Pro數據庫亂碼問題一、問題背景&#xff1a;ODBC讀取DBF文件的編碼困境二、核心方案&#xff1a;通過QAxObject調用ADO操作DBF1. 技術選型&#xff1a;為什么選擇ADO&#xff1f;2. 核心代碼解析&#xff1a;QueryDataByAdodb函數3. 連…

HTTP知識速通

一.HTTP的基礎概念 首先了解HTTP協議&#xff0c;他是目前主要使用在應用層的一種協議 http被稱為超文本傳輸協議 而https則是安全的超文本傳輸協議 本章節的內容首先就是對http做一個簡單的了解。 HTTP是一種應用層協議&#xff0c;是基于TCP/IP協議來傳遞信息的。 其中…

制作一款打飛機游戲26:精靈編輯器

雖然我們基本上已經重建了Axel編輯器&#xff0c;但我不想直接使用它。我想創建一個真正適合我們當前目的的編輯器&#xff0c;那就是編輯精靈&#xff08;sprites&#xff09;。這將是今天的一個大目標——創建一個基于模板的編輯器&#xff0c;用它作為我們實際編輯器的起點。…

mac下載homebrew 安裝和使用git

mac下載homebrew 安裝和使用git 本人最近從windows換成mac&#xff0c;記錄一下用homebrew安裝git的過程 打開終端 command 空格&#xff0c;搜索終端 安裝homebrew 在終端中輸入下面命令&#xff0c;來安裝homebrew /bin/bash -c "$(curl -fsSL https://raw.githu…

【LeetCode Hot100】圖論篇

前言 本文用于整理LeetCode Hot100中題目解答&#xff0c;因題目比較簡單且更多是為了面試快速寫出正確思路&#xff0c;只做簡單題意解讀和一句話題解方便記憶。但代碼會全部給出&#xff0c;方便大家整理代碼思路。 200. 島嶼數量 一句話題意 求所有上下左右的‘1’的連通塊…

《社交類應用開發:React Native與Flutter的抉擇》

社交類應用以令人目不暇接的速度更新迭代。新功能不斷涌現&#xff0c;從更智能的算法推薦到多樣化的互動形式&#xff0c;從增強的隱私保護到跨平臺的無縫體驗&#xff0c;每一次更新都旨在滿足用戶日益增長且多變的需求。面對如此高頻的更新需求&#xff0c;選擇合適的跨端框…

關于3D的一些基礎知識

什么是2D/3D? 2D&#xff08;二維&#xff09;和3D&#xff08;三維&#xff09;是描述空間維度的概念&#xff0c;它們的核心區別在于空間維度、視覺表現和應用場景。以下是詳細對比&#xff1a; 1. 定義與維度 ? 2D&#xff08;二維&#xff09; ? 定義&#xff1a;僅包…

大連理工大學選修課——機器學習筆記(7):集成學習及隨機森林

集成學習及隨機森林 集成學習概述 泛化能力的局限 每種學習模型的能力都有其上限 限制于特定結構受限于訓練樣本的質量和規模 如何再提高泛化能力&#xff1f; 研究新結構擴大訓練規模 提升模型的泛化能力 創造性思路 組合多個學習模型 集成學習 集成學習不是特定的…

嵌入式產品運行中數據丟失怎么辦?

目錄 1、數據丟失現象與根源分析 2、硬件層優化 3、系統/驅動層優化 4、應用軟件層優化 5、文件系統選型深度解析 5.1、NAND Flash 適用文件系統 5.2、eMMC 適用文件系統 6、系統掛載選項優化實踐 嵌入式系統在運行過程中&#xff0c;尤其是在涉及頻繁數據寫入&#xf…

第十一節:性能優化高頻題-響應式數據深度監聽問題

解決方案&#xff1a;watch的deep: true選項或watchEffect自動追蹤依賴 Vue響應式數據深度監聽與性能優化指南 一、深度監聽的核心方案 watch的deep: true模式 ? Vue2實現&#xff1a;需顯式聲明深度監聽配置 watch: {obj: {handler(newVal) { /* 處理邏輯 */ },deep: tru…

【Linux實踐系列】:進程間通信:萬字詳解命名管道實現通信

&#x1f525; 本文專欄&#xff1a;Linux Linux實踐項目 &#x1f338;作者主頁&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客勵志語錄&#xff1a; 與其等待完美的風&#xff0c;不如學會在逆風中調整帆的角度——所有偉大航程都始于此刻出發的勇氣 ★★★ 本文前置知…

權力結構下的人才價值重構:從 “工具論” 到 “存在論” 的轉變?

引言? 在現在的公司管理里&#xff0c;常常能聽到這樣一種說法&#xff1a;“我用你&#xff0c;你才是人才&#xff1b;不用你&#xff0c;你啥都不是。” 這其實反映了一種很常見的評判人才價值的標準&#xff0c;就是只看公司的需求&#xff0c;把人才當作實現公司目標的工…

UE實用地編插件Physical Layout Tool

免費插件 https://www.fab.com/zh-cn/listings/a7fb6fcf-596f-48e9-83cc-f584aea316b1 可以通過物理模擬批量放置物體 不用再一個個擺放了 裝飾環境從未如此簡單&#xff0c;您不必再考慮對齊物體。 物理地放置物體&#xff0c;移動它們&#xff0c;在移動或在地圖上放置物體…

Nerfstudio 環境配置與自有數據集(圖片和視頻)測試全方位全流程實戰【2025最新版!!】

一、引言 神經輻射場(Neural Radiance Fields&#xff0c;簡稱NeRF)是近年來計算機視覺和圖形學領域的一項革命性技術&#xff0c;它能夠從2D圖像中學習復雜的3D場景表示。然而&#xff0c;NeRF技術的實現和應用門檻較高&#xff0c;需要較為專業的計算機視覺和深度學習知識。…

Transformer:顛覆深度學習的架構革命與技術演進

2017年&#xff0c;谷歌團隊在論文《Attention Is All You Need》中提出的Transformer架構&#xff0c;徹底改變了人工智能對序列數據的處理范式。它不僅解決了傳統循環神經網絡&#xff08;RNN&#xff09;的長期依賴和并行化難題&#xff0c;更催生了BERT、GPT等劃時代模型&a…

原型模式(Prototype Pattern)詳解

文章目錄 1. 什么是原型模式&#xff1f;2. 為什么需要原型模式&#xff1f;3. 原型模式的結構4. 原型模式的基本實現4.1 基礎示例&#xff1a;簡單的原型模式4.2 使用Java的Cloneable接口 5. 深拷貝與淺拷貝5.1 淺拷貝&#xff08;Shallow Copy&#xff09;5.2 深拷貝&#xf…

掉餡餅,八分之一到二分之一:《分析模式》漫談59

DDD領域驅動設計批評文集 做強化自測題獲得“軟件方法建模師”稱號 《軟件方法》各章合集 “Analysis Patterns”的第6章“存貨和會計”原文&#xff1a; The transactions creation would then be the only place that could create entries. ... Providing only the trans…