您的位置:首页 > 其它

ROS学习笔记(五):文件系统级与计算图集

2019-02-27 11:34 274 查看

**

一、文件系统级

**
无论是准备使用ROS系统还是准备开发ROS项目,都会有种觉着ROS中的各种概念都非常奇怪,其实,作为一个初学者的我也感受到了!不过一旦熟悉了就会感觉这些概念变得亲切些了!下面我们就来一起了解这些奇怪的概念吧!
先来个文件系统级结构图吧!

ROS与其他系统都相类似,一个ROS程序的不同组件要被放在不同的文件夹下。这些文件夹是根据功能的不同来对文件进行组织的:

**
功能包(Package)
**
:是ROS中软件组织的基本形式。一个功能包具有最小的结构和最少的内容,用于创建ROS程序。它可以包含ROS运行的进程(节点)、配置文件等!
功能包清单(Manifest): 提供关于功能包、许可信息、依赖关系、编译标志等的信息。其是一个
manifests.xml
文件,通过该文件能够管理功能包。
功能包集(Stack) :将几个具有某些功能的功能包组织在一起就会获得一个功能包集。
功能包集清单(Stack manifest):(stack.xml)提供一个关于功能包集的清单,其中有开源代码许可证信息、与其他功能包集的依赖关系等。
消息类型(Message /msg type) 消息时一个进程发送到其他进程的信息。类型说明存储在对应功能包的msg文件夹下。
**服务类型(Service/srv type)**对服务的类型进行描述说明的文件。是对应功能包的srv文件夹下。

1、功能包中文件夹说明:
bin/ 编译和链接程序后,用来存储可执行文件的文件夹。
include/package_name/ 该目录中包含了所需库的头文件。
msg/ 用于开发非标准消息的文件夹
scripts/ 有Bash、Python或其他脚本可执行文件。
src/ 存储程序源文件的地方。
srv/ 表示服务类型。
CMakeLists.txt 是CMake的生成文件。
manifest.xml 功能包清单文件

rospack   此命令可在系统中查找功能包。
roscreate-pkg   该命令用于创建新的功能包
rosmake   编译功能包
rxdeps   可查看功能包的依赖关系图。

注:manifest.xml文件中的内容 :功能包名称、依赖关系等信息

关于文件夹和功能包之间移动或更改文件相关指令

roscd 更改目录
rosed  编辑文件
roscp   从某功能包复制文件
rosd   列出功能包的目录

**2、功能包集:**多个功能包组成功能包集可以说是简化代码共享的过程。 roscreat-stacck命令行创建,其中包含的文件有 CMakeList.txt、Makefile和stack.xml 。
3、消息类型:描述ROS节点发布的数据值。 如创建新的消息类型得将其定义放到msg/文件下。都以.msg为扩展名。
消息类型必须具有两个主要部分:字段和常量。
ROS所使用标准数据类型如下表:

4
、服务类型:实现节点之间的请求/响应通信 服务描述存储在功能包的srv/子目录下.srv文件中。

二、ROS计算图级

ROS会创建一个连接到所有进程的网络。在系统中的任何节点都可以访问此网络,并通过该网络与其他节点交互,获取其他节点发布的信息,并将自身数据发布到网络上。

该层级中最基本的概念包括节点、节点管理器、参数服务器、消息、服务、主题和消息记录包,它们都以不同的方式向计算图级提供数据。
1、节点(Node):主要的计算执行进程。节点需要使用roscpp或rospy的客户端库进行编写。都是各自独立的可执行文件可以通过主题、服务、或参数服务器与其他节点通信。其中节点允许了ROS系统能够布置在任意多个机器上并同时运行。
处理节点工具:rosnode是一个用于显示节点信息的命令行工具。支持的命令如下所示:
rosnode info node输出当前节点信息。
rosnode kill node结束当前运行节点进程或发送给定信号。
rosnode list 列出当前活动节点。
rosnode machine hostname 列出某一特定计算机上运行的节点或列出主机名称。
rosnode ping node测试节点间的连通性。
rosnode cleanup 将无法访问节点的注册信息清除。
2、节点管理器(Master):用于节点的名称注册和查找等。你可以在某一台计算机上运行节点管理器,在其他计算机上运行该管理器管理的节点。

3、参数服务器(Parameter Server):可通过关键词存储在一个系统的核心位置。通过使用参数,就能够在运行时配置节点或该变节点的工作任务。
4、消息(Message):节点通过消息完成彼此的沟通。
消息类型命名名称/.msg文件名称 例:std_msgs

5、主题(Topic):是ROS网络对消息进行路由和消息管理的数据总线。每一条消息都要发布到相应的主题。当一个节点发送数据时可以说该节点正在向主题发布消息。节点可以通过订阅某个主题,接收来自其他节点的消息。一个节点可以订阅一个主题,不需要该节点同时发布该主题。主题名称必须是独一无二的,否则在同名主题之间的消息路由就会发生错误。
一个节点要想订阅一个主题,它们必须具有相同的消息类型。ROS主题可以使用TCP/IP(ROS默认传输方式)和UDP传输(延迟高效率传输方式,适合远程操作任务)
主题相关命令行工具:
rostopic bw /topic 显示主题所使用的带宽。
rostopic echo /topic 将消息输出到屏幕。
rostopic find message_type 按照类型查找主题。
rostopic hz /topic 显示主题的发布率。
rostopic info /topic 输出活动主题、发布的主题、主题订阅者和服务的信息。
rostopic list 输出活动主题的列表。
rostopic pub /topic type args 将数据发布到主题。它允许我们直接从命令行中对任意主题创建和发布数据。
rostopic type /topic输出主题的类型,或者说主题中发布的消息类型。
6、服务(Service): 在发布主题时,正在发送的数据能够以多对多的方式交互,而不能通过某个节点直接获得请求或应答。服务就可以允许我们直接与某个节点进行交互。注:服务必须有一个唯一的名称。
支持命令行:
rosservice call /service args 根据命令行参数调用服务。
rosservice find msg-type 根据服务类型查询服务。
rosservice info /service输出服务信息。
rosservice list 输出活动服务清单。
rosservice type /service 输出服务类型。
rosservice uri /service 输出服务的ROSRPC URI

7、**消息记录包(Bag):**用于保存和回放ROS消息数据的文件格式。
rosbag 用来录制、播放和执行其他操作。
rxbag 用于可视化图形环境中的数据。
rostopic 帮助我们看到节点发送的主题。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: