launch文件語(yǔ)法&&turtlebot_in_stage.launch文件解讀

參考https://blog.csdn.net/vampirewolf/article/details/90051086尾序;https://blog.csdn.net/weixin_42018112/article/details/82429883
https://blog.csdn.net/qq_21950671/article/details/101703451#launch_5

launch文件功能

使用launch文件君珠,可以同時(shí)啟動(dòng)多個(gè)ros節(jié)點(diǎn)惰帽,包括master節(jié)點(diǎn)婚温,可以同時(shí)啟動(dòng)roscore和多個(gè)節(jié)點(diǎn)程序歹篓。

roslaunch package-name launch-file-name
如何創(chuàng)建launch文件
  • 確定存放launch文件的地方

launch文件可以存放在功能包的根目錄下
launch文件可以存放在功能包下單獨(dú)的launch文件夾下

  • launch文件的基本編寫(xiě)結(jié)構(gòu)

根元素中間包含了若干個(gè)節(jié)點(diǎn)元素
每個(gè)節(jié)點(diǎn)包含了其相應(yīng)的節(jié)點(diǎn)屬性信息

launch標(biāo)簽用法說(shuō)明
  • launch文件中的根元素采用標(biāo)簽定義,文件其他內(nèi)容必須包含在這個(gè)標(biāo)簽中
<launch>
</launch>
node標(biāo)簽用法說(shuō)明

pkg:節(jié)點(diǎn)所在功能包名稱(chēng)
type: 節(jié)點(diǎn)可執(zhí)行文件名稱(chēng)
這兩個(gè)屬性等同于在終端中使用rosrun命令執(zhí)行節(jié)點(diǎn)
name:節(jié)點(diǎn)運(yùn)行時(shí)的名稱(chēng)咐容,將覆蓋節(jié)點(diǎn)init()賦予節(jié)點(diǎn)的名稱(chēng)
args=“arg1 arg2 arg3”(optional) 節(jié)點(diǎn)需要的輸入?yún)?shù)舆逃。
machine=“machine-name”(optional, see ) launch文件中運(yùn)行的每個(gè)節(jié)點(diǎn)可以指定該節(jié)點(diǎn)運(yùn)行的machine,
respawn=“true”(optional, default: False) 復(fù)位屬性,該節(jié)點(diǎn)停止時(shí)路狮,會(huì)自動(dòng)重啟虫啥,默認(rèn)為false。
respawn_delay=“30” (optional, default 0) 嘗試重新啟動(dòng)之前檢測(cè)到節(jié)點(diǎn)故障后等待時(shí)間奄妨。
required=“true”(optional) 必要節(jié)點(diǎn)涂籽,當(dāng)該節(jié)點(diǎn)停止時(shí),launch文件中的其他節(jié)點(diǎn)也會(huì)被終止展蒂。
ns=“foo”(optional) 命名空間,為節(jié)點(diǎn)內(nèi)的相對(duì)名稱(chēng)添加命名空間前綴
clear_params=“true|false”(optional) 在啟動(dòng)前刪除節(jié)點(diǎn)的私有命名空間中的所有參數(shù)苔咪。
output=“l(fā)og|screen”(optional) 將節(jié)點(diǎn)的標(biāo)準(zhǔn)輸出打印到終端屏幕锰悼,默認(rèn)輸出為日志文檔
cwd=“ROS_HOME|node”(optional) 如果為“node”,則節(jié)點(diǎn)的工作目錄將設(shè)置為與節(jié)點(diǎn)的可執(zhí)行文件相同的目錄团赏。
launch-prefix=“prefix arguments”(optional) 用于預(yù)先添加到節(jié)點(diǎn)的啟動(dòng)參數(shù)的命令/參數(shù)

參數(shù)設(shè)置——param

<param>可以添加在<node>中箕般。parameter是ROS系統(tǒng)運(yùn)行中的參數(shù),存儲(chǔ)在參數(shù)服務(wù)器中舔清。在launch文件中可以通過(guò)<param>元素加載parameter丝里。launch文件執(zhí)行后,parameter就加載到ROS的參數(shù)服務(wù)器上了体谒。每個(gè)活躍的節(jié)點(diǎn)都可以通過(guò) ros::param::get()接口來(lái)獲取parameter的值杯聚,用戶(hù)也可以在終端中通過(guò)rosparam命令獲得parameter的值。

 name="namespace/name":參數(shù)的名字
  value="value"(可選):定義參數(shù)的值抒痒,如果省略這個(gè)參數(shù)幌绍,則應(yīng)該指定一個(gè)文件(binfile/texfile)或命令
  type="str|int|double|boot"(可選):指定參數(shù)的類(lèi)型
  texfile="$(find pkg-name)/path/file" (可選)
  binfile="$(find pkg-name)/path/file" (可選)
  commadn="(find pkg-name)/exe '$(find pkg-name)/arg.txt'" (可選):exe是可執(zhí)行文件( .py或 .cpp),arg.txt是參數(shù)文件

但是在很多復(fù)雜的系統(tǒng)中故响,參數(shù)的數(shù)量很多傀广,如果這樣一個(gè)一個(gè)的設(shè)置會(huì)非常麻煩,ROS也為我們提供了另外一種類(lèi)似的參數(shù)加載方式——<rosparam>:

<rosparam file="$(find 2dnav_pr2)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />

<rosparam>可以幫助我們將一個(gè)yaml格式文件中的參數(shù)全部加載到ROS參數(shù)服務(wù)器中彩届,需要設(shè)置command屬性為“l(fā)oad”伪冰,還可以選擇設(shè)置命名空間“ns”。

參數(shù)設(shè)置——arg

arg標(biāo)簽用來(lái)在launch文件中定義參數(shù)樟蠕,arg和param在ROS里有根本性的區(qū)別贮聂,就像局部變量和全局變量的區(qū)別一樣。arg不儲(chǔ)存在參數(shù)服務(wù)器中寨辩,不能提供給節(jié)點(diǎn)使用寂汇,只能在launch文件中使用。param則是儲(chǔ)存在參數(shù)服務(wù)器中捣染,可以被節(jié)點(diǎn)使用骄瓣。

重映射機(jī)制

launch文件中的<remap>標(biāo)簽顧名思義重映射,remap標(biāo)簽里包含一個(gè)original-name和一個(gè)new-name,及原名稱(chēng)和新名稱(chēng)榕栏。比如turtlebot的鍵盤(pán)控制節(jié)點(diǎn)畔勤,發(fā)布的速度控制指令話(huà)題可能是/turtlebot/cmd_vel,但是我們自己的機(jī)器人訂閱的速度控制話(huà)題是/cmd_vel扒磁,這個(gè)時(shí)候使用<remap>就可以輕松解決問(wèn)題庆揪,將/turtlebot /cmd_vel重映射為/cmd_vel,我們的機(jī)器人就可以接收到速度控制指令了妨托。

嵌套復(fù)用——include

在復(fù)雜的系統(tǒng)當(dāng)中缸榛,launch文件往往有很多,這些launch文件之間也會(huì)存在依賴(lài)關(guān)系兰伤。如果需要直接復(fù)用一個(gè)已有l(wèi)aunch文件中的內(nèi)容内颗,可以使用<include>標(biāo)簽包含其他launch文件,這和C語(yǔ)言中的include幾乎是一樣的敦腔。

file指明我們要包含進(jìn)來(lái)的文件
ns作用:相對(duì)NAME_SPACE命名空間導(dǎo)入文件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末均澳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子符衔,更是在濱河造成了極大的恐慌找前,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件判族,死亡現(xiàn)場(chǎng)離奇詭異躺盛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)形帮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)颗品,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人沃缘,你說(shuō)我怎么就攤上這事躯枢。” “怎么了槐臀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵锄蹂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我水慨,道長(zhǎng)得糜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任晰洒,我火速辦了婚禮朝抖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谍珊。我一直安慰自己治宣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著侮邀,像睡著了一般坏怪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绊茧,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天铝宵,我揣著相機(jī)與錄音,去河邊找鬼华畏。 笑死鹏秋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亡笑。 我是一名探鬼主播侣夷,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼况芒!你這毒婦竟也來(lái)了惜纸?” 一聲冷哼從身側(cè)響起叶撒,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绝骚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后祠够,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體压汪,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年古瓤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了止剖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡落君,死狀恐怖穿香,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绎速,我是刑警寧澤皮获,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站纹冤,受9級(jí)特大地震影響洒宝,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萌京,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一雁歌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧知残,春花似錦靠瞎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)印蔗。三九已至,卻和暖如春丑勤,著一層夾襖步出監(jiān)牢的瞬間华嘹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工法竞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耙厚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓岔霸,卻偏偏與公主長(zhǎng)得像薛躬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呆细,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容