【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 MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...