ROS机器人项目开发11例(原书第2版)
上QQ阅读APP看书,第一时间看更新

1.2.4 为什么选择ROS

构建ROS框架的主要目的是打造机器人的通用软件框架。尽管在ROS之前就有了许多机器人学的相关研究,但大多数软件都是各自的机器人独有的。这些独有的软件可能是开源的,但很难重用。

与现有的其他机器人框架相比,ROS在以下方面表现出色:

·协作开发:正如我们讨论过的,ROS是开源的,可以免费用于工业界和学术界。开发人员可以通过添加功能包的方式扩展ROS的功能。几乎所有的ROS功能包都在一个硬件抽象层上工作,因此它可以很容易地被其他机器人应用程序重用。所以,如果一所大学擅长移动导航,另一所大学擅长机器人操控,则可以把相应的功能包贡献给ROS社区,这样其他开发人员就可以重用这些功能包并构建新的应用程序。

·多语言支持:ROS通信框架可以使用多种现代编程语言轻松实现。它支持的流行语言包括C++、Python和Lisp,此外它还有Java和Lua的实验库。

·库集成:ROS具有与许多第三方机器人库的接口,如开源计算机视觉(OpenCV)、点云库(PCL)、OpenNI、OpenRAVE和Orocos。开发人员可以轻松地使用这些库进行应用程序开发。

·模拟器集成:ROS还与开源模拟器(如Gazebo)联系紧密、相互融合,并与专有模拟器(如Webots和V-REP)有良好的接口。

·代码测试:ROS提供了一个名为rostest的内置测试框架来检查代码质量和错误。

·可伸缩性:ROS框架设计考虑了可伸缩性。可以使用ROS与机器人一起执行繁重的计算任务,其中ROS可以放在云上,也可以放在异构集群上。

·可定制性:正如我们讨论过的,ROS是完全开源和免费的,因此可以根据机器人的实际需求定制这个框架。如果我们只想使用ROS消息平台,那么可以删除所有其他组件并仅使用它。我们甚至可以为特定的机器人定制ROS以获得更好的性能。

·社区:ROS是一个社区驱动的项目,主要由OSRF领导。大型社区支持是ROS的一大优势,这意味着我们可以轻松地开始机器人应用程序开发。

以下是可与ROS集成的库和模拟器的URL:

·OpenCV:http://wiki.ros.org/vision_opencv

·PCL:http://wiki.ros.org/pcl_ros

·OpenNI:http://wiki.ros.org/openni_launch

·OpenRAVE:http://openrave.org/

·Orocos:http://www.orocos.org/

·V-REP:http://www.coppeliarobotics.com/

下面让我们了解ROS的一些基本概念,这些概念是ROS项目的基础。