编写自己的msg
1. 创建.msg文件
我们在ros中,不仅可以使用库中所包含的msg,并且我们还能够自己编写自定义的msg,那么如何去配置这个msg文件,如下所示:
roscd makecar
mkdir msg
首先创建msg文件夹,我们所编写的.msg
文件必须得放在这个文件夹下。创建carinfo.msg
文件,
文件内容如下所示:
float64 px
float64 py
float64 vx
float64 vy
float64 ux
float64 uy
float64 v
2. 配置CmakeList.txt文件
CmakeList.txt文件决定了我们的catkin空间是如何编译的,其中的顺序一定不能颠倒,否则编译会出错。
然后我们打开makecar包下的CmakeList.txt文件,如下所示
cmake_minimum_required(VERSION 2.8.3) # 代表版本号,一定要高于此号
project(makecar)
find_package(catkin REQUIRED COMPONENTS
roscpp # 前面添加的包的,在此处find_package自动添加,也可以手动在此处添加想要的包
rospy # REQUIRED代表此包很重要,即catkin
geometry_msgs
message_generation # 定义自己的消息必须的添加的依赖项,
)
add_message_files(
FILES
# Message1.msg
# Message2.msg
carinfo.msg # 自己定义的消息的文件名
)
generate_messages(
DEPENDENCIES
# std_msgs
# Or other packages containing msgs
geometry_msgs # 在自己消息中的依赖项,如果自己定义的消息中没有对其他包的依赖,可以不在此处添加
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES formcar
# CATKIN_DEPENDS roscpp rospy
# DEPENDS system_lib CATKIN_DEPENDS
message_runtime # 在编译过程中的依赖项,必须添加
geometry_msgs
)
3. 配置package.xml文件
除了CmakeList.txt文件,我们还得配置package.xml文件,如下所示:
<?xml version="1.0"?>
<package format="2"> # 包的名字
<name>formcar</name>
<version>0.0.0</version>
<description>The formcar package</description> # 包的描述
<license>TODO</license>
<buildtool_depend>catkin</buildtool_depend> # 添加的包的依赖,总共有六种依赖,
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<build_depend>message_generation</build_depend> # 自定义自己的msg消息时,必须添加这两条依赖,否则消息不能生成
<exec_depend>message_runtime</exec_depend>
<build_depend>geometry_msgs</build_depend> # 如果是后添加的包,则必须在此处添加上后加的包的这些依赖
<build_export_depend>geometry_msgs</build_export_depend>
<exec_depend>geometry_msgs</exec_depend>
<!-- The export tag contains other, unspecified, tags -->
<export>
<!-- Other tools can request additional information be placed here -->
</export>
</package>