从ROS的诞生的背景来看,它主要解决一个复杂的机器人系统中,众多的外部设备和功能之间结合很困难的问题,而它给出的解决思路是“分布式”,即将各个功能模块都独立出来,再通过一套标准的协议来连接各个独立的模块,使每个模块只需要负责一个具体的功能即可。例如机器人需要使用激光雷达实现导航时,激光雷达只需要捕获周围的环境信息,由定位软件来根据雷达的数据确定机器人的当前位置,路径规划软件根据机器人当前位置和目标位置来规划机器人的路径,再由机器人底盘驱动软件根据规划出的路径控制运动底盘上的电动机运动,使机器人最终到达目标位置。这样的好处在于,将机器人导航这样一个复杂的功能拆解成了若干个小的模块,降低了开发的难度,并且各个模块之间相互独立,通过一套协议来沟通,软件系统的耦合度也很低,当需要换更换机器人上搭载的硬件时,只需要修改对应的模块软件,不需要对整个软件系统进行大幅度的修改。
ROS官方对ROS的定义是:机器人操作系统(ROS)是用于编写机器人软件的灵活框架。它是工具、库和规范的集合,用于简化在各种机器人平台上创建复杂而强大的机器人行为的任务。下图所示为zhuming的ROS等式,ROS=通信架构+工具+功能+生态系统。
通信架构提供了一套标准的通信协议,工具为开发过程的调试提供了很大的便利,至于功能,因为有了一套标准的通信协议,所以不同开发者开发的机器人和功能之间可以很容易组合起来,这样就会有很多软件可以直接使用,避免了重复开发。众多的开发者、使用ROS的企业和组织共同构建了生态系统,这个生态中包含了各种ROS学习交流会议、论坛以及支持或者使用ROS的设备,这使得ROS无论是从学习还是应用的角度来看,都成为一项通用的技能。
从使用ROS的经验来看,ROS最令人满意的有两点,第一是它将各个功能模块拆解后极大地降低了机器人的开发难度,机器人本身是一个相对复杂的系统,完全从0去构建涉及机械、电子电路、嵌入式、运动控制、上位机软件、算法等多个技术领域,而这些跨度极大的技能通常很难由一个人所掌握,团队中将各个功能模块分配给不同的人来完成,因为有标准的协议,负责不同模块的开发者只需要遵循协议,最终就可以很容易地将所有人的工作整合成一套完整的机器人系统。
第二是ROS通过多年的发展已经成为机器人开发的事实标准,这就构建出了一个良好的ROS生态。现在从市面上能买到的很多设备,例如运动底盘、激光雷达、相机、姿态传感器等开发厂商都会提供对应的ROS驱动,减少了用户的无意义重复工作。通过已有的设备驱动和各类功能软件,用户可以轻松地构建出产品原型,因此有越来越多的公司开始倾向使用ROS,这也会使各类设备厂商更有积极性去支持ROS。
- ROS开发环境搭建 2024-11-21
- 在贝尔实验室遭受打击 2024-11-21
- 做研究与管公司是两条不同的路 2024-11-21
- 矛盾四起,“八叛逆”崛起 2024-11-21
- 硅谷的传奇被更多的人续写 2024-11-21
- 2023年6G发展的三个关键点 2024-11-21
- 电力系统转型升级的历史必然性 2024-11-21
- 西门子PLC结构化编程详解,电气小白建议收藏 2024-11-21
- 结构化编程 2024-11-21
- 首台国产光刻机正式投入使用 2024-11-21