ROS

ROS tutorials 系列(9) Creating a ROS msg and srv

原文: http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv

這一篇教學教了兩個滿重要的技巧,怎麼定義自己的message格式跟service格式,還記得我們之前提到不管是topic或是service,node在溝通的時候都需要遵守一個格式,兩個node才能順利溝通。如果你需要用到的msg或srv格式都已經有人寫過,那你可以忽略這篇,但通常沒有這麼好的事情,所以這一篇算是自己要撰寫一個運行在ROS上的複雜系統所必須具備的基本功之一。
————————————————————————————

1.1 Introduction to msg and srv

這一小節是這篇裡面最重要的,因為只要抓到msg跟srv的核心觀念,後面的理解就比較不會有見樹不見林的感覺。

我們要定義一個msg file的基本觀念很簡單,只要新增一個.msg檔,裡面輸入幾個msg要包含的資料型別跟名稱就可以了。重點在於,經過一些後續的步驟之後,ROS的編譯系統會自動把這個.msg檔編譯成header file等等,這樣你的程式裡面才可以使用這個定義好的msg格式。

srv檔的概念跟msg檔是類似的,只是因為service分成request跟response,所以.srv檔中要分成兩塊,我想這個一看1.1中的範例就可以理解了。

1.2 Using msg

這一小節講到的步驟滿重要的,我想對於初學者來說勢必是會有點暈頭轉向,覺得步驟很多很繁複,不過這只是因為沒有理解這些步驟才會覺得混亂,現在來把這些步驟說明一下。

基本上,編譯msg檔和在runtime使用編譯好的檔案都是要用額外的package來處理,所以第一步就是要先在package.xml裡面加上跟message_generation和message_runtime的相依性。這一步還沒結束,你必須在CMakeLists.txt裡面的find_package部分裡面加上message_generation、catkin_package部分加上message_runtime才算把相依性搞定。

那下一步當然就是要讓編譯器知道你想要編譯你的.msg檔,所以先使用add_message_files把想編譯的.msg檔指定好,再用generate_messages跟編譯器說幫我編譯.msg檔。

做完上面這些步驟之後,catkin_make時就會產生該產生的檔案,也才能讓你用rosmsg查看這個格式。

1.3 & After

後面的部分應該都滿簡單的,只是讓你熟悉一下指令,另外srv檔的做法跟msg是差不多的,所以就不另外敘述了。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s