蒙笑阳
(北京全路通信信号研究设计院集团有限公司,北京 100070)
随着轨道交通的覆盖面积不断增大,各个区域轨道交通系统的压力都在不断增加,同时在复杂的大型轨道交通站点如何获得工作人员、重要物资的准确位置及其导航成为难题。本研究主要解决区域轨道交通站点的乘客行程规划、出行指导、站内三维模型查看、AR 导航、工作人员定位及其辅助导航等问题。
针对此问题所开发的基于SSM 框架的室内定位导航系统(简称系统)是区域轨道交通协同运输与服务系统重要的应用子系统之一,主要负责跨制式行程规划、出行引导、地铁站三维模型查看、电子票务、便捷登程、行程查询、在途信息服务、消息智能推送等功能。
系统的核心技术主要体现在以下几方面:三维模型构建、基于UWB 的室内定位、路径规划、AR导航和消息推送等。
在三维建模方面,系统是采用基于HTML5 和WebGL 标准开发的三维可视化模型,可以基本实现在3D 场景中显示需要定位的人员位置,并且可以随意切换视角,视角也可以跟随任何一个人。同时,开发环境的自身特点使可视化界面具备很好的设备兼容性,可以轻松适应PC、Android、IOS,不需要在设备中安装任何插件即可在浏览器中流畅查看轨道交通站点的三维场景。
在定位技术方面,本系统采用超带宽(UWB)技术,结合信号到达时间差(TDOA)技术可以在室内精确定位相关人员位置,其精度可以达到50 cm。同时,为了更好的适应室内环境的复杂性,系统采取3D 定位的方法。首先需要在具体的建筑中构建与之相匹配的3D 模型,进而在其基础上加入定位所获取到的三维数据,从而实现室内的实时3D 定位。
在路径规划方面,本系统采用A*算法实现起始点到目标点的路径规划。A*算法具有良好的性能与准确性,算法稳定,鲁棒性高,对室内不同环境反应迅速,可扩展节点,算法参数调优方便,能够在占用较少的硬件性能情况下,更加快速的计算出室内最优路径。
智能出行信息服务系统构成如图1 所示。
图1 系统总计设计框架Fig.1 Overall design framework of the system
应用层包括系统应用软件和AR 导航,系统应用软件主要实现3D 模型的展示及其3D 定位数据的图形化显示;同时在显示界面上提示相应的报警;在手机端部分还将提供AR 导航。
服务层由定位引擎软件、三维模型、路径规划算法、数据存储软件组成,将上述软件及其算法安装于服务层。定位引擎依靠整个通信网络传输的感知层的基础数据完成人员位置数据的计算,从而得到被定位人员的详细位置坐标;3D 模型为系统提供良好的三维模型,方便定位数据在三维场景中进行显示;路径规划算法为系统提供最优的路径指示;数据存储可以保存整个系统产生的所有需要保存的信息。
传输层使用两种方式,即有、无线传输网。其中无线网依靠WLAN 的通信模式将感知层传感器的基础定位数据传送到主干网络中;有线网则通过光纤和以太网进行数据传输,将定位基础数据直接传达到对应的服务器中,而这些基础定位数据有的是从无线网中汇集的,有的是直接从有线网中接入的POE 类型的传感器中获取的。
感知层包括定位基站、通信基站、通信定位基站、定位标签、视频接口以及视频传感器(摄像头)。主要是用于获取系统所需的基础数据,包括定位数据和现场实时场景信息。为系统其他层级的进一步运算以及显示提供强有力的支持。
系统整体采用B/S 架构,B/S 架构是一种不同于之前C/S 架构模式的新的结构构造技术,主要具有以下优势。
B/S 可以使软件具有很好的系统分布性;
浏览器到数据库的连接方式转换为多对多的连接,因此在用户使用时将会具有很强的信息共享性;
在使用B/S 架构时,数据可以集中存放在专用服务器中,很大程度上保障数据的一致性;
B/S 架构由多个具有较高独立性的构件组合而成,因此在必要时,可以通过对单个组件的替换实现对整个系统的快速升级,此方法可以有效降低系统维护成本,提高工程盈利;
业务拓展简单,由于功能之间的独立性较高,所以可以直接增加服务器的数量,使系统的整体性能提高,从而解决服务器负载超标的问题;
无需客户端,这在一定程度上可以确保服务器数据库的安全。
技术平台采用J2EE 的三层架构,开发语言采用JAVA,系统设计符合J2EE 标准,基于最流行的开发架构(Spring+SpringMVC+Mybatis),系统支持分布式部署,可7×24 h 不间断运行;具有良好的系统兼容特性,支持主流Windows、Linux 等常见的操作系统平台。支持MySQL 等主流数据库的任何常规操作,对Tomcat 也有良好的兼容性。
系统整体架构使用B/S 结构开发,用户对系统的维护和使用不会因为场所和地点而受到不必要的限制;为了后期功能的进一步拓展,通常会在系统中预留再次开发的Web service 接口,扩充软件功能以及与其他信息系统的整合。
网页端的开发主要依靠Vue,它可以使开发人员的开发过程变得简洁,而且它还提供了一些可与第三方库接入的组件,使开发过程更加方便。Vue 响应式原理如图2 所示。
图2 Vue响应式原理Fig.2 Principle of Vue response
Vue 工作原理:将JavaScript 对象发送到Vue 的data 中,且所有Vue 中都存在对应的watcher。若是其中的data 属性情况改变,则需要对watcher 进行重构并赋予新的内容,进而将与其关联的属性予以同步。使用Vue 进行前端页面的开发能够大大的减少开发时的难度,特别是在与后端数据的交互中尤为明显。
使用Vue 进行网页的开发可以感受到以下优点:具有很好的灵活度和开放性;易学易用,有更多成熟工具和第三方资源库的强力支持;性能好,易优化,相对于其他开发方式,Vue 具有较好的稳定性,网页优化比较简单;有功能强大的路由机制;有多种方式实现过渡效果。
iView 是一套基于Vue 的高质量UI 组件库,主要服务于PC 界面的中后台业务。该组件库具有以下特点:使用单文件的Vue 组件化开发模式;基于 npm+webpack+babel 开发;丰富的组件和功能,满足绝大部分网站场景;友好的 API,自由灵活地使用空间;详细、友好的文档,事无巨细;细致、漂亮的 UI。部分组件如图3 所示。
图3 iView部分组件截图Fig.3 Screenshots of some of the iView components
SSH 为流行的Web 应用程序开源框架,SSM则是在SSH 完善之后的更加偏向企业级的主流Java EE 框架。SSH 和 SSM 这两种框架都使用Spring 的依靠灌注DI 的形式来控制各个层级的控件,同时采用面向切面编程AOP 以完成对日志的管理、认证权限、切入事件等通用的类似功能。
对于这两种框架的区别方面,主要的体现位置在页面层(View)和持久层(DAO)。因为当系统在运行的过程中,在页面层的某些操作,需要借助Ajax 调用后台的服务,从而获取其返回的json 数值,有了这个数值以后才可以进行后续的操作。
在本文所采用的SSM 框架中,Spring 可以看做一个具有管理性质的协调者。它将在整个软件系统的运行过程中直接管理Bean 的活动,直到Bean 的属性发生变化,即现在的Bean 已经消失。因此,在整个软件系统的运行过程中Spring 具有非常高的权力,能够控制所有的对象操作。
与Spring 这样一个系统的领导兼协调执行者不同的是MyBatis,它是在Dao 层做基层实事的实现者,将直接多数据库进行操作,并支持各种数据库的操作,对于定制化SQL 等数据库也有比较强大的支持力。其优点可以总结为:
MyBatis 的体量小,操作比较简单,具有较好的独立性,不需要依存于其他软件的支持,系统的程序开发者仅仅需要安装两个 Jar,同时设置相关的文件映射即可,不需要进行其他的文件编译,系统环境配置等;
MyBatis 具有较高的独立以及兼容性,它的操作过程中不会对既有的任何软件产生影响;
使用标签完成对SQL 命令的编写,实现对数据库中的所有字段的赋值和其他操作。
数据库为任何软件系统中不可或缺的部分,从某种意义上说这也是系统中的核心要素。而且数据库的结构也在一定程度上影响系统的响应速度,一个好的设计结构将对数据操作起到至关重要的地步。首先根据系统中需要的各种数据之间的关系,对数据字段进行定义并将数据库中的数表关联关系做好,特别是表中涉及到与其他表进行关联的外键时尤为重要,需要仔细考虑,最好在做数据库结构时先对整个系统的数表内容进行整理,得到一个角色、字段、属性的相关关系图,并按照这个关系图进行数据库的设计。这样可以有效提高数据库的管理效率,同时在后期出现部分问题时可以从关系图中比较快速的分析出问题所在,加快解决问题的速度,减少系统软件的开发周期。系统软件开发使用比较多的数据库有SQL Serve、Oracle、SYBASE、Informix 以及My SQL 等。在这之中,My SQL比较轻巧便捷,拥有较高的灵活度,所以系统在经过一定的考虑之后决定使用My SQL,并为这些功能的实现建立了包含用户信息表、定位数据位置表、报警状态表、卡片信息表、卡片使用状态表等在内的30 多个数据表。
系统结合UWB 技术、TDOA 技术、三维建模技术将轨道交通站点的人员状况、站内场景状况以可视化的方式展现出来,并在此基础上结合轨道交通的特点进行一系列的应用测试,并在测试过程中取得较好的实验效果。