一、创建msg文件
msg是用来描述ROS message的简单文本,用来生成不同语言的消息源代码。可以看作是将一些ros内置类型进行重命名定义。
进入ROS工作空间中,创建一个存放msg文件的包(此处以博主所用的实际工程为例)。
$ cd Control/src/controller
$ mkdir msg && cd msg
$ touch car_state.msg //博主ROS工程中所用的
在car_staete.msg中输入如下:
float64 x
float64 y
float64 v_x
float64 v_y
float64 phi
float64 r
以上步骤就完成了msg消息的自定义。
要使用这些消息,需要修改CMakeLists和package中的配置,这一步确保其可以转成C++,Python或者其他语言。
二、修改配置文件
进入$ cd Control/src/controller
,修改当前文件夹下的CMakeLists和package。
1)修改package.xml
往其中添加以下代码:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
2)修改CMakeLists.txt
1> 首先调用find_package查找依赖的包,必备的有roscpp rospy message_generation,其他根据具体类型添加。
以下是博主目前所用:
find_package(catkin REQUIRED COMPONENTS
nav_msgs
roscpp
rospy
std_msgs
sensor_msgs
message_generation
)
2> 然后是add_message_files,指定msg文件:
## Generate messages in the 'msg' folder
add_message_files(
FILES
car_state.msg
# Message2.msg
)
3> generate_messages,指定生成消息文件时的依赖项:
## Generate added messages and services with any dependencies listed here
generate_messages(
DEPENDENCIES
nav_msgs
std_msgs
sensor_msgs
)
4> 接着是catkin_package设置运行依赖:
catkin_package(
INCLUDE_DIRS include
# LIBRARIES Controller
CATKIN_DEPENDS nav_msgs roscpp rospy std_msgs message_runtime
# DEPENDS system_lib
)
至此,在controller包中的源文件就可以使用msg消息,使用时,添加头文件
#include <controller/car_state.h>