APP下载

如何实现服务机器人的运算与控制

2017-03-30刘伟

物联网技术 2017年3期
关键词:机器人

刘伟

摘 要:高性能嵌入式处理器上运行机器人的核心系统。ROS作为机器人专用的软件平台,可在ARM搭配Ubuntu的环境下运行,具有点对点设计,多语言支持,精简与集成,工具包丰富,免费开源等优点,应用前景广阔。

关键词:ROS;机器人;Ubuntu

20世纪以来随着电子技术的不断发展及人类对于自身的不断了解,机器人的研究也在不断深入。现阶段虽能做出外表、走路等接近人类的机器人,但这些都属于前沿领域,研究门槛高,实际的商业用途不是很广,所以大多还停留在样品阶段,走进市场的很少。借助互联网和智能手机的大潮,嵌入式处理器正在完成以前台式处理器做不到的事情,于是现阶段机器人又被重新定义。在目前的消费领域,某些配备智能处理器和具有互联网功能的产品也被认为是机器人,如图1所示的两款国内厂家生产的机器人产品。图1所示的机器人属于生活工具类,一般放置在家中,无法自行移动,采用嵌入式处理器,带有摄像头、无线网络模块、显示模块,可以连接手机,通过手机App对机器人进行相关设置,同时机器人摄像头采集到的图像也能实时传给手机,和手机进行语音对讲。机器人还带有语音识别模块,若向它询问“明天天气如何”,他会从网络获取天气信息然后作出回答。这些放置在家中的机器人也可以实现安全监测的功能,通过手机实时查看家中的监控影像或通过适配各种传感器以实时洞悉,比如贴在门窗后面的加速度传感器,当门窗被动作时传感器给机器人发出信号,机器人随即通过设定的方式进行报警。

图2所示为两款国外生产的机器人,其最主要的特点是可以运动,属于智能玩具的范畴。这些机器人可以连接智能手机,通过手机对机器人进行设置,然后把手机当做机器人的操作杆,操作其做出各种运动,达到娱乐的目的。同时,机器上装有摄像头,可以在手机上同步看到机器人摄像头拍摄到的视频画面。但也有一些创新,如左边的机器人在星战电影里有原形,用手机摄像头对准该机器人,通过手机端的AR技术,在手机屏幕里可以给机器人加上各种效果,增加娱乐性。

还有一些具有特殊用途的机器人,如扫地机器人,其根据内部的路径算法清洁地面,同时能自动避开障碍物,并于电量即将耗尽时自动返回充电桩充电。

今后服务机器人的趋势会是以上列举的这些机器人的集大成者,即在软件智能和機械运动方面不断发展。软件智能通过高性能的嵌入式处理器实现视频处理、网络连接和语音识别等技术。机械运动则先搭配单片机和步进电机,通过轮子的滚动实现移动,通过增加机械零件和改进算法来逐步实现动物甚至人体的肢体行走。图3所示框图列出了实现具有该功能机器人需要采用的技术。

高性能嵌入式处理器上运行着机器人的核心系统。摄像头采集视频图像,并对图像中的事物进行一些简单判别,如识别人脸,对静态事物的图像采集也能让机器人辨别障碍物,或计算出静态事物的大致几何图形甚至尺寸。对动态事物的图像采集,机器人可以计算出动态事物的运动轨迹甚至速度。4G和WiFi&BT模块属于无线通信模块,有了无线通信机器人才能得到自身之外的更多信号,并将自身的信息传达给别人。语音识别模块能让机器人识别声音,显示&触摸屏只是机器人与外界交互的一种方式,GPS模块能让机器人知道自己的位置信息,存储模块除了存储机器人的系统和各类软件外,也能让机器人具有记忆功能。摄像头采集视频图像并计算,计算结果可以存储在存储模块中,当遇到类似的计算时就可以判别事物,通过网络模块将这类信息传递出去分享给更多的机器人。单片机管理着机器人各类基础模块,步进电机控制机器人的运动,各类传感器让机器人有了感知外界环境的能力。红外模块可以实现对一些外部电器的操控,电池和电池管理模块为整个机器人的运转提供能量。

硬件结构是实现服务机器人运算和控制的基础,在高性能嵌入式处理器上运行的操作系统进行服务机器人具体的运算和控制,相当于机器人的灵魂。目前主流的三大机器人操作系统有Ubuntu,Android和ROS。Android软件平台使用较广泛,ROS为专用的机器人软件平台。要实现对服务机器人的运算和控制,软件平台需要解决以下问题:

(1)分布式计算现代机器人系统往往需要多个计算机同时运行多个进程,当多个机器人需要协同完成一个任务时,需要互相通信来支撑任务完成;用户通过台式机、笔记本或者移动设备发送指令控制机器人,而人机交互接口可以认为是机器人软件的一部分。

(2)软件复用随着机器人研究的快速推进,诞生了一批应对导航、路径规划、建图等通用任务的算法。当然,任何一个算法实用的前提是其能够应用于新的领域,且不必重复实现。

(3)快速测试为机器人开发软件比其他软件开发更具有挑战性,主要是因为调试准备时间长,且调试过程复杂。何况受硬件维修、经费有限等条件限制,未必随时有机器人可供使用。

ROS作为机器人专用的软件平台,可在ARM搭配Ubuntu的环境下运行,对服务机器人的运算和控制进行了诸多优化,大大增强了其实用性。

(1)点对点设计

一个使用ROS的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系。虽然基于中心服务器的那些软件框架也可以实现多进程和多主机的优势,但在这些框架中,当各电脑通过不同的网络进行连接时,中心数据服务器就会出现问题。

ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,适应多机器人遇到的挑战。点对点设计示意如图4所示。

(2)多语言支持

在写代码时,许多编程者会比较偏向某一些编程语言。这些偏好是个人在每种语言的编程时间、调试效果、语法、执行效率以及各种技术和文化的原因导致的。为解决这些问题,我们将ROS设计成语言中立性框架结构。ROS现在支持许多种不同的语言,如C++、Python、Octave和LISP,同时还包含其他语言的多种接口实现。

(3)精简与集成

大多数已经存在的机器人软件工程包含了可以在工程外重复使用的驱动和算法,不幸的是,由于多方面的原因,大部分代码的中间层都过于混乱,以至于很难提取出它的功能,也很难把它们从原型中提取出来应用到其他方面。

为了应对这种趋势,我们鼓励将所有的驱动和算法逐渐发展成为和ROS没有依赖性单独的库。ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。ROS将复杂的代码封装在库里,只创建一些小的应用程序为ROS显示库的功能,允许对简单代码超越原型进行移植和重新使用。作为一种新加入的优势,当代码在库中分散后单元测试也变得非常容易,一个单独的测试程序可以测试库中很多的特点。

(4)工具包丰富

为了管理复杂的ROS软件框架,利用大量小工具来编译和运行多种多样的ROS组建,从而设计成了内核,而非构建一个庞大的开发和运行环境,示意图如图5所示。

(5)免费并且开源

ROS所有的源代码都是公开发布的。我们相信这必将促进ROS软件各层的调试,不断改正错误。虽然像Microsoft Robotics Studio和Webots这样的非开源软件也有很多值得赞美的属性,但我们认为一个开源的平台是无可替代的,当硬件和各层次的软件同时设计和调试时,这一点尤其真实。

现阶段高性能嵌入式处理器在手机平板电脑上运用较多,但这类处理器由于向手机行业方向发展,接口比较传统和固定,很难满足机器人的设计需求。工业方向的高性能嵌入式处理器不多,飞思卡尔的imx系列是一个不错的平台,接口丰富,可定制化的形态较多,满足机器人多元化接口的需求。同时imx系列对Ubuntu,Android这两大操作系统的支持良好,可使系统在该平台上稳定运行。通过Ubuntu支持ROS软件平台,利用ROS软件平台的优点能很好地解决上述机器人软件开发的一些问题。辰汉电子作为专攻飞思卡尔imx平台设计研发的上市公司,对平台定制方面有着多年的经验和成功案例,在工业机器人市场有着稳定出货的产品,公司也在服务机器人市场有着充实的准备。

猜你喜欢

机器人
“坏”机器人“大叛乱”
机器人
超酷机器人
疯狂机器人
机器人崛起
机器人,让未来走近你
拥抱未来——聚焦机器人