博客參考:https://blog.csdn.net/weixin_41995979/article/details/81784987 和 https://www.cnblogs.com/zjiaxing/p/5542614.html
簡述
roslaunch PACKAGE_NAME LAUNCH_FILE_NAME
屬性 | 屬性作用 |
name="NODE_NAME" | 為節點指派名稱,這將會覆蓋掉ros::init() 定義的node_name |
pkg="PACKAGE_NAME" | 節點所在的包名 |
type="FILE_NAME" | 執行文件的名稱如果是用Python編寫的就填寫xxx.py ,如果是cpp就寫編譯生成的可執行文件名 |
output="screen" | 終端輸出轉儲在當前的控制台上,而不是在日志文件中 |
respawn="true" | 當roslaunch啟動完所有該啟動的節點之后,會監測每一個節點,保證它們正常的運行狀態。對於任意節點,當它終止時,roslaunch 會將該節點重啟 |
required="true" | 當被此屬性標記的節點終止時,roslaunch會將其他的節點一並終止。注意此屬性不可以與respawn="true" 一起描述同一個節點 |
launch-prefix = "command-prefix" | 相當於在執行啟動命令時加上一段命令前綴 |
ns = "NAME_SPACE" | 這個屬性可以讓你在自定義的命名空間里運行節點 |
節點屬性之節點元素的形式
<node pkg=”package-name” type=”executable-name” name=”node-name”/>
在節點標簽末尾的斜杠“/”是必須的,但很容易忘。你也可以這樣顯式地給出結束標簽:
<node pkg=”…”type=”…” name=”…”></node>
如果該節點有子節點,例如 remap 或者 param 元素,那么該顯式結束標簽是必不缺少的。還有就是name屬性給節點指派了名稱,它將覆蓋任何通過調用 ros::int來賦予節點的名稱。在默認狀態下,從啟動文件啟動節點的標准輸出被重定向到一個日志文件中,而不是在制台顯示。該日志文件的名稱是:
~/.ros/log/run_id/node_name-number-stout.log
其中,run_id 是節點管理器(master)啟動時生成的一個唯一標示符。
節點屬性之顯示屬性
某個單獨的節點在控制台中輸出信息,只需在節點元素中配置:output=”screen” 配置了該屬性的節點會將標准輸出顯示在屏幕上而不是記錄到日志文檔。
節點屬性之復位屬性
節點屬性之命名空間
名稱重映射
重映射是基於替換的思想,每個重映射包含一個原始名稱和一個新名稱。每當節點使用重映射中的原始名稱時,ROS客戶端庫就會將它默默地替換成其對應的新名稱。例如,運行一個 turtlesime 的實例, 如果想要把海龜的姿態數據發布到話題/tim 而不是/turtle1/pose,就可以使用如下命令
rosrun turtlesim turtlesim_node turtle1/pose:=tim
通過啟動文件的方式,只需在啟動文件內使用重映射(remap)元素即可
<remap from=”turtle1/pose” to ”tim”/>
包含其他文件
如果想在啟動文件中包含其他啟動文件的內容( 包括所有的節點和參數),可以使用包含(include)元素
<include file=”$(find package-name)/path/launch-file-name”>
由於直接輸入路徑信息很繁瑣且容易出錯,大多數包含元素都使用查找(find)命令搜索功能包的位置來替代直接輸入路徑。
啟動參數
roslaunch還支持啟動參數,有時也簡稱為參數甚至args。在ROS中prarmeter和argument 是不同的,雖然翻譯一樣。parameter是運行中的ROS系統使用的數值,存儲在參數服務器(parameter server)中,每個活躍的節點都可以通過 ros::param::get 函數來獲取parameter的值,用戶也可以通過rosparam來獲得parameter的值而argument只在啟動文件內才有意義他們的值是不能被節點直接獲取的。
<arg name=”arg-name” default=”arg-value”/>
<arg name=”arg-name” value=”arg-value”/>
兩者的唯一區別在於命令行參數
roslaunch xx yy.launch arg-name:=t
可以覆蓋默認值default,但是不能覆蓋參數值 value。用 $(arg arg-name) 在每個該替換出現的地方,roslaunch 都將它替換成參數值。