王杰 高永平
摘要:該文介紹了一套運(yùn)用AR、網(wǎng)絡(luò)通信技術(shù),解決多人協(xié)作中虛擬世界與現(xiàn)實(shí)的互動(dòng)的整體項(xiàng)目,提出采用新概念人機(jī)交互機(jī)制與裝置,實(shí)現(xiàn)多維度感知交互,增強(qiáng)體驗(yàn)感。使用基于JavaMO異步通信框架Netty處理網(wǎng)絡(luò)10,實(shí)現(xiàn)增強(qiáng)現(xiàn)實(shí)各終端之間的通信,從而實(shí)現(xiàn)多用戶下各種交互設(shè)備和虛擬環(huán)境快速自然實(shí)時(shí)的交互,同時(shí)也能解決增強(qiáng)現(xiàn)實(shí)中各種設(shè)備和虛擬環(huán)境實(shí)時(shí)通信的高并發(fā)的問題。
關(guān)鍵詞:增強(qiáng)現(xiàn)實(shí);網(wǎng)絡(luò)通信;Netty;實(shí)時(shí)交互
中圖分類號(hào):TP391
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)36-0241-03
增強(qiáng)現(xiàn)實(shí)是虛擬現(xiàn)實(shí)的一個(gè)重要分支,是將計(jì)算機(jī)生成的虛擬圖像和相機(jī)采集到的真實(shí)場(chǎng)景實(shí)時(shí)進(jìn)行綜合和疊加,渲染,并顯示在一個(gè)空間或畫面中的技術(shù),目標(biāo)是在屏幕上把虛擬世界套在現(xiàn)實(shí)世界并進(jìn)行互動(dòng)。近年來,增強(qiáng)現(xiàn)實(shí)技術(shù)表現(xiàn)出了強(qiáng)勁的發(fā)展勢(shì)頭,迅速引發(fā)與教育、醫(yī)療、游戲燈等各領(lǐng)域的結(jié)合,顯示出了巨大的潛力。但是增強(qiáng)現(xiàn)實(shí)技術(shù)尚有很多問題需要解決。從交互方式上來說,人機(jī)交互方式的好壞將會(huì)很大程度上影響用戶的交互體驗(yàn)。AR技術(shù)發(fā)展到今天,在人機(jī)交互方面通常是基于傳統(tǒng)鍵盤或者手柄的單人交互方式,更為自然的、支持多用戶的實(shí)時(shí)的增強(qiáng)現(xiàn)實(shí)交互技術(shù)仍有待研究[1-2],同時(shí)還存在著沉浸感弱,感官較差等問題。
本文提出通過采用新概念人機(jī)交互機(jī)制與裝置,觸/力覺表現(xiàn)及力反饋設(shè)備,實(shí)現(xiàn)多維度感知交互。通過觸覺,嗅覺,以及力覺等各種知覺感知來建立與人類感官匹配的自然通道,從而呈現(xiàn)完美的虛擬世界,在同一個(gè)控制系統(tǒng)下,完美的視覺沖擊、真實(shí)的觸碰感,讓用戶感受到不一樣的增強(qiáng)現(xiàn)實(shí)體驗(yàn)。
因此需要利用通信技術(shù)實(shí)現(xiàn)設(shè)備和虛擬世界之間的連接,實(shí)現(xiàn)所有設(shè)備的協(xié)同操作。面對(duì)大量的終端設(shè)備以及網(wǎng)絡(luò)高并發(fā)訪問,不僅要求其擁有穩(wěn)定性、實(shí)時(shí)性,還要求其具備處理高并發(fā)通信的能力,能同時(shí)管理更多硬件設(shè)備。所以設(shè)計(jì)一種能夠滿足設(shè)備通信的高并發(fā)即時(shí)通信應(yīng)用都顯得十分必要?;诖艘螅疚奶岢鍪褂没贜etty實(shí)現(xiàn)JavaNIO方式開發(fā)高并發(fā)的服務(wù)器,并采用自定義私有協(xié)議的方式進(jìn)行交互設(shè)備以及增強(qiáng)設(shè)備和增強(qiáng)世界之間的通信?;诖颂峁┝艘徽自O(shè)計(jì)方案。
在新一代人工智能技術(shù)的爆發(fā)和5G通信技術(shù)的助力下,增強(qiáng)現(xiàn)實(shí)產(chǎn)業(yè)涌入了大批國內(nèi)外企業(yè),增強(qiáng)現(xiàn)實(shí)將成為下一代通用計(jì)算平臺(tái)和互聯(lián)網(wǎng)的入口,為經(jīng)濟(jì)、軍事、民生等領(lǐng)域帶來顛覆性變化。為搶占世界虛擬現(xiàn)實(shí)戰(zhàn)略制高點(diǎn),我國已經(jīng)把增強(qiáng)現(xiàn)實(shí)和虛擬現(xiàn)實(shí)定位為超前發(fā)展的戰(zhàn)略性新興產(chǎn)業(yè)。在此背景下,該研究方向具有比較重要的現(xiàn)實(shí)意義。
1方案設(shè)計(jì)
本項(xiàng)目由終端設(shè)備,應(yīng)用服務(wù)器,業(yè)務(wù)服務(wù)器,以及增強(qiáng)現(xiàn)實(shí)服務(wù)器組成,目前增強(qiáng)現(xiàn)實(shí)系統(tǒng)中的交互設(shè)備主要有硬件交互設(shè)備、語音識(shí)別設(shè)備、動(dòng)作捕捉設(shè)備等交互設(shè)備,以及一些其他的終端設(shè)備比如聲光電水等。終端模塊主要的作用一是用于采集數(shù)據(jù)信息,例如采集動(dòng)作信息或者語音等信息。二是接受服務(wù)器發(fā)送的命令,并執(zhí)行。系統(tǒng)中對(duì)終端設(shè)備進(jìn)行分類,不同的業(yè)務(wù)服務(wù)器負(fù)責(zé)不同類型,其主要解決防止數(shù)據(jù)進(jìn)入并發(fā)服務(wù)器后因數(shù)據(jù)存儲(chǔ)時(shí)間長而影響系統(tǒng)整體性能,數(shù)據(jù)分發(fā)到多臺(tái)業(yè)務(wù)服務(wù)器中進(jìn)行處理操作,能提高系統(tǒng)的相應(yīng)的速度[3]。應(yīng)用服務(wù)器是整個(gè)系統(tǒng)的核心和大腦,所有的邏輯控制都在此實(shí)現(xiàn)。各終端設(shè)備和增強(qiáng)現(xiàn)實(shí)的內(nèi)容之間要進(jìn)行交互,要和服務(wù)器之間建立長連接鏈路,然后通過服務(wù)器實(shí)現(xiàn)所有終端設(shè)備和增強(qiáng)現(xiàn)實(shí)世界之間的通信。
1.1通信技術(shù)
Netty是由JBOSS公司提供的一個(gè)基于NIO的異步通信的網(wǎng)絡(luò)編程框架和工具,它是在Epoll模型和JavaNIO的基礎(chǔ)上做出的改進(jìn),其采用IO多路復(fù)用技術(shù),處理10操作,把多個(gè)10阻塞復(fù)用到一個(gè)select之上,滿足單線程處理多個(gè)10的連接需求。在處理大規(guī)模的并發(fā)時(shí),利用Epoll模型對(duì)就緒的I/O連接進(jìn)行處理,避免了無效的輪詢。其零拷貝技術(shù)它可以將多個(gè)ByteBuf'引用合并為一個(gè)邏輯上的ByteBuf對(duì)象,避免了各個(gè)ByteBuf'之間的拷貝[4-5]。Netty是業(yè)界最流行的NIO框架之一,他的健壯性、功能、性能、可定制性和可擴(kuò)展性都是非常好的。因此本項(xiàng)目選擇netty作為本項(xiàng)目的通信框架[6-7]。服務(wù)器端時(shí)序圖如圖l所示。
1.2系統(tǒng)機(jī)制
1)通信協(xié)議。為了實(shí)現(xiàn)系統(tǒng)中各個(gè)模塊和服務(wù)器之間的通信,本項(xiàng)目制定通信時(shí)所遵守的規(guī)則,通信雙方按照這個(gè)規(guī)則“說話”[8]。除了各個(gè)模塊和服務(wù)器之間的業(yè)務(wù)消息外,還需要攜帶其他一些控制和管理的指令。例如鏈路建立的握手請(qǐng)求和響應(yīng)的消息,監(jiān)聽鏈路可用性的心跳消息等等,這些功能組合在一起后,就形成了通信協(xié)議。利用Netty的NIO進(jìn)行私有協(xié)議的定制和開發(fā),Netty的協(xié)議棧用于內(nèi)部各模塊之間的通信,它基于TCP/IP協(xié)議棧,采用流的方式進(jìn)行數(shù)據(jù)傳輸,為了防止粘包以方便拆包,本文采用將特殊分隔符作為消息結(jié)束的標(biāo)志以對(duì)消息進(jìn)行區(qū)分。
2)心跳機(jī)制。本項(xiàng)目中,各設(shè)備和服務(wù)器之間通訊頻繁,為了防止頻繁建立連接對(duì)系統(tǒng)資源的浪費(fèi),而且建立連接也是需要時(shí)間的,這會(huì)導(dǎo)致系統(tǒng)的處理速度降低很多。因此本文采用長連接機(jī)制,每個(gè)連接建立后都不斷開,客戶端和服務(wù)器的所有數(shù)據(jù)交互都通過此連接進(jìn)行通訊,一個(gè)連接上可以連續(xù)發(fā)送多個(gè)數(shù)據(jù)包。但是在連接保持期間,為了檢測(cè)鏈路的可用性,利用IdleStateHandler和Ping-Pong機(jī)制,當(dāng)服務(wù)器和客戶端都處于idle狀態(tài)時(shí),需要雙方發(fā)送鏈路檢測(cè)包,即心跳協(xié)議。
3)斷線重連。本項(xiàng)目是基于網(wǎng)絡(luò)通信的,在系統(tǒng)運(yùn)行中,網(wǎng)絡(luò)狀態(tài)是不可預(yù)知的,客戶端要及時(shí)對(duì)網(wǎng)絡(luò)的變化做出反應(yīng),為了不影響系統(tǒng)的運(yùn)行,最小化的降低影響,當(dāng)客戶端因?yàn)槟承┰蚝头?wù)器失去連接后,要能立刻發(fā)起重新連接,取得和服務(wù)器端的連接。首先要監(jiān)聽網(wǎng)絡(luò)的連接,客戶端掛在eloseFuture上監(jiān)聽鏈路關(guān)閉信號(hào),一旦Channel關(guān)閉,則創(chuàng)建重連定時(shí)器,5S之后重新發(fā)起連接,直到連接上服務(wù)器。
2系統(tǒng)架構(gòu)
2.1系統(tǒng)拓?fù)浣Y(jié)構(gòu)
本項(xiàng)目主要由硬件設(shè)備、傳輸網(wǎng)絡(luò)、客戶端或者數(shù)據(jù)采集和控制單元、服務(wù)器等四部分組成。從底層逐級(jí)向上分為三層。一是現(xiàn)場(chǎng)機(jī),此層面主要為對(duì)現(xiàn)場(chǎng)的信息的采集,主要包括語音信息,或者動(dòng)作信息以及各種外部設(shè)備信息的采集等。二是網(wǎng)絡(luò)層,利用無線和有線網(wǎng)絡(luò)對(duì)采集的數(shù)據(jù)進(jìn)行編碼、認(rèn)證和傳輸其主要作用是實(shí)現(xiàn)現(xiàn)場(chǎng)機(jī)與上位機(jī)的數(shù)據(jù)傳輸。三是上位機(jī),即數(shù)據(jù)應(yīng)用層,一方面通過數(shù)據(jù)分析可以得出相關(guān)結(jié)論來支持服務(wù)器決策,另一方面,可以接收服務(wù)器傳遞的指令,來對(duì)下層設(shè)備進(jìn)行控制。具體的系統(tǒng)拓?fù)浣Y(jié)構(gòu)圖如圖2所示。
2.2軟件體系結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)平臺(tái)劃分為4個(gè)模塊,分別是數(shù)據(jù)接收模塊、業(yè)務(wù)處理模塊、數(shù)據(jù)下發(fā)模塊、日志記錄模塊。數(shù)據(jù)接收模塊是通過協(xié)議適配接口處理來自客戶端數(shù)據(jù)請(qǐng)求,驗(yàn)證數(shù)據(jù)的合法性、有效性,同時(shí)把合法的數(shù)據(jù)消息封裝起來,然后交給業(yè)務(wù)處理模塊。業(yè)務(wù)處理模塊是根據(jù)相應(yīng)的規(guī)則對(duì)接收的數(shù)據(jù)進(jìn)行解析,然后實(shí)現(xiàn)具體的業(yè)務(wù)邏輯處理,例如服務(wù)器接收到來自客戶端的數(shù)據(jù),需要把數(shù)據(jù)寫入數(shù)據(jù)庫,則業(yè)務(wù)處理模塊對(duì)數(shù)據(jù)經(jīng)過一定的處理,分析后寫入數(shù)據(jù)庫,實(shí)現(xiàn)數(shù)據(jù)的持久化。數(shù)據(jù)發(fā)送模塊的消息來自業(yè)務(wù)處理模塊,業(yè)務(wù)處理模塊根據(jù)協(xié)議規(guī)則把要發(fā)送的數(shù)據(jù)進(jìn)行封裝,編碼,然后發(fā)送給相應(yīng)的客戶端,客戶端解析收到的數(shù)據(jù),然后對(duì)下位機(jī)做出相應(yīng)的操作。日志記錄模塊主要是為了滿足軟件的性能測(cè)試和日常的維護(hù)工作的需要,可以根據(jù)需要設(shè)置日志輸出級(jí)別、輸出內(nèi)容以及輸出方式。日志記錄的目的是為了在系統(tǒng)出現(xiàn)故障或者問題時(shí),可以方便找出問題以快速幫助解決問題[9]。功能模塊關(guān)系圖如圖3所示。
3結(jié)束語
根據(jù)增強(qiáng)現(xiàn)實(shí)系統(tǒng)中實(shí)現(xiàn)多用戶下各種交互設(shè)備和虛擬環(huán)境快速自然實(shí)時(shí)的交互的要求,本文提卅的基于netty通信和增強(qiáng)現(xiàn)實(shí)的交互方式結(jié)合的處理方式,實(shí)現(xiàn)了支持高并發(fā),復(fù)雜邏輯處理的網(wǎng)絡(luò)通信服務(wù)。服務(wù)器數(shù)據(jù)處理速度快,響應(yīng)時(shí)間短,能夠滿足實(shí)時(shí)相應(yīng)的要求。目前該解決方案已成功應(yīng)用于某公司的部分項(xiàng)目中。用戶可以使用各種交互設(shè)備和場(chǎng)景中的虛擬內(nèi)容進(jìn)行實(shí)時(shí)互動(dòng),并結(jié)合多媒體、3D、光電聲效等手段以及各類物理機(jī)械裝置營造出夢(mèng)幻真實(shí)的環(huán)境??蛻舾杏X非常新穎,對(duì)體驗(yàn)效果感到滿意。因此,市場(chǎng)應(yīng)用的預(yù)期前景非常廣闊。
參考文獻(xiàn):
[1]王宇希,張鳳軍,劉越.增強(qiáng)現(xiàn)實(shí)技術(shù)研究現(xiàn)狀及發(fā)展趨勢(shì)[J].科技導(dǎo)報(bào),2018,36(10):75-83.
[2]康紹鵬.增強(qiáng)現(xiàn)實(shí)關(guān)鍵技術(shù)研究[D].沈陽航空工業(yè)學(xué)院,2009.
[3]陳強(qiáng),武佳佳.基于Netty高并發(fā)物聯(lián)網(wǎng)服務(wù)器研究與設(shè)計(jì)[J].電子技術(shù)與軟件工程,2018(7):34-35.
[4]張河.基于Netty框架的多用戶并發(fā)訪問技術(shù)研究及應(yīng)用[D].河南大學(xué),2017.
[5]梁明剛.Linux下基于epoll線程池高并發(fā)服務(wù)器實(shí)現(xiàn)研究[J].武漢工業(yè)學(xué)院學(xué)報(bào),2012(3):54-59.
[6]陳強(qiáng),武佳佳.基于Netty高并發(fā)物聯(lián)網(wǎng)服務(wù)器研究與設(shè)計(jì)[J].電子技術(shù)與軟件工程,2018(7):34-35.
[7]汪悅,管弋銘,李夢(mèng)蓉等.基于物聯(lián)網(wǎng)的智慧家庭健康醫(yī)療系統(tǒng)[J].光通信研究,2018,2(205):1-5.
[8]陳瑞林,鄭羽.基于ARM9的UDP協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23 (5):22-25.
[9]龔鵬,曾興斌.基于Netty框架的數(shù)據(jù)通訊服務(wù)系統(tǒng)的設(shè)計(jì)[J].無線通信技術(shù),2016,25(1):46-4.
【通聯(lián)編輯:代影】
收稿日期:2019-09-18
基金項(xiàng)目:國家自然科學(xué)基金資助項(xiàng)目(61662002);東華理工大學(xué)江西省放射性地學(xué)大數(shù)據(jù)技術(shù)工程實(shí)驗(yàn)室資助項(xiàng)目UELRGB-DT201707)
作者簡介:王杰(1994-),通信作者,女,安徽阜陽人,碩士研究生,主要研究方向?yàn)榇髷?shù)據(jù)與智能信息處理;高永平(197 4-),男,江西峽江人,副教授,碩導(dǎo),碩士,主要研究方向?yàn)閿?shù)據(jù)庫技術(shù)與應(yīng)用、軟件工程與知識(shí)工程。