一种机器人示教平台及其架构方法
技术领域
本发明涉及人工智能技术领域,尤其涉及一种机器人示教平台及其架构方法。
背景技术
随着各种高新技术的不断发展,机器人作为一种新的技术以一种巧妙的方式渗透进了我们的生活。我们的身边也出现了越来越多的机器人产品,机器人示教平台是进行机器人的手动操纵、程序编写、参数配置以及监控用的手持装置,也是最常打交道的机器人控制装置。机器人示教平台中最核心的部件是人机交互接口和数据处理单元。例如:在工业机器人领域,机器人配置示教、程序管理和监控等功能往往有较高的人机交互体验要求,Android操作系统平台是比较适合的选择。
Android操作系统作为目前最流行的人机交互平台,提供了优秀的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)的交互体验,被作为终端广泛使用在各种场合。然而,Android操作系统为保证前台人机交互程序的流畅性,其后台能力被刻意设计的比较弱。在前端资源不足的情况下,后台程序可能被系统冻结、暂停或终止执行,以回收后台占用的资源满足前台程序运行。
Linux系统操作系统是以强大的后台处理功能著称的,当然Linux系统操作系统也有自己的GUI子系统,如果仅使用Linux系统操作系统,前台人机交互和后台服务均跑在Linux系统操作系统上,也是可行的。然而,Linux系统操作系统强项在于后台服务,人机交互体验等前台功能比较弱,与Android系统操作系统的人机交互体验差距蛮大(如图1所示)。
目前,为了保证后台程序稳定运行,大部分场景中,后台程序需部署到一台独立的具有Linux系统操作系统电脑中。此时,Android系统操作系统只部署前台程序,前台程序通过网络连接到Linux系统操作系统的后台程序中去获取数据,两者结合来提供完整的服务。这样,就需要两套独立的计算设备才能提供完整的计算服务(如图2)。
也就是说,上述做法将需要搭建一台Linux服务器来给Android系统操作系统提供后台服务。但某些工业机器人的使用场景空间是非常狭小的,对机器人控制器大小有苛刻要求的,多一个服务器势必将挤占更多的空间;再加上很多工业机器人是独立部署的,并没有接入网络。因此,上述的构建方案直接导致空间浪费和成本提高的问题。
发明内容
为克服上述缺陷,本发明的技术方案如下:
一种机器人示教平台,其包括:
双系统启动单元,用于使Android和Linux两个操作系统共享一个CPU和一个内存资源,且共用一个文件系统,但各自独立位于不同的目录下;在操作系统内核启动后,一边继续正常引导Android操作系统启动,同时在后台使用chroot修改文件根目录指向Linux操作系统的根目录,并以此根目录为基础,在后台启动Linux操作系统相关进程,以在同一所述文件系统中隔离Linux文件系统和Android文件系统;
人机交互接口,与所述双系统启动单元相连,其用Android操作系统进行前台人机交互程序;
数据处理单元,与所述双系统启动单元相连,其用Linux操作系统进行后台处理程序;
通讯模块,与所述人机交互接口和数据处理单元相连,用于所述人机交互接口和数据处理单元之间通过前后台通讯方式进行数据交换。
进一步地,所述前后台通讯方式为网络通讯方式或本地进程间通讯方式。
进一步地,所述本地进程间通讯为pipe、信号量、消息队列或共享内存等IPC通讯模式。
进一步地,在所述本地进程间通讯的共享内存模式中,所述CPU和内存资源由Linux内核直接调度,当Android程序和Linux程序需要所述CPU或内存资源时,均向所述Linux内核申请,所述Linux内存动态调配闲置的资源给需要的程序。
进一步地,所述双系统启动单元在启动Linux操作系统时执行GUI子系统禁用代码。
进一步地,所述的机器人示教平台还包括虚拟远程终端,所述Linux操作系统下安装有SSH或Telnet服务,当管理Linux操作系统后台程序时,通过网络使用SSH或Telnet服务的方式登录Linux操作系统,虚拟远程终端进行Linux环境配置和/或监控后台程序的开发或运行。
进一步地,所述虚拟远程终端进行Linux环境配置和/或监控后台程序的开发采用Python、Golang、JavaScript、Java或C++语言。
为克服上述缺陷,本发明又一技术方案如下:
一种机器人示教平台的构架方法,其包括:
步骤S1:将Android和Linux两个操作系统共享一个CPU和一个内存资源,且共用一个文件系统,但各自独立位于不同的目录下;
步骤S2:所述Android和Linux两个操作系统共用一个在操作系统内核启动后,一边继续正常引导Android操作系统启动,同时在后台使用chroot修改文件根目录指向Linux操作系统的根目录,并以此根目录为基础,在后台启动Linux操作系统相关进程,以在同一所述文件系统中隔离Linux文件系统和Android文件系统;
步骤S3:采用Android操作系统进行前台人机交互程序,用Linux操作系统进行后台处理程序,所述人机交互接口和数据处理单元之间通过前后台通讯方式进行数据交换,当管理Linux操作系统后台程序时,通过网络使用SSH或Telnet服务的方式登录Linux操作系统,虚拟远程终端进行Linux环境配置和/或监控后台程序的开发或运行;其中,所述前后台通讯方式为网络通讯方式或本地进程间通讯方式。
从上述技术方案可以看出,本发明的,其还具有如下有益效果:本发明的技术方案的思路旨在减少硬件资源的浪费,并减少设备体积,充分利用一套计算设备,同时运行Android操作系统和Linux操作系统,其既保留了Android操作系统优秀的交互体验,又有又有Linux操作系统(Ubuntu)强大的后台功能,以提供完美的服务,特别适用于对工业机器人体积有苛刻要求的场合。
附图说明
图1示出为现有技术中采用Linux系统操作系统的架构示意图
图2示出为现有技术中采用一台Linux服务器来给Android系统操作系统提供后台服务的架构示意图
图3示出了根据本发明机器人示教平台一较佳实施例的架构示意图
图4示出了根据本发明机器人示教平台一较佳实施例的架构流程示意图
图5示出了根据本发明虚拟终端的架构示意图
图6示出了根据本发明一个实施例中Android进程和Linux进程同时共存于内存空间的示意图
具体实施方式
本发明涉及一种Android和Linux双操作系统同时运行的机器人示教平台。在本发明的实施例的技术方案中,其结合Android操作系统的人机交互系统和Linux操作系统的后台服务各自的强大功能,且摒弃传统方式将Android操作系统和Linux操作系统分别部署到两套计算系统中的方案。
下面结合附图3-6,对本发明的具体实施方式作进一步的详细说明。
请参阅图3,图3示出了根据本发明机器人示教平台一较佳实施例的架构示意图。该机器人示教平台包括双系统启动单元、人机交互接口、数据处理单元和通讯模块。
在本发明的实施例中,双系统启动单元用于使Android和Linux两个操作系统共享一个CPU和一个内存资源,且共用一个文件系统,但各自独立位于不同的目录下;在操作系统内核启动后,一边继续正常引导Android操作系统启动,同时在后台使用chroot修改文件根目录指向Linux操作系统的根目录,并以此根目录为基础,在后台启动Linux操作系统相关进程,以在同一所述文件系统中隔离Linux文件系统和Android文件系统。
具体地,Android和Linux两个操作系统共用一个Bootloader启动引导和Kernel操作系统内核。因Android的kernel本质上是一个Linux Kernel。所以Android启动后,Android程序和Linux后台程序可以并行执行同一个系统中,共享内存和CPU资源。为保证执行环境互不影响,可以通过运行用chroot机制将后台Linux服务进程将系统的工作根目录切换成与Android系统隔离的Linux系统的根目录(如图3所示)。
在本发明的实施例中,用Android操作系统进行前台人机交互程序的人机交互接口与双系统启动单元相连,用Linux操作系统进行后台处理程序的数据处理单元与双系统启动单元相连。通讯模块与人机交互接口和数据处理单元相连,所述人机交互接口和数据处理单元之间通过前后台通讯方式进行数据交换。
Android系统作为与人交互的系统,会初始化显示相关设备framebuffer,和键盘等输入输出设备,并独占输入输出资源。请再参阅图3,Linux系统则主要使用CPU,内存,磁盘存储等资源提供后台计算服务。不占用显示及输入设备,不与人进行交互。
具体地,相比于前后台分布在不同计算系统的部署方式,在本发明实施中的前后台通讯方式有更多选择、效率更高且响应及实时性更好。例如,可以为网络通讯方式或本地进程间通讯方式。本地进程间通讯可以为管道(包括无名管道和命名管道)、消息队列、信号量、共享内存、Socket、Streams等。其中,Socket和Streams可以支持本发明在同一主机上两个隔离的进程IPC。管道pipe和共享内存等方式均可以通过同一内存通信,在此不再赘述。
在默认情况下,Android操作系统的GUI子系统正常启动,显示设备和键盘输入设备将被Android操作系统及Android程序占用。Linux操作系统的GUI子系统被禁用,不会被启动,Linux操作系统及其程序无权访问显示设备和键盘设备。这也就解决了输入输出设备争用问题。Linux程序自动启动后,在后台运行,默认不使用键盘,鼠标设备。
请参阅图5,图5示出了根据本发明虚拟终端的架构示意图。如图所示,由于物理键盘和显示器被Android操作系统占用,需在Linux操作系统下安装SSH或Telnet服务。当需要管理Linux后台程序时,可通过网络使用SSH或Telnet服务的方式登录Linux操作系统,虚拟出一套远程终端,该远程终端将带有额外的显示器和键盘。这样,在此远程终端就可进行Linux操作系统环境配置,监控后台程序等操作。
具体地,在Linux操作系统下通过移植Ubuntu环境,支持shell服务,并移植Python等运行环境。Android操作系统平台不支持shell服务和Python这些语言进行开发。本发明就是利用了Linux操作系统可以运行Python等语言进行后台开发的,其开发成本更低,且可维护性更好。
请参阅图6,图6示出了根据本发明一个实施例中Android进程和Linux进程同时共存于内存空间的示意图。如图所示,由于CPU和内存是完全共享的,由Linux内核直接调度,当Android程序和Linux程序需要CPU或内存资源时,均向Linux内核申请。Linux内核会动态调配闲置的内存资源给需要的程序。Android进程和Linux进程可同时共存于内存空间。
请参阅图4,图4示出了根据本发明机器人示教平台一较佳实施例的架构流程示意图。一种机器人示教平台的构架方法,其特征在于,包括:
步骤S1:将Android和Linux两个操作系统共享一个CPU和一个内存资源,且共用一个文件系统,但各自独立位于不同的目录下;
步骤S2:所述Android和Linux两个操作系统共用一个在操作系统内核启动后,一边继续正常引导Android操作系统启动,同时在后台使用chroot修改文件根目录指向Linux操作系统的根目录,并以此根目录为基础,在后台启动Linux操作系统相关进程,以在同一所述文件系统中隔离Linux文件系统和Android文件系统;
步骤S3:采用Android操作系统进行前台人机交互程序,用Linux操作系统进行后台处理程序,所述人机交互接口和数据处理单元之间通过前后台通讯方式进行数据交换,当管理Linux操作系统后台程序时,通过网络使用SSH或Telnet服务的方式登录Linux操作系统,虚拟远程终端进行Linux环境配置和/或监控后台程序的开发和运行;其中,所述前后台通讯方式为网络通讯方式或本地进程间通讯方式。
以上所述的仅为本发明的优选实施例,所述实施例并非用以限制本发明的专利保护范围,因此凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。