ROS學習(十一)—— msg srv

來源:互聯網
上載者:User

標籤:require   資料類型   mkdir   other   ice   bsp   scp   log   dir   

一、msg 和 srv介紹

1、定義

  訊息(msg): msg檔案就是一個描述ROS中所使用訊息類型的簡單文本。它們會被用來產生不同語言的原始碼

  服務(srv): 一個srv檔案描述一項服務。它包含兩個部分:請求和響應。 

 

2、存放位置

  msg檔案存放在package的msg目錄下,srv檔案則存放在srv目錄下。

 

3、msg本質

msg檔案實際上就是每行聲明一個資料類型和變數名。可以使用的資料類型如下:

int8, int16, int32, int64 (plus uint*)float32, float64stringtime, durationother msg filesvariable-length array[] and fixed-length array[C] 

 PS:有一個特殊的類型Header : 包含時間戳記和座標系資訊

    在msg檔案的第一行經常可以看到Header header的聲明.

 

4、SRV檔案結構

int64 Aint64 B---int64 Sum

 srv檔案分為請求和響應兩部分,由‘---‘分隔

 

二、msg

1、建立一個msg

(1)建立msg檔案

roscd beginner_tutorialsmkdir msgecho "int64 num" > msg/Num.msg

 

(2)修改package.xml,確保msg檔案被轉換成為C++,Python和其他語言的原始碼

 <build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend>

  在package.xml添加這兩行

 

(3)修改CMakeLists.txt

A、修改find_package

find_package(catkin REQUIRED COMPONENTS   roscpp   rospy   std_msgs   message_generation)

 

B、修改catkin_package

catkin_package(  ...  CATKIN_DEPENDS message_runtime ...  ...)

 

C、修改add_message_files(記得取消注釋)

add_message_files(  FILES  Num.msg)

 

D、手動添加.msg檔案後,我們要確保CMake知道在什麼時候重新設定我們的project。(取消注釋)

generate_messages(  DEPENDENCIES  std_msgs)

 

2、使用rosmsg來確定ROS是否能夠識別訊息

(1)文法:

rosmsg show [message type]

 

(2)demo:

rosmsg show beginner_tutorials/Num

 

(3)如果不確定是哪個包,可以省略包名

rosmsg show Num

 

三、srv

1、建立一個srv

(1)先建立srv檔案夾

roscd beginner_tutorialsmkdir srv

 

(2)使用複製的方式建立srv檔案

A、文法

roscp [package_name] [file_to_copy_path] [copy_path]

B、執行個體

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

 

(3)跟msg一樣修改package.xml檔案,加入這兩個依賴

<build_depend>message_generation</build_depend><run_depend>message_runtime</run_depend>

 

(4)修改CMakeLists.txt中的find_package

find_package(catkin REQUIRED COMPONENTS  roscpp  rospy  std_msgs message_generation)

 

(5)修改CMakeLists.txt中的add_service_files(去掉注釋)

add_service_files(  FILES  AddTwoInts.srv)

 

2、使用rossrv來確保ROS可以識別服務

(1)文法:

rossrv show <service type>

 

(2)demo:

rossrv show beginner_tutorials/AddTwoInts

 

(3)可以省略包名

rossrv show AddTwoInts

 

四、msg 和 srv 編譯

1、修改CMakelists.txt

generate_messages(  DEPENDENCIES  std_msgs)

  記得去掉注釋

 

2、進行編譯

catkin_make install

 

3、所有在msg路徑下的.msg檔案都將轉換為ROS所支援語言的原始碼。

 產生的C++標頭檔將會放置在~/catkin_ws/devel/include/beginner_tutorials/。

 Python指令碼語言會在 ~/catkin_ws/devel/lib/python2.7/dist-packages/beginner_tutorials/msg 目錄下建立。

 lisp檔案會出現在 ~/catkin_ws/devel/share/common-lisp/ros/beginner_tutorials/msg/ 路徑下.

 

 

ROS學習(十一)—— msg srv

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.