导读: 随着这两年国内机器人的升温,自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重视。为了实现这一功能,不少厂家选择采用机器人操作系统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

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

  1. 浅析服务机器人自主定位导航技术(一)

    智能服务机器人正成为行业的风口浪尖,从清扫机器人开始,家庭陪伴机器人.送餐机器人等陆续进入公众视线. 在讨论这类机器人是否能解决实际问题时,自主定位导航技术作为机器人智能化的第一步正不断引起行业内的重 ...

  2. 思岚科技机器人自主定位导航方案:高效可靠、高精度、厘米级别地图多场景适用 | 百万人学AI评选

    2020 无疑是特殊的一年,而 AI 在开年的这场"战疫"中表现出了惊人的力量.站在"新十年"的起点上,CSDN[百万人学AI]评选活动正式启动.本届评选活动在 ...

  3. 实现机器人自主定位导航必解决的三大问题

    机器人自主定位导航需要解决三个问题:定位.建图与路径规划. SLAM与各领域关系图       定位: 当你打开手机中的导航软件,在选择前往目的地的最佳路线之前,首先要做的动作是什么呢?没错,就是定位 ...

  4. SLAM≠机器人自主定位导航

    SLAM技术作为机器人自主移动的关键技术,让很多人都误解为:SLAM=机器人自主定位导航. 其实,SLAM≠机器人自主定位导航 ,不解决行动问题. SLAM如其名一样,主要解决的是机器人的地图构建和即 ...

  5. ROS机器人自主定位导航

    ROS机器人定位导航仿真--智能车 目录 ROS机器人定位导航仿真--智能车 一.创建ROS工作空间 1.创建racecar_ws文件夹.src文件夹 2.初始化工作空间 3.下载racecar源代码 ...

  6. 基于SLAM的机器人的自主定位导航解析

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文来源于新机器视觉,文章仅供学术交流,已获得授权. 来源: ht ...

  7. 思岚科技机器人自主定位导航系统

    身为一台机器人会走路是其次,能否自主定位导航才是关键,目前市面上大部分的服务机器人缺乏自主定位导航的技术,使得机器人碰撞事件屡屡发生,如何才能使机器人实现自主定位导航呢?思岚科技研发的机器人自主定位导 ...

  8. 思岚科技完成B轮融资,自主定位导航助力机器人智能化

    行业的兴起,概念的普及,使得机器人行业的发展越来越迅速,要求越来越高. 日前,思岚科技完成1亿人民币B轮融资,助力机器人产业实现智能化.此轮融资由国科瑞华领投,国中基金.信中利跟投,势能资本担任首席财 ...

  9. 「镁客·请讲」思岚科技陈士凯:致力于为各类机器人解决好自主定位导航能力...

    行业的兴起,概念的普及,使得机器人行业的发展越来越迅速,要求越来越高. A轮融资千万美元.B轮融资1亿人民币.目前已累计服务企业超2000家,个人用户超10万.创业首年就获利200万-- 这就是我们今 ...

最新文章

  1. 并发编程-10线程安全策略之不可变对象
  2. ZK的实际应用:MVVM –表单绑定
  3. (转)python 搭建libsvm方法。python版本和libsvm版本匹配很重要!
  4. RN的stylesheet的属性及方法
  5. 微信红包封面向个人开放,1元定制!
  6. Python实现计算机屏幕任意区域截图
  7. protues仿真器51单片机定时器内部定时方式
  8. 创建Vue实例对象基础语法模板
  9. 先少谈点人工智能好吗?
  10. tic/toc/cputime测试时间的区别
  11. 在线sql进行Excel表格拆分
  12. charles常用功能使用说明
  13. 题目:代码实现判断单链表是否有环
  14. duolingo 多邻国 安卓版无法使用口语功能
  15. 沃柑文案,水果店沃柑促销文案
  16. 围棋吻合度高,并不能确定用了AI
  17. 浏览器兼容性适配方法总结(跨浏览器)
  18. 赚商联盟:知识付费时代通过购买网课来缓解焦虑,是对还是错?
  19. 一个基于JDBC的通用DAO的设计参考(北大青鸟课程)
  20. 【网关层】网关层及相关技术栈

热门文章

  1. nginx优化_安全方面的优化
  2. 公司冷备服务器1.100切换到1.99
  3. 使用newtonsoft序列化
  4. cocos2d-x3.6 连连看随机地图实现
  5. javascript使用事件委托
  6. opengl笔记—— glMultMatrixf() 区别 glLoadMatrixf()
  7. 嵌入式linux的驱动程序
  8. 一篇文章总结暴力破解方法大全
  9. [转]Ubuntu terminator 无法打开解决方案
  10. [转][进阶]-Python3 异步编程详解