ROS 自定义消息类型方法

流程

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;

你可能感兴趣的:(ROS 自定义消息类型方法)