ros机器人操作系统:概述

阿基米东 阿基米东     2022-11-30     735

关键词:

ROS 是 Robot Operating System 的缩写,通常称为“机器人操作系统”。但它并不是一个真正的操作系统,而是一个面向机器人的开源的元操作系统(meta-operating system),提供类似传统操作系统的诸多功能:硬件抽象、底层设备控制、常用功能实现、进程间消息传递、程序包管理等。并且提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。

本教程将介绍 ROS 的产生、发展、特点和安装方法,以及 ROS 的相关概念,并通过一些简单的示例演示如何使用 ROS 进行机器人项目开发。

ROS 的优势

ROS 为机器人软件开发带来的优势:

  1. 分布式计算:点对点,解决进程间通讯问题;
  2. 软件复用:算法,通信接口, 避免重复造轮子;
  3. 快速测试:工具,模块化,数据记录与回放;
  4. 免费开源:ROS 软件的开发自始至终采用开放的 BSD 协议,开源社区。

功能特性

ROS 的首要设计目标是在机器人研发领域提高代码复用率。ROS 是一种分布式处理框架(又名 Nodes),这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS 还支持代码库的联合系统,使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地决定发展和实施工作成为可能。上述所有功能都能由 ROS 的基础工具实现。

为了实现“共享与协作”这一首要目标,人们制订了 ROS 架构中的其他支援性目标:

  • “轻便”:ROS 是设计得尽可能方便简易。你不必替换主框架与系统,因为 ROS 编写的代码可以用于其他机器人软件框架中。毫无疑问的,ROS 更易于集成与其他机器人软件框架。事实上 ROS 已完成与 OpenRAVE、Orocos 和 Player 的整合。
  • ROS-agnostic 库:【agnostic:不可知论】建议的开发模型是使用 clear 的函数接口书写 ROS-agnostic 库。
  • 语言独立性:ROS 框架很容易在任何编程语言中执行。我们已经能在 Python 和 C++ 中顺利运行,同时添加有 Lisp、Octave 和 Java 语言库。
  • 测试简单:ROS 有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。
  • 扩展性:ROS 适合于大型实时系统与大型的系统开发项目。

工作模式

在 ROS 的计算图中,ROS 的 Master 以一个 name service 的方式工作。它给 ROS 的节点存储了 topics 和 service 的注册信息。Nodes 与 Master 通信从而报告它们的注册信息。当这些节点与 master 通信的时候,它们可以接收关于其他以注册节点的信息并且建立与其它以注册节点之间的联系。当这些注册信息改变时,Master 也会回馈这些节点,同时允许节点动态创建与新节点之间的连接。

ROS 节点之间的连接是直接的,Master 仅仅提供了查询信息,就像一个 DNS 服务器。节点订阅一个 topic 将会要求建立一个与发布该 topics 的节点的连接,并且将会在同意连接协议的基础上建立该连接。ROS 里面使用最广的连接协议是 TCPROS,这个协议使用标准的 TCP/IP 接口。

这样的架构允许解耦操作(decoupled operation),通过这种方式大型或是更为复杂的系统得以建立,其中 names 方式是一种行之有效的手段。names 方式在 ROS 系统中扮演极为重要的角色:topics, services, and parameters 都有各自的 names。每一个 ROS 客户端库都支持重命名,这等同于,每一个编译成功的程序能够以另一种形似【名字】运行。

ROS 通信接口正在成为机器人软件互操作的事实标准。也就是说,绝大部分最新的硬件驱动和最前沿的算法实现都可以在 ROS 中找到。例如,在 ROS 的官方网页 上有着大量的开源软件库,这些软件使用 ROS 通用接口,从而避免为了集成它们而重新开发新的接口程序。

应用场景

ROS 操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。自 2010 年诞生以来,ROS 就受到了学术界和工业界的欢迎,如今已经广泛应用于机械臂、移动底盘、无人机等许多种类的机器人上。这些机器人可以是自主的、半自主的、遥控的。

覆盖类人机器人、工业机器人、服务机器人、医疗机器人、娱乐机器人、康复机器人、群体机器人、无人机、无人车、无人艇、微纳米机器人…

ros机器人操作系统:概述

ROS是RobotOperatingSystem的缩写,通常称为“机器人操作系统”。但它并不是一个真正的操作系统,而是一个面向机器人的开源的元操作系统(meta-operatingsystem),提供类似传统操作系统的诸多功能:硬件抽象... 查看详情

ros系统玩转自主移动机器人--概述

...综述  从本博文开始将开源一个基于ROS系统的自主移动机器人项目,该项目基于一个差动轮机器人平台展开,机器人的设计效果图和实物图如下图1所示。   图1设计图和实物图   所有涉及该机器人的设计文件... 查看详情

在ros中开始自主机器人仿真-1概述

建立自主机器人是很难的,特别是在刚开始的时候.ROS仿真有助于帮助我们从宏观上对机器人系统进行把握,帮助我们学习如何可以让机器人学会自己去适应环境.明白机器人从测量和激光数据采集到转变为电机运动的过程.机器人如... 查看详情

ros2极简总结-nav2-概述(下)恢复器(代码片段)

...PluginsBackUp备份Spin旋转Wait等待恢复服务器RecoveryServer定义机器人可以执行的恢复操作。[nav2_costmap_2d]清除代价地图[nav2_recoveries]旋转-按给定角度原地旋转备份-给定距离的线性平移停止-停止机器人recoveries_server:r 查看详情

ros2日文新书-2021-07

[目录]第1章简介2.机器人环境与ROS22-1机器人周围的环境与发展2-2ROS概述和ROS22-3ROS2和发行版第3章ROS2基础知识3-1ROS2安装3-2ROS2的操作第4章ROS2编程4-1编程流程4-2主题定义4-3类型4-4服务4-5参数4-6推出第5章支持ROS2的系统5-1ROS2架构5-2DDS... 查看详情

ros智能小车diy专题:机器人操作系统ros基础知识

###文章更新记录###2018/12/26创建文章《机器人操作系统ROS基础知识》 ###写在前面###ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”... 查看详情

ros机器人操作系统:版本说明

ROS和ROS2由于历史原因,ROS有两个大版本——ROS1(通常用ROS替代)和ROS2,两者的差别如下图所示。我们知道ROS始于2007年11月,最早是“柳树车库”用于PR2机器人的开发,同时希望ROS能用于其他机器人。因此... 查看详情

ros机器人操作系统:版本说明

ROS和ROS2由于历史原因,ROS有两个大版本——ROS1(通常用ROS替代)和ROS2,两者的差别如下图所示。我们知道ROS始于2007年11月,最早是“柳树车库”用于PR2机器人的开发,同时希望ROS能用于其他机器人。因此... 查看详情

机器人操作系统(ros)教程4:ros的框架

转自:http://www.arduino.cn/thread-11351-1-1.html在进行ROS的代码开发前,有必要了解一些ROS的概念。首先,ROS的系统代码分为两部分:main和universe。1.main:是ROS的核心部分,它提供了一基本的工具,以及整个ROS的核心部分的程序编写。2.... 查看详情

机器人操作系统ros|简介篇

同样,从个人微信公众号Nao(ID:qRobotics)搬运。前言  先放一个ROSIndustrial一周年剪辑视频。  ROS已经发布八周年了,在国外科研机构中非常受欢迎。目前,以美国西南研究院为首的几位大佬开始尝试将ROS应用在工业机器人中,... 查看详情

2017.10.13ros机器人操作系统ros系统常用术语及资源

ROS机器人操作系统是一种后操作系统,提供了类似于软件开发中使用到的中间件的功能。ROS:RobotOperatingSystem 机器人操作系统Package: 功能包Stack: 功能包集Message: 消息Service: 服务Topic: 话题Node: 节点Master:&nb... 查看详情

ros系统玩转自主移动机器人--ros系统建模(代码片段)

...是在Ubuntu14.04+Indigo环境下编写。  前面博文已经介绍了机器人平台的机械结构设计、嵌入式硬件平台的搭建等内容,从本片开始介绍本开源机器人平台ROS系统的相关程序,主要有:ROS系统建模;Gazebo仿真;ROS系统机器人SLAM框... 查看详情

ROS(机器人操作系统)是不是与所有机器人兼容?

】ROS(机器人操作系统)是不是与所有机器人兼容?【英文标题】:IsROS(RoboticOperatingSystem)compatiblewithallrobots?ROS(机器人操作系统)是否与所有机器人兼容?【发布时间】:2015-02-0317:00:09【问题描述】:我想知道ROS是否可以与所... 查看详情

机器人操作系统(ros)入门与实践--1(代码片段)

...ROS?1.2ROS设计目标1.3ROS发行版本列表2.ROS的安装2.1虚拟机及操作系统安装2.1.1虚拟机VMware下载2.1.2虚拟机VMware安装2.1.3Ubuntu操作系统下载2.1.4Ubuntu操作系统安装及配置2.2ROS桌面版安装与测试2.2.1ROS桌面版安装2.2.2ROS桌面版测试1.ROS简介1... 查看详情

ros/ros2机器人操作系统行业应用情况(引用,含教育)

仅引用两页PPT。最近有非常多朋友问及ROS和ROS2应用落地情况(含教育),下面用我个人看到的官方的两页PPT,引用一下,供参考,ROS/ROS2已经无处不在。  ROS2和ROS1课程参考博客其他文章^_^  查看详情

ros机器人操作系统:版本说明

ROS和ROS2由于历史原因,ROS有两个大版本——ROS1(通常用ROS替代)和ROS2,两者的差别如下图所示。我们知道ROS始于2007年11月,最早是“柳树车库”用于PR2机器人的开发,同时希望ROS能用于其他机器人。因此... 查看详情

机器人操作系统ros--简介(一)

参考技术A网址:http://www.ros.org/ROS(机器人操作系统,RobotOperatingSystem),是专为机器人软件开发所设计出来的一套电脑[操作系统]架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象... 查看详情

slam+语音机器人diy系列:ros入门——1.ros是什么

...sp;          ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所... 查看详情