建立ros自定義訊息
阿新 • • 發佈:2019-02-03
$cd catkin_ws/src/rfid/src
$mkdir msg
在msg資料夾下建立 一個名為rfid_data.msg的檔案,輸入如下內容:
float32 rfid_distance
float32 rfid_phase
接下來,還有關鍵的一步:我們要確保msg檔案被轉換成為C++,Python和其他語言的原始碼:
檢視package.xml, 確保它包含一下兩條語句:
<build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend>
# Do not just add this line to your CMakeLists.txt, modify the existing line find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)同樣,你需要確保你設定了執行依賴,這塊兒要放在generate_message()之後:
catkin_package( CATKIN_DEPENDS message_runtime )
找到如下程式碼塊:
# add_message_files( # FILES # Message1.msg # Message2.msg # )
去掉註釋符號#,用你的.msg檔案替代Message*.msg,就像下邊這樣:
add_message_files( FILES rfid_data.msg )
手動新增.msg檔案後,我們要確保CMake知道在什麼時候重新配置我們的project。 確保添加了如下程式碼:
generate_message(
DEPENDENCIES
std_msgs
)
現在,你可以生成自己的訊息原始碼了。
以上就是你建立訊息的所有步驟。下面通過rosmsg show
使用方法:
$ rosmsg show [message type]
樣例:
$ rosmsg show /rfid/rfid_data.msg
你將會看到:
float32 rfid_distance
float32 rfid_phase
在上邊的樣例中,訊息型別包含兩部分:
-
rfid -- 訊息所在的package
-
rfid_data -- 訊息名rfid_data.
如果你忘記了訊息所在的package,你也可以省略掉package名。輸入:
$ rosmsg show rfid_data
你將會看到:
-
float32 rfid_distance
float32 rfid_phase
-
如果在程式中用的話應該這樣:
-
rfid::rfid_data msg;//rfid是訊息所在包的名字,rfid_data為訊息資料夾名字去掉.msg,msg為自定義的一個變數,然後
msg.rfid_distance=5.55;