ROS的优势与不足(除了ROS 机器人自主定位导航还能怎么做?)

2023-05-16

导读: 随着这两年国内机器人的升温,自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重视。为了实现这一功能,不少厂家选择采用机器人操作系统ROS(Robot Operation System),今天我们就聊一聊ROS系统...

  OFweek机器人网讯:随着这两年国内机器人的升温,自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重视。为了实现这一功能,不少厂家选择采用机器人操作系统ROS(Robot Operation System),今天我们就聊一聊ROS系统。

  1 什么是ROS?

  ROS系统起源于2007年,斯坦福大学人工智能实验室与机器人技术公司Willow Garage针对其个人机器人项目(Personal Robots Program)开发了ROS的雏形。2008年后,由Willow Garage公司推动了ROS的进一步发展。2012年后,ROS团队从WillowGarage公司独立出来,成为非盈利组织the Open Source Robotics Foundation(OSRF),负责维护和更新ROS,并为机器人社区提供相应的支持和开源工具。

  Willow Garage PR2机器人平台

  ROS大致每年发布一个版本,目前正在维护的ROS版本包括indigo,jade,kinetic,一些早期版本现在已经停止维护。ROS依赖于Linux内核,因此每当Ubuntu版本发生变化,ROS不同版本的依赖也会出现相应的变化。

  2 ROS的特性与优势

  ROS被称为机器人操作系统,其实ROS充当的是通信中间件的角色,即在已有操作系统的基础上搭建了一整套针对机器人系统的实现框架。ROS还提供一组实用工具和软件库,用于维护、构建、编写和执行可用于多个计算平台的软件代码。

  值得一提的是,ROS的设计者考虑到各开发者使用的开发语言不同,因此ROS的开发语言独立,支持C++,python等多种开发语言。因此,除了官方提供的功能包之外,ROS还聚合了全世界开发者实现的大量开源功能包,如思岚科技(SLAMTEC)就发布了针对其自主研发的激光雷达RPLIDAR的ROS功能包rplidar_ros。这些开源功能包与ROS一起构成了强大的开源生态环境。

  ROS的系统结构设计也颇有特色,ROS运行时是由多个松耦合的进程组成,每个进程ROS称之为节点(Node),所有节点可以运行在一个处理器上,也可以分布式运行在多个处理器上。在实际使用时,这种松耦合的结构设计可以让开发者根据机器人所需功能灵活添加各个功能模块。

  例如,在一个支持SLAM功能的移动机器人中,激光数据采集和里程数据获取分别由两个node实现,用于感知环境;SLAM算法运行在另一个node中,用于处理传感器数据,绘制地图;SLAM节点和数据采集节点之间采用topics方式通信。当新增一个摄像头模块时,仅需在现有结构里增加一个新的视频节点,让其与SLAM节点采用topics方式通信即可,另外两个功能节点不需任何改动。

  ROS构建的室内地图

  与其他开源产品(Linux,GCC等)一样,ROS具有优良的开源基因,松耦合设计方法,可扩展的软件结构,功能复用思想,极大降低了机器人领域的进入门槛,让开发者无需像前人一样走过众多弯路,掌握多种知识后才能开始实现其机器人设计的梦想。开发者可以用ROS的基础框架配合选定的功能包快速实现系统原型,从而让开发人员将更多时间用于核心算法的开发改进上。用户也可以单独选用某些功能包,将其集成在已有产品中,实现特定功能。

  3 ROS的缺陷与不足

  对于机器人厂家来说,采用ROS进行开发,更多的希望借助系统实现机器人的导航、定位与路径规划,这其中就要依靠SLAM算法(simultaneous localization and mapping,即时定位与地图构建)。

  但作为一个开源项目,ROS也存在一些问题。例如,ROS因为将功能分布在各个节点之中,节点间基于消息机制通信,通讯部分消耗了很多系统资源。尤其是当所有节点位于同一个处理器时,ROS仍然一直执行相应的消息分发,节点间的数据传递通过内存复制,大量的系统资源都浪费在通讯上,使得系统必须选用高性能的处理器和存储系统以弥补损耗。换句话说,利用ROS来实现SLAM,需要配备性能优越的硬件设备,这对于一些小型化嵌入式平台,尤其是实际的机器人产品里,其对计算资源、存储空间的消耗会使成本大幅上升。

  除了ROS本身系统设计的局限性外,利用ROS实现SLAM需要深入的调整优化,需要耗费大量人力与时间成本。更为重要的是,针对具体的机器人产品,如扫地机器人,还需要独特的贴边清扫、折回清扫、多房间自主导航等功能,目前已有的ROS系统,只能实现简单的建图,无法满足扫地机器人的实际需要。

  4 ROS之外,还能怎么做?

  在机器人商用应用开发的道路上,很多技术团队和公司针对机器人特定功能开发着相应商用产品,特别是在移动机器人领域,如思岚科技的Slamware控制模块,就将SLAM算法,导航,定位等功能集成在一个体积很小的模块,并且提供了多平台的SDK方便用户使用。针对扫地机器人等具体领域应用,思岚科技也提供完整的解决方案,整合了其特有的贴边清扫、往复式打扫、区域划分、断点续扫、自动回充等功能,方便扫地机器人厂家进行整合,不需要进行二次开发。

  当然,相较于采用开源ROS系统,选择已有的成熟解决方案,无疑会增加机器人厂家的成本,但考虑到厂家必须投入大量的人力与时间进行算法优化与调整,这也不失为一种更好的选择。

  综上,ROS为机器人研究开发提供了标准化的框架,其方便的代码重用,研究人员间的有效交流,可以加快机器人产品的原型设计和算法开发验证。但真正要做稳定可靠的产品,选择已有的成熟解决方案,可以大幅降低研发成本,快速获得产品原型,投入市场。

原文地址:http://robot.ofweek.com/2016-05/ART-8321205-8300-29101000.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS的优势与不足(除了ROS 机器人自主定位导航还能怎么做?) 的相关文章

  • 损失函数的盘点与总结

    文章目录 公式L1L2Smooth l1 公式 L1 L2 L1 令 x 61 fx y 有Lx 61 x 求导数 xff1a 我们知道梯度更新方法为 xff1a 这样会有一个问题就是 为0 的时候不可导 xff0c 另外当梯度很小时 xf
  • python 实现感知机

    span class token keyword import span span class token module numpy span as np span class token keyword import span span
  • 将标签文件转换为不同的数字

    将标签文件转换为不同的数字 说明 通过网上下载的数据 xff0c 可能是单标签的 xff0c 所以都是0 如果有三个类 xff0c 则需要转换成0 1 2 下面代码可以将labels 的所有数据转成你想要的label import os o
  • linux中安装vnc软件以及下载安装

    linux中安装时安装vnc软件 linux安装vnc配置软件 安装vnc软件 yum span class token function install span y tigervnc server xterm xclock span c
  • Mac配置中文 man 手册

    文章目录 查看自己的电脑的 man 信息中文手册地址构建依赖环境安装获取中文手册可以查看中文文档是否已经加载添加手册路径 将别名添加进 zsh xff08 可要可不要 xff09 解决乱码完结 查看自己的电脑的 man 信息 查看已经加载的
  • 生产者/消费者问题的多种Java实现方式

    生产者 消费者问题的多种 Java 实现方式 实质上 xff0c 很多后台服务程序并发控制的基本原理都可以归纳为生产者 消费者模式 xff0c 而这是恰恰是在本科操作系统课堂上老师反复讲解 xff0c 而我们却视而不见不以为然的 在博文 一
  • pandas读取表格时候header的用法

    1 header 61 0 读取一个music的dataframe 不设置header xff0c 则pandas会默认header 61 0 也就是数据表的第一行为表头 span class token keyword import sp
  • win10系统补丁彻底终止更新的方法

    我们经常在电脑上安装应用软件 xff0c 难免会遇到诸如win10系统无法更新正在暂停 xff0c 将暂停更新直到2018 1 2 为止的状况 xff0c 尤其是姑娘们遇到win10系统无法更新正在暂停 xff0c 将暂停更新直到2018
  • android -- 蓝牙 bluetooth (三)搜索蓝牙

    接上篇打开蓝牙继续 xff0c 来一起看下蓝牙搜索的流程 xff0c 触发蓝牙搜索的条件形式上有两种 xff0c 一是在蓝牙设置界面开启蓝牙会直接开始搜索 xff0c 另一个是先打开蓝牙开关在进入蓝牙设置界面也会触发搜索 xff0c 也可能
  • AD域控管理之授权普通用户或组管理计算机加入域和退出域的权限

    通过委派任务来实现 xff0c 具体如下 xff1a 1 在域控上打开Active Directory 用户和计算机 xff0c 右击域名 注意 将计算机加入域 只能在域上委派 xff0c 不能在OU上 xff0c 选择 委派控制 2 下一
  • IBM serverx服务器RAID阵列磁盘配置JBOD模式(直通模式)

    关于直通模式现在应用较多的是vmware的vsan分布式存储 现在通过IBM serverx 3850X6服务器演示如何配置JBOD模式磁盘 配置JBOD模式的前提是服务器不能安装有带缓存的raid卡 xff0c 其实也就是不能做raid5
  • 关于IBM 3550 3650 3850 在BIOS设置legacy模式

    1 在Boot Manager中 xff0c 选择add Boot Option xff0c 选择legacy only 2 在Go to Boot Manager gt Change Boot Order中 xff0c 把legacy o
  • IBM storwize V5000存储基础配置

    初始帐号密码 Superuser passw0rd 设备和系统的基本状态 首先添加配置主机 xff0c 前提是已经连接好光纤线 xff0c 配置好光纤交换机 这里我们使用光纤通道 系统应该可以自动识别到端口 xff0c 主机名可以设置为主机
  • 关于 Virtual SAN/VSAN 的常见问题解答

    问 xff1a VSAN 需要使用 SSD xff0c 它有什么用途呢 xff1f 答 xff1a SSD 用于读取缓存 70 和写入缓冲 30 每次写入都会先转到 SSD xff0c 稍后再取消暂存到 HDD 问 xff1a 创建 VSA
  • Linux 安装 VNC Server 实现图形化访问配置说明

    CentOS 6 5 系统环境下 xff0c 可以参阅如下步骤进行 VNC Server 的安装配置 安装 使用如下指令安装 VNC Server xff1a span class pln style margin 0px padding
  • JBoss AS / JBoss EAP / wildfly 区别

    JBoss AS JBoss EAP 和wildfly JBoss是一个基于JavaEE的开源的应用服务器 xff0c 遵循LGPL许可 xff0c 意味着可以在任何商业应用中免费使用 2006年 xff0c JBoss被Redhat公司收
  • 阿里云linux yum源配置

    http mirrors aliyun com help centos spm 61 5176 bbsr150321 0 0 d6ykiD 1 备份 mv etc yum repos d CentOS Base repo etc yum r
  • VMware vSphere 6 序列号大全

    经过测试ESXI6 5也可以使用 vSphere 6 Hypervisor HY0XH D508H 081U8 JA2GH CCUM24C4WK 8KH8L H85J0 UHCNK 8CKQ8NV09R 2W007 08D38 CA956
  • Ubuntu下安装Chrome浏览器的方法

    通过直接下载安装Google Chrome浏览器deb包 打开Ubuntu终端 xff0c 以下为32位 版本 xff0c 使用下面的命令 wget https dl google com linux direct google chrom
  • android -- 蓝牙 bluetooth (四)OPP文件传输

    在前面android 蓝牙 bluetooth xff08 一 xff09 入门文章结尾中提到了会按四个方面来写这系列的文章 xff0c 前面已写了蓝牙打开和蓝牙搜索 xff0c 这次一起来看下蓝牙文件分享的流程 xff0c 也就是蓝牙应用

随机推荐

  • 智能制造:三体智能革命

    赵敏 宁振波 郭朝晖是走向智能研究院资深专家 xff0c 三体智能革命 编委会中三位重要作者 他们从去年5月起多次参加了中国工程院主持的 中国智能制造发展战略研究报告 的研讨 评审与修订工作 xff0c 对该报告的形成过程 研究主旨和详细内
  • 程序员读书和练习的方法(个人观点)

    lt 传送门 gt 针对本文的交流探讨 gt 总宗旨 xff1a 打好计算机通用理论基础 通用实战能力 xff0c 便于需要时对各领域的无障碍深钻 时间宝贵 xff0c 不要为了学习而学习 计算机通用理论基础 xff1a 计算机各领域理论基
  • 信息系统项目管理01——信息化和信息系统

    第一章 信息化和信息系统 考选择 xff0c 重要程度5颗星 文章目录 1 1 信息系统与信息化1 信息的质量属性 xff08 第3页 xff09 2 信息的传输模型 xff08 第4 5页 xff09 3 信息化从 小 到 大 分为5个层
  • 白话经典算法系列之七 堆与堆排序

    堆排序与快速排序 xff0c 归并排序一样都是时间复杂度为O N logN 的几种常见排序方法 学习堆排序前 xff0c 先讲解下什么是数据结构中的二叉堆 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树 二叉堆满足二个特性 xff1a
  • 当执行systemctl enable xxx.service时,报Failed to execute operation: Invalid argument

    Install 部分中的WantedBy 61 multi user target 看看有没有出现拼写输入错误
  • VR行业发展的前景和现状?

    标题 VR行业发展的前景和现状 xff1f 1 一个新事物的产生 xff0c 总是伴随着看好和唱衰两种声音 这两种态度自然有其可以理解的地方 xff0c 因为摆在我们面前的是未知 xff0c 而坐在餐桌前的两拨人 xff0c 站在不同的角度
  • class path resource [templates/] cannot be resolved to absolute file path because it does not reside

    报错 xff1a 在运行springcloud代码的时候报错 xff0c 但是不影响正常启动 分析 xff1a 经过谷歌和百度发现FreeMarkerConfigurationFactory中存在以下方法 xff1a span class
  • write javaBean error, fastjson version 1.2.68, class org.springframework.web.multipart.support.Stand

    一 问题背景 这两天在springboot项目中遇到个让人摸不着头脑的问题 xff0c 一个接口准备上传excel文件并解析到数据库中 xff0c 结果运行的时候报错了 xff0c 具体信息如下 xff1a ERROR span class
  • CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘. To initia

    64 CommandNotFoundError Your shell has not been properly configured to use conda activate To initialize your shell run c
  • android -- 蓝牙 bluetooth (五)接电话与听音乐

    前段时间似乎所有的事情都赶在一起 xff0c 回家 集体出游 出差 xff0c 折腾了近一个月 xff0c 终于算暂时清静了 xff0c 但清静只是暂时 xff0c 估计马上又要出差了 xff0c 所以赶紧把蓝牙这一部分的文章了结下 xff
  • anaconda使用国内数据源

    anaconda后默认走的是官方镜像 xff0c 但是相对来说 xff0c 不使用翻墙软件的话还是使用国内源下载会比较便捷 默认镜像 xff1a span class token operator span https span class
  • flink消费kafka数据写入阿里hologres(java版)

    一 需求背景概述 由于公司业务需要将kafka的数据写入到hologres中 xff0c 但是发现flinksql那种简便的方式会各种报错 很有可能是我包引用的不对 xff0c 但是找了阿里支持也没有解决 xff0c 无奈只能使用flink
  • linux和本地(mac)之间的文件传输

    一 使用SecureCRT的sftp传输 xff08 推荐 xff09 SecureCRT安装在这里就不介绍了 xff0c 大家可以参考一下这篇文章 xff1a https blog csdn net so geili article de
  • hbase的介绍及使用

    一 hbase简介 1 hbase产生背景 以前Google存储大量的网页信息 xff0c 如何存储 xff0c 如何计算 xff0c 如何快速查询就成为了一个问题 xff0c 后来在2003年Google发表了3篇论文提供了解决思路 xf
  • scala学习第三篇之类型参数(泛型)

    概述 xff1a 类型参数 xff0c 说白了就是泛型 xff0c 什么是泛型 xff1f 广泛的类型 xff0c 啥类型都有可能 xff0c 是一种更加通用的表示 xff0c 或者定义 Scala中定义泛型的方式和java中稍微有点不同
  • idea如何引入同级本地module中的类

    一 工程目录结构如图所示 其中 xff0c spark study是父module xff0c spark commen spark core是子module 2 需求 在spark core中需要使用spark commen中的类 xff
  • linux下双击执行.sh脚本文件

    1 当写好一个 sh脚本文件后 xff0c 给他赋予执行权限后 xff0c 双击的时候 xff0c 默认是以文本编辑器打开的 xff0c 无法运行该脚本文件 2 打开终端 3 输入如下命令 xff0c 需要联网 xff1a sudo apt
  • H5实现微信分享

    H5页面如何实现微信分享功能 微信分享文档地址 xff1a https developers weixin qq com doc offiaccount OA Web Apps JS SDK html 步骤一 xff1a 绑定域名 xff0
  • TIME_WAIT过多解决方法

    之所以起这样一个题目是因为很久以前我曾经写过一篇介绍TIME WAIT的文章 xff0c 不过当时基本属于浅尝辄止 xff0c 并没深入说明问题的来龙去脉 xff0c 碰巧这段时间反复被别人问到相关的问题 xff0c 让我觉得有必要全面总结
  • ROS的优势与不足(除了ROS 机器人自主定位导航还能怎么做?)

    导读 xff1a 随着这两年国内机器人的升温 xff0c 自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重视 为了实现这一功能 xff0c 不少厂家选择采用机器人操作系统ROS xff08 Robot Operation Sys