首页 > 编程笔记

ROS机器人操作系统简介(非常详细)

ROS(Robot Operating System)是用于创建机器人应用程序的软件框架,其主要目的是提供可以用于创建机器人应用程序的功能,创建的应用程序也可以被其他机器人再次使用。

ROS 由一系列可以简化机器人软件开发的软件工具、软件库和软件包组成,是 BSD 许可的一个完整的开源项目,可用于研究和商业应用。虽然 ROS 表示机器人操作系统,但它并不是一个真正的操作系统。相反,它是一个提供了真实操作系统功能的元操作系统。

以下是 ROS 提供的主要功能:
ROS 是管道(消息传递)、开发工具、应用功能和生态系统的组合。ROS 中有强大的开发工具,可以调试和可视化机器人数据。ROS 具有内置的机器人应用功能,如机器人导航、定位、绘图、操作等。它们有助于创建强大的机器人应用程序。

图 1 显示了ROS的组成:


图 1 ROS的组成

ROS框架

ROS 框架主要分成三个层级,分别是 ROS 文件系统、ROS 计算图和 ROS 社区。

1) ROS文件系统

ROS 的文件系统主要介绍了硬盘上 ROS 文件的组织形式。其中,我们必须了解的主要有以下几个方面:

2) ROS计算图

ROS 的计算图是 ROS 处理数据的一种点对点的网络形式。

ROS 计算图中的基本功能包括节点、ROS 控制器、参数服务器、消息和服务:
图 2 显示了在节点和控制器之间,ROS 主题和 ROS 服务的工作流程。


图 2 ROS节点和ROS控制器之间的通信

从图 2 可以看到,ROS 控制器位于两个 ROS 节点之间。我们必须记住的一件事是,在启动 ROS 中的任何节点之前,应该先启动 ROS 控制器。ROS 控制器充当节点之间的中介,以交换关于其他 ROS 节点的信息,从而建立通信。

假设节点 1 希望发布名为 /xyz 的主题,消息类型为 abc。它将首先接近 ROS 控制器,说:“我将发布一个名为 /xyz 的主题,消息类型为 abc,并共享其细节。”当另一个节点,比如节点 2,希望订阅消息类型为 abc 的相同主题 /xyz 时,控制器将共享关于节点 1 的信息,并分配一个端口来直接在这两个节点之间启动通信,而不需要与 ROS 控制器通信。

ROS 服务的工作方式与之类似。ROS 控制器类似 DNS 服务器,当第二个节点向第一个节点请求主题或服务时,它可以共享节点的详细信息。ROS 使用的通信协议是 TCPROS(http://wiki.ros.org/ROS/TCPROS),它使用的是标准 TCP/IP 套接字。

推荐阅读