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

智能推荐

PMO-外包管理_pmo账号-程序员宅基地

文章浏览阅读703次。PMO对于项目外包管理的工作,主要包括外包人员账号及权限管理,以及外包费用管控。外包人员账号及权限管理梳理外包人员需使用的系统,按照权限最小化原则,仅开通必需系统账号。常用行政类系统,一般包括考勤、门禁、公司餐饮、上网认证、VPN。默认开通清单,需多方沟通确认,涉及应用系统产品经理、外包人员所在项目的项目经理、信息安全稽核人,提前制定好规则,超出规则的系统账号申请,走特权账号审批流程。同时..._pmo账号

运算符重载-程序员宅基地

文章浏览阅读77次。运算符重载相关知识_运算符重载

DIV模拟select下拉菜单效_模拟selelct下拉菜单-程序员宅基地

文章浏览阅读7.6k次。// JavaScript Document//*********************************************************************************************/// 文件名:jquery.plugin_costom.js// 功能:用于存储自定义的jquery 插件// addby: zc 2011-15-19//**************************************************_模拟selelct下拉菜单

华为pc linux 多屏协同 软件,引领PC行业革新趋势 华为EMUI10多屏协同让人眼前一亮...-程序员宅基地

文章浏览阅读304次。今日,部分型号的华为手机迎来了EMUI10更新,本次更新亮点颇多,尤其是能够实现手机和笔记本之间自然交互与协同的“多屏协同”功能,堪称本次更新的最大亮点之一。与此同时,华为终端官方微博宣布了一条好消息:手机升级EMUI10后,配合MateBook系列笔记本,即可体验多屏协同功能,除了华为Mate30系列之外,更多支持该功能的机型也已经在路上。作为华为最新的EMUI版本,EMUI10首次将分布式技术..._linux 多平协同

2. Elasticsearch基本操作_elasticsearch response-程序员宅基地

文章浏览阅读269次。_cat以下所有请求使用GET方式发送/_cat/nodes查看所有节点http://192.168.2.190:9200/_cat/nodes/_cat/health查看ES健康状况http://192.168.2.190:9200/_cat/health/_cat/master查看主节点信息http://192.168.2.190:9200/_cat/master/_cat/indicies查看所有索引,也就是mysql中的show databases_elasticsearch response

JAVA+MYSQL可视化学生信息管理系统_学生信息管理系统mysql可视化-程序员宅基地

文章浏览阅读906次,点赞3次,收藏9次。java+mysql小程序_学生信息管理系统mysql可视化

随便推点

常用校验码(奇偶校验码、海明校验码、CRC校验码)_常见的检验码有哪些类型-程序员宅基地

文章浏览阅读3.5k次,点赞10次,收藏37次。转载自:https://www.cnblogs.com/VersionP1/p/7779251.html,作者:FunnyOne常用校验码(奇偶校验码、海明校验码、CRC校验码)一、奇偶校验码二、海明校验码三、CRC校验码  计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的,误码..._常见的检验码有哪些类型

PyTorch权重初始化的几种方法_torch 权重初始化方案-程序员宅基地

文章浏览阅读9.2k次,点赞8次,收藏41次。PyTorch在自定义变量及其初始化方法:self.fuse_weight_1 = torch.nn.Parameter(torch.FloatTensor(1), requires_grad=True)self.fuse_weight_1.data.fill_(0.25)如上是定义一个可学习的标量。也可以定义一个可学习的矩阵:self.fuse_weight_1 = torch..._torch 权重初始化方案

DDOS-分布式拒绝服务_ddos,是指分布反射式拒绝服务-程序员宅基地

文章浏览阅读603次。DDOS 不是一种攻击,而是一大类攻击的总称。它有几十种类型,新的攻击方法还在不断发明出来。网站运行的各个环节,都可以是攻击目标。只要把一个环节攻破,使得整个流程跑不起来,拒绝任何类型服务,就达到了瘫痪服务的目的。其中,比较常见的一种攻击是 cc 攻击。它就是简单粗暴地送来大量正常的请求,超出服务器的最大承受量,导致宕机。什么是DOS和DDOS?要了解DDOS攻击是什么,首先要了..._ddos,是指分布反射式拒绝服务

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)_oracle rac database-程序员宅基地

文章浏览阅读479次。 RAC 特殊问题和实战经验(五)共享存储在需要将一个 LUN (逻辑单元号)映射给多个节点、为集群提供一个共享的存储卷时,同一个存储 LUN 在各个主机端的 LUNID 必须是相同的。比如: (一) 在为多个 ESX 节点创建一个 VMFS 卷的时候(二) 在双机 HA 集群创建共享存储的时候时间一致性集群模式下..._oracle rac database

debian 添加开机启动项_debian12 添加开机启动-程序员宅基地

文章浏览阅读1.6k次。有的时候,经常有自己需要的程序,官方并没有提供添加开机启动的方法,但我们却需要让他们开机启动(比如探针类、飞机类、服务类程序等)。是可以使用这个,但不是所有的系统都有 rc.local。今天介绍一个简单的方法,实现将自己需要的程序添加到开机启动项中,并使其在系统启动后自动执行。的,也就是在所有的开机启动项中,Provides不能有任何同名冲突。需要执行的命令,按照正常的Bash Shell书写方式书写即可。那么,还有一个问题:那就是如何删除我们刚才创建的开机启动项呢?的开机启动项,并要求其在开机时在。_debian12 添加开机启动

1508-张晨曦总结《2016年-11月-16日》【连续26天总结】_鈥渧oid robot::set(char-程序员宅基地

文章浏览阅读590次。标题:兴奋之余,我们该做些什么?关键词:析构函数的应用内容A. 一句话概括今日目标完成情况(a)巩固10.4 100%(b)学习10.5、10.6 50%(非常惭愧,只完成了一半的任务量。确实是眼睛都睁不开了)B.具体内容 今天学习了10.5实际意义的析构函数,这个实例学的我是头昏脑胀。理解并且写完之后再一次发现编程之后找错误真是最痛苦又最幸福的事情。因为很认真地对_鈥渧oid robot::set(char

推荐文章

热门文章

相关标签