SIEMENS江西省九江市 西门子代理商——西门子华中总代理
| 更新时间 2024-11-26 07:00:00 价格 请来电询价 西门子总代理 PLC 西门子一级代 驱动 西门子代理商 伺服电机 联系电话 15903418770 联系手机 15915421161 联系人 张经理 立即询价 |
ROS是什么
ROS的诞生时间并不长,但它在很短的时间里就从一个公司内部项目发展为机器人开发的事实标准。本文以ROS诞生的起因为切入点,探索ROS解决了机器人上的哪些问题,使得它能够被机器人行业广泛地采纳。
ROS的诞生相比于机器人的发展历史来说并不算久远,它在2010年3月才推出了第一个发行版本,和Linux的诞生一样,ROS并不是忽然之间横空出世的,它的雏形Zui早可以追溯到2007年左右斯坦福大学人工智能实验室的STAIR机器人项目。STAIR机器人项目希望完成一个服务机器人原型,在机器视觉的辅助下,可以在复杂环境中运动,还可以通过机械臂操控环境中的物体。STAIR机器人配备了一个运动底盘用于移动,一个小型机械臂用于抓取周围物体,还配备了立体摄像头和激光雷达用于感知周围的环境,如图所示。
当时负责STAIR机器人项目软件架构设计和开发的是美国斯坦福大学博士生摩根·奎格利(Morgan Quigley),随着项目开发的推进,他逐渐意识到从软件开发的角度来看,将各种功能集成在一个机器人上非常不容易,也是从那时他开始考虑采用“分布式”的方式来连接不同的模块,并将这一概念成功应用到机器人软件系统中,取名为Switchyard。
摩根·奎格利的导师是吴恩达教授,吴恩达教授当时带领的人工智能实验室正在和Willow Garage公司(见下图1)合作,帮助它们开发PR2(Personal Robot 2nd)机器人,如下图2所示。
有类似项目开发经验的摩根·奎格利自然也加入并将开发Switchyard的经验充分应用到该项目中,而PR2项目中的机器人软件系统名正是“ROS”。
2009年,摩根·奎格利、吴恩达和Willow Garage公司的工程师们在当年的IEEE国际机器人与自动化会议上发表了“ROS: An Open-Source Robot Operating System”一文,正式向外界介绍了ROS。因为摩根·奎格利对于ROS的诞生有着杰出的贡献,所以他也被称为ROS之父,而此时的摩根·奎格利还在攻读博士学位尚未毕业。
2010 年,PR2机器人正式对外发布,作为机器人配套的软件系统,ROS的第一个正式发布版本也一起发布,即ROS 1.0。在ROS发布之后,受到了学术界和机器人产业的热烈欢迎,并在2012年举办了第一次开发者大会ROSCon 2012。同年为了推动ROS的发展,Willow Garage公司成立了非营利组织“开源机器人基金会”(Open Source Robot Foundation,OSRF),并在2013年将ROS的开发和维护工作从Willow Garage公司移交到OSRF基金会。直到现在,ROS依然是由OSRF在管理和维护。
从ROS的诞生的背景来看,它主要解决一个复杂的机器人系统中,众多的外部设备和功能之间结合很困难的问题,而它给出的解决思路是“分布式”,即将各个功能模块都独立出来,再通过一套标准的协议来连接各个独立的模块,使每个模块只需要负责一个具体的功能即可。例如机器人需要使用激光雷达实现导航时,激光雷达只需要捕获周围的环境信息,由定位软件来根据雷达的数据确定机器人的当前位置,路径规划软件根据机器人当前位置和目标位置来规划机器人的路径,再由机器人底盘驱动软件根据规划出的路径控制运动底盘上的电动机运动,使机器人Zui终到达目标位置。这样的好处在于,将机器人导航这样一个复杂的功能拆解成了若干个小的模块,降低了开发的难度,并且各个模块之间相互独立,通过一套协议来沟通,软件系统的耦合度也很低,当需要换更换机器人上搭载的硬件时,只需要修改对应的模块软件,不需要对整个软件系统进行大幅度的修改。
ROS官方对ROS的定义是:机器人操作系统(ROS)是用于编写机器人软件的灵活框架。它是工具、库和规范的集合,用于简化在各种机器人平台上创建复杂而强大的机器人行为的任务。下图所示为zhuming的ROS等式,ROS=通信架构+工具+功能+生态系统。
通信架构提供了一套标准的通信协议,工具为开发过程的调试提供了很大的便利,至于功能,因为有了一套标准的通信协议,所以不同开发者开发的机器人和功能之间可以很容易组合起来,这样就会有很多软件可以直接使用,避免了重复开发。众多的开发者、使用ROS的企业和组织共同构建了生态系统,这个生态中包含了各种ROS学习交流会议、论坛以及支持或者使用ROS的设备,这使得ROS无论是从学习还是应用的角度来看,都成为一项通用的技能。
从使用ROS的经验来看,ROSZui令人满意的有两点,第一是它将各个功能模块拆解后极大地降低了机器人的开发难度,机器人本身是一个相对复杂的系统,完全从0去构建涉及机械、电子电路、嵌入式、运动控制、上位机软件、算法等多个技术领域,而这些跨度极大的技能通常很难由一个人所掌握,团队中将各个功能模块分配给不同的人来完成,因为有标准的协议,负责不同模块的开发者只需要遵循协议,Zui终就可以很容易地将所有人的工作整合成一套完整的机器人系统。
第二是ROS通过多年的发展已经成为机器人开发的事实标准,这就构建出了一个良好的ROS生态。现在从市面上能买到的很多设备,例如运动底盘、激光雷达、相机、姿态传感器等开发厂商都会提供对应的ROS驱动,减少了用户的无意义重复工作。通过已有的设备驱动和各类功能软件,用户可以轻松地构建出产品原型,因此有越来越多的公司开始倾向使用ROS,这也会使各类设备厂商更有积极性去支持ROS。