1. 程式人生 > 其它 >ROS實踐筆記4

ROS實踐筆記4

自定義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

  1. 編輯自定義msg

  2. 編輯配置檔案

    1. package.xml中新增編譯依賴與執行依賴
     <build_depend>message_generation</build_depend>
     <exec_depend>message_runtime</exec_depend>
     <!-- 
     exce_depend 以前對應的是 run_depend 現在非法
     -->
    
    1. 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

配置基本沒有區別