ROS03-基础知识-架构及概念

来源:互联网 发布:淘宝买书靠谱吗 编辑:程序博客网 时间:2024/06/08 17:59

ROS架构分为三个层级

  • 文件系统级
  • 计算图级
  • 开源社区级

文件系统级

  • 工作空间
    • 源文件空间-src
    • 编译空间-build
    • 开发空间-devel
  • 功能包
  • 综合功能包
    综合功能包是一些只有一个文件的特定包,它是package.xml。
  • 消息
    ROS提供了许多预定义消息类型,若要自定义新类型,就要将消息的类型定义放在功能包的msg文件夹下,文件以msg为扩展名。
    示例如下
int32 idfloat32 velstring name

ROS消息中有一种特殊类型为报文头,主要用于添加时间戳、坐标位置等。并且报文头允许对消息进行编号。通过报文头内部附加信息,可以知道是哪个节点发出的消息。
可以通过一下命令查看消息的结构

rosmsg show std_msgs/Header
  • 服务
    ROS服务的描述在srv文件夹中,以srv为扩展名。
    如果要创建服务,可以使用服务生成器,这些工具能从基本的服务说明中生成代码。只需在CMakeLists.txt文件中加一行gensrv()命令。

计算图级

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

  • 节点
    节点都是各自独立的可执行文件,可以通过主题、服务或参数服务器等与其他进程通信。ROS通过使用节点将代码和功能解耦,提高了系统容错能力和可维护性。
    ROS有另一种节点,称为nodelet。这类特殊节点可以在单个进程中运行多个节点,,其中每个nodelet为一个线程(轻量级进程),这样可以在不使用ROS网络的情况下与其他节点通信,效率更高。nodelet对于摄像头和3D传感器这类数据传输率大的设备很有用。
    节点可以在启动该节点的时候更改参数。可以改变节点名称、主题名称和参数名称。例如
rosrun ex01 ex01 topic1:=level1/topic1 rosrun ex01 ex01 _param:=9.0

更改参数只需在参数名称前加一个下划线(_)。
* 节点管理器
节点管理器向ROS系统中其他节点提供命名和注册服务。其作用是使节点之间能够相互查找。
* 参数服务器
参数服务器是可以通过网络访问的共享的多变量字典。
参数服务器使用XMLRPC实现并在ROS节点管理器下运行,它的API可以通过通用的XMLRPC库进行访问。XMLRPC是一个使用XML编码并以HTTP作为传输机制的远程调用(RPC)协议。
* 消息
* 主题
主题是节点间用来传输数据的总线。通过主题进行消息路由不需要节点之间直接连接,这意味着发布者和订阅者之间不需要知道彼此存在。
同一个主题可以有很多个订阅者,一个主题可以有多个发布者。
每个主题都是强类型的。
ROS的主题可以使用TCP/IP或UDP传输。分别为TCPROS、UDPROS。TCPROS为默认方式;UDPROS最适合像远程操控的任务。
* 服务
* 消息记录包

开源社区级

其概念主要是ROS资源。包括

  • 发行版
  • 软件库
  • ROS Wiki
  • Bug提交系统
  • 邮件列表
  • ROS问答
  • 博客