kaiyun官方注册
您所在的位置: 首页> 其他> 业界动态> 基于JAVA实现Web环境下移动机器人遥操作

基于JAVA实现Web环境下移动机器人遥操作

2009-01-05
作者:冯大滨,曹作良

基于Web的移动机器人遥操作就是通过Internet访问连接移动机器人的Web站点,来远程控制机器人[1]。其最早出现于1994年[2][3],著名的有瑞士联邦工学院的Khep On The Web[4],美国Carnegia Mellon大学的Xavier及NASA的火星探路者Mars Polar Lander等。

随着Internet发展,Java作为一种客户/服务器技术而倍受瞩目[5]。在Java Applet之后,先后出现JSP、Servlet和EJB等J2EE组件技术,利用这些技术,可实现服务器业务逻辑的组件开发,从而提高程序员的开发效率。在此基础上,结合Web服务技术,不仅能够克服防火墙对通讯协议的限制,而且还能增强整个系统的扩展性和跨语言平台性。

利用JNI(Java本地方法实现),可以使Java和C无缝结合,既发挥了Java开发网络程序的优势,又克服了java对底层不太支持的弱点,从而实现了对移动机器人的控制。

本文基于J2EE和Web Service技术的跨平台、跨编程语言、易扩展和易维护的软件结构,利用SOAP、Struts、JNI和J2EE组件技术以及流媒体等相关技术,来实现移动机器人的远程监控与操作。

1. 核心架构

从表面看,WebService就是一个应用程序,向外界暴露出一个能够通过Web进行调用的API,实质上,它是建立可互操作的分布式应用程序的新平台。这里,利用J2EE实现Web Service,使整个架构既具有了跨平台性和可移植性,又具有了易扩展性和跨语言平台性,平台结构见图1。

基于这种平台架构,来进行机器人遥操作网站开发,首先,用户通过浏览器来访问机器人遥操作网站,由服务器中用户验证EJB进行身份验证,当客户获得控制权后,即可通过接收发送指令EJB来调用机器人控制的Web服务,来实现机器人控制,同时,机器人控制器向服务器返回环境数据,客户通过访问服务器,再来获得这些数据。

2系统具体实现

2.1服务器端实现

Struts是一种 MVC 实现,它将 Servlet 2.2 和 JSP 1.1 标记(属于 J2EE 规范)用作实现的一部分。利用Struts结构,使得系统更容易维护,程序员的分工更明确。

利用JSP与客户进行交互,获取客户的个人信息和发出的指令信息,服务器要对客户信息和指令信息进行验证,然后通过服务器向机器人控制器发送指令。与此同时,服务器还要接收从机器人控制器上传的环境数据。

利用SessionBean来实现所提及的业务逻辑,如身份验证EJB、指令验证EJB、发送指令EJB和接收环境信息EJB等。同时,利用EntityBean实现对数据库的操作,完成数据的检索与存储。EJB组件的可移植性,使无需修改代码就可以实现性能的提升成为可能,从而提高了开发人员的效率。

2.2服务器与控制器之间的通信实现

服务器与机器人控制器分布于局域网的不同机器上,构成分布式机器人系统。本系统中,利用SOAP,实现分布式控制。

在SOAP出现之前,我利用Socket、RMI和CORBA来实现服务器与机器人控制器之间的通讯。当客户端与服务器之间使用Socket进行通信的时候,就需要建立自己的一套协议,只有在此基础上,才可以成功的实现通讯,所以这种方法的扩展性很差。RMI是一种分布式对象模式,但是它只能局限于Java语言。而CORBA把实现“对象请求代理”(ORB)的协议的任务留给了供应商,导致大部分CORBA1.0 ORB不能互操作。CORBA2.0引入了“ORB间协议”(IIOP),但是有时候,防火墙会阻止ORB通信。

2.2.1SOAP实现方法

SOAP是一开放协议,采用HTTP作为底层通讯协议,RPC作为一致性的调用途径,XML作为数据传输格式,允许服务提供者和客户经过防火墙在Internet上进行通讯交互。利用SOAP可以实现平台与环境的无关性和独立性,这样,即使不是Java程序员,也可

以利用其他语言实现服务器与机器人控制器之

间的通讯。从而,可以使不同的程序员之间进行

清晰的分工,提高软件开发的效率。图2为SOAP

的执行流程。

利用SOAP实现步骤:

①本系统使用的软件环境是ApacheSoap-2_3_1、

Apache Jakarta Tomcat4.0和Xerces-J-bin.2.4.0。

②在配置软件环境时,首先,注意要将

xercesImpl.jar和xmlParserAPIs.jar两个

包放在Classpath环境变量中的前面,避免

发现别的XML解析文件,从而无法正确工作。其次,在Apache Soap2.0以上的版本,需要把activation.jar和mail.jar放在Classpath环境变量中。最后,由于主Tomcat 脚本错误地将自己的类插入到现有类路径之前,从而导致前面提到的顺序错误的xercesImpl.jar和xmlParserAPIs.jar问题,所以要修改Tomcat内部环境变量的设置。 图2 SOAP执行流程

③编写作为Web服务的Java类和方法,通过在浏览器中输入URLhttp://localhost:8080/soap,进入友好的部署界面,输入Web服务的相关信息,点击Deploy,就可以将其发布到网络上了。

④利用EJB组件技术编写客户程序,通过Web服务的相关信息,调用Web服务,实现与机器人控制器远程通讯。

2.3本地控制系统实现

系统以本实验室进行863项目的自引导车为实验对象。该自引导车为四轮结构,其两个后轮为驱动轮。机器人控制器通过一块HY6050数模转换卡,然后通过驱动电路,来控制机器人。同时,控制器接收由下位机传送到串口的环境数据。

Java语言是进行网络编程的绝好工具,但是对于访问硬件设备,却不是它的强项,相比之下,C语言在这方面的功能是非常强大的。这里,我们利用Java本地接口JNI来调用C语言程序进行机器的控制和环境数据的采集,具体实现方法如下:

①设计一个Java类,对要使用的方法进行Native声明。

②编译源文件,然后通过对.class文件使用javah使用程序来创建C函数原型。在此过程中,将生成一个.h文件,其中包括了本地方法原型。

③以C语言实现本地方法,在C语言文件中需要引入上一步骤生成的.h文件,然后可以利用Microsoft Visual C++编译器来编译C源文件来创建动态链接库。

④创建类的实例,即可调用本地方法。在用Microsoft Visual C++编译器的时候,C语言中,访问硬件地址的命令为outp和inp,而在VC++中,是_outp和_inp,所以要把C语言程序中的命令形式改为VC++中的命令形式,方可编译成功。

2.4流媒体视频监控实现

流媒体就是应用流技术在网络上传输多媒体文件,而流技术就是把连续影像和声音信息经过压缩处理后放到网站服务器上,让用户一边下载一边观看,而不需要等整个压缩文件下载到自己机器后才可以观看的网络传输技术。具体实现如下:

①安装微软的媒体服务器软件,编码器软件。

②启动编码器软件,选择编码形式、传输速度、输出端口。

③页面设计,将媒体播放器嵌入网页,输入服务器URL,就可以进行流媒体监控了。

2.5控制平台

整个系统由视频监控中心、控制中心和超声波数据显示中心组成,客户通过控制中心向机器人控制器发送控制指令,通过视频监控中心监控机器人现在的状态,利用超声波数据来判断机器人现在的横向位置与位姿。系统的控制中心见图3。

3结论

(1)本文进行了移动机器人远程监控系统研究,开发出完整的、可操作的远程移动机器人监控系统,在局域网和校园网中进行了测试,可以实现机器人的远程监控操作。

(2)利用EJB组件技术,开发出各种功能模块组件,增强系统的可移植性和应用性,实现一处开发,处处可用。

(3)利用Web Service技术,增强了系统的可扩展性、跨系统和语言平台的特性,使得各种技术可以组合在一起进行工作。

(4)JNI技术的应用实现了java程序与机器人现有控制程序间的无缝连接。

(5)本文采用JSP、Servlet、JavaBean、EJB和Soap的组合实现分布式系统,其中,Soap基于HTTP传输协议,可以越过客户端防火墙限制。

参考文献

[1] 任昊星,翁海华,杨杨,陈坚.基于Web的机器人遥操作的研究与实现.计算机工程,1999

[2] Goldberg K, Gentner S, Sutter C, et al. The mercury project: A feasibility study for Internet robots. IEEE Robotics and Automation magazine 2000

[3] Taylor K, Dalton B. Internet robots: A new robotics niche. IEEE Robotics and Automation magazine 2000

[4] Saucy P, Mondada F, Open access to a mobile robot on the Internet. IEEE Robotics and Automation magazine 2000

[5] 耿海霞,陈启军.基于Web的移动机器人控制系统研究及java实现.同济大学学报,2002

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map