iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 28
1
自我挑戰組

ROS自學筆記系列 第 28

Day 28 - ROS Launch file

  • 分享至 

  • xImage
  •  

快速講解一下什麼是launch file,大家如果前兩天有稍微玩一下parameter server的話就會發現,在parameter server設定的一些自己定義的parameter,在關掉server的時候就會消失了,下次再打開的時候就沒這個parameter了,這樣真的超麻煩的,我要使用全域變數明明就是為了方便修改參數,結果我改好以後下次開啟的時候又要重新設定,這樣很不合理吧XD 所以這就是為什麼會有launch file啦! 這個檔案就是用來放置一些預設的參數、或是一些需要事先執行的程式,有點像shell檔那樣,那我們就來看看要怎麼建立這個launch file吧!

首先,這個檔案需要放在/launch的資料夾內:

$ roscd beginner_tutorials
$ mkdir launch
$ cd launch
$ vim startup.launch

這個.launch檔就是我們要預先寫好的設定檔囉! 使用的是xml格式,所以會需要用到許多不同的標籤:

<launch>
    <param name="/print_frq" type="double" value="2.0" />
</launch>

以上就是我們昨天那篇設定的/print_frq參數啦! 比較需要注意的是,之前用parameter server設定的時候不需要設定型別,但是寫在這個launch檔的時候需要連型別一起定義好喔!

$ roslaunch [package] [filename.launch]

使用roslaunch執行launch檔,就可以把參數預設好囉!
roslaunch 執行畫面
可以看到執行完roslaunch之後,他就建立好了/print_frq這個參數,其值為2.0。

launch file的功能不只有設定參數而已,還可以設定一些一開始就需要在背景執行的node,所以我們可以修改startup.launch如下:

<launch>
    <param name="/print_frq" type="double" value="2.0" />
    <node name="talker" pkg="beginner_tutorials" type="talker.py" />
</launch>

那麼在執行roslaunch的時候,他就會幫你執行talker這個node囉!
roslaunch 執行畫面

另外,通常在執行node之前我們都需要先執行roscore,但是在roslaunch執行的時候,他會自己偵測是否有開啟master,如果沒有的話他就會自動幫你開一個喔!
roslaunch 執行畫面
可以看到他自動建立了一個新的master,這樣真的蠻方便的,事先寫好launch檔,之後只需要一個roslaunch指令,就可以一鍵執行囉! (有種中國手遊的感覺 XD)

參考資料

ros wiki - roslaunch
ros tutorials - using roslaunch
ros tutorials - launch file


上一篇
Day 27 - 使用自定義的parameter (python/c++)
下一篇
Day 29 - ROS Bags
系列文
ROS自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言