??? 基于Web的移動機器人遙操作就是通過Internet訪問連接移動機器人的Web站點,,來遠程控制機器人[1]。其最早出現(xiàn)于1994年[2][3],著名的有瑞士聯(lián)邦工學院的Khep On The Web[4],,美國Carnegia Mellon大學的Xavier及NASA的火星探路者Mars Polar Lander等,。?
??? 隨著Internet發(fā)展,Java作為一種客戶/服務器技術而倍受矚目[5],。在Java Applet之后,,先后出現(xiàn)JSP、Servlet和EJB等J2EE組件技術,,利用這些技術,,可實現(xiàn)服務器業(yè)務邏輯的組件開發(fā),從而提高程序員的開發(fā)效率,。在此基礎上,,結合Web服務技術,不僅能夠克服防火墻對通訊協(xié)議的限制,,而且還能增強整個系統(tǒng)的擴展性和跨語言平臺性,。?
利用JNI(Java本地方法實現(xiàn)),可以使Java和C無縫結合,,既發(fā)揮了Java開發(fā)網(wǎng)絡程序的優(yōu)勢,,又克服了java對底層不太支持的弱點,從而實現(xiàn)了對移動機器人的控制,。?
??? 本文基于J2EE和Web Service技術的跨平臺,、跨編程語言、易擴展和易維護的軟件結構,,利用SOAP,、Struts、JNI和J2EE組件技術以及流媒體等相關技術,,來實現(xiàn)移動機器人的遠程監(jiān)控與操作,。?
1.?核心架構?
??? 從表面看,,WebService就是一個應用程序,向外界暴露出一個能夠通過Web進行調(diào)用的API,,實質上,,它是建立可互操作的分布式應用程序的新平臺。這里,,利用J2EE實現(xiàn)Web Service,,使整個架構既具有了跨平臺性和可移植性,又具有了易擴展性和跨語言平臺性,,平臺結構見圖1,。?
??? 基于這種平臺架構,來進行機器人遙操作網(wǎng)站開發(fā),,首先,,用戶通過瀏覽器來訪問機器人遙操作網(wǎng)站,由服務器中用戶驗證EJB進行身份驗證,,當客戶獲得控制權后,,即可通過接收發(fā)送指令EJB來調(diào)用機器人控制的Web服務,來實現(xiàn)機器人控制,,同時,機器人控制器向服務器返回環(huán)境數(shù)據(jù),,客戶通過訪問服務器,,再來獲得這些數(shù)據(jù)。
2? 系統(tǒng)具體實現(xiàn)
2.1?服務器端實現(xiàn)
Struts是一種 MVC 實現(xiàn),,它將 Servlet 2.2 和 JSP 1.1 標記(屬于 J2EE 規(guī)范)用作實現(xiàn)的一部分,。利用Struts結構,使得系統(tǒng)更容易維護,,程序員的分工更明確,。?
利用JSP與客戶進行交互,獲取客戶的個人信息和發(fā)出的指令信息,,服務器要對客戶信息和指令信息進行驗證,,然后通過服務器向機器人控制器發(fā)送指令。與此同時,,服務器還要接收從機器人控制器上傳的環(huán)境數(shù)據(jù),。?
利用SessionBean來實現(xiàn)所提及的業(yè)務邏輯,如身份驗證EJB,、指令驗證EJB,、發(fā)送指令EJB和接收環(huán)境信息EJB等。同時,,利用EntityBean實現(xiàn)對數(shù)據(jù)庫的操作,,完成數(shù)據(jù)的檢索與存儲,。EJB組件的可移植性,使無需修改代碼就可以實現(xiàn)性能的提升成為可能,,從而提高了開發(fā)人員的效率,。?
2.2 服務器與控制器之間的通信實現(xiàn)?
服務器與機器人控制器分布于局域網(wǎng)的不同機器上,構成分布式機器人系統(tǒng),。本系統(tǒng)中,,利用SOAP,實現(xiàn)分布式控制,。?
在SOAP出現(xiàn)之前,,我利用Socket、RMI和CORBA來實現(xiàn)服務器與機器人控制器之間的通訊,。當客戶端與服務器之間使用Socket進行通信的時候,,就需要建立自己的一套協(xié)議,只有在此基礎上,,才可以成功的實現(xiàn)通訊,,所以這種方法的擴展性很差。RMI是一種分布式對象模式,,但是它只能局限于Java語言,。而CORBA把實現(xiàn)“對象請求代理”(ORB)的協(xié)議的任務留給了供應商,導致大部分CORBA1.0 ORB不能互操作,。CORBA2.0引入了“ORB間協(xié)議”(IIOP),,但是有時候,防火墻會阻止ORB通信,。?
2.2.1 SOAP實現(xiàn)方法
SOAP是一開放協(xié)議,,采用HTTP作為底層通訊協(xié)議,RPC作為一致性的調(diào)用途徑,,XML作為數(shù)據(jù)傳輸格式,,允許服務提供者和客戶經(jīng)過防火墻在Internet上進行通訊交互。利用SOAP可以實現(xiàn)平臺與環(huán)境的無關性和獨立性,,這樣,,即使不是Java程序員,也可
??
以利用其他語言實現(xiàn)服務器與機器人控制器之?
間的通訊,。從而,,可以使不同的程序員之間進行?
清晰的分工,提高軟件開發(fā)的效率,。圖2為SOAP?
的執(zhí)行流程,。?
利用SOAP實現(xiàn)步驟:?
①本系統(tǒng)使用的軟件環(huán)境是ApacheSoap-2_3_1、?
Apache Jakarta Tomcat4.0和Xerces-J-bin.2.4.0,。?
②在配置軟件環(huán)境時,,首先,,注意要將?
xercesImpl.jar和xmlParserAPIs.jar兩個
包放在Classpath環(huán)境變量中的前面,避免?
發(fā)現(xiàn)別的XML解析文件,,從而無法正確工作,。其次,在Apache Soap2.0以上的版本,,需要把activation.jar和mail.jar放在Classpath環(huán)境變量中,。最后,由于主Tomcat 腳本錯誤地將自己的類插入到現(xiàn)有類路徑之前,,從而導致前面提到的順序錯誤的xercesImpl.jar和xmlParserAPIs.jar問題,,所以要修改Tomcat內(nèi)部環(huán)境變量的設置。?????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????? 圖2 SOAP執(zhí)行流程
③編寫作為Web服務的Java類和方法,,通過在瀏覽器中輸入URL http://localhost:8080/soap
,,進入友好的部署界面,輸入Web服務的相關信息,,點擊Deploy,,就可以
將其發(fā)布到網(wǎng)絡上了。?
④利用EJB組件技術編寫客戶程序,,通過Web服務的相關信息,,調(diào)用Web服務,實現(xiàn)與機器人控制器遠程通訊,。?
2.3 本地控制系統(tǒng)實現(xiàn)
系統(tǒng)以本實驗室進行863項目的自引導車為實驗對象,。該自引導車為四輪結構,其兩個后輪為驅動輪,。機器人控制器通過一塊HY6050數(shù)模轉換卡,然后通過驅動電路,,來控制機器人,。同時,控制器接收由下位機傳送到串口的環(huán)境數(shù)據(jù),。?
Java語言是進行網(wǎng)絡編程的絕好工具,,但是對于訪問硬件設備,卻不是它的強項,,相比之下,,C語言在這方面的功能是非常強大的。這里,,我們利用Java本地接口JNI來調(diào)用C語言程序進行機器的控制和環(huán)境數(shù)據(jù)的采集,,具體實現(xiàn)方法如下:?
①設計一個Java類,對要使用的方法進行Native聲明,。?
②編譯源文件,,然后通過對.class文件使用javah使用程序來創(chuàng)建C函數(shù)原型,。在此過程中,將生成一個.h文件,,其中包括了本地方法原型,。?
③以C語言實現(xiàn)本地方法,在C語言文件中需要引入上一步驟生成的.h文件,,然后可以利用Microsoft Visual C++編譯器來編譯C源文件來創(chuàng)建動態(tài)鏈接庫,。?
④創(chuàng)建類的實例,即可調(diào)用本地方法,。在用Microsoft Visual C++編譯器的時候,,C語言中,訪問硬件地址的命令為outp和inp,,而在VC++中,,是_outp和_inp,所以要把C語言程序中的命令形式改為VC++中的命令形式,,方可編譯成功,。?
2.4 流媒體視頻監(jiān)控實現(xiàn)?
流媒體就是應用流技術在網(wǎng)絡上傳輸多媒體文件,而流技術就是把連續(xù)影像和聲音信息經(jīng)過壓縮處理后放到網(wǎng)站服務器上,,讓用戶一邊下載一邊觀看,,而不需要等整個壓縮文件下載到自己機器后才可以觀看的網(wǎng)絡傳輸技術。具體實現(xiàn)如下:?
①安裝微軟的媒體服務器軟件,,編碼器軟件,。?
②啟動編碼器軟件,選擇編碼形式,、傳輸速度,、輸出端口。?
③頁面設計,,將媒體播放器嵌入網(wǎng)頁,,輸入服務器URL,就可以進行流媒體監(jiān)控了,。?
2.5 控制平臺?
整個系統(tǒng)由視頻監(jiān)控中心,、控制中心和超聲波數(shù)據(jù)顯示中心組成,客戶通過控制中心向機器人控制器發(fā)送控制指令,,通過視頻監(jiān)控中心監(jiān)控機器人現(xiàn)在的狀態(tài),,利用超聲波數(shù)據(jù)來判斷機器人現(xiàn)在的橫向位置與位姿。系統(tǒng)的控制中心見圖3,。
3 結論?
(1)本文進行了移動機器人遠程監(jiān)控系統(tǒng)研究,,開發(fā)出完整的、可操作的遠程移動機器人監(jiān)控系統(tǒng),,在局域網(wǎng)和校園網(wǎng)中進行了測試,,可以實現(xiàn)機器人的遠程監(jiān)控操作,。?
(2)利用EJB組件技術,開發(fā)出各種功能模塊組件,,增強系統(tǒng)的可移植性和應用性,,實現(xiàn)一處開發(fā),處處可用,。?
(3)利用Web Service技術,,增強了系統(tǒng)的可擴展性、跨系統(tǒng)和語言平臺的特性,,使得各種技術可以組合在一起進行工作,。?
(4)JNI技術的應用實現(xiàn)了java程序與機器人現(xiàn)有控制程序間的無縫連接。?
(5)本文采用JSP,、Servlet,、JavaBean、EJB和Soap的組合實現(xiàn)分布式系統(tǒng),,其中,,Soap基于HTTP傳輸協(xié)議,可以越過客戶端防火墻限制,。?
參考文獻 ?
[1] 任昊星,翁海華,楊楊,陳堅.基于Web的機器人遙操作的研究與實現(xiàn).計算機工程,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的移動機器人控制系統(tǒng)研究及java實現(xiàn).同濟大學學報,2002?