(1)创建新软件包添加message_runtime和message_generation依赖
catkin_create_pkg XXX roscpp rospy std_msgs message_runtime message_generation
(2)在软件包下创建msg文件件编写msg文件
(3)在CMakeLists.txt中编写相关代码
a.确保find_package中存在message_runtime和message_generation
find_package(catkin REQUIRED COMPONENTS
message_generation
message_runtime
roscpp
rospy
std_msgs
)
b.add_message_files中添加相应的msg文件
add_message_files(
FILES
carry.msg
)
c.取消generate_messages注释
generate_messages(
DEPENDENCIES
std_msgs
)
d.取消注释catkin_package下的CATKIN_DEPENDS,确保message_runtime在其中,为了让其他依赖消息包的软件包使用该消息包
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES qq_msgs
CATKIN_DEPENDS message_generation message_runtime roscpp rospy std_msgs
# DEPENDS system_lib
)
(4)package.xml中确保<exec_depend>和<build_depend>中都有message_generation
、message_runtime。
<buildtool_depend>catkin</buildtool_depend>
<build_depend>message_generation</build_depend>
<build_depend>message_runtime</build_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>message_generation</exec_depend>
<exec_depend>message_runtime</exec_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
注:
-
<buildtool_depend>
: 指定了构建工具依赖。这里catkin
是ROS的构建系统,用于编译和构建ROS软件包。 -
<build_depend>
: 指定了编译时依赖。这些依赖在编译软件包时必须可用。message_generation
: 用于生成消息的依赖,消息是ROS中用于节点间通信的数据结构。message_runtime
: 用于消息运行时的依赖,即消息的序列化和反序列化。roscpp
: ROS C++客户端库,提供C++接口与ROS通信。rospy
: ROS Python客户端库,提供Python接口与ROS通信。std_msgs
: 标准消息包,包含一些基本的消息类型,如String
、Int32
等。
-
<build_export_depend>
: 指定了构建时的导出依赖。这些依赖不仅在编译时需要,而且在其他软件包依赖当前软件包时也需要。 -
<exec_depend>
: 指定了执行时依赖。这些依赖在软件包运行时必须可用,但不是必须的编译依赖。