ROS (Robot Operating System)
provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under an open source, BSD license.
来自https://wiki.ros.org/
ROS是一个机器人操作系统,提供一系列库和工具,帮助软件开发者创建机器人应用。它提供硬件抽象,设备驱动,函数库,可视化工具,消息传递和包管理等诸多功能。
更确切的说,ROS是一个元操作系统,不同于传统的Windows,Linux,iOS,Android。它基于现有的操作系统,比如官方维护的ROS安装在Ubuntu之上,以使用进程管理,文件系统,用户界面等。以库的形式提供了机器人应用程序所需的多数不同类型的硬件之间的数据传输,调度和错误处理等功能。这个该你啊你亦可称为中间件(Middleware)或软件框架(Software framework)。
ROS开发、管理和提供基于元操作系统的各种用途的应用功能包,并拥有一个负责分享用户所开发的功能包的生态系统(Ecosystem)。ROS在使用现有传统操作系统同时,通过使用硬件抽象概念来控制机器人应用所必须的机器人和传感器,同时也是开发用户的机器人应用的支持系统。
1.1 ROS资源
官网:https://www.ros.org/
ROS Wiki是所有ROS软件包的官方文档来源;https://wiki.ros.org/
ROS Answers是解答疑惑的第二个最好选择,包含数以万计的问题解答。
PS:ROS数据通信可以在一个OS中进行,但也适用于使用多种硬件开发的机器人,因为可以在不同的操作系统、硬件和程序之间交换数据。
1.2 ROS的目的
建立一个在全球范围内协作开发机器人软件的环境!
ROS致力于将机器人研究和开发中的代码重用做到最大化。为了支持这个,ROS具有以下特征。
分布式进程:它以可执行进程的最小单位(节点,Node)的形式进行编程,每个进程独立运行,并有机地收发数据。
功能包单位管理:由于它以功能包的形式管理着多个具有相同目的的进程,所以开发和使用起来很容易,并且很容易共享、修改和重新发布。
公共存储库:每个功能包都将其功能包公开给开发人员首选的公共存储库(例如GitHub),并标识许可证。
API类型:使用ROS开发程序时,ROS被设计为可以简单地通过调用API将其加载到其使用的代码中。在源代码中,您会发现ROS编程与C++和Python程序没有区别。
支持多种编程语言:ROS程序提供客户端库(Client Library)2以支持各种语言。它可以用于如JAVA、C#、Lua和Ruby等语言,也可以用于机器人中常用的编程语言,如Python、C++和Lisp。换句话说,您可以使用熟悉的语言开发ROS程序。
这种支持使得在全球范围内开发机器人软件的合作成为可能,并且ROS的终极目的-机
器人研究和开发过程中的代码重用-变得越来越普遍。
1.3 ROS的生态系统
希望机器人硬件领域的开发者、ROS开发运营团队、应用软件开发者以及用户也能像机器人公司和传感器公司一样从中受益。
1.4 版本周期
ROS的版本周期和ROS正式支持的操作系统Ubuntu的新版本发布周期一样。是每年发布两次(4月和10月),但2013年很多用户由于频繁的升级,提议新的版本周期。因此在2013年接纳了用户们的意见,决定从Hydro Medusa版本开始,每年发布一次正式版本,时间点则在新的Ubuntu xx.04版本发布一个月之后的5月份。而恰好每年的5月23日是世界乌龟日(World Turtle Day)19,所以现在每年的这个有象征意义的一天会发布新的ROS版本。
ROS的支持期间根据版本而不同,一般是发布后提供两年的支持。而针对每两年发布的Ubuntu长期支持版(Long Term Support)20 发布的ROS版本提供与LTS一样的5年的支持期间。比如,支持2016年的Ubuntu 16.04 LTS的ROS Kinetic Kame具有直到2021年5月的5年的支持期间。非LTS版本保持最新版本的Linux核,仅仅是进行了次要的升级以及基本的维护。
在2018年发布的新的Linux版本和ROS LTS版本达到稳定的2019年之前我想推荐的组合如下:
操作系统:Ubuntu 16.04 Xenial Xerus23 (LTS) 或 Linux Mint 18.x
ROS版本:ROS Kinetic Kame24