Quantcast
Channel: Sam的技术Blog
Viewing all articles
Browse latest Browse all 158

ROS学习 ROS消息

$
0
0
作者: Sam (甄峰)  sam_code@hotmail.com

1. ROS消息类型和消息文件
ROS语言中立,支持Python, C++, Lisp等。为了支持交叉语言,ROS利用了简单的,语言无关的接口定义语言去描述模块间的消息传递。
它使用这种简化的消息类型描述语言来描述ROS节点发布的数据值,通过这样的描述语言,ROS能够使用多种编程语言生成不同类型消息的源代码。

ROS提供了很多预定义的消息类型,如果我们需要创建一个新的类型,就要把消息的类型定义放在功能包的msg文件夹下(Package介绍时说过)。 在此文件夹下,有用于定义各种消息的文件,它们都以 .msg为扩展名。


2. MSG文件格式
消息类型必须有两个主要部分:字段,常量。
字段定义了消息中传输的数据类型,如:int32, float32, string.
常量用于定义字段的名称。

int32 id
float32 vel
string name 


3. MSG文件的自动解读
没种语言的代码生成器会通过解读MSG文件,生成类似本种语言的目标文件。


4. 创建自定义消息文件:
一些情况下,需要传输特殊类型的消息, 这时,就需要自定义传输数据类型和数据值的文件. ROS会根据这些文件内容自动的为我们创建对应语言(C++, Python....)的代码,以便msg能够被节点使用。
4.1:创建MSG文件
在功能包目录下,创建msg文件夹,并创建一个msg文件:
test_message.msg
内容如下:
int32 width
int32 height
float32 radius

4.2: 配置编译文件
这个部分比较复杂,先记录下来,后面再具体研究:
A: 确保package.xml内容: 

确保在build_depend中包含:generate_messages
在run_depend中包含:message_runtime

B:确保在CMakefiles.txt中:
B1.把message_generation加入到find_package中


B:2.  确保CATKIN_DEPENDS message_runtime被加入到catkin_package中。


B3:确保刚才建立的msg目录内的.msg文件被正确加入:



B4:确保generate_messages()被打开:



4.3: 编译生成对应语言头文件:
catkin_make
可以在 catkin_ws/devel/include/test_source/test_message.h
看到这个文件。这就是自动创建的头文件。







 

Viewing all articles
Browse latest Browse all 158

Trending Articles