使用 <include> 標籤可以在目前的 Launch 文件中,匯入另一個 Launch 文件。可以依照各種功能來撰寫不同的 Launch 文件,再靈活地透過 <include> 標籤組合這些 Launch 文件。不同的功能匯入不同的 Launch 文件,就能以想要的功能組合來啟動節點。以下就來說明 <include> 標籤要如何使用。
使用 <include> 標籤可以在目前的 Launch 文件中,匯入另一個 Launch 文件。可以依照各種功能來撰寫不同的 Launch 文件,再靈活地透過 <include> 標籤組合這些 Launch 文件。不同的功能匯入不同的 Launch 文件,就能以想要的功能組合來啟動節點。以下就來說明 <include> 標籤要如何使用。
在 roslaunch 的標籤中,有兩個標籤可以用來配置 Parameter Server 的參數:<param> 和 <rosparam>。兩者雖然都可以用來配置參數,但是功能上還是有些不同。下面將要介紹 <rosparam> 標籤如何使用,至於 <param> 標籤的使用,可以參考《roslaunch: <param> 標籤的用法》。
我們常常會在 Parameter Server 設置一些參數,當節點在執行的時候,讓節點依據不同的參數設定而做出不同的行為。這個時候我們會用到的就是這個 <param> 標籤,這個標籤可以讓我們在 Launch 文件中配置 Parameter Server 中的參數。以下就來講講要如何使用 <param> 標籤。
TurtleBot3 總共有三種型號:burger, waffle 和 waffle_pi,在使用之前必須先做設定。
在 Ubuntu 系統下,透過 export 指令來指定使用的型號。依據使用的型號,在下列三個指令中,挑選一個來執行。
export TURTLEBOT3_MODEL=burger
export TURTLEBOT3_MODEL=waffle
export TURTLEBOT3_MODEL=waffle_pi
有時候我們會需要在作業系統的環境變數裡面設置一些參數,當程式在執行的時候,可以讀取這些環境變數,依據環境變數不同的設定值,讓程式執行不同的動作。同時,我們又希望這些自訂的環境變數,只有在我們設置的範圍內可見,也就是僅對我們的程式有作用,對範圍外的程式則沒有效果,這是為了避免影響其他程式的執行。這個時候就可以使用 roslaunch 的 <env> 標籤來實現。
在 roslaunch 的 XML 標籤中,沒有可以用來呼叫 service 的標籤。但是,有些呼叫 service 的動作,想要添加到 Launch 文件中自動執行,該怎麼做呢?網路上有高手提供了一個可行的做法,經過簡單的實測,確實可以使用。下面大致說明一下做法,文章最末的參考資料裡面有相關的連結可以參考。
當我們需要啟動多個節點的時候,若使用 rosrun 來啟動每個節點,就必須開啟多個 Terminal 窗口來執行各個節點。如果只有一兩個節點需要啟動,這種方式或許還可以接受,但是如果要啟動的節點非常多,這種方式就很不方便了。
因此,ROS 提供另一種啟動節點的方式。把要啟動的節點列在 Launch 文件中,然後再使用 roslaunch 指令來執行這個 Launch 文件。roslaunch 就會把所有列在 Launch 文件裡面的節點一一啟動,就不需要手動開啟多個 Terminal 窗口來啟動每個節點了。
簡單的說,rosrun 一次只能啟動一個節點,roslaunch 一次可以啟動多個節點。若要使用 roslaunch 一次啟動多個節點,會有兩件事情要做,一是撰寫一個 Launch 文件,二是執行 roslaunch 指令,也就是這篇文章接下來要介紹的主題。
在這裡採用的 LiDAR 型號是 HLS-LFCD2,和 Turtlebot3 使用的是同一款 LiDAR。這款 LiDAR 是由 HLDS (Hitachi-LG Data Storage) 所製造。依照下列步驟操作,就可以透過 RViz 來繪製 LiDAR 掃描的數據。
下面我們將介紹三種可以在 ROS 中,顯示 USB Camera 影像的工具:image_view, rqt_image_view 和 rviz。
在這個範例中,我們透過 usb_cam 節點,將 USB Camera 影像串流發佈到
/usb_cam/image_raw 主題上。如果不知道
usb_cam 如何使用,可以參考《使用 USB Camera 攝影機 (使用 usb_cam 套件)》。
在前面兩篇文章中,我們已經介紹了 libuvc_camera 和 usb_cam 這兩個 USB Camera 相關的套件。接下來,我們要介紹另外一個套件 cv_camera,這個套件透過 OpenCV 來擷取 USB Camera 的影像。除了前面兩個套件之外,也可以選擇這個套件來使用 USB Camera 攝影機。
前面已經介紹過了,如何透過 libuvc_camera 套件來使用 USB Camera。這一篇要介紹的是另一個套件 usb_cam,透過這個套件一樣可以在 ROS 中使用 USB Camera 攝影機。
在研究如何使用 USB Camera 攝影機的時候,發現好像有不少套件可以使用。不過,一開始看到的 uvc_camera 套件似乎已經被棄置,目前已經被 libuvc_camera 套件所取代。所以,接下來就使用 libuvc_camera 套件,示範如何在 ROS 中使用 USB Camera 攝影機。