在上一篇我們知道了有哪些message
格式可以使用,現在我們要來做一個自己的message
啦!
首先要先去修改beginner_tutorials
裡面的package.xml
檔和CMakeList.txt
檔設定,讓他可以幫我們建立自定義的msg
檔案:
package.xml
:message
用的,另一個是執行的時候用的,我想看英文名稱應該蠻清楚的才對 XD <build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
CMakeList.txt
:message
用的相依模組,在find_package
底下新增一個message_generation
,所以看起來會長這樣:find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
並且在catkin_package
底下將CATKIN_DEPENDS
的註解打開,在後面新增一個message_runtime
,所以看起來會長這樣:
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES beginner_tutorials
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
# DEPENDS system_lib
)
其他部分ROS的CMakeList已經幫我們寫好了,只是需要把註解拿掉而已,所以要把以下幾行的註解拿掉:
generate_messages(
DEPENDENCIES
std_msgs
)
上面就是基本設定啦! 接著我們就可以開始製作自己的message
囉!
ROS幫忙建立的message
檔案都需要放在/msg
的資料夾裡面,所以我們要在beginner_tutorials
內自己創一個/msg
的資料夾,並把自己定義的.msg
檔放在裡面:
$ roscd beginner_tutorials
$ mkdir msg
$ cd msg
$ vim my_msg.msg
我在這裡創了一個自己定義的msg
檔,也就是my_msg
,裡面我想模擬發文的時候,應該要有標題跟內文,還有文章的id,所以格式定義如下:
int64 id
string title
string content
設定好以後,接著回去編輯package
的CMakeList.txt
,將這個檔案加入編譯,建立的方法其實也寫好了,只要找到add_message_files
的註解並拿掉就好了:
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )
其中的Message1.msg
和Message2.msg
只是範例說明,並沒有這兩個檔案,所以在解開註解的時候要把這兩行刪掉,不然在make的時候會找不到這兩個檔案而出錯喔!
add_message_files(
FILES
my_msg.msg
)
這樣就完成設定了! 接下來只要回去執行catkin_make
,就可以成功建立這個新的message
格式囉!
在建立的時候可以看到,catkin_make
幫我們建立了許多不同種格式的my_msg
,負責供給不同語言使用,有js、c++、python等等不同的版本,明天我們就來使用這個新的message
格式傳遞資訊吧!