ROS简介

简介: 机器人是一个系统工程,它涉及机械、电子、控制、通信、软件等诸多学科。以前,开发一个机器人需要设计机械、画电路板、写驱动程序、设计通信架构、组装集成、调试、以及编写各种感知决策和控制算法,每一个任务都需要花费大量的时间。然而随着技术进步,机器人产业分工开始走向细致化、多层次化,如今的电机、底盘、激光雷达、摄像头、机械臂等元器件都由不同厂家专门生产,社会分工加速了机器人行业的发展。而各个部件的集成就需要一个统一的软件平台,在机器人领域,这个平台就是机器人操作系统 ROS。

1.什么是 ROS


机器人是一个系统工程,它涉及机械、电子、控制、通信、软件等诸多学科。以前,开发一个机器人需要设计机械、画电路板、写驱动程序、设计通信架构、组装集成、调试、以及编写各种感知决策和控制算法,每一个任务都需要花费大量的时间。然而随着技术进步,机器人产业分工开始走向细致化、多层次化,如今的电机、底盘、激光雷达、摄像头、机械

臂等元器件都由不同厂家专门生产,社会分工加速了机器人行业的发展。而各个部件的集成就需要一个统一的软件平台,在机器人领域,这个平台就是机器人操作系统 ROS。

20210409115206833.png

ROS 是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。ROS 虽然叫做操作系统,但并非 Windows、Mac 那样通常意义的操作系统,它只是连接了操作系统和开发的 ROS 应用程序,所以它也算是一个中间件,基于 ROS 的应用程序之间建立起了沟通的桥梁,所以也是运行在 Linux 上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。


以上几个关键词(框架、中间件、操作系统、运行时环境)都可以用来描述 ROS 的特性,作为初学者我们不必深究这些概念,随着你越来越多的使用 ROS,就能够体会到它的作用。


2. ROS 的特点


ROS 主要具有以下特点:


(1)分布式、点对点

ROS 采用了分布式的网络框架,使用了基于 TCP/IP 的通信方式,实现了模块间点对点的松耦合连接,可以执行多种类型的通信。通过点对点的设计让机器人的进程可以分别运行,便于模块化的修改和定制,提高了系统的容错能力。


(2)支持多种语言


ROS 支持多种编程语言。C++和 Pyhton 是目前应用最广的 ROS 开发语言。此外,ROS还支持 LISP、C#、Java、Octave 等多种不同的语言。为了支持更多应用的移植和开发,ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送。通俗的理解就是,ROS的通信格式和用哪种编程语言无关,它使用的是自身定义的一套通信接口。


(3)组件化工具包丰富


ROS 采用组件化的方式将已有的工具和软件进行了集成,比如 ROS 中三维可视化平台Rviz,Rviz 是 ROS 自带的一个图形化工具,可以方便地对 ROS 的程序进行图形化操作;ROS 中常用的物理仿真平台 Gazebo,在该仿真平台下可以创建一个虚拟的机器人仿真环境,还可以在仿真环境下添加一些需要的参数。


(4)免费且开源


ROS 具有一个庞大的开源社区 ROS WIKI(http://wiki.ros.org/)。ROS WIKI 中的应用代码以维护者来分类,主要包含由 Willow Garage 公司和一些开发者设计、维护的核心库部分,以及不同国家的 ROS 社区组织开发和维护的全球范围的开源代码。当前使用 ROS 开发的软件包已经达到数千万个,相关的机器人已经多达上千款。此外,ROS 遵从 BSD 协议,允许使用者修改和重新发布其中的应用代码,对个人和商业应用及修改完全免费。


ROS 也存在一些问题。如:通信实时性能有限;系统稳定性尚不满足工业级要求;安全性上没有防护措施;目前主要支持 Linux(Ubuntu)系统。但总体来说,ROS 为我们开发机器人带来了许多方便。它更适合科研和开源用户使用,如果在工业场景应用(例如无人驾驶)还需要做优化和定制。


3.历代 ROS 版本


ROS1.0 版本发布于 2010 年,基于 PR2 机器人开发了一系列机器人相关的基础软件包。随后 ROS 版本迭代频繁,目前已经发布到了 Melodic。推荐使用 Kinetic 和 Melodic 这两个长期支持的版本。


ROS 目前主要支持在 Linux 操作系统上安装部署,它的首选开发平台是 Ubuntu。同时,也可以在 OS X、Android、Arch、Debian 等系统上运行。时至今日 ROS 已经相继更新推出了多种版本,供不同版本的 Ubuntu 开发者使用。为了提供最稳定的开发环境,ROS 的每个版本都有一个推荐运行的 Ubuntu 版本。如下表所示:

a39866efd0e9d4087dde5f904c2f0c9b_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc2NDk3NA==,size_16,color_FFFFFF,t_70#pic_center.png

如果你还没有安装 Ubuntu,建议选择 18.04 版本。并且建议在本地安装,不推荐用虚拟机,这样兼容性更好。


如果你已经安装 Ubuntu,请确定系统版本。在终端中输入 cat /etc/issue 确定 Ubuntu 版本号,然后选择对应的 ROS 版本。如果没有安装正确的 ROS 版本,就会出现各种各样的依赖错误,所以安装时请谨慎。


相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
2月前
[ROS2] --- ROS2安装
[ROS2] --- ROS2安装
54 0
ROS学习-roswtf入门
ROS学习-roswtf入门
106 0
ROS学习-理解ROS话题
ROS学习-理解ROS话题
429 0
ROS学习-理解ROS话题
|
Ubuntu
ROS学习-了解ROS的文件结构
ROS学习-了解ROS的文件结构
118 0
|
C++ Python
ROS快速入门第一讲——ROS的工作空间创建
ROS快速入门第一讲——ROS的工作空间创建
198 0
ROS快速入门第一讲——ROS的工作空间创建
|
自然语言处理 Ubuntu 数据可视化
ROS入门笔记(一): ROS简介
ROS入门笔记(一): ROS简介
480 0
ROS入门笔记(一): ROS简介
|
数据可视化 Ubuntu Python
ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics
ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics
643 0
ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics
|
存储 传感器 算法
ROS入门笔记(六): ROS系统架构
ROS入门笔记(六): ROS系统架构
486 0
ROS入门笔记(六): ROS系统架构
|
缓存 数据可视化 Shell
ROS入门笔记(七):详解ROS文件系统(上)
ROS入门笔记(七):详解ROS文件系统
604 0
ROS入门笔记(七):详解ROS文件系统(上)
|
XML 存储 数据可视化
ROS入门笔记(七):详解ROS文件系统(下)
ROS入门笔记(七):详解ROS文件系统
561 0
ROS入门笔记(七):详解ROS文件系统(下)