ROS編程第二步:自定義消息

使用ros自帶的消息顯然滿足不了我們的需要,這個時候我們就要自定義消息了。
假如我們想自定義消息是:一個person,並且它有如下屬性

string name
uint8 sex
uint8 age

uint8 unknown = 0
uint8 male = 1
uint8 female = 2

你可能會問, 下面三行是什麼意思? 其實,上面的三行如果是屬性的話,下面三行的作用其實是常值屬性,也就是我們 一旦調用 person.male 的話,我們就得到了 數字1 .

如何在ros中起作用呢?
一 .
在如下路徑下面建立 Person.msg
home/工作空間名/src/功能包名
內容就是

string name
uint8 sex
uint8 age

uint8 unknown = 0
uint8 male = 1
uint8 female = 2

二 .
更改package.xml文件 添加下面兩行

 <build_depend>message_generation</build_depend>
   <exec_depend>message_runtime</exec_depend>

解釋: ros爲我們提供了 自定義消息的 一套方法, 也即是我們的自定義消息要依賴 message_generation ,同時執行時要依賴 message_runtime.
這個runtime 就相當於ros 爲 我們自己定義的消息開闢的 運行空間,和ros內置的消息劃清界限,方便運行管理。

三.
更改 CMakelists
先在文件前面的
find_package(catkin REQUIRED COMPONENTS){}
花括號裏面中添加:

 message_generation

其次 , 向下翻, 找找一個# 包圍起來的
Declare ROS dynamic reconfigure parameters
在它上面添加

add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)

解釋:
ros有自己的消息管理系統,你想把自己定義的消息放進去, 就要做出上面的聲明, 第一句話代表了 你想把自己的 msg 文件添加到ros的消息系統中去,第二句話代表了你自己的消息在產生中也依賴了ros標準消息(例如 uint8)

最後,向下翻, 找找一個# 包圍起來的 Build,
上面有個catkin_package{}
但是內容全部被註釋掉了, 這個時候打開 CATKIN_DEPENDS,同時在這一行後面追加上 message_runtime

然後保存 ,回到工作空間目錄 ,進行一下catkin_make 和 source devel/setup.bash

報錯的話再仔細看看有沒有拼錯就好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章