赞
踩
msg:这是一个简单的文本文件,他描述了ROS message 的变量(fields,数据)。msg文件是让不同语言编写的源码生成messages.
1 结合前面的学习,首先创建一个工作空间catkin_ws2
zhuoli@zhuoligetu:~$ mkdir -p ~/catkin_ws2/src
进入src先对空间初始化。
zhuoli@zhuoligetu:~/catkin_ws2/src$ catkin_init_workspace
可以看见src下多了一个配置文件
2 建立一个程序包
zhuoli@zhuoligetu:~/catkin_ws2/src$ catkin_create_pkg my_text
这时候在 src 文件下就多了两个文件,一个配置文件,一个清单文件。
3 在my_txxt下建立msg
zhuoli@zhuoligetu:~/catkin_ws2/src/my_text$ mkdir msg
在msg下的文本写入变量
zhuoli@zhuoligetu:~/catkin_ws2/src/my_text$ echo "uint32 string">msg/num.msg
4 接下来对.xml .txt进行配置
在.xml下找到
<build_depend>message_generation</build_depend>
在加一行(报错则删掉)
<run_depend>message_runtime</run_depend>
在构建阶段我们需要 “message_generation”, 而在运行时我们需要 “message_runtime”
find_package在linux下非常重要,find_package可以根据cmake内置的.cmake的脚本去找相应的库的模块,当然,内建了很多库的模块变量,调用了find_package之后,会有相应的变量“生成”有效--添加依赖库
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation)
5.1
**添加配置数据文本名**
add_message_files(
FILES
num.msg
)
5.2
generate_messages(
DEPENDENCIES
std_msgs
)
**5.3**
调用cmake需要用的依赖(如在调用cmake_make时会报错,删掉括号内容试试?)
catkin_package( CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)
**报错内容一般如下**
catkin_package() DEPENDS on the catkin package ‘message_runtime’ which must
therefore be listed as a run dependency in the package.xml
**但是这样就会使配置失去意义,**
所以在catkin_package( name) 内添加的内容,就要提前在清单文件中添加依赖
name
name
name
**然后使用指令就可以看见你配置的变量**
$rosmsg show my_text/num
**5.4遇到的问题**
一般来讲如果报错内容如下,则.msg配置数据的格式错误
Unable to load msg [my_text/num]:
如果出现很多行报错的内容,以下面代码开头
Unable to load msg [my_text/num]: Cannot locate message [num]: unknown package [my_text] on search path
“`
是告诉你没有source路径,在工作空间下source一下即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。