$cd catkin_ws/src/rfid/src
$mkdir msg
在msg文件夹下创建 一个名为rfid_data.msg的文件,输入如下内容:
float32 rfid_distance
float32 rfid_phase
接下来,还有关键的一步:我们要确保msg文件被转换成为C++,Python和其他语言的源代码:
查看package.xml, 确保它包含一下两条语句:
<build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend>然后打开 CMakeLists.txt 文件,利用find_packag函数,增加对message_generation的依赖,这样就可以生成消息了:
# Do not just add this line to your CMakeLists.txt, modify the existing line find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)同样,你需要确保你设置了运行依赖,这块儿要放在generate_message()之后:
catkin_package( CATKIN_DEPENDS message_runtime )
找到如下代码块:
# add_message_files( # FILES # Message1.msg # Message2.msg # )
去掉注释符号#,用你的.msg文件替代Message*.msg,就像下边这样:
add_message_files( FILES rfid_data.msg )
手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project。 确保添加了如下代码:
generate_message(
DEPENDENCIES
std_msgs
)
现在,你可以生成自己的消息源代码了。
以上就是你创建消息的所有步骤。下面通过rosmsg show命令,检查ROS是否能够识消息。
使用方法:
$ rosmsg show [message type]
样例:
$ rosmsg show /rfid/rfid_data.msg
你将会看到:
float32 rfid_distance
float32 rfid_phase
在上边的样例中,消息类型包含两部分:
-
rfid -- 消息所在的package
-
rfid_data -- 消息名rfid_data.
如果你忘记了消息所在的package,你也可以省略掉package名。输入:
$ rosmsg show rfid_data
你将会看到:
-
float32 rfid_distance
float32 rfid_phase
-
如果在程序中用的话应该这样:
-
rfid::rfid_data msg;//rfid是消息所在包的名字,rfid_data为消息文件夹名字去掉.msg,msg为自定义的一个变量,然后
msg.rfid_distance=5.55;