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

  1. 什么是ROS?

  ROS系统起源于2007年,斯坦福大学人工智能实验室与机器人技术公司Willow Garage针对其个人机器人项目(Personal Robots Program)开发了ROS的雏形。2008年后,由Willow Garage公司推动了ROS的进一步发展。2012年后,ROS团队从Willow Garage公司独立出来,成为非盈利组织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系统,选择已有的成熟解决方案,无疑会增加机器人厂家的成本,但考虑到厂家必须投入大量的人力与时间进行算法优化与调整,这也不失为一种更好的选择。

  5. 总结

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

有了开源ROS,机器人就能自由行走?相关推荐

  1. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...

  2. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse...

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方.直接替换为indigo或ja ...

  3. 按键精灵定位坐标循环_LinkTrack UWB定位正式支持ROS机器人操作系统,驱动开源,自由定制消息格式...

    ROS (Robot Operating System) 是一个开源的机器人操作系统,能够集成机器人不同的通信层,允许个人修改运动控制.感知和路径规划工具等外设,通过知识共享加速机器人的研究和工业应用 ...

  4. 轻量级开源ROS 的机器人设备(一)

    目录 一.提要 二.概括 三.系统介绍 一.提要 计算设备的持续发展,尤其是嵌入式系统,引入了增强机器人软件的新机会.本论文的目标是开发一种快速原型机器人通信可以在廉价的嵌入式系统上运行的框架,同时仍 ...

  5. ROS机器人操作系统AutolaborOS全面开源

    还在为要不要装双系统纠结?为装不上ROS而烦恼?明明按照官方文档操作,为什么还一堆报错? 安装AutolaborOS,和这些问题说再见. AutolaborOS是什么 AutolaborOS 由 Au ...

  6. ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料

    ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...

  7. ROS机器人操作系统教学与应用的思考

    首先,非常感谢睿慕课提供这样一个宝贵的机会(大会相关报道:19日,20日),讲稿内容是关于我们如何利用互联网.大数据并结合学生认知规律等认真上好一门机器人课程的故事.大会视频介绍链接,具体内容如下: ...

  8. ROS机器人高效编程(原书第3版)勘误、问题及资料汇总

    ROS机器人高效编程(原书第3版)勘误.问题及资料汇总--持续更新 如果小伙伴发现书中错误,恳请批评指正,非常感谢.勘误在文末. 补充一行代码装ROS,适用于14.04LTS(indigo)和16.0 ...

  9. ROS机器人项目开发11例-ROS Robotics Projects(10)机器人Web工具集

    本书最后一章的内容是通过Web网页对机器人进行监测和控制等,使用的是Robot Web Tools. 插播一组视频,暑期学校的全部视频资料,可看: http://i.youku.com/i/UMTMx ...

最新文章

  1. java继承类大全_Java 面向对象继承部分(示例代码)
  2. 对“纯手工编写的第一个Hibernate程序”的改进
  3. 二进制数代替数组做标记
  4. 网站开发技巧参考大全
  5. 栈的简单介绍以及栈结构的ADT【数据结构】
  6. MPEG-2TS码流编辑的原理及其应用(转载
  7. 阿里风控大脑关于大数据应用的探索与实践
  8. x390拆机_用了七八年的笔记本电脑依然流畅如初,从X230i换到X390
  9. memset初始化类对象出错解析
  10. 西瓜书《机器学习》多元线性回归公式推导
  11. 蚂蚁集团SOFAStack:新一代分布式云PaaS平台,打造企业上云新体验
  12. ubuntu(jdk配置)
  13. python计算无穷级数求和常用公式_幂级数n=0到∞∑ x^n/的和函数怎么求 级数求和问题:求:∑1/...
  14. 测试学习-测试工具wireshark、HFS、wlan信号
  15. 如何进行有效的计划管理?
  16. 第四届橙瓜网络文学奖网文之王,烽火戏诸侯舍我其谁?
  17. three.js纹理贴图不显示
  18. 浅析「网络安全政策陆续发布」对企业的影响
  19. 分位数回归的实现方法
  20. 是三的倍数但不是七的倍数

热门文章

  1. MES系统选型和供应商考察
  2. 损失函数(IoU、GIoU、DIoU、CIoU)
  3. Notify与notifyall的区别
  4. Cesium教程(十六):动态数据三维可视化
  5. ThinkPHP+基于ThinkPHP的图书馆管理系统 毕业设计-附源码311833
  6. Verilog——JTAG标准的状态机实现
  7. TTL电平 与 RS232电平
  8. 线性代数学习笔记7-1:特征值、特征向量、特征值的虚实性、迹、相似不变量
  9. 招生目录自相矛盾?双一流宁波大学计算机学硕改考408
  10. 逻辑优化基础-disjoint support decomposition