ROS学习(一):重要概念

ROS

       ROS是一个用于开发机器人应用程序的、类似操作系统的机器人软件平台。ROS提供 开发机器人应用程序时所需的硬件抽象、子设备控制,以及机器人工程中广泛使用的传 感、识别、绘图、运动规划等功能。此外ROS还提供进程之间的消息解析、功能包管理、 库和丰富的开发及调试工具。

主节点

      主节点(master)2负责节点到节点的连接和消息通信,类似于名称服务器(Name Server)。roscore是它的运行命令,当您运行主节点时,可以注册每个节点的名字,并根 据需要获取信息。没有主节点,就不能在节点之间建立访问和消息交流(如话题和服务)。 主节点使用XML远程过程调用(XMLRPC,XML-Remote Procedure Call)3与节 点进行通信。XMLRPC是一种基于HTTP的协议,主节点不与连接到主节点的节点保持 连接。换句话说,节点只有在需要注册自己的信息或向其他节点发送请求信息时才能访问 主节点并获取信息。通常情况下,不检查彼此的连接状态。由于这些特点,ROS可用于非 常大而复杂的环境。XMLRPC也非常轻便,支持多种编程语言,使其非常适合支持各种 硬件和语言的ROS。

     当启动ROS时,主节点将获取用户设置的ROS_MASTER_URI变量中列出的URI地址 和端口。除非另外设置,默认情况下,URI地址使用当前的本地IP,端口使用11311。

节点

     节点(node)4是指在ROS中运行的最小处理器单元。可以把它看作一个可执行程 序。在ROS中,建议为一个目的创建一个节点,建议设计时注重可重用性。例如,在移动 机器人的情况下,为了驱动机器人,将每个程序细分化。也就是说,使用传感器驱动、传 感器数据转换、障碍物判断、电机驱动、编码器输入和导航等多个细分节点。 节点在运行的同时,向主节点注册节点的名称,并且还注册发布者(publisher)、 订阅者(subscriber)、服务服务器(service server)、服务客户端(service client )的名称,且注册消息形式、URI地址和端口。基于这些信息,每个节点可以使用话题和 服务与其他节点交换消息。 节点使用XMLRPC与主站进行通信,并使用TCP/IP通信系列的XMLRPC或TCPROS5 进行节点之间的通信。节点之间的连接请求和响应使用XMLRPC,而消息通信使用 TCPROS,因为它是节点和节点之间的直接通信,与主节点无关。URI地址和端口则使用 存储于运行当前节点的计算机上的名为ROS_HOSTNAME的环境变量作为URI地址,并 将端口设置为任意的固有值。

功能包

     功能包(package)6是构成ROS的基本单元。ROS应用程序是以功能包为单位开发 的。功能包包括至少一个以上的节点或拥有用于运行其他功能包的节点的配置文件。它还 包含功能包所需的所有文件,如用于运行各种进程的ROS依赖库、数据集和配置文件等。 目前注册为官方功能包的数量以2017年7月为准为:ROS Indigo多达约2500个(http:// repositories.ros.org/status_page/ ros_indigo_default.html),ROS Kinetic多达 约1600个(http://repositories.ros.org/status_page/ros_kinetic_default.html)。 除此之外,用户们开发并共享的功能包虽然会有一些重复,但也有约4600个(http:// rosindex.github.io/stats/)。

消息

     节点之间通过消息(message)8来发送和接收数据。消息是诸如integer、floating point和boolean等类型的变量。用户还可以使用诸如消息里包括消息的简单数据结构 或列举消息的消息数组的结构。使用消息的通信方法包括TCPROS,UDPROS等,根 据情况使用单向消息发送/接收方式的话题(topic)和双向消息请求(request)/响应 (response)方式的服务(service)。

话题

      话题(topic)就是“故事”。在发布者(publisher)节点关于故事向主节点注册 之后,它以消息形式发布关于该故事的广告。希望接收该故事的订阅者(subscriber) 节点获得在主节点中以这个话题注册的那个发布者节点的信息。基于这个信息,订阅者节 点直接连接到发布者节点,用话题发送和接收消息。

发布与发布者

     发布(publish)是指以与话题的内容对应的消息的形式发送数据。为了执行发布, 发布者(publisher)节点在主节点上注册自己的话题等多种信息,并向希望订阅的订阅 者节点发送消息。发布者在节点中声明自己是执行发布的个体。单个节点可以成为多个发 布者。

订阅与订阅者

     订阅是指以与话题内容对应的消息的形式接收数据。为了执行订阅,订阅者节点在主 节点上注册自己的话题等多种信息,并从主节点接收那些发布此节点要订阅的话题的发布 者节点的信息。基于这个信息,订阅者节点直接联系发布者节点来接收消息。订阅者在节 点中声明自己执行订阅的个体。单个节点可以成为多个订阅者。

     发布和订阅概念中的话题是异步的,这是一种根据需要发送和接收数据的好方法。另 外,由于它通过一次的连接,发送和接收连续的消息,所以它经常被用于必须连续发送消 息的传感器数据。然而,在某些情况下,需要一种共同使用请求和响应的同步消息交换方 案。因此,ROS提供叫做服务(service)的消息同步方法。服务分为响应请求的服务服 务器和请求后接收响应的服务客户端。与话题不同,服务是一次性的消息通信。当服务的 请求和响应完成时,两个节点的连接被断开。

服务

     服务(service)消息通信是服务客户端(service client)与服务服务器(service server)之间的同步双向消息通信。其中服务客户端请求对应于特定目的任务的服务,而 服务服务器则负责服务响应。

动作

     动作(action)是在需要像服务那样的双向请求的情况下使用的消息通信方式,不 同点是在处理请求之后需要很长的响应,并且需要中途反馈值。动作文件也非常类似于服 务,目标(goal)和结果(result)对应于请求和响应。此外,还添加了对应于中途的反 馈(feedback)。它由一个设置动作目标(goal)的动作客户端(action client)和一 个动作服务器(action server),动作服务器根据目标执行动作,并发送反馈和结果。动作客户端和动作服务器之间进行异步双向消息通信。

参数

    ROS中的参数(parameter)是指节点中使用的参数。可以把它想象成一个 Windows程序中的*.ini配置文件。这些参数是默认(default)设置的,可以根据需要从 外部读取或写入。尤其是,它可以通过使用外部的写入功能实时更改设置值,因此非常有 用。例如,您可以指定与外部设备连接的PC的USB端口、相机校准值、电机速度或命令 的最大值和最小值等设置值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章