王杰 高永平



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