ROS笔记(1) ROS简介


1. ROS的起源

ROS系统是起源于2007年斯坦福大学人工智能实验室的项目与机器人技术公司Willow Garage的个人机器人项目(Personal Robots Program)之间的合作
2008年之后就由Willow Garage来进行推动

ROS笔记(1) ROS简介
2010年Willow Garage公司发布了开源机器人操作系统ROS(robot operating system),很快在机器人研究领域展开了学习和使用ROS的热潮。


2. ROS的概述

ROS是开源的,是用于机器人的一种后操作系统,或者说次级操作系统
它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建立、编写和运行多机整合的程序

ROS笔记(1) ROS简介
ROS不是传统的操作系统,如Windows、Linux和Android
反而是在利用现有的操作系统

ROS笔记(1) ROS简介
使用ROS前需要先安装诸如Ubuntu的Linux发行版操作系统,之后再安装ROS
现在win10也开始逐步支持安装ROS


3. ROS的目的

首要目的是在机器人研发领域提高代码复用率,建立一个在全球范围内协作开发机器人软件的环境
ROS笔记(1) ROS简介
ROS是一种分布式处理框架(又名Nodes
这使可执行文件能被单独设计,并且在运行时松散耦合
这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发

ROS还支持代码库的联合系统,使得协作亦能被分发
这种从文件系统级别到社区一级的设计让独立地决定发展和实施工作成为可能
上述所有功能都能由ROS的基础工具实现


4. ROS的特点

ROS的运行架构:一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构
它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储
但是ROS本身并没有实时性

  • 分布式进程
    ROS采用了分布式的框架
    通过点对点的设计让机器人的进程可以分别运行,便于模块化的修改和定制,提高了系统的容错能力
    它以可执行进程的最小单位(节点Node)的形式进行编程,每个进程独立运行,并有机地收发数据

  • 功能包单位管理
    由于它以功能包的形式管理着多个具有相同目的的进程
    所以开发和使用起来很容易,并且很容易共享、修改和重新发布

  • 多种语言支持
    ROS支持多种编程语言
    C++、Pyhton和已经在ROS中实现编译,是目前应用最广的ROS开发语言
    Lisp、C#、Java等语言的测试库也已经实现
    为了支持多语言编程,ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送
    通俗的理解就是,ROS的通信格式和用哪种编程语言来写无关,它使用的是自身定义的一套通信接口

  • 开源社区
    ROS具有一个庞大的社区ROS WIKI(http://wiki.ros.org/)
    当前使用ROS开发的软件包已经达到数千万个,相关的机器人已经多达上千款
    此外,ROS遵从BSD协议,对个人和商业应用及修改完全免费


5. ROS的版本

ROS1.0版本发布于2010年,基于PR2机器人开发了一系列机器人相关的基础软件包
随后ROS版本迭代频繁,目前已经发布到了 Melodic

ROS笔记(1) ROS简介
虽然目前使用人数最多的是KineticIndigo这两个版本
但官网现在(2019.5.20)推荐的是 Melodic 版本
不过一般情况下,不同版本的文件移植也是可以的

ROS 版本 Ubuntu版本
Melodic(推荐) Ubuntu 18.04
Lunar Ubuntu 17.04
Kinetic Ubuntu 16.04
Jade Ubuntu 15.04
Indigo Ubuntu 14.04

ROS的每个版本的名称的首字母是按照英文字母的顺序来制定
并将乌龟Turtle作为图标
ROS笔记(1) ROS简介


参考:

ROS官方wiki
古月居
ROS机器人开发实践 (书籍)


谢谢!