ROS:创建和发布自己的Message

来源:互联网 发布:大数据 信用评分模型 编辑:程序博客网 时间:2024/06/05 07:01

有时候我们需要定义自己的msg,而ROS wiki上ROS Tutorials的教程让新手不是很好理解。在wiki上有介绍创建msg,下一步介绍发布和订阅,然而创建的msg是Num,发布的却是std_msgs/String。对于小白而言看起来就比较吃力了。但是在ROS上对在C++/Python上然后使用也是有说明的,如Messages,DefiningCustomMessages。

        这篇博客就对如何创建自己的msg并且发布(C++)做一个详细的介绍。

创建自己的msg

Step1:首先进入自己的workspace。

1
cd~/catkin_ws/src

Step2:创建一个包,取名为encode_talker,用来发布编码器数据信息。依赖rospy、roscpp、message_generation、message_runtime。

1
catkin_create_pkgencode_talkerrospyroscppmessage_generationmessa
    ge_runtime

Step3:进入encode_talker包,创建msg文件夹和自己的msg

1
2
3
cdencode_talker/
mkdirmsg
touchmsg/Encode.msg

Step4:然后编辑Encode.msg,定制自己的数据。这里加入左右轮速

1
2
floatLeft_vel
floatRight_vel

Step5:如果按照上述过程来的话就可跳过该步骤。否则需要在package.xml加入依赖,确保有以下两句话:

1
2
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

Step6:修改 CMakeLists.txt文件。

用find_packag中加入message_generation的依赖。有了step2这步也可以跳过。

1
find_package(catkinREQUIREDCOMPONENTSmessage_generation)

然后得添加msg文件

1
add_message_files(FILESEncode.msg)

为了确保CMake知道在什么时候重新配置我们的project,确保添加了以下代码。

1
generate_messages()

这时的CMakeLists.txt是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cmake_minimum_required(VERSION2.8.3)
project(encode_talker)
##Findcatkinandanycatkinpackages
find_package(catkinREQUIREDCOMPONENTS
message_generation
message_runtime
roscpp
rospy
)
##Generatemessagesinthe'msg'folder
add_message_files(FILESEncode.msg)
##Generateaddedmessagesandserviceswithanydependencieslisted
    here
generate_messages()
#catkin_package(CATKIN_DEPENDSmessage_runtime)
include_directories(
${catkin_INCLUDE_DIRS}
)

Step7:编译并且测试ROS是否能够识别消息。

1
2
3
cd~/catkin_ws
catkin_make
rosmsgshowencode_talker/Encode

然后在终端上可以看到:

1
2
float32left_vel
float32right_vel

如果忘记Encode所在包,可以运行

1
rosmsgshowEncode

这时终端上会显示

1
2
3
[encode_talker/Encode]:
float32left_vel
float32right_vel

 


0 0
原创粉丝点击