ROS 机器人操作系统:概述_ros系统-程序员宅基地

技术标签: 自动驾驶  机器学习  ROS 机器人操作系统  ROS  人工智能  

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 就受到了学术界和工业界的欢迎,如今已经广泛应用于机械臂、移动底盘、无人机等许多种类的机器人上。这些机器人可以是自主的、半自主的、遥控的。

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luckydarcy/article/details/124975502

智能推荐

Android渲染(一)------ Shader之SweepGradient用法(雷达扫描效果)_android sweepgradient-程序员宅基地

文章浏览阅读707次。Shader定义:官方的定义是这样的: Shader是返回水平跨度颜色的对象的基类,绘图期间。 Shader的子类安装在Paint调用中,paint.setShader(着色器)。 之后的任何对象(除了位图之外)都是使用该绘制绘制将从着色器获取其颜色。它有五个子类,分别是:SweepGradient、LinearGradient、BitmapShader、Compose..._android sweepgradient

no2222_通信emm substate-程序员宅基地

文章浏览阅读530次。222_通信emm substate

ABAQUS CAE安装启动问题(No socket connection to license server manager )_no socket connection to license server manager. fe-程序员宅基地

文章浏览阅读2.9w次,点赞15次,收藏48次。ABAQUS CAE安装启动问题(No socket connection to license server manager )_no socket connection to license server manager. feature: cae license path: 2

IDEA里面的各种小图标_idea的图标-程序员宅基地

文章浏览阅读1w次,点赞9次,收藏39次。IDEA使用的最新文档IDEA使用的中文文档第一位登场的是@额,还不清到底有啥用第二位登场的是O这个表示是覆盖了原来的方法第三位登场的是λ表示当前的方法是属于jdk8的语法规则lambda第三位登场的是I属于接口中的一个方法,实现类的方法可以通过点击这个小图标来进行找到第四位登场的是>表示当前的方法是可以被执行的第五位登场的是一个小L..._idea的图标

【前台操作】MIGO创建物料凭证,以及查看、取消_sap migo操作手册 csdn-程序员宅基地

文章浏览阅读2.4k次。事务码:MIGO1.选择A01收货,输入采购订单号,回车2.勾选“项目确定” 在序号这里输入序列号,检查,过账即可生成物料凭证号后,可以再取消这张收货凭证ME23N 查看所有生成的物料凭证_sap migo操作手册 csdn

k3安装服务器系统,论如何逗比的在2008R2上安装金蝶K3服务器-程序员宅基地

文章浏览阅读1k次。K3 WISE V13.0在Windows Server 2008 R264位操作系统下的安装配置说明环境:1、Windows Server 2008 R2 64位操作系统;2、K3 WISE V13.0;3、SQLServer2005 32位+SQL SP4;一、Windows Server 2008 R2 64位操作系统配置如下:1、 固定计算机名和手工指定IP地址,共享一个文件夹,赋予ev..._2008r2如何安装13.0k/3wise客户端

随便推点

什么是soap_soap是指什么-程序员宅基地

文章浏览阅读645次。SOAP (Simple Object Access Protocol) 顾名思义,是一个严格定义的信息交换协议,用于在Web Service中把远程调用和返回封装成机器可读的格式化数据。事实上SOAP数据使用XML数据格式,定义了一整套复杂的标签,以描述调用的远程过程、参数、返回值和出错信息等等。而且随着需要的增长,又不得增加协议以支持安全性,这使SOAP变得异常庞大,背离了简单的初衷。另一方面,各个服务器都可以基于这个协议推出自己的API,即使它们提供的服务及其相似,定义的API也不尽相同,这又导致.._soap是指什么

Spring Cloud Gateway使用及配置-程序员宅基地

文章浏览阅读1.2w次。目录引入依赖包配置文件Spring相关配置路由配置限流规则代码限流原理自定义过滤器公用过滤器引入依赖包 <dependencies> <!-- gateway核心包 --> <dependency> <groupId>org.springframe...

文字搬运工-程序员宅基地

文章浏览阅读409次。需求:把左边的文字,一个接一个转移到右边技术:定时器,定时器管理,substring()截取字符串,进度条(取模实现)<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <title>文字搬运工</title> &...

一文总结5G边缘计算!-程序员宅基地

文章浏览阅读3k次。边缘计算正处于技术的研究热点期,各大厂商、科研机构正在制定标准和规范,虽未达成共识,但国内外已形成多个产业联盟,大力推动边缘计算的标准和技术进步。截至2018年底,中国边缘计算市场仍处于..._5g网络的边缘计算

【EduCoder答案】html网页综合项目实战_头哥html网页综合实战答案-程序员宅基地

文章浏览阅读1k次。简介其他各类实训答案的目录见这里答案查询的入口网页版答案获取的方法简介见这里并不是所有的关卡都有答案,有些只有部分关卡有html网页综合项目实战 >>>查看第1关:header——头部第2关:用Swiper实现轮播图第3关:用CSS3实现移动效果..._头哥html网页综合实战答案

【OpenCV + Python】ret, frame = cap.read()返回值含义&视频读取_ret, frame = cap.read()循环了多少次-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏7次。ret, frame = cap.read()返回值含义:参数ret 为True 或者False,代表有没有读取到图片第二个参数frame表示截取到一帧的图片camera = cv2.VideoCapture(0)ret, frame = camera.read()_ret, frame = cap.read()循环了多少次