SLAM+語音機器人DIY系列:(二)ROS入門——8.理解roslaunch在大型項目中的做用

摘要                                          

ROS機器人操做系統在機器人應用領域很流行,依託代碼開源和模塊間協做等特性,給機器人開發者帶來了很大的方便。咱們的機器人「miiboo」中的大部分程序也採用ROS進行開發,因此本文就重點對ROS基礎知識進行詳細的講解,給不熟悉ROS的朋友起到一個拋磚引玉的做用。本章節主要內容:html

1.ROS是什麼node

2.ROS系統總體架構python

3.在ubuntu16.04中安裝ROS kineticnginx

4.如何編寫ROS的第一個程序hello_worldc++

5.編寫簡單的消息發佈器和訂閱器算法

6.編寫簡單的service和clientdjango

7.理解tf的原理ubuntu

8.理解roslaunch在大型項目中的做用centos

9.熟練使用rvizbash

10.在實際機器人上運行ROS高級功能預覽



8.理解roslaunch在大型項目中的做用

1roslaunch的做用

在一個大型的機器人項目中,常常涉及到多個node協同工做,而且每一個node都有不少可設置的parameter。好比咱們的機器人miiboo_nav導航項目,涉及到地圖服務節點、定位算法節點、運動控制節點、底盤控制節點、激光雷達數據獲取節點等衆多節點,和幾百個影響着這些node行爲模式的parameter。若是所有手動rosrun逐個啓動node並傳入parameter,工程的複雜程度將不可思議。因此這個時候就須要用roslaunch來解決問題,將須要啓動的節點和須要設置的parameter所有寫入一個*.launch文件,而後用roslaunch一次性的啓動*.launch文件,這樣全部的節點就垂手可得的啓動了。miiboo_nav導航項目的miiboo_nav.launch文件內容如圖28

(圖28miiboo_nav導航項目的miiboo_nav.launch文件內容

2launch標籤介紹

launch文件採用xml文本標記語言進行編寫,對比較經常使用的標籤進行介紹。

<launch>標籤:

這個是頂層標籤,全部的描述標籤都要寫在<launch></launch>之間。

<launch>
...
</launch> 

<node>標籤:

這個是最多見的標籤,每一個node標籤裏包含了ROS圖中節點的名稱屬性name、該節點所在的包名pkg、節點的類型typetype爲可執行文件名稱,若是節點用c++編寫;type*.py,若是節點用python編寫)、調試屬性output(若是output=screen」,終端輸出信息將被打印到當前控制檯,而不是存入ROS日誌文件)。

<node name=」xx」 pkg=」xx」 type=」xx」 output=」xx」>
...
</node> 

<include>標籤:

這個標籤是用於導入另外一個*.launch文件到當前文件。也就是說高層級的launch文件能夠經過include的方法調用其它launch文件,這樣可使launch文件的組織方式更加模塊化,便於移植與複用。

<include file=」$(find pkg_name)/launch/xx.launch」/>

<remap>標籤:

這個標籤是用於將topic的名稱進行重映射, from中填入原來的topic名稱,to中填入新的topic名稱。<remap>標籤根據放置在launch文件的層級不一樣,在相應的層級起做用。

<remap from=」orig_topic_name」 to=」new_topic_name」/>

<param>標籤:

這個標籤用於在參數服務器中建立或設置一個指定名稱的參數值。

<param name=」param_name」 type=」xx」 value=」xx」/>

<rosparam>標籤:

這個標籤用於從yaml文件中一次性導入大量參數到參數服務器中。

<rosparam command=」load」 file=」$(find pkg_name)/path_to_file.yaml」/>

<arg>標籤:

這個標籤用於在launch文件中定義用於存儲的臨時變量,該標籤訂義的變量只在當前launch文件中使用。推薦使用第一種方式賦值,這樣能夠方便從命令行中傳入參數。

<arg name=」xx」 default=」xx」/>
或者
<arg name=」xx」 value=」xx」/>

<group>標籤:

這個標籤用於將node批量劃分到某個命名空間。便於大項目中節點的批量管理。

<group ns=」group_one」>
< node ... />
< node ... />
</group>

<group ns=」group_two」>
< node ... />
< node ... />
</group>

3launch的使用方法

首先在相應功能包目錄下新建一個launch文件夾。

而後在launch文件夾中新建*.launch文件,並按照上面的launch標籤規則編寫好launch文件的內容。

最後在終端中用roslaunch命令啓動launch文件,命令以下:

cd ~/catkin_ws/
source devel/setup.bash
roslaunch <pkg_name> <file_name.launch> 

特別說明,因爲roslaunch命令會自動去啓動roscore,因此不須要像以前使用rosrun那樣特地先去手動啓動roscore

後記                

------SLAM+語音機器人DIY系列【目錄】快速導覽------

第1章:Linux基礎

1.Linux簡介

2.安裝Linux發行版ubuntu系統

3.Linux命令行基礎操做

第2章:ROS入門

1.ROS是什麼

2.ROS系統總體架構

3.在ubuntu16.04中安裝ROS kinetic

4.如何編寫ROS的第一個程序hello_world

5.編寫簡單的消息發佈器和訂閱器

6.編寫簡單的service和client

7.理解tf的原理

8.理解roslaunch在大型項目中的做用

9.熟練使用rviz

10.在實際機器人上運行ROS高級功能預覽

第3章:感知與大腦

1.ydlidar-x4激光雷達

2.帶自校準九軸數據融合IMU慣性傳感器

3.輪式里程計與運動控制

4.音響麥克風與攝像頭

5.機器人大腦嵌入式主板性能對比

6.作一個能走路和對話的機器人

第4章:差分底盤設計

1.stm32主控硬件設計

2.stm32主控軟件設計

3.底盤通訊協議

4.底盤ROS驅動開發

5.底盤PID控制參數整定

6.底盤裏程計標

第5章:樹莓派3開發環境搭建

1.安裝系統ubuntu_mate_16.04

2.安裝ros-kinetic

3.裝機後一些實用軟件安裝和系統設置

4.PC端與robot端ROS網絡通訊

5.Android手機端與robot端ROS網絡通訊

6.樹莓派USB與tty串口號綁定

7.開機自啓動ROS節點

第6章:SLAM建圖與自主避障導航

1.在機器人上使用傳感器

2.google-cartographer機器人SLAM建圖

3.ros-navigation機器人自主避障導航

4.多目標點導航及任務調度

5.機器人巡航與現場監控

第7章:語音交互與天然語言處理

1.語音交互相關技術

2.機器人語音交互實現

3.天然語言處理雲計算引擎

第8章:高階拓展

1.miiboo機器人安卓手機APP開發

2.centos7下部署Django(nginx+uwsgi+django+python3)

----------------文章將持續更新,敬請關注-----------------

 

若是你們對博文的相關類容感興趣,或有什麼技術疑問,歡迎加入下面的《SLAM+語音機器人DIY》QQ技術交流羣,一塊兒討論學習^_^

關於咱們:

視頻教程:

 

https://www.bilibili.com/video/av61448040

相關文章
相關標籤/搜索