ROS的初步学习(九)--创建一个简单的文本文件msg

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”

  1. 1接下来对txt文件进行配置,构建程序需要用的依赖

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一下即可
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40641902/article/details/78445236