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