需要写自定义的msg类型的时候,比如我需要在包uwb_driver中创建一个topic类型为std_ang,步骤如下
-
首先在package目录下创建一个文件夹名为msg,再在msg文件夹中创建dist_ang.msg把我想要在里面定义的具体的变量名写进去
float32 dist
float32 ang -
再在包的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}
)
- 在package.xml中修改相关语句
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend> //这两句话很关键,有的是run_depend 有的是execute_depend - 编译catkin_make
- 再用rosmsg show uwb_drive/dist_ang 就可以看到,并且可以#include<uwb_drive/dist_ang.h>