ROS概述
ROS 是用于机器人的一种开源“后操作系统”。它提供了类似操作系统所提供的功能,包括硬件抽象描述、设备管理与控制、通用功能实现、程序间消息传递,以及包管理等。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。
ROS的主要设计目标是便于机器人研发过程中的代码复用。因此ROS采用了一种分布式架构,各个软构件可以独立的设计,松散、即时地组合起来。
ROS的运行架构是一种基于Socket网络连接的松耦合架构。在ROS架构中,一切可执行的程序被抽象为节点(node),它可以是传感器数据采集程序、执行器控制程序、规划算法程序、视觉识别程序等等。各个节点之间均使用ROS提供的消息传递机制进行通信。ROS支持多种类型的通信,包括基于服务的同步RPC通信、基于Topics的异步数据流通信以及用于数据存储的参数服务器(Parameter Server)。
目前ROS1.0已经发行多个版本,同时ROS2.0也已经发行。ROS2.0的改进主要是为了让ROS能够符合工业级的运行标准,采用工业级别的DDS(数据分发服务)中间件来负责可靠通信,通信节点动态发现,并用共享内存方式使得通信效率更高。下图所示为ROS2与ROS1整体架构的对比,下表所示为ROS2与ROS1的优缺点对比。
- ROS1主要构建于Linux系统之上。但是ROS2支持构建的系统包括Linux、Windows、Mac、RTOS,甚至没有操作系统的裸机。
- ROS1的通讯系统基于TCPROS/UDPROS,