1. 程式人生 > >建立ros自定義訊息

建立ros自定義訊息

$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>
然後開啟CMakeLists.txt檔案,利用find_packag函式,增加對message_generation的依賴,這樣就可以生成訊息了
# 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

命令,檢查ROS是否能夠識訊息。

使用方法:

$ 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;
msg.rfid_distance=5.55;