ROS机器人编程:从基础到实践
1. ROS的目标
在ROS相关研讨会上,常有人问将ROS与其他机器人软件平台(如OpenRTM、OPRoS、Player等)对比的问题。不过,简单对比意义不大,因为它们用途各异。作为ROS用户,我认为ROS的目标是“构建一个能让全球机器人软件开发实现协作的开发环境”。也就是说,ROS专注于在机器人研发中最大化代码复用,而非局限于所谓的机器人软件平台、中间件和框架。为实现这一目标,ROS具备以下特性:
- 分布式进程 :以最小可执行进程(节点)的形式编程,各进程独立运行并系统地交换数据。
- 包管理 :将具有相同目的的多个进程作为一个包进行管理,便于使用、开发、共享、修改和重新分发。
- 公共仓库 :每个包都公开到开发者首选的公共仓库(如GitHub),并指定其许可证。
- API :开发使用ROS的程序时,只需简单调用API并轻松插入到正在使用的代码中。从各章节介绍的源代码中可以看出,ROS编程与C++和Python差别不大。
- 支持多种编程语言 :ROS程序提供客户端库,支持Python、C++、Lisp等机器人领域流行的编程语言,以及JAVA、C#、Lua和Ruby等。这意味着开发者可以使用自己喜欢的编程语言开发ROS程序。
这些特性让用户能够建立一个全球协作的机器人软件开发环境,代码复用在机器人研发中也越来越普遍,这正是ROS的终极目标。
2. ROS的组件
ROS由以下组件构成