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

配置基本没有区别
posted @ 2022-02-12 22:37  一心如旧  阅读(91)  评论(0)    收藏  举报