技术专栏 当前位置:首页 > 资讯中心 > 技术专栏
ROS机器人软件开发平台的前世今生
发布时间:2018-09-30浏览次数:11960字号:小中大
近年来,机器人领域取得了举世瞩目的进展。性价比较高的机器人平台,包括地面移动机器人、旋翼无人机和类人机器人等,
得到了广泛应用。更令人感到振奋的是,越来越多的高级智能算法让机器人的自主等级逐步提高。尽管如此,对于机器人软
件开发人员来说,仍然存在着诸多挑战。
ROS, 即机器人操作系统 (Robot Operating System, 或简称 ROS),它可以帮助提高机器人软件的开发效率。ROS 系统
的官方定义如下: ROS是面向机器人的开源的元操作系统(meta-operating system) 。它能够提供类似传统操作系统的诸
多功能, 如硬件抽象、底层设备控制、常用功能实现、进程间消息传递和程序包管理等。此外,它还提供相关工具和库,
用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。
ROS的前身是斯坦福人工智能实验室在2000年为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。
到了2008年,ROS主要由柳树车库公司继续该项目的研发运维. 目前ROS的最新稳定版本是LUNAR.
ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基
于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。目前ROS主
要支持Ubuntu, 这是一种最常见的LINUX操作系统.
很显然, ROS虽然翻译成机器人操作系统, 但是它并不是我们日常理解的操作系统(OS), 是在LINUX操作系统上开发的专门
服务于机器人各功能包之间的通信协调的一种规范和功能包集合.
ROS作为一个强大的机器人软件开发系统, 它的强大之处在于:
第一: 分布式计算
现代机器人系统往往需要多个计算机同时运行多个进程,例如:
1)一些机器人搭载多台计算机,每台计算机用于控制机器人的部分驱动器或传感器;
2)即使只有一台计算机,通常仍将程序划分为独立运行且相互协作的小的模块来完成复杂的控制任务,这也是常见的做法;
3)当多个机器人需要协同完成一个任务时,往往需要互相通信来支撑任务的完成;
4)用户通常通过台式机、笔记本或者移动设备发送指令控制机器人,这种人机交互接口可以认为是机器人软件的一部分。
第二: 软件复用
随着机器人研究的快速推进,诞生了一批应对导航、路径规划、建图等通用任务的算法。当然,任何一个算法实用的前
提是其能够应用于新的领域,且不必重复实现。事实上,如何将现有算法快速移植到不同系统一直是一个挑战,ROS 通过以
下两种方法解决这个问题。
1)ROS 标准包(Standard Packages)提供稳定、可调式的各类重要机器人算法实现。
2)ROS通信接口正在成为机器人软件互操作的 事实标准 ,也就是说绝大部分最新的硬件驱动和最前沿的算法实现都可以
在ROS中找到。例如,在ROS的官方网页上有着大量的开源软件库,这些软件使用ROS通用接口,从而避免为了集成它们而
重新开发新的接口程序。
第三: 快速测试
为机器人开发软件比其他软件开发更具挑战性,主要是因为调试准备时间长,且调试过程复杂。况且,因为硬件维修、
经费有限等因素,不一定随时有机器人可供使用。ROS 提供两种策略来解决上述问题。
1)精心设计的 ROS 系统框架将底层硬件控制模块和顶层数据处理与决策模块分离,从而可以使用模拟器替代底层硬件模块,
独立测试顶层部分,提高测试效率。
2)ROS 另外提供了一种简单的方法可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。
通过这种方式,每次运行机器人可以获得更多的测试机会。例如,可以记录传感器的数据,并通过多次回放测试不同的数据处
理算法。在 ROS 术语中,这类记录的数据叫作包(bag), 一个被称为 rosbag 的工具可以用于记录和回放包数据.