1、在package中新建文件夹名为msg
2、在msg文件夹中创建消息(此处以my_msg.msg)为例,注意的是要以msg为后缀名
内容举例如下:
int32 data1
float64 data2
关于消息内容,需要注意的是如果类型错误,那么将不能生成头文件。例如float64写成了float,那么编译时将会出现错误:xxx.h: No such file or directory;而不会告诉你是哪里出错了,我曾经就遇到过这么坑的问题,所以这点需要注意。
3、修改CmakeList.txt 和package.xml
3.1、在package.xml中添加编译、运行依赖项
message_generation
message_runtime
此处需要注意的是indigo版本的中是找不到下面语句的:
message_runtime
如果加上会出现以下问题:
- The manifest (with format version 2) must not contain the following tags: run_depend
删除掉又会出现:
catkin_package() DEPENDS on the catkin package 'message_runtime' which must
therefore be listed as a run dependency in the package.xml
即告诉我们应该添加run_time依赖,此时需添加
message_runtime
3.2、CmakeList.txt
find_package()中添加message_generation
find_package(catkin REQUIRED COMPONENTS
message_generation
roscpp
rospy
std_msgs
)
add_message_files()中添加my_msg.msg
add_message_files(FILES
my_msg.msg
)
generate_messages()添加std_msgs
generate_messages(DEPENDENCIES
std_msgs
)
catkin_package()添加message_runtime
catkin_package(
CATKIN_DEPENDS
message_runtime)
最后在add_executable(xxx src/xxx.cpp)后面添加一行
add_dependencies(xxx ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
否则仍可能生成不了my_msg.h头文件
1、包含头文件
#include
2、定义变量
package_name::my_msg msg;