一种基于netty通信的增强现实方案的设计与实现
2019-03-07王杰高永平
王杰 高永平
摘要:该文介绍了一套运用AR、网络通信技术,解决多人协作中虚拟世界与现实的互动的整体项目,提出采用新概念人机交互机制与装置,实现多维度感知交互,增强体验感。使用基于JavaMO异步通信框架Netty处理网络10,实现增强现实各终端之间的通信,从而实现多用户下各种交互设备和虚拟环境快速自然实时的交互,同时也能解决增强现实中各种设备和虚拟环境实时通信的高并发的问题。
关键词:增强现实;网络通信;Netty;实时交互
中图分类号:TP391
文献标识码:A
文章编号:1009-3044(2019)36-0241-03
增强现实是虚拟现实的一个重要分支,是将计算机生成的虚拟图像和相机采集到的真实场景实时进行综合和叠加,渲染,并显示在一个空间或画面中的技术,目标是在屏幕上把虚拟世界套在现实世界并进行互动。近年来,增强现实技术表现出了强劲的发展势头,迅速引发与教育、医疗、游戏灯等各领域的结合,显示出了巨大的潜力。但是增强现实技术尚有很多问题需要解决。从交互方式上来说,人机交互方式的好坏将会很大程度上影响用户的交互体验。AR技术发展到今天,在人机交互方面通常是基于传统键盘或者手柄的单人交互方式,更为自然的、支持多用户的实时的增强现实交互技术仍有待研究[1-2],同时还存在着沉浸感弱,感官较差等问题。
本文提出通过采用新概念人机交互机制与装置,触/力觉表现及力反馈设备,实现多维度感知交互。通过触觉,嗅觉,以及力觉等各种知觉感知来建立与人类感官匹配的自然通道,从而呈现完美的虚拟世界,在同一个控制系统下,完美的视觉冲击、真实的触碰感,让用户感受到不一样的增强现实体验。
因此需要利用通信技术实现设备和虚拟世界之间的连接,实现所有设备的协同操作。面对大量的终端设备以及网络高并发访问,不仅要求其拥有稳定性、实时性,还要求其具备处理高并发通信的能力,能同时管理更多硬件设备。所以设计一种能够满足设备通信的高并发即时通信应用都显得十分必要。基于此要求,本文提出使用基于Netty实现JavaNIO方式开发高并发的服务器,并采用自定义私有协议的方式进行交互设备以及增强设备和增强世界之间的通信。基于此提供了一整套设计方案。
在新一代人工智能技术的爆发和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-),男,江西峡江人,副教授,硕导,硕士,主要研究方向为数据库技术与应用、软件工程与知识工程。