天天看點

ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

1. 建立一個自定義消息 msg

(1)在 catkin_ws/src/learning_communication 檔案中,建立一個檔案夾,命名為 msg,在這個msg檔案夾裡面,建立一個 .msg 檔案,命名為msg.msg

(2)打開msg.msg,複制如下内容,當然,你可以仿造上面的形式多增加幾行以得到更為複雜的消息

int64 num
string first_name
string last_name
uint8 age
uint32 score
           

(3)編輯 package.xml 

目的是確定msg檔案被轉換成為C++,Python和其他語言的源代碼:

打開 catkin_ws/src/learning_communication 下的 package.xml

删除:

  <!--    <build_depend>message_generation</build_depend> -->

  <!--   <exec_depend>message_runtime</exec_depend> -->

這兩行的  <!-- 、--> ,如下圖所示:

ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

(4)編輯CMakeLists.txt

設定find_packag函數:

增加對 message_generation 的依賴,這樣就可以生成消息了

打開 catkin_ws/src/learning_communication 下的CMakeLists.txt

在find_package()函數中加入  message_generation

如下圖:

ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

設定運作依賴:

找到如下行,并加入 message_runtime ,如下圖:

ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

加入新消息名稱:

ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

(5)編譯

cd ~/catkin_ws/
           
catkin_make
           

(6)使用 rosmsg

rosmsg show msg
           

顯示如下:

消息類型包含兩部分:

  • learning_communication/msg-- 消息所在的位置
  • int64 num

    string first_name

    string last_name

    uint8 age

    uint32 score                               -- 消息名.

    ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

2. 建立一個服務 srv

(1)在 catkin_ws/src/learning_communication 檔案中,建立一個檔案夾,命名為 srv,在這個srv檔案夾裡面,建立一個 .srv 檔案,命名為 AddTwoInts.srv

(2)打開 AddTwoInts.srv,複制如下内容

srv檔案分為請求和響應兩部分,由'---'分隔,其中 a 和 b 是請求, 而sum 是響應。

int64 a
int64 b
---
int64 sum
           

(3)編輯 package.xml 

       同建立msg

(4)編輯CMakeLists.txt

設定find_packag函數:    同建立msg   

設定運作依賴:同建立msg

加入新消息名稱:

ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

msg和srv都需要的步驟

去掉注釋并附加上所有你消息檔案所依賴的那些含有.msg檔案的package

(這個例子是依賴std_msgs,不要添加roscpp,rospy),結果如下:

ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv

(5)編譯

cd ~/catkin_ws/
           
catkin_make
           

(6)使用 rossrv

rossrv show learning_communication/AddTwoInts
           
ROS學習--第4篇:ROS基礎---建立ROS消息和ROS服務1. 建立一個自定義消息 msg2. 建立一個服務 srv
ros