目录
过去工程量庞大,如果某环节出现问题,不利于发现和解决

由于早期电脑没有操作系统,工程师面对的直接是硬件,如一个个电子管:

自从有了操作系统和产业分工,每个厂商都按照操作系统规定的模型来提供驱动,这样用户和开发人员不用关心底层硬件:

同样的道理,现在的机器人领域同样在走这条路。机器人零部件厂商(机械臂、底盘、激光雷达、摄像头)都在一个通用的机器人软件平台上进行开发,用户买回来可以直接使用,这样是最好的。因此机器人领域出现一个平台是Ros。
Ros已经发展了10年了, 已经成为了机器人领域主流的操作系统,相当于80、90年代的windows,Mac。有了Ros,机器人的开发和使用就变得简单和高效。
Robot Operating System 机器人操作系统
ROS 是运行在Linux上的中间件/类操作系统,它连接了真正的操作系统和你写的程序,提供了类似于操作系统的功能(硬件抽象、底层设备控制、常用函数的实现、进程间消息传递、包管理),ROS是一个软件工具集。

框架:就是ROS规定了一套规范。
很多时候我们说的ROS,就是它的通信框架。
ROS采用的是分布式架构,可以运行多个进程,每个进程又可以单独设计,然后放在一起组合起来。
ROS里面的进程,通常我们说是节点(Node)。

robot控制,laster激光雷达采集,map建图,localization定位,planner路径规划这些都是Node。ROS提供了这个框架来管理这些Node,提供他们之间相互通信的桥梁。有了这样一套程序组织,我们运行这几个Node,机器人就可以实现自主导航的功能。
为什么要用这种分布式架构呢?
分布式架构的好处就是扩展性好,软件复用率高。如果想加入一个新的传感器,只需将新的传感器按照ROS规定的通信方式来传输数据。
软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。

ROS提供了许多基础仿真工具,如Gazebo,Rviz、rqt 等, 开发人员面对的是可视化的界面

Gazebo:

Rviz

ROS 提供各种功能包(控制,规划,视觉,建图)
比如:你想做一个人脸识别的算法,让机器人识别人脸。你就不需要做路径规划,建图定位,控制的算法,直接使用ROS的软件包加上自己的人脸识别算法,专注于做自己最擅长的事情。
软件包的途径:ROS官方网站 ROS WIKI GitHub

ROS广义上是一个庞大的社区或生态系统,很多程序都是以软件包形式管理类似一个apt-get软件包管理工具,安装和使用都非常方便。




10几个版本,每个Ros版本都依赖一个Ubuntu版本(最佳适配版本),
如ROS Indigo2014最佳适配版本是14.04,ROS Kinetic 2016最佳适配版本是16.04。

cn/ROS/Installation - ROS Wikiros安装地址:http://wiki.ros.org/cn/ROS/Installation
