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的基础框架配合选定的功能包快速实现系统原型,从而让开发人员将更多时间用于核心算法的开发改进上。用户也可以单独选用某些功能包,将其集成在已有产品中,实现特定功能。
ROS的缺陷与不足
对于机器人厂家来说,采用ROS进行开发,更多的希望借助系统实现机器人的导航、定位与路径规划,这其中就要依靠SLAM算法(simultaneous localization and mapping,即时定位与地图构建)。
但作为一个开源项目,ROS也存在一些问题。例如,ROS因为将功能分布在各个节点之中,节点间基于消息机制通信,通讯部分消耗了很多系统资源。尤其是当所有节点位于同一个处理器时,ROS仍然一直执行相应的消息分发,节点间的数据传递通过内存复制,大量的系统资源都浪费在通讯上,使得系统必须选用高性能的处理器和存储系统以弥补损耗。换句话说,利用ROS来实现SLAM,需要配备性能优越的硬件设备,这对于一些小型化嵌入式平台,尤其是实际的机器人产品里,其对计算资源、存储空间的消耗会使成本大幅上升。
除了ROS本身系统设计的局限性外,利用ROS实现SLAM需要深入的调整优化,需要耗费大量人力与时间成本。更为重要的是,针对具体的机器人产品,如扫地机器人,还需要独特的贴边清扫、折回清扫、多房间自主导航等功能,目前已有的ROS系统,只能实现简单的建图,无法满足扫地机器人的实际需要。
Vrep
Vrep是一款动力学仿真软件,主要定位于机器人仿真建模领域,可以利用内嵌脚本、ROS节点、远程API客户端等实现分布式的控制结构,是非常理想的机器人仿真建模的工具。控制器可以采用C/C++, Python, Java, Lua, Matlab, Octave or Urbi等语言实现。目前大家可能更熟知的是Adams这款建模软件,的确Adams有很多的参考资料,而且国内推广的比较好,但是如果你稍微了解一下Vrep的话,就会深深地被他的亲和的画面和灵活的结构所吸引
-
V-REP提供了一个统一的框架,它结合了许多强大的内部和外部库,这些库通常可用于机器人模拟。这包括动态模拟引擎,前向/反向运动学工具,碰撞检测库,视觉传感器模拟,路径规划,GUI开发工具以及许多常见机器人的内置模型。
-
V-REP具有高度可扩展性。V-REP开发人员提供了一个API,允许用户编写添加新功能的自定义插件。您可以将Lua脚本直接嵌入到模拟场景中,例如,处理模拟传感器数据,运行控制算法,实现用户界面,甚至将数据发送到物理机器人。它们还提供了一个远程API,允许用户开发许多编程语言的独立应用程序,这些应用程序能够将数据传入和传出正在运行的V-REP模拟。
-
V-REP是跨平台的,主要是开源的,并提供免费的教育许可。
我个人认为ROS比较适用于用现有模型对核心算法的研究与改进甚至研发,但不利于机器人结构的设计以及自主研发的机器人的具体动作研究,当需要定义自主研发的机器人的行动,步态以及结构属性的研究时,ROS就不太适用了。
在自主研发的机器人上V-REP由很大的优势,界面化的操作,内嵌的多种模型,简单的关联操作,便利的模型设计,简易的动作控制脚本文件这都体现了V-REP在机器人结构属性的研究上的优势。