ROS自定义msg类型并在同一个包和不同包的头文件中调用

需要写自定义的msg类型的时候,比如我需要在包uwb_driver中创建一个topic类型为std_ang,步骤如下

  1. 首先在package目录下创建一个文件夹名为msg,再在msg文件夹中创建dist_ang.msg把我想要在里面定义的具体的变量名写进去
    float32 dist
    float32 ang

  2. 再在包的Cmakelist.txt中写上如下代码`

    find_package(catkin REQUIRED COMPONENTS
    dynamic_reconfigure
    message_generation //主要是这个
    roscpp
    rospy
    tf
    std_msgs
    )
    add_message_files(
    FILES
    dist_ang.msg //这个新写的msg文件
    )

    generate_messages(DEPENDENCIES
    std_msgs
    )

    catkin_package(
    CATKIN_DEPENDS
    message_runtime)

    include_directories(
    ${catkin_INCLUDE_DIRS}
    )

    add_executable( P R O J E C T N A M E n o d e s r c / u w b d r i v e r . c p p ) t a r g e t l i n k l i b r a r i e s ( {PROJECT_NAME}_node src/uwb_driver.cpp) target_link_libraries( PROJECTNAMEnodesrc/uwbdriver.cpp)targetlinklibraries({PROJECT_NAME}_node
    ${catkin_LIBRARIES}
    )
    include_directories(
    include
    ${catkin_INCLUDE_DIRS}

)

  1. 在package.xml中修改相关语句
    message_generation
    message_runtime //这两句话很关键,有的是run_depend 有的是execute_depend
  2. 编译catkin_make
  3. 再用rosmsg show uwb_drive/dist_ang 就可以看到,并且可以#include

你可能感兴趣的:(ROS自定义msg类型并在同一个包和不同包的头文件中调用)