工业机器人 |
|
| 按行业筛选 |
|
|
| 按产品筛选 |
|
|
| |
查看本类全部文章 |
| |
|
|
|
基于CORBA的Web机器人系统的设计与实现 |
|
作者:东南大学 黄永华 孟正大 郝立 |
|
摘要:介绍了机器人远程控制的几种方案,分析了基于Web的机器人远程操作系统的基本结构,并提出了一个基于CORBA的Web机器人系统的计算模型。
关键词:CORBA;Web;Internet;机器人
0 引 言
随着计算机网络的迅速发展和机器人应用的逐步推广,对远程机器人进行有效监控已经越来越受到人们的关注。笔者所承担的江苏省十五攻关项目“网络化焊接机器人的研究”正是在这样的背景下展开的。
如今,Internet几乎无处不在,它极为方便地为人们提供了各种各样的信息和资源。而World Wide Web(简称Web)是以一个基于Internet的全球连接的、分布的、动态的、多平台的交互式超媒体信息系统,它使得计算机能够相互传送基于超媒体的数据信息。因此,人们自然想到将机器人远程操控系统建立在Web上,我们称之为基于Web的机器人系统。事实上这种思想由来已久,其发展历史和研究现状见参考文献[6]。
所谓基于Web的机器人(我们称之为网络化机器人)远程控制就是将机器人构建在Internet的一个Web站点上,操作人员通过Web浏览器(如Netscape Navigator或Microsoft IE)对其进行远程控制。它首要的特点在于它的开放性,以超文本传输协议(HTTP)作为机器人系统的标准通信协议,任何人在任何时候和任何地方,只要能连上Internet,就能实现对远程机器人的控制,因为Internet上的任何站点均可以通过该协议访问到连接在Internet上的机器人,而且普通用户不必了解机器人复杂的操作原理也能进行控制。其次,Web浏览器可以提供生动友好的人机界面,因为浏览器可以支持各种格式的文件,如超文本、动画、音频和三维图像,同时能够处理各种媒体文件的交互式操作,如可以用鼠标操作由VRML描述的3D对象。第三,使得为完成某一任务而使用分布在Inter net上的不同的软/硬件资源成为可能。
本文将提出用集成工具CORBA来构建基于Web的机器人系统。CORBA以ORB(Object Request Broker)为中间件来建立对象间的Client/Server联系,是远程过程调用的面向对象技术的扩充,它使得对象间能够相互通信,而不用关心对方的具体位置、编程语言及操作系统。
1 网络化机器人及其控制方式
Web机器人就是用户通过Internet访问连接机器人的Web站点,远程控制机器人。我们之所以选择Internet作为通信介质,原因在于以下两点,其一,World Wide Web以及与之有关的工具如HTML、VRML、Java等为在人机界面方面的进一步研究提供了很大的空间。其二,Internet在进行机器人远程控制研究方面提供了经济、便捷的可视化环境。
机器人的远程控制基本上可以分为两类:直接控制和间接控制。
(1)直接控制(DirectControl)。在这种控制方式下,由操作人员完全控制机器人,向机器人的某些端口直接发送运动指令函数以完成某项任务,而机器人控制器在远端。显然,这种控制方式对操作人员的要求比较高,需要机器人底层指令和编程语言。
(2)间接控制(Indirect Control)或称为监督控制的控制方式(Supervisory Control)。在这种控制方式下,操作人员预先在一个由计算机仿真机器人的虚拟环境中互动地将所需任务(如行走路径)规划好,然后再将其送到远端的实际机器人控制器中执行。也就是说,在实际执行任务时,远端的操作人员置于控制结构闭环之外,从而减小了因传输时延对整个系统的影响。远程操作人员只是发送目标任务或很小一部分相关的必需指令给远端,而任务具体由机器人自治完成。同时,监控回路向操作人员反馈有关的传感器信息,如将现场摄像机的图像以一定的格式返回给操作人员。显然,这种控制方式充分利用执行端的本地智能,具有较强的容错和纠错能力,同时它还可以使远端操作人员不必持续监控机器人的工作,从而可以减轻操作人员的工作强度。因此,后面提出的方案基于该控制方式。
2 CORBA技术分析
公共对象请求代理体系结构CORBA(Common Object Request Broker Architecture)是由对象管理组OMG组织制定的一种标准的面向对象应用程序体系规范。
CORBA是为了实现分布式计算而引入的。与面向过程的RPC(RemoteProcedureCall)不同,CORBA是基于面向对象技术的,它能解决远程对象之间的互操作问题。微软的COM/DCOM、COM+也能解决这一问题,但它是基于Windows,虽然在Solaris等有限的数个操作系统下也能实现,但只有在微软的Windows下才能运行得更好。而CORBA是真正跨平台的,平台独立性正是CORBA的初衷之一。另一种能做到平台无关性的技术是JavaRMI(RemoteMethodInvocation),但它只能用Java实现。而CORBA通过一种叫IDL(InterfaceDefinitionLanguage)的接口定义语言,能做到与语言无关,任何语言都能实现CORBA组件,而CORBA组件也能在任何语言下使用。换言之,CORBA是异构平台下独立于实现语言的对象互操作模型。
CORBA的对象管理体系结构OMA(ObjectMan agementArchitecture)是由对象请求代理ORB、对象服务、应用对象、领域接口和公共设施组成,它们各自的功能及OMA体系结构的详细分析见参考文献[8]。其中ORB是通信基础,也是CORBA规范的核心部分。使用ORB,客户可以调用服务器的对象或对象中的应用,被调用的对象不要求在同一台机器上。由ORB负责进行通信,同时ORB也负责寻找适合于完成这一工作的对象,并在服务器对象完成后返回结果。单个的ORB结构如图1所示。CORBA上的服务用IDL描述,将被映射为某种程序设计语言如C 或Java,并且分为两部分,在客户方叫IDLStub(桩),在服务器方叫IDLSkeleton(构架)。两者可以采用不同的语言。服务器方在Skele on的基础上编写对象实现(ObjectImplementation),而客户方要访问服务器上的方法,则要通过客户桩(Stub)。而双方又要通过对象请求代理ORB(ObjectRequestBroker)总线通信。对于CORBA对象服务,OMG已经在ORB核心软件总线基础上规范了一系列的CORBA对象服务,以便采用软件重用技术帮助用户快速、可靠地解决特定领域的分布式计算问题。
对象实现在执行客户请求时,通过对象适配器OA获取ORB的服务。OA是对象实现访问ORB服务的主要通道,它位于ORB核心通信服务上,为实例化的服务对象提供运行环境,接收请求并传送给服务对象;为服务对象分配对象ID(即对象引用),并将实现对象注册到实现库中。实现库包含了允许ORB查找和激活对象实现的相关信息。实现库是ORB进行对象匹配的场所。ORB接口则是为客户方和对象实现获取少数几个局部性的基本服务而设,它不依赖于对象实现接口。
CORBA给出了一个通用的互操作体系结构,它提供了两种ORB间的互操作协议:GIOP和IIOP。GIOP(GlobalInter ORBProtocol)是一种通用协议,它为ORB之间的通信规定了一系列标准传输文法、信息和格式。IIOP(InternetInter ORBProtocol)定义了如何在TCP/IP传输上构建GIOP。
CORBA规范提供的软件总线的机制,使得任何应用程序、软件系统或工具只要具有与该接口规范相符合的接口定义,就能方便地集成到CORBA系统中,而这个接口规范独立于任何实现语言和环境。
3 基于Web的机器人的系统结构
采用间接控制方式设计的一个基于Web的机器人远程控制系统如图2所示。这是一个典型的三层Client/Server结构。第一层是浏览器,客户通过浏览器访问系统而无需安装任何软件,用户注册、登录等界面由HTML和Script语言结合完成,主控界面采用JavaApplet。第二层是Web服务器,由HTTP服务器和图像服务器组成,作为用户服务和数据服务之间的桥梁,其中HTTP服务器的主要任务:一是通过与数据服务器的连接完成对用户的管理,包括注册、登录及身份认证等;二是维护用户队列,负责控制权的分配;三是与机器人服务器通信,发送客户指令并返回指令的执行结果。图像服务器处理有关图像的HTTP请求,它通过图像采集卡抓取图像,并可以根据用户的需求调整摄像机的旋转角、放大倍数或向用户返回不同尺寸的图像。第三层是机器人本地控制系统,包括数据服务器和机器人本地系统。数据服务器主要储存用户的注册信息、登录访问情况等数据信息。机器人本地系统由机器人服务器、机器人控制器及机器人本体等组成。
系统的原理为:客户通过Web浏览器(如Naviga tor或IE),访问远端连有被控机器人的Web服务器,通过客户机上显示的操作界面发送指令。Web服务器将收到的指令经协商确认后交由机器人的控制器执行,执行的过程和结果通过传感器和摄像机,返回到机器人服务器,并将其转化为HTML格式,发送到客户端显示。
4 系统实现
本系统采用Java技术构建,主要有以下几个关键问题:(1)用户界面的设计;(2)Web服务器的实现机制;(3)基于CORBA/IIOP的Web服务器与机器人服务器间的通信机制。
4.1 用户界面设计
在传统的机器人遥控操作中,操作人员都是受过培训的专业人员,对用户界面也可以设计得很“专业”。但是基于Web的远程控制机器人面对的是具有不同技术基础的Web用户,操作界面应该简洁明了,方便易用,而且应该支持不同层次用户的使用要求,如一些高级用户能够实现比较高级或底层的操作,另一方面界面还需具有一定的兼容性和平台独立性。
最早的基于Web的机器人控制系统的客户端界面多采用HTML语言设计,用户通过填写HTML表单或点击工作区的图像发送指令,功能较为局限。当涉及多步移动时,需要利用到脚本语言(如JavaScript),那样可以提供客户端的部分数据处理能力,降低了与服务器的通信代价。
本系统用户主控界面采用JavaApplet实现,在客户端Web浏览器中运行的JavaApplet同时进行着两个线程,其一是接收操作员的各种操作命令并根据其内容将命令传递给机器人;其二是获取系统的当前状态并将它综合地反馈给操作员。为了实现以上功能,我们将人机接口分解为五个模块:接口表示模块、监视模块、会话模块、操作模块和通信模块,如图3所示。其中,接口表示模块接收由操作员给出的命令,同时显示机器人系统的当前状态;监视模块的功能是收集系统的各种信息并综合为所需的监视状态;会话模块负责协调操作人员和机器人之间的信息交互;操作模块将命令解释为通信模块可以接收的数据格式。通信模块的功能是将来自各模块的信息转换为符合特定协议的数据格式。
4.2 Web服务器的实现机制
当前基于Web的远程机器人控制站点的HTTP服务器大多采用CGI编程设计。CGI的功能是在超文本文件和服务器主机应用程序之间传递信息。CGI虽然能够满足大多数Web机器人站点的需要,但存在明显的局限:一个CGI程序只能处理一个客户请求,因此每个客户请求都要激活一个新的CGI进程,当用户增多时会挤占大量的系统资源,使得执行效率降低,而且一些对CGI进行的扩展所得到的性能提高也很有限。Java技术的出现及服务器方应用构建Ja vaServlet的推出进一步推动了Web计算的发展,JavaServlet将是CGI一个好的替代品。
JavaServlet是位于服务器端的一种独立于平台和协议的Java应用程序。Servlet可以生成动态的页面,是Java语言在Web服务器端的一种应用技术。形象地说,Servlet与Web服务器的关系类似于Applet与Web浏览器的关系,可以认为Servlet是没有前端界面Applet,与Applet不同的是,Servlet运行在服务器端,因此它拥有普通Java应用程序一样的权限。由于JavaServlet在性能、可移植性和代码重用性等方面比CGI有着显著的优势,因此在不久的将来,Servlet有可能取代CGI。
JavaServlet支持“请求”和“应答”编程模式。客户端服务器发出请求时,服务器接收该请求并将请求发送给Servlet,Servlet接收该请求并进行处理,向服务器返回应答,服务器再将应答回送给客户端。对常用的HTTP请求GET(该操作仅仅允许用户从HTTP服务器上取得资源)和POST(该操作包含了在必须通过此Servlet执行的请求中的数据),Servlet调用相应的doGet和doPost方法来处理。方法doGet和doPost的缺省实现均返回一个HTTP的BAD_REQUEST错误。doGet格式如下:
protectedvoiddoGet(HttpServletResquestrequest,HttpServle tResponseresponse)
throwsServletException,IOException;
doPost的格式如下:
protectedvoiddoPost(HttpServletResquestrequest,HttpServle tResponseresponse)
throwsServletException,IOException
doGet和doPost均以HttpServletResquest对象和HttpServletResponse对象为参数。
如在提供用户登录的HTTP表单中,指定POST方法,当相应的Servlet接收请求时,在doPost方法中使用HttpServletRequest对象获得请求中的各参数,如用户名和用户密码,经过数据库验证后,利用HttpServletResponse对象获得输出流,即可将验证结果、队列信息、等待或者控制界面通过输出流向客户端返回。用户控制界面的Applet同Servlet的通信采用了GET方法。Servlet流程示意图如图4所示。用户注册信息的存储及成员用户身份的验证均要通过Servlet与数据库之间信息的交换,系统采用SQLServer2000作为数据库平台,JDBC(Javadatabaseconnectivity)保证了Servlet与数据库之间的数据交换。
4.3 基于CORBA/IIOP的Web服务器与机器人服务器间的通信机制
CORBA提供了一种交换数据和发现服务的机制,它以ORB为中间件进行对象之间的对话,ORB之间的通信遵循IIOP协议。基于CORBA/IIOP的系统的分布式结构如图5所示。作为JavaClient的Servlet在4.2部分已经说明,机器人服务器端的CORBA对象服务可以简化为C Server程序,它包含了运动学逆解、插补计算和轨迹规划等服务程序。JavaClient和C Server应用程序的开发均采用由东南大学计算机系自行研制开发的CORBA编程工具ORBUS。服务接口的实现关系如图6。5 结束语
本文主要探讨了基于CORBA技术的远程机器人系统解决方案。首先分析了CORBA技术的有关特性和机器人远程控制的两种控制方式,给出了基于Web的机器人远程控制系统的实现。提出基于CORBA的分布式计算模型及系统实现。CORBA技术出色的跨平台和分布式计算性能使得系统具有良好的开放性和可扩展性。(end)
|
|
文章内容仅供参考
(投稿)
(如果您是本文作者,请点击此处)
(1/29/2005) |
对 工业机器人 有何见解?请到 工业机器人论坛 畅所欲言吧!
|