2.3 创建msg和srv文件

一、消息

 一个节点通过向特定主题发布消息,从而将数据发送到另一个节点。
消息具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型。
消息类型标准命名方式:功能包名称/ .msg文件名称。
        如:std_msgs/msg/String.msg 的消息类型是std_msgs/String。
命令行工具:
    1)rosmsg show  显示一条消息的字段
    2)rosmsg list  列出所有消息
    3)rosmsg package 列出功能包的所有消息
    4) rosmsg packages 列出所有具有该消息的功能包
    5)rosmsg  users  搜索所有该消息类型的代码文件
    6)rosmsg  md5  显示一条消息的MD5求和结果

消息记录包
消息记录包是ROS创建一组文件,使用.bag格式保存消息、主题、服务和其他ROS数据消息。
事件发生后,通过可视化工具调用和回放数据。
记录包可以像实时会话一样再现情景,在相同时间向主题发送相同的数据。可以使用此功能调试算法。
工具:
     1)rosbag  用来录制、播放和执行其他操作
     2)rxbag   用来可视化图形环境中的数据
     3)rostopic  帮助我们看到节点发送主题。

 

二、服务

  当你直接与节点通信并获得应答时,将无法通过主题(数据传输的总线)实现,而需要使用服务。
服务需要由用户开发。
服务类型:服务关联一个以功能包中.srv文件命名的服务类型。与其他基于ROS文件系统的类型一样,服务类型是功能包名称和.srv文件名称的组合。
例如:chapter2_tutorials/srv/chapter2_srv1.srv文件的服务类型是chapter2_tutorials/chapter2_srv1。
服务命令行工具:rossrv和rosservice.
 1)rosservice call  /service args 根据命令行参数调用服务。
 2)rosservice find  msg-type 根据服务类型查询服务。
 3)rosservice info  /service 输出服务信息
 4)rosservice  list   输出活动服务清单
 5) rosservice type  /service  输出服务类型。
 6)rosservice  uri  /service  输出服务的ROSRPC URI

三、创建msg和srv文件

这一节中,我们将会学习如何在节点中创建msg和srv文件。它们是用于定义传输数据类型和数据值的文件。ROS会根据这些文件自动为我们创建所需代码,以便msg和srv文件能够被节点所使用。
msg文件
1)在chapter2_tutorials功能包下创建msg文件夹
2)在msg文件夹下创建一个新的文件chapter2_msg1.msg.
3)在文件中增加以下行:
int32 A
int32 B
int32 C
4)编辑CMakeList.txt,从#rosbuild_genmsg()这一行中删除#
5)然后使用rosmake命令编译功能包:
$rosmake chapter2_tutorials
6)检查编译是否正确,使用rosmsg命令
$ rosmsg show chapter2_tutorials/chapter2_msg1
如果你在chapter2_msg1.msg文件中看到一样的内容,说明编译正确。

srv文件
1)在chapter2_tutorials文件夹下创建一个名为srv的文件夹
2)在srv文件夹下新建文件chapter2_srv1.srv,在文件中增加以下行:
int32 A
int32 B
int32 C
...
int32 sum
3)编辑CMakeList.txt文件,从#rosbuild_gensrv()这一行中删除#
4)编译功能包
 $rosmake chapter2_tutorials命令编译功能包。
5)通过rossrv工具来检查编译是否正确
$ rossrv show chapter2_tutprials/chapter2_srv1
如果你在chapter2_srv1.srv文件中看到一样的内容,说明编译正确。

 

猜你喜欢

转载自blog.csdn.net/wtj318_/article/details/82852760
2.3