ROS實踐筆記4
阿新 • • 發佈:2022-02-12
自定義msg型別
msgs只是簡單的文字檔案,每行具有欄位型別和欄位名稱,可以使用的欄位型別有:
int8, int16, int32, int64 (或者無符號型別: uint*) float32, float64 string time, duration //duration表示持續時間 other msg files //自己建立的msg檔案 variable-length array[] and fixed-length array[C] //變長陣列和定長陣列 //ROS中還有一種特殊型別:Header,標頭包含時間戳和ROS中常用的座標幀資訊。會經常看到msg檔案的第一行具有Header標頭。
檔案型別為.msg
-
編輯自定義msg
-
編輯配置檔案
- package.xml中新增編譯依賴與執行依賴
<build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend> <!-- exce_depend 以前對應的是 run_depend 現在非法 -->
- CMakeLists.txt編輯 msg 相關配置
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation ) # 需要加入 message_generation,必須有 std_msgs
# 配置 msg 原始檔 add_message_files( FILES Person.msg )
# 生成訊息時依賴於 std_msgs generate_messages( DEPENDENCIES std_msgs )
#執行時依賴 catkin_package( # INCLUDE_DIRS include # LIBRARIES demo02_talker_listener CATKIN_DEPENDS roscpp rospy std_msgs message_runtime # DEPENDS system_lib )
編譯後會在開發空間下的devel資料夾中
其中c++會生成標頭檔案在include資料夾下
python檔案在lib/python3/msg資料夾下
後續從這些檔案中呼叫。使用自定義msg檔案可能需要配置vscode
將c++標頭檔案路徑加入工作空間下的vscode目錄中的c_cpp開頭的.json檔案中即可,位於includepath屬性下。將生成的python檔案路徑配置進settings.json中
與預設資料型別釋出與接收訊息時的區別
c++
需要在CMakeLists.txt額外配置
c++ add_dependencies(person_talker ${PROJECT_NAME}_generate_messages_cpp) add_dependencies(person_listener ${PROJECT_NAME}_generate_messages_cpp) //person_talker以及person_listener都是檔名的對映
python
配置基本沒有區別