购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 为什么选择ROS

ROS是一个灵活的框架,为编写机器人软件提供了各种工具和库。它提供了几个强大的功能,可以帮助开发人员完成消息传递、分布式计算、代码重用等任务,并为机器人应用程序实现最先进的算法。ROS项目由Morgan Quigley于2007年启动,然后其开发工作在Willow Garage(一家机器人技术研究实验室,专门为机器人开发硬件和开源软件)继续进行。ROS的目标是建立一种标准的机器人编程方法,同时提供可轻松与定制机器人应用程序集成的现成软件组件。选择ROS作为编程框架有如下优势。

高端功能 :ROS具有即用型功能。例如,ROS中的 同步定位和映射 (SLAM)和 自适应蒙特卡罗定位 (AMCL)软件包可用于移动机器人的自主导航,而MoveIt!软件包可用于机械臂的运动规划。这些功能可以直接在机器人软件中使用,无须任何麻烦操作。在某些情况下,这些软件包足以在不同平台上执行核心机器人任务。此外,这些功能是高度可配置的,我们可以使用各种参数对每个功能进行微调。

大量工具 :ROS生态系统中有大量用于调试、可视化和仿真的工具。 rqt_gui RViz Gazebo 等都是用于调试、可视化和仿真的强大开源工具。拥有这么多工具的软件框架非常罕见。

支持高端传感器和执行器: ROS允许我们使用机器人领域中各类传感器和执行器的驱动程序和接口包。此类传感器包括3D激光雷达、激光扫描仪、深度传感器等。我们可以毫不费力地将这些组件与ROS连接起来。

跨平台的可操作性: ROS消息传递中间件允许不同程序之间的通信。在ROS中,这种中间件称为节点。这些节点可以用任何具有ROS客户端库的语言进行编程。我们可以用C++或C语言编写高性能节点,用Python或Java编写其他节点。

模块化: 在大多数独立的机器人应用程序中,可能出现的一个问题是,如果主代码的任何一个线程崩溃,整个机器人应用程序都可能停止。在ROS中,情况有所不同,ROS为每个进程编写不同的节点,如果一个节点崩溃,系统仍然可以工作。

并发资源处理: 通过两个以上的进程处理一个硬件资源总是令人头痛。假设我们想处理来自摄像头的图像,用于人脸检测和运动检测,我们可以将代码编写成一个单一的实体同时进行这两项工作,也可以编写一段用于并发的单线程代码。如果我们想向线程中添加两个以上的特性,那么应用程序的行为将变得复杂且难以调试。但在ROS中,我们可以使用ROS驱动程序中的ROS主题访问设备。任何数量的ROS节点都可以订阅来自ROS摄像头驱动程序的图像消息,每个节点都可以具有不同的功能。这可以降低计算复杂度,也可以提高整个系统的调试能力。

ROS社区的发展非常迅速,全球有很多用户和开发者。大多数高端机器人公司现在都在将其软件移植到ROS。这一趋势在工业机器人领域也很明显,各大公司正在从专有机器人应用转向ROS。

现在我们知道了为什么使用ROS很方便,下面开始介绍它的核心概念。ROS主要有三个级别:文件系统级别、计算图级别和社区级别。 h9kwESdiekc1NLEtfmQzMrRxLKBNqd7WK05e5ZbOLmRsiTk8f3i9O6ImzEHjjZxC

点击中间区域
呼出菜单
上一章
目录
下一章
×