ROS消息的创建

1 msg文件

在ROS中消息通过msg定义。
- msg文件:用于描述ROS消息,用于生成对应不用语言的源代码。
msg文件存放于msg目录中。

2 msg文件的创建

msg文件是一个文本文件,每一包含一个类型和一个名称,类型可以是一下几种:
- int8, int16, int32, int64 (plus uint*)
- float32, float64
- string
- time, duration
- other msg files
- variable-length array[] and fixed-length array[C]

另外,在第一行中往往会加入一个Header。下面是一个典型的msg文件:

  Header header
  string child_frame_id
  geometry_msgs/PoseWithCovariance pose
  geometry_msgs/TwistWithCovariance twist

或者:

string first_name
string last_name
uint8 age
uint32 score

两者的不同是,前者调用了其他的消息,而后者只用了最原始的数据类型。

3 msg的编译和使用

在msg编译前,需要修改package.xml和CMakeLists.txt。所谓对msg编译,实际上就是通过.msg文件生成对应编程语言的头文件。

3.1 对package.xml的修改

在package.xml文件中加入一下两行:

  <build_depend>message_generationbuild_depend>
  <run_depend>message_runtimerun_depend>

3.2 对CMakeLists.txt的修改

在CMakeLists.txt文件中,将message_generation添加到find_package()函数调用中。

find_package(catkin REQUIRED COMPONENTS
   roscpp
   rospy
   std_msgs
   **message_generation**
)

另外,在CATKIN_DEPENDS中加入message_runtime:

catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)

将以下代码块前的注释去掉:

# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )

将Message*.msg替换成我们自己写的.msg文件。
另外,将以下代码块前的注释去掉,确保generate_messages() 函数被调用:

# generate_messages(
#   DEPENDENCIES
#   std_msgs
# )

3.3 编译

完成上述工作后,我们在catkin workspace中执行如下命令:

$ roscd [package_name]
$ cd ../..
$ catkin_make install

此时,在msg文件夹中的.msg文件就会成对应于各种语言的文件。其中,C++的消息头文件会被生成在 ~/catkin_ws/devel/include/[package_name]中。

4 消息查看

可以通过rosmsg来查看ROS消息:

  rosmsg show     Show message description
  rosmsg list     List all messages
  rosmsg md5      Display message md5sum
  rosmsg package  List messages in a package
  rosmsg packages List packages that contain messages

也可通过如下方式获取子命令的帮助。

你可能感兴趣的:(ROS解析,ROS操作系统)