400-700-1307

ROS软件平台对服务机器人的运算与控制

2019-01-24 08:54
20世纪以来随着电子技术的不断发展,以及人类对于自身的不断了解,机器人的研究也在不断的深入。现阶段能做出外表接近人类的机器人,走路接近人类的机器人……但这些都属于很前沿的领域,研究门槛高,实际的商业用途不是很广,所以大多还停留在样品阶段,走进市场的很少。随着互联网和智能手机的大潮,嵌入式处理器正在完成以前台式处理器做不到的事情,于是乎机器人现阶段又被重新定义。

        在现在的消费领域,某些配备智能处理器和具有互联网功能的产品也被成为了机器人,
还有一些具有特殊用途的机器人,比如扫地机器人,根据内部的路径算法清洁地面,同时能自动避开障碍物,快没电的时候能自动返回充电桩充电。
 
        以后服务机器人的趋势会是以上列举的这些机器人的集大成者,即在软件智能和机械运动上不断发展。软件智能方面通过高性能的嵌入式处理器实现视频处理、网络连接和语音识别等技术。机械运动方面先搭配单片机和步进电机通过轮子的滚动实现移动,通过机械零件的增加和算法的改进,逐渐实现动物甚至人体的肢体行走。
 
        高性能嵌入式处理器上运行着机器人的核心系统。摄像头采集视频图像,会对图像中的事物进行一些简单的判别,比如识别人脸,对静态事物的图像采集也能让机器人辨别障碍物,或者计算出静态事物的大致几何图形甚至尺寸,对动态事物的图像采集,机器人可以计算出动态事物的运动轨迹甚至速度。4G和WIFI&BT模块属于无线通信模块,有了无线通信机器人才能得到自身之外的更多信号,也可将自身的信息传达给别人。语音识别模块能让机器人识别声音,显示&触摸屏只是机器人与外界交互的一种方式,GPS模块能让机器人知道自己的位置信息,存储模块除了存储机器人的系统和各类软件外,也让机器人有了记忆功能,前面讲的摄像头采集视频图像并计算,计算的结果可以存储在存储模块中,当遇到类似的计算的时候就可以判别事物,同时通过网络模块可以将这类信息传递出去分享给更多的机器人。单片机管理着机器人各类基础的模块,步进电机控制机器人的运动,各类传感器让机器人有了感知外界环境的能力。红外模块可以实现对一些外部电器的操控,电池和电池管理模块给整个机器人的运转提供能量。
        
        硬件结构是实现服务机器人运算和控制的基础,在高性能嵌入式处理器上运行的操作系统,进行着服务机器人具体的运算和控制,相当于机器人的灵魂,目前主流的三大机器人操作系统有Ubuntu,Android和ROS,Android软件平台使用较广泛,ROS为专用的机器人的软件平台。要实现对服务机器人的运算和控制,软件平台需要解决以下这些问题:
 
        分布式计算现代机器人系统往往需要多个计算机同时运行多个进程,当多个机器人需要协同完成一个任务时,往往需要互相通信来支撑任务的完成;
 
        用户通常通过台式机、笔记本或者移动设备发送指令控制机器人,这种人机交互接口可以认为是机器人软件的一部分。
 
        软件复用随着机器人研究的快速推进,诞生了一批应对导航、路径规划、建图等通用任务的算法。当然,任何一个算法实用的前提是其能够应用于新的领域,且不必重复实现。
 
        快速测试为机器人开发软件比其他软件开发更具挑战性,主要是因为调试准备时间长,且调试过程复杂。况且,因为硬件维修、经费有限等因素,不一定随时有机器人可供使用。
 
        ROS作为机器人专用的软件平台,可在ARM搭配Ubuntu的环境下运行,对服务机器人的运算和控制有着很多优化和实用性,ROS软件平台有以下的优点:
 
        (1)点对点设计
 
        一个使用ROS的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系。虽然基于中心服务器的那些软件框架也可以实现多进程和多主机的优势,但是在这些框架中,当各电脑通过不同的网络进行连接时,中心数据服务器就会发生问题。
 
        ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人遇到的挑战。
 
        (2)多语言支持
        
        在写代码的时候,许多编程者会比较偏向某一些编程语言。这些偏好是个人在每种语言的编程时间、调试效果、语法、执行效率以及各种技术和文化的原因导致的结果。为了解决这些问题,我们将ROS设计成了语言中立性的框架结构。ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现。
 
        (3)精简与集成
 
        大多数已经存在的机器人软件工程都包含了可以在工程外重复使用的驱动和算法,不幸的是,由于多方面的原因,大部分代码的中间层都过于混乱,以至于很困难提取出它的功能,也很难把它们从原型中提取出来应用到其他方面。
 
        为了应对这种趋势,我们鼓励将所有的驱动和算法逐渐发展成为和ROS没有依赖性单独的库。ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的应用程序为ROS显示库的功能,就允许了对简单的代码超越原型进行移植和重新使用。作为一种新加入的有优势,单元测试当代码在库中分散后也变得非常的容易,一个单独的测试程序可以测试库中很多的特点。
 
        (4)工具包丰富
 
        为了管理复杂的ROS软件框架,利用了大量的小工具去编译和运行多种多样的ROS组建,从而设计成了内核,而不是构建一个庞大的开发和运行环境
 
        (5)免费并且开源
 
        ROS所有的源代码都是公开发布的。我们相信这将必定促进ROS软件各层次的调试,不断的改正错误。虽然像Microsoft Robotics Studio和Webots这样的非开源软件也有很多值得赞美的属性,但是我们认为一个开源的平台也是无可为替代的。当硬件和各层次的软件同时设计和调试的时候这一点是尤其真实的。
 
        

免费资源

更多>>

开班信息

当前校区

北京校区
  • 北京校区
  • 上海校区
  • 广州校区
  • 沈阳校区
  • 杭州校区
  • 南京校区
  • 郑州校区
  • 成都校区
  • 深圳校区
  • 西安校区
  • 苏州校区
  • 深圳沙井
  • 深圳观澜
  • 深圳龙岗
  • 武汉校区
  • 西宁校区
  • 石家庄校区
  • 湖北咸宁
  • 广东惠州
  • 广东佛山

                    Copyright © 2007-2019 IT兄弟连教育 版权所有 京ICP备11018177号  京公网安备 11010802026987号