launch 文件詳解

ROS采用rosrun命令可以啟動(dòng)一個(gè)節(jié)點(diǎn),如果需要同時(shí)啟動(dòng)節(jié)點(diǎn)管理器(master)和多個(gè)節(jié)點(diǎn),就需要采用launch文件來(lái)配置。launch文件是一種特殊的XML格式文件,通常以.launch作為文件后綴。每個(gè)launch文件都必須要包含一個(gè)根元素。

roslaunch的使用方法為:
$ roslaunch pkg-name launch-file-name

下面以一個(gè)典型的launch文件舉例說(shuō)明:

<launch>

<arg name="debug" default="true"/>

<include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="debug" value="$(arg debug)" /> </include>

<arg name="model" /> <param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" />

<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -model robot1 -param robot_description -z 0.05"/>

</launch>

launch
每個(gè)launch文件都必須且只能包含一個(gè)根元素。根元素由一對(duì)launch標(biāo)簽定義,其他所有元素標(biāo)簽都應(yīng)該包含在這兩個(gè)標(biāo)簽之內(nèi)。

<launch> ... </launch>

arg
roslaunch支持啟動(dòng)參數(shù)arg,可以通過(guò)設(shè)置arg來(lái)改變程序的運(yùn)行。name為啟動(dòng)參數(shù)的名稱,default為該參數(shù)的默認(rèn)值,value為該參數(shù)的參數(shù)值。
default與 value兩者的唯一區(qū)別在于命令行參數(shù)roslaunch pkg-name launch-file-name arg-name:=”set-value”可以覆蓋默認(rèn)值default,但是不能覆蓋參數(shù)值 value。在launch文件中出現(xiàn)$(arg arg-name)的地方,運(yùn)行時(shí)roslaunch 會(huì)將它替換成參數(shù)值。并且可以在include元素標(biāo)簽內(nèi)使用arg來(lái)設(shè)置所包含的launch文件中的參數(shù)值。

param
在ROS中prarmeter和argument 是不同的,雖然翻譯一樣。parameter是運(yùn)行中的ROS系統(tǒng)使用的數(shù)值,存儲(chǔ)在參數(shù)服務(wù)器(parameter server)中,每個(gè)活躍的節(jié)點(diǎn)都可以通過(guò) ros::param::get 函數(shù)來(lái)獲取parameter的值,用戶也可以通過(guò)rosparam來(lái)獲得parameter的值而argument只在啟動(dòng)文件內(nèi)才有意義他們的值是不能被節(jié)點(diǎn)直接獲取的。

include
在launch文件中復(fù)用其他launch文件可以減少代碼編寫的工作量,提高文件的簡(jiǎn)潔性。使用包含元素include在launch文件中可包含其他launch文件中所有的節(jié)點(diǎn)和參數(shù)。

<include file="$(find pkg-name)/launch/launch-file-name"> <arg name="arg_name" value="set-value"/> </include>

node
節(jié)點(diǎn)的形式為:
<node name="node-name" pkg="pkg-name" type="executable-name" />

node的三個(gè)屬性分別為節(jié)點(diǎn)名字、程序包名字和 可執(zhí)行文件的名字。 name屬性給節(jié)點(diǎn)指派了名稱,它將覆蓋任何通過(guò)調(diào)用 ros::init來(lái)賦予節(jié)點(diǎn)的名稱。另外node標(biāo)簽內(nèi)也可以用過(guò)arg設(shè)置節(jié)點(diǎn)參數(shù)值。如果node標(biāo)簽有children標(biāo)簽,就需要顯式標(biāo)簽來(lái)定義。即末尾為/node>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 創(chuàng)建一個(gè)ROS Package 這個(gè)教程包括使用roscreate-pkg或者catkin去創(chuàng)建一個(gè)新的packa...
    鐵熊玩創(chuàng)客閱讀 5,199評(píng)論 0 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • 大家好,關(guān)于機(jī)器人操作系統(tǒng)ROS的安裝,很多文章都寫的非常詳細(xì),我也在這些材料的幫助下,在VMware上安裝了Ub...
    keepStriving閱讀 7,685評(píng)論 2 8
  • 服務(wù)(services)是節(jié)點(diǎn)之間通訊的另一種方式。服務(wù)允許節(jié)點(diǎn)發(fā)送請(qǐng)求(request ) 并獲得一個(gè)響應(yīng)(re...
    李慶雪閱讀 1,799評(píng)論 0 0
  • 本書的作者是肯·布蘭佳,也是《一分鐘經(jīng)理人》的作者。 這本書告訴了我們?yōu)槭裁次覀冎懒嗽S多但是做不到?也提供給了我...
    抓瞎的貓閱讀 343評(píng)論 0 1

友情鏈接更多精彩內(nèi)容