wstool和catkin_tools工具介紹

好的,我們來詳細介紹一下 python3-wstoolpython3-catkin-tools 這兩個在 ROS (Robot Operating System) 開發中非常重要的工具,以及它們之間的關系。

首先,python3- 這個前綴表示這些是針對 Python 3 的軟件包版本,這在現代 ROS 發行版(如 ROS Noetic 及更新版本)中是標準的。

核心比喻

為了方便理解,我們可以先用一個簡單的比喻:

  • wstool (Workspace Tool)項目源代碼的“采購員”或“圖書管理員”。它的工作是根據一個清單(.rosinstall 文件),從互聯網上(如 GitHub, GitLab)下載或更新你項目所需的所有源代碼包。
  • catkin_tools項目的“總工程師”或“建筑工頭”。它負責獲取所有下載好的源代碼,并按照正確的順序和依賴關系,將它們編譯、鏈接,最終構建成可執行的程序和庫。

1. python3-wstool 詳解

wstool 是 “Workspace Tool” 的縮寫,它是一個用于管理 ROS 工作空間中多個源代碼倉庫(Repositories)的命令行工具。

主要作用
  • 管理源代碼集合:一個復雜的 ROS 項目通常由許多獨立的包(packages)組成,這些包可能托管在不同的 Git、SVN 或 Mercurial 倉庫中。wstool 可以方便地將這些倉庫克隆(clone)到你的本地工作空間中。
  • 基于清單文件工作:它主要使用一個名為 .rosinstall 的 YAML 格式文件。這個文件就像一個“購物清單”,詳細列出了需要下載的每一個源代碼倉庫的 URL、版本(分支、標簽或 commit-id)以及本地存放路徑。
  • 更新和同步:當你需要更新所有包到最新版本,或者切換到某個特定分支時,只需一條 wstool update 命令,它就會自動處理所有倉庫的 git pull 或類似操作。
常用命令

假設你在工作空間的 src 目錄下:

  • wstool init .: 在當前目錄(src)初始化一個 wstool 工作空間,會創建一個 .rosinstall 文件。
  • wstool set my_repo --git https://github.com/user/repo.git: 將指定的 Git 倉庫添加到 .rosinstall 文件中,并下載它。
  • wstool merge my_project.rosinstall: 將一個已有的 .rosinstall 文件中的內容合并到當前工作空間的配置中。這在獲取一個開源項目的全部源碼時非常常用。
  • wstool update: 根據 .rosinstall 文件中的信息,更新/下載所有的源代碼倉庫。
  • wstool info: 顯示當前工作空間中所有倉庫的狀態(版本、URL等)。

總結:wstool 只關心源代碼的獲取和管理,它不參與任何編譯過程。


2. python3-catkin-tools 詳解

catkin_tools 是對 ROS 原始構建系統 catkin_make 的一個現代化、功能更強的替代品。它提供了一套名為 catkin 的命令來構建 ROS 工作空間。

主要作用
  • 編譯和構建:它的核心功能是編譯工作空間 src 目錄下的所有 ROS 包,生成可執行文件、庫文件和消息類型等。
  • 改進的構建流程:相比于 catkin_makecatkin_tools 提供了許多改進:
    • 并行構建:可以同時編譯多個包,大大加快了大型工作空間的編譯速度。
    • 隔離構建:每個包都在一個獨立的環境中編譯,避免了包之間的意外干擾,使得調試更加容易。
    • 更友好的輸出:構建過程的輸出信息更加清晰、整潔,一目了然地顯示每個包的編譯進度和狀態。
    • 工作空間隔離:生成的 builddevel 目錄會帶有特定的配置文件名,方便在多個工作空間之間切換,而不會相互影響。
常用命令

假設你在工作空間的根目錄下(例如 ~/catkin_ws/):

  • catkin build: 編譯整個工作空間。這是最核心的命令。
  • catkin clean: 清理構建產生的所有中間文件和目標文件(相當于 rm -rf build/ devel/ logs/)。
  • catkin build my_package_name: 只編譯指定的包及其依賴項。
  • catkin create pkg my_new_pkg --catkin-deps roscpp rospy std_msgs: 創建一個新的 ROS 包,并自動在 package.xml 中添加依賴。
  • catkin config: 查看或修改工作空間的構建配置(例如編譯選項 CMAKE_BUILD_TYPE 等)。

總結:catkin_tools 是一個純粹的構建工具,它假設源代碼已經存在于 src 目錄中。


它們之間的關系與典型工作流

wstoolcatkin_tools 不是競爭關系,而是協作關系。它們在 ROS 開發工作流中扮演著前后銜接的不同角色。

一個典型的從零開始設置并構建一個復雜 ROS 項目的工作流程如下:

  1. 創建工作空間

    mkdir -p ~/catkin_ws/src
    cd ~/catkin_ws
    
  2. 獲取源代碼 (使用 wstool)
    進入 src 目錄,這是 wstool 工作的地方。

    cd src
    # 假設項目提供了一個 .rosinstall 文件
    wget https://raw.githubusercontent.com/some_project/master/dependencies.rosinstall
    wstool init
    wstool merge dependencies.rosinstall
    wstool update
    

    執行完畢后,src 目錄下會充滿從各個 Git 倉庫下載來的 ROS 包。

  3. 安裝依賴 (使用 rosdep)
    在獲取了所有源代碼后,需要安裝這些代碼所依賴的系統庫(如 Boost, OpenCV)和其他 ROS 包。

    cd ~/catkin_ws
    # rosdep 會讀取 src 目錄下所有包的 package.xml 文件,找出依賴項并安裝
    rosdep install --from-paths src --ignore-src -r -y
    
  4. 構建項目 (使用 catkin_tools)
    回到工作空間根目錄,這是 catkin 命令工作的地方。

    cd ~/catkin_ws
    catkin build
    

    catkin_tools 會開始編譯 src 目錄下的所有內容。

  5. 激活環境
    構建成功后,需要 source 生成的配置文件,以便系統能找到你剛剛編譯好的包和可執行文件。

    source devel/setup.bash
    

摘要表格

特性python3-wstoolpython3-catkin-tools
核心職責源代碼管理編譯和構建
工作目錄工作空間的 src 目錄工作空間的根目錄
主要輸入.rosinstall 文件src 目錄下的源代碼和 package.xml
主要輸出src 目錄下下載好的源代碼builddevel 目錄中的可執行文件/庫
主要命令wstool update, wstool mergecatkin build, catkin clean
角色比喻源代碼采購員項目總工程師

總結來說,你先用 wstool 把“原材料”(源代碼)買回來放到“倉庫”(src 目錄),然后再請 catkin_tools 這個“工程師”把這些原材料加工成“最終產品”(可執行程序)。它們共同構成了 ROS 中高效管理和構建大型項目的基石。

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

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

相關文章

吳恩達 深度學習筆記

最近在看吳恩達深度學習系列課程,簡單做一個基本框架筆記。 如感興趣或了解更多內容,推薦看原課程 以前也做過一些與機器學習和深度學習有關的筆記,過分重復的就一筆帶過了。 01 第一門課 神經網絡和深度學習 1.1 第一周:深度學習…

2025數字馬力一面面經(社)

2025數字馬力一面面經(社) 日常自我介紹js數據類型有哪些(報完菜名后簡單分析了一下使用引用類型)談談對const、var、let的理解(變量提升、let和const的主要區別、使用const命名引用類型的時可以對引用類型進行操作&am…

PyQt 中 pyqtSignal 的使用

目錄 基本用法 示例代碼 關鍵特性 常見用途 一、信號的定義規則 二、完整用法步驟 1. 導入必要模塊 2. 定義帶信號的類 3. 定義接收信號的槽函數 4. 連接信號與槽 5. 發射信號 6. 斷開連接(可選) 三、高級特性 1. 跨線程通信 2. 信號連接方式 3. 信號與匿名函數 4. 信號轉發 …

使用Python驗證常見的50個正則表達式

什么是正則表達式?正則表達式(Regular Expression)通常被用來檢索、替換那些符合某個模式(規則)的文本。此處的Regular即是規則、規律的意思,Regular Expression即“描述某種規則的表達式”之意。本文收集了一些常見的正則表達式用…

Redis是單線程性能還高的原因

Redis是單線程Redis單線程是指Redis的網絡IO和鍵值對讀寫是由一個線程完成的,其他功能還是使用多線程執行Redis主干業務使用單線程的原因Redis本質就是一個大的共享資源,共享資源是需要對其進行并發控制的,即使增加了線程,大部分線程也是在等待互斥鎖,并行變串行,而且還需要進行…

若依前后端分離版學習筆記(七)—— Mybatis,分頁,數據源的配置及使用

一 Mybatis 1、Maven依賴 在ruoyi父項目的pom文件中有一個分頁插件的依賴 <!-- pagehelper 分頁插件 --> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version&…

灌區信息化智能管理系統解決方案

一、方案背景 灌區作為農業灌溉的重要基礎設施&#xff0c;承擔著保障糧食安全和促進農業可持續發展的關鍵作用。然而&#xff0c;傳統灌區管理方式普遍存在信息孤島、數據滯后、調度不精準等問題&#xff0c;導致水資源浪費和管理效率低下。在此背景下&#xff0c;灌區信息化智…

軟件包管理、緩存、自定義 YUM 源

1. 軟件包管理是啥 你可以把軟件包管理器理解成 Linux 的“應用商店 安裝工人”&#xff1a; 應用商店&#xff1a;幫你找到軟件&#xff08;包&#xff09;安裝工人&#xff1a;幫你下載安裝、配置、升級、卸載管理賬本&#xff1a;記錄系統里都安裝了啥、版本號是多少、依賴…

Pthon 本質詳解

理解 Python 的本質&#xff0c;不能僅僅停留在“它是一門編程語言”這個層面&#xff0c;而要深入其設計哲學、核心機制、以及它在編程世界中所扮演的角色。 可以把 Python 的本質概括為一句話&#xff1a;Python 的本質是一種以“簡潔優雅、易于讀寫”為核心設計哲學&#xf…

在Word文檔中用鍵盤直接移動(復制)內容

如何快速在Word文檔中剪切或復制內容到本文檔的其他位置&#xff1f;不用剪切或復制&#xff0c;再粘貼&#xff0c;只需要先選中內容&#xff0c;然后按下F2&#xff08;ShiftF2&#xff09;剪切&#xff08;復制&#xff09;內容&#xff0c;再把光標放到目標位置按下回車鍵就…

VRTE 的應用程序部署到Ubuntu上 報錯:bash: ./rb_exmd: No such file or directory

&#x1f6e0;? 如何在 Ubuntu 上部署 VRTE 3.5 的 AraCM_IPC 應用程序在將 VRTE 3.5 的 AraCM_IPC 應用部署到 Ubuntu 系統時&#xff0c;可能會遇到運行失敗的問題&#xff0c;提示類似&#xff1a;bash: ./rb_exmd: No such file or directory這通常并非文件不存在&#xf…

WD5202 非隔離降壓轉換芯片,220V降5V,輸出電流80MA

解鎖高效電源新境界&#xff1a;WD5202 非隔離降壓轉換芯片在當今電子設備飛速發展的時代&#xff0c;高效、穩定且低成本的電源解決方案至關重要。WD5202 作為一款卓越的非隔離降壓轉換芯片&#xff0c;正以其獨特的性能和廣泛的適用性&#xff0c;在眾多領域嶄露頭角&#xf…

庫函數版獨立按鍵用位運算方式實現(STC8)

位運算&#xff1a;更加簡便&#xff0c;單片機的內存就小&#xff0c;占的內存空間小一點案例&#xff1a; #include "GPIO.h" #include "Delay.h" #include "UART.h" // 串口配置 UART_Configuration #include "NVIC.h" // 中斷…

RA4M2_MINI開發(15)----配置RTC時鐘及顯示時間

RA4M2_MINI開發.15--配置RTC時鐘及顯示時間 概述視頻教學樣品申請硬件準備參考程序源碼下載新建工程工程模板保存工程路徑芯片配置工程模板選擇時鐘設置SWD調試口設置UART配置UART屬性配置設置e2studio堆棧e2studio的重定向printf設置R_SCI_UART_Open()函數原型回調函數user_ua…

使用Prometheus + Grafana + node_exporter實現Linux服務器性能監控

監控與告警系統部署&#xff1a;項目示例: "使用Prometheus Grafana node_exporter實現Linux服務器性能監控"描述: 在目標服務器部署node_exporter采集系統指標(CPU, 內存, 磁盤, 網絡)。部署配置Prometheus Server&#xff0c;抓取node_exporter數據。部署配置Gra…

IP防護等級及檢驗方法說明

IP防護等級說明&#xff1a; IP (Ingress Protection) 防護等級系統是由 IEC 60529 標準定義的&#xff0c;用于衡量電氣設備外殼對固體異物和液體進入的防護能力。IP代碼通常由兩位數字組成&#xff1a;第一位數字表示防固體異物等級(0-6)&#xff0c;第二位數字表示防水等級(…

最近看到的提示詞相關內容匯總

看看能不能總結出來一些提示詞最佳實踐 一定要動手實踐。 目前已經知道的提示詞好習慣 角色扮演 操作步驟 質量要求 結構化輸出 案例 Anthropic 視頻中提到,實際上作為一門科學,我們可以通過以下手段嘗試它。 最初的提示詞,不斷的嘗試,直到最終的提示詞。 優質提示詞結…

github代理

自己整理的github代理 代理網址 https://g.cachecdn.ggff.net/ https://gitcode.com/ https://git.mxg.pub/ https://xiake.pro/ https://github.akams.cn/ 手動更新 hosts 方法 適合臨時使用&#xff0c;Github 的ip經常變 Linux / MacOS hosts 路徑&#xff1a;/etc/host…

交換機100G模塊遠距離連接踩坑記錄

一、業務需求場景 兩個辦公場地之間相距較遠,大約有幾百米。網絡系統規劃兩個辦公場地的局域網之間通過100G 網絡連接,幾百米的距離使用多模光纖是不能滿足需求的,因此選擇使用單模光纖連接,交換機的模塊選擇使用華為QSFP28-100G-PSM4 模塊,這個模塊使用的是MPO接口。 兩個…

精通Python異步編程:深入理解Async/Await在LLM應用中的實踐

簡介 在現代高性能應用開發中,特別是在處理大型語言模型(LLM)時,高效處理I/O密集型操作至關重要。Python的async和await關鍵字通過異步編程提供了優雅的解決方案。本綜合指南將探討如何利用這些特性構建響應迅速、高效的LLM驅動應用。 目錄 理解同步與異步執行 Async/Await…