【ROS教程】編寫launch文件

来源:https://www.cnblogs.com/UnderTurrets/p/18388765
-Advertisement-
Play Games

@目錄1.launch文件有哪些標簽2.node標簽2.1 必選屬性2.2 可選屬性2.3 可選子級標簽3.include標簽3.1 必選屬性3.2 可選屬性3.3 可選子級標簽4.remap標簽4.1 必選屬性5.param標簽5.1 必選屬性5.2 可選屬性6.rosparam標簽6.1 必選屬 ...


@

目錄


1.launch文件有哪些標簽

標簽 含義
node 指定 ROS 節點,是最常見的標簽
include 用於將另一個 xml 格式的 launch 文件導入到當前文件
remap 話題重命名
param 在參數伺服器上設置參數
rosparam 從 YAML 文件導入參數,或將參數導出到 YAML 文件,也可以用來刪除參數
group 可以對節點分組,具有 ns 屬性,可以讓節點歸屬某個命名空間
arg 用於動態設置參數,可以增強launch文件的靈活性
env 用於設置環境變數

2.node標簽

2.1 必選屬性

屬性 含義
name="node-name" 節點名稱(在 ROS 網路拓撲中節點的名稱)
pkg="package-name" 節點所屬的包
type="node-type" 節點類型(與之相同名稱的可執行文件)

2.2 可選屬性

屬性 含義
args="arg1 arg2 arg3" 將參數傳遞給節點
machine="machine-name" 在指定機器上啟動節點
respawn="true| false" 如果節點退出,是否自動重啟
respawn_delay="n" 如果 respawn 為 true, 那麼延遲 N 秒後啟動節點
required="true| false" 該節點是否必須,如果為 true,那麼如果該節點退出,將殺死整個 roslaunch
ns="namespace" 在指定命名空間中啟動節點
clear_params="true| false" 在啟動前,刪除節點的私有空間的所有參數
output="log| screen" 日誌發送目標,可以設置為 log 日誌文件,或 screen 屏幕,預設是 log

2.3 可選子級標簽

  1. <env>
  2. <remap>
  3. <rosparam>
  4. <param>

3.include標簽

3.1 必選屬性

屬性 含義
file="$(find pkg-name)/path/filename.launch" 要包含的文件路徑

3.2 可選屬性

屬性 含義
ns="namespace" 在指定命名空間導入文件

3.3 可選子級標簽

  1. <env>
  2. <arg>

4.remap標簽

4.1 必選屬性

屬性 含義
from="original-name" 原始話題名稱
to="new-name" 目標名稱

5.param標簽

  • 作為\<node>子級標簽時,相當於私有命名空間。

5.1 必選屬性

屬性 含義
name="namespace/name" 參數名稱,可以包含命名空間

5.2 可選屬性

屬性 含義
value="value" 定義參數值,如果此處省略,必須指定外部文件作為參數源
type="str|int|double|bool|yaml" 指定參數類型,如果未指定,roslaunch 會嘗試確定參數類型

roslaunch 確定參數類型的規則如下:

  • 如果包含 '.' 的數字解析未浮點型,否則為整型
  • "true" 和 "false" 是 bool 值(不區分大小寫)
  • 其他是字元串

6.rosparam標簽

6.1 必選屬性

屬性 含義
file="$(find pkg-name)/path/foo.yaml" 載入或導出到的 yaml 文件
param="param-name" 參數名稱

6.2 可選屬性

屬性 含義
command="load| dump | delete" 載入、導出或刪除參數,預設為載入
ns="namespace" 將參數指定到命名空間

7.group標簽

7.1 可選屬性

屬性 含義
ns="namespace" 將該組節點分配到指定的命名空間。命名空間可以是全局的,也可以是相對的,但不鼓勵使用全局命名空間。
clear_params="true|false" 在啟動前刪除組的命名空間中的所有參數。這個功能非常危險,應該謹慎使用。

7.2 可選子級標簽

  • 其他所有標簽都是其子級標簽

8.arg標簽

8.1 必選屬性

屬性 含義
name="arg-name" 欲設置的參數名稱

8.2 可選屬性

屬性 含義
default="default value" 設置參數的預設值。不能與value屬性結合。
value="value" 設置參數的值。不能與default屬性結合。
doc="description for this arg" 載入、導出或刪除參數,預設為載入

8.3 示例

<launch>
  <!-- declare arg to be passed in -->
  <arg name="hoge" /> 

  <!-- read value of arg -->
  <param name="param" value="$(arg hoge)"/>
</launch>

9.env標簽

9.1 必選屬性

屬性 含義
name="environment-variable-name" 所設置的環境變數的名字
value="environment-variable-value" 參數說明

10.全局示例

<launch>
  <!-- local machine already has a definition by default.
       This tag overrides the default definition with
       specific ROS_ROOT and ROS_PACKAGE_PATH values -->
  <machine name="local_alt" address="localhost" default="true" ros-root="/u/user/ros/ros/" ros-package-path="/u/user/ros/ros-pkg" />
  <!-- a basic listener node -->
  <node name="listener-1" pkg="rospy_tutorials" type="listener" />
  <!-- pass args to the listener node -->
  <node name="listener-2" pkg="rospy_tutorials" type="listener" args="-foo arg2" />
  <!-- a respawn-able listener node -->
  <node name="listener-3" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!-- start listener node in the 'wg1' namespace -->
  <node ns="wg1" name="listener-wg1" pkg="rospy_tutorials" type="listener" respawn="true" />
  <!-- start a group of nodes in the 'wg2' namespace -->
  <group ns="wg2">
    <!-- remap applies to all future statements in this scope. -->
    <remap from="chatter" to="hello"/>
    <node pkg="rospy_tutorials" type="listener" name="listener" args="--test" respawn="true" />
    <node pkg="rospy_tutorials" type="talker" name="talker">
      <!-- set a private parameter for the node -->
      <param name="talker_1_param" value="a value" />
      <!-- nodes can have their own remap args -->
      <remap from="chatter" to="hello-1"/>
      <!-- you can set environment variables for a node -->
      <env name="ENV_EXAMPLE" value="some value" />
    </node>
  </group>
</launch>

本文由博客一文多發平臺 OpenWrite 發佈!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • title: 使用 updateAppConfig 更新 Nuxt 應用配置 date: 2024/8/27 updated: 2024/8/27 author: cmdragon excerpt: 通過使用 updateAppConfig,你可以輕鬆地在應用運行時更新配置,而無需重新啟動應用。這對 ...
  • Vue3.5新增了一個baseWatch,讓watch函數和Vue組件徹底分手,他的實現和Vue組件以及生命周期沒有一毛錢關係。 ...
  • 在TS開發中,經常會遇到後臺數據欄位比較多的情況,這時候需要一個個複製欄位然後給他手動配置數據類型來完成我們的TS類型定義,相當麻煩。有什麼快速的方法呢,我就目前遇到的兩種情況分別寫了JS腳本來處理後臺數據,直接生成我們需要的數據格式。 腳本編寫 1. 處理數據字典中的數據 一般數據字典表裡的數據可 ...
  • 此“華仔”,不是彼“華仔”,你懂的! 先來了個截圖 緊跟著,實現步驟也來了 1. 安裝 Node.js,終端運行 npm create vue@latest,項目名 vue-to-do,後面的選項全選 No; 2. cd vue-to-do 進入項目目錄,npm install 安裝依賴,npm r ...
  • title: 使用 Nuxt 的 showError 顯示全屏錯誤頁面 date: 2024/8/26 updated: 2024/8/26 author: cmdragon excerpt: 摘要:本文介紹Nuxt.js中的showError方法用於顯示全屏錯誤頁面,包括其參數類型及使用方式,並演 ...
  • 信息系統設計速查表需求收集功能性需求:通過用戶訪談、問卷調查和市場分析來確定系統必須實現的功能。 非功能性需求:定義性能基準(如響應時間)、安全性要求(如數據加密標準,傳輸加密)、可靠性標準(如系統的正常運行時間, MTTR)。 用戶故事:使用敏捷方法論,如Scrum,來創建和優先順序排序用戶故事。 ...
  • @目錄1.流程2.自定義發佈數據2.1 std_msgs內置類型2.2 編寫.msg文件2.3 修改package.xml文件2.3.1 完整的package.xml文件2.4 修改CMakeLists.txt文件2.4.1 修改find_package指令2.4.2 添加add_message_f ...
  • IOC與DI的理解 1.1、IoC是什麼 Ioc—Inversion of Control,即“控制反轉”,不是什麼技術,而是一種設計思想。在Java開發中,Ioc意味著將你設計好的對象交給容器控制,而不是傳統的在你的對象內部直接控制。如何理解好Ioc呢?理解好Ioc的關鍵是要明確“誰控制誰,控制什 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 推薦一款基於.NET 8、WPF、Prism.DryIoc、MVVM設計模式、Blazor以及MySQL資料庫構建的企業級工作流系統的WPF客戶端框架-AIStudio.Wpf.AClient 6.0。 項目介紹 框架採用了 Prism 框架來實現 MVVM 模式,不僅簡化了 MVVM 的典型 ...
  • 先看一下效果吧: 我們直接通過改造一下原版的TreeView來實現上面這個效果 我們先創建一個普通的TreeView 代碼很簡單: <TreeView> <TreeViewItem Header="人事部"/> <TreeViewItem Header="技術部"> <TreeViewItem He ...
  • 1. 生成式 AI 簡介 https://imp.i384100.net/LXYmq3 2. Python 語言 https://imp.i384100.net/5gmXXo 3. 統計和 R https://youtu.be/ANMuuq502rE?si=hw9GT6JVzMhRvBbF 4. 數 ...
  • 本文為大家介紹下.NET解壓/壓縮zip文件。雖然解壓縮不是啥核心技術,但壓縮性能以及進度處理還是需要關註下,針對使用較多的zip開源組件驗證,給大家提供個技術選型參考 之前在《.NET WebSocket高併發通信阻塞問題 - 唐宋元明清2188 - 博客園 (cnblogs.com)》講過,團隊 ...
  • 之前寫過兩篇關於Roslyn源生成器生成源代碼的用例,今天使用Roslyn的代碼修複器CodeFixProvider實現一個cs文件頭部註釋的功能, 代碼修複器會同時涉及到CodeFixProvider和DiagnosticAnalyzer, 實現FileHeaderAnalyzer 首先我們知道修 ...
  • 在軟體行業,經常會聽到一句話“文不如表,表不如圖”說明瞭圖形在軟體應用中的重要性。同樣在WPF開發中,為了程式美觀或者業務需要,經常會用到各種個樣的圖形。今天以一些簡單的小例子,簡述WPF開發中幾何圖形(Geometry)相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 在 C# 中使用 RabbitMQ 通過簡訊發送重置後的密碼到用戶的手機號上,你可以按照以下步驟進行 1.安裝 RabbitMQ 客戶端庫 首先,確保你已經安裝了 RabbitMQ 客戶端庫。你可以通過 NuGet 包管理器來安裝: dotnet add package RabbitMQ.Clien ...
  • 1.下載 Protocol Buffers 編譯器(protoc) 前往 Protocol Buffers GitHub Releases 頁面。在 "Assets" 下找到適合您系統的壓縮文件,通常為 protoc-{version}-win32.zip 或 protoc-{version}-wi ...
  • 簡介 在現代微服務架構中,服務發現(Service Discovery)是一項關鍵功能。它允許微服務動態地找到彼此,而無需依賴硬編碼的地址。以前如果你搜 .NET Service Discovery,大概率會搜到一大堆 Eureka,Consul 等的文章。現在微軟為我們帶來了一個官方的包:Micr ...
  • ZY樹洞 前言 ZY樹洞是一個基於.NET Core開發的簡單的評論系統,主要用於大家分享自己心中的感悟、經驗、心得、想法等。 好了,不賣關子了,這個項目其實是上班無聊的時候寫的,為什麼要寫這個項目呢?因為我單純的想吐槽一下工作中的不滿而已。 項目介紹 項目很簡單,主要功能就是提供一個簡單的評論系統 ...