1. 程式人生 > >ROS編程基礎(二)發布者節點的創建和運行

ROS編程基礎(二)發布者節點的創建和運行

create img string 其中 class 沒有 相關 檢查 鏈接

  ROS消息通信中使用的發布者(Publisher)和訂閱者(Subscriber)可以被發送和接收所代替。在ROS中,發送端稱為發布者,接收端稱為訂閱者。本節旨在創建一個簡單的msg文件,並創建和運行發布者和訂閱者節點。

1.創建功能包

  以下命令是創建ros_tutorials_topic功能包的命令。這個功能包依賴於message_generation、std_msgs和roscpp功能包,因此將這些用作依賴選項。第二行命令意味著將使用創建新的功能包時用到的message_generation表示將使用創建新消息的功能包std_msgs(ROS標準消息功能包)和roscpp(在ROS中使用C/C ++的客戶端程序庫)必須在創建功能包之前安裝。用戶可以在創建功能包時指定這些相關的功能包設置,但也可以在創建功能包之後直接在package.xml中修改。

cd ~/catkin_ws/src
catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp 

技術分享圖片

  創建功能包時,將在~/catkin_ws/src目錄中創建ros_tutorials_topic功能包目錄,並在該功能包目錄中創建ROS功能包的默認目錄和CMakeLists.txt和package.xml文件。可以使用下面的ls命令檢查它,並使用基於GUI的Nautilus(類似Windows資源管理器)來檢查功能包的內部。

cd ros_tutorials_topic
ls
include          → 頭文件目錄
src              → 源代碼目錄
CMakeLists.txt   → 構建配置文件
package.xml      → 功能包配置文件

技術分享圖片

2.修改功能包配置文件

  ROS的必備配置文件package.xml是一個包含功能包信息的XML文件,其中包含用於描述功能包名稱、作者、許可證和依賴包的信息。使用以下命令,利用編輯器(gedit、vim、emacs等)打開文件,並修改它以匹配當前節點。

vim package.xml

  以下代碼顯示如何修改package.xml文件以匹配我們這次要創建功能包。筆者的個人信息包含在如下文件內容中,您可以修改它,以適應您的需求。有關每個選項的詳細說明,咱們後面再說。

技術分享圖片

3.修改構建配置文件(CMakeLists.txt)

  ROS的構建系統catkin基本上使用CMake,它在功能包目錄中的CMakeLists.txt文件中描述了構建環境。該文件設置可執行文件的創建、依賴包優先構建、鏈接創建等。

vim CMakeLists.txt

 以下是為了匹配正在創建的功能包而修改的CMakeLists.txt。同樣,有關每個選項的詳細說明,咱們後面再講。

 技術分享圖片

4.創建消息文件

  在上述的CMakeLists.txt文中添加了如下選項。

add_message_files(FILES MsgTutorial.msg)

  這意味著在構建時要包含消息MsgTutorial.msg,該消息將在此節點中被使用。現在我們還沒有創建MsgTutorial.msg,因此按以下順序創建它:

roscd ros_tutorials_topic    → 移動到功能包目錄
mkdir msg                    → 功能包中創建新的msg消息目錄
cd msg                       → 轉到創建的msg目錄
vim MsgTutorial.msg          → 創建新的MsgTutorial.msg文件並修改內容

 內容很簡單。如下所示,創建一個time消息類型的stamp消息和一個int32消息類型的data消息, 除了這些消息類型之外,還有一些如bool、int8、int16、float32、string、time、duration和common_msgs等基本消息類型,以及在ROS中收集常用消息的common_msgs。這裏我們只是為了創建一個簡單的例子,因此用了time和int32。 

ROS編程基礎(二)發布者節點的創建和運行