ROS 功能特性
ROS 是一个免费的开源机器人软件框架,可用于商业和研究应用,ROS 框架为机器人编程提供了如下功能。
-
进程间的消息传递接口
ROS 提供了一个消息传递接口,用于两个进程之间的通信。例如,使用一个相机对图像进行处理,从图像中检测到人脸,并将坐标发送到跟踪器进程,跟踪器进程使用一些电动机来跟踪人脸。
-
与操作系统类似的特性
ROS 不是一个真正的操作系统,只能说它是一种操作系统的变种,可以提供一些操作系统功能。这些程序包括多线程、底层设备控制、包管理和硬件抽象。硬件抽象层允许程序员在不知道设备的完整细节的情况下编写程序,优点是我们可以编写一个传感器模块对接不同供应商的相同类型的传感器,这样当我们使用一个新的传感器时就不需要重新编写代码。
包管理器(Package Management)可以帮助用户在一个称为包(Packages)的单元中组织其软件,每个包都有用于执行特定任务的源代码、配置文件或数据文件。这些包可以被发行并安装在其他计算机上。
-
高级编程语言的支持和工具链
ROS 支持诸如 C++、Python 和 Lisp 等机器人编程中被广泛使用的编程语言。
-
第三方库的可用性
有许多非常流行的第三方库被集成到 ROS 框架内。例如,OpenCV 用于机器人视觉相关任务,PCL 用于 3D 机器人感知。这些库使得 ROS 更加强度,开发者可以在 ROS 之上快速构建强大的应用程序。
-
通用算法
ROS 已经实现了一些通用的机器人算法,如 PID、SLAM(即时定位与地图构建),以及路径规划算法(如 A* 算法)、Dijkstra 算法和 AMCL(自适应蒙特卡洛定位)。与此同时,ROS 中机器人算法的实现还在不断地增加,这些算法的实现可以减少机器人原型开发的时间。
-
编程实现的简便性
ROS 的优势之一是拥有许多通用算法模块,这些 ROS 包可以很容易地被其他机器人重用。例如,通过定制 ROS 代码库中已有的移动机器人包,开发者可以轻松地构建自己的移动机器人原型。实际上,我们可以很容易地重用 ROS 代码块,因为大多数包都是开源的,可以用于商业和研究,同时也缩短了整个机器人软件开发的周期。
-
生态系统/开发社区支持
ROS 流行和发展的主要原因是开发社区支持,ROS 开发者遍布世界各地,他们正在积极地开发和维护 ROS 包。ROS Answers 是 ROS Discourse 是两个大型的 ROS 开发者社区。
-
大量的工具和模拟器
ROS 内置了许多命令行和 GUI 工具,用于调试、可视化和模拟机器人应用。这些工具在对机器人编程时非常有用。例如,使用 Rviz 工具可以显示各种各样的图像,如摄像头、激光雷达、惯性测量单元等,而 Gazebo 则是一个机器人模拟器。