基于BSSID 技术的列车人流监测系统设计
2020-04-17钱小刚
钱小刚,户 国,李 昊
(1.上海地铁电子科技有限公司,上海 200233;2.上海工程技术大学 城市轨道交通学院,上海 201620;3.东华大学 材料科学与工程学院,上海 201620)
交通运输部文《城市新型冠状病毒肺炎分类与防治指南》规定,城市公共电动汽车和城市轨道交通等交通工具应在消毒方面细化,按高、中、低风险区划分通风与作业组织.对于轨道交通车站满载率和列车拥挤度,高风险地区这两个数据应小于50%,中等风险地区应小于70%,低风险地区没有限制.人流量是指单位时间内相邻两个车站同一方向运行的列车数,由某一区间的列车流量除以通行能力得到.与传统的测量方法相比,列车满载率将考虑到售检票系统上传的实时进出站数据,并参考历史人流大数据、旅客出行特点、路网结构、列车时刻表等,列车调度指挥措施等信息.本设计增加对重型列车各车厢人员分布的关注,将人员密度的预防和控制降低到最小单位.
1 BSSID 技术原理
基本服务集标识符(Basic Service Set Identifier,BSSID)是Ad Hoc 局域网的一种特殊应用,也称为基本服务集(Basic Service Set,BSS)[1].通过设置相同的BSS 名称,一组计算机可以组成1 个组.每个BSS 都分配1 个BSSID,这是1 个48 位二进制标识符,用于标识不同的BSS.每个网络设备都有自己的物理地址用于识别,称为MAC 地址.通常,工厂会有一个默认值,可以更改.它还有固定的命名格式,也是设备标识的标识符.BSSID 是指对于静态时序分析(STA)设备,接入点(AP)的MAC 地址为BSSID.通过扫描周围的BSSID,可以知道周围AP 的数量,也就是周围乘客的数量.
2 BSSID 技术在列车客流统计中的应用
2.1 地铁列车长度情况
一般来说,世界各地的地铁型号都没有统一的标准,往往是根据某个地方地铁的需求进行定制,如纽约地铁A 系统和B 系统.在中国大陆,地铁车辆通常分为A、B、C、D 等4 种型号和L 型,也有如APM 列车、单轨列车等特殊车型,上海地铁列车多为A、C 两种型号,编组数量为3~8 辆[2],长度为60~160 m.为覆盖地铁列车的所有车厢,系统计划在每节编组头部安装WiFi 探测器,以保证整个列车的检测覆盖,具体参数见表1.
表1 地铁车辆主要类别及参数Table 1 Main types and parameters of metro vehicles
2.2 个人AP 与探测器AP 覆盖情况
手机个人热点是将手机接收到的GPRS、3G或4G 信号转换为WiFi 信号的技术.手机必须具备无线AP 功能才能作为热点使用.这是一种允许电子设备连接到无线局域网(WLAN)的技术,通常使用2.4 GHz 或5 GHz 无线频段.
实际测试无障碍距离为10 m 左右时可以使用,但信号一直比较弱,所以普通住宅的墙壁以及楼上与楼下的距离应该没有问题,有效距离约为50~100 m.但有墙时,距离会急剧缩短,因此住户的有效距离在30 m 以内.经过测试,大部分时间无线信号传输距离为20~30 m.这是由于建筑物、物体和信号的干扰,有效距离变小,导致网络速度不稳定.此外,还存在电压不稳定、电磁干扰等因素.
2.3 探测器与数据存储的实现
Java 技术已在各领域得到广泛应用,特别是在无线移动领域.全球已有100 多家移动运营商推出Java下载服务,Java 也正在成为其他嵌入式设备(如机顶盒)的支持标准.Java 应用程序的快速增长源于几个方面:
1)Java 最初的设计意图“编译一次,到处运行”表明Java 具有良好的可移植性,Java 应用程序的开发非常方便,上市速度快,节约成本;
2)Java 有广泛的支持网络,许多第三方公司都在开发Java 应用程序;
3)Java 平台固有的安全性适合运营商网络下载;
4)Java 字节码代码密度较高,程序较小,可以适合内存资源有限的嵌入式设备.
Java 数据库连接(Java Database Connectivity,JDBC)是一个用于执行SQL 语句的Java API,可以提供对各种关系数据库的统一访问.它由一组用Java 语言编写的类和接口组成.JDBC 提供一个基准来构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序[3].
根据这一特点以及Java 语言与数据库连接的方便性,本系统以小型计算机为硬件,配置Java 虚拟机(Java Virtual Machine,JVM),在后台使用Java 检测WiFi 和固定人流检测算法,并将实时人流数据存储到数据库中.采样数据类型见表2.
表2 详细采样数据表Table 2 Detailed sampling data table
3 系统核心
系统利用布设于各车厢内的小型机监测平均精度(Pa),利用Redis 缓存处理优化后将监测数据传送至数据库,供操作控制中心(OCC)与车厢及车站提示设备进行数据调取,流程如图1 所示.
图1 数据传输及应用Fig.1 Data transmission and application
3.1 监测AP 前期数据预处理
由于地铁车厢也存在于系统开发中,使用getScanResults()方法获取扫描到的WiFi 列表时,列表中会出现前4 位属于同一个地铁公司设备商的BSSID 出厂商号和BSSID 最后4 位不相同的热点,这样的数据会干扰到准确测量周边AP 的数量.参照系统WiFi 过滤机制,这里实现的过滤策略,移除列表中地铁公司设备厂商的BSSID 地址.
3.2 监测AP 布置与人流统计策略
监测AP 按照每辆列车车厢节次配置,安装至每节车厢尾车门上行侧边,利用辅助系统进行供电,由于不同监测AP 可探测的范围为50~100 m[4],势必会造成不同监测AP 重复监测的情况,具体探测步骤如下:
1)列车启动时开始实时监测,以时间间隔为5 s监测AP,扫描周边BSSID 地址与BSSID 信号强度并存储至缓存(通过识别地铁厂商AP 来避免误读);
2)当后一次监测开始时,与之前缓存的BSSID地址进行比较,统计本次监测与上次监测重复的BSSID 数,并将当前时间、地铁线路、车厢号、车厢所在车辆相对位置存入数据库中;
3)消除本地缓存;
4)可视化平台提取对应的车厢数据情况并进行展示;
5)对不同监测AP 重复监测的情况进行横向比较,取一车厢的AP 探测数据,与其他AP 探测数据进行比较,若此AP 探测数据BSSID 强度大于后者,即保留前者,否则,保留后者.
AP 人流统计流程如图2 所示.对于输入数据库前的数据处理,使用Redis 进行预处理[5].Redis是一个符合伯克利软件发行版(BSD)协议的免费开源代码,是一个高性能的Nosql 缓存键值数据库.Redis 支持数据持久化,可以将数据保存在铭牌上的内存中,重启后可以重新加载使用.Redis缓存中,将不同监测AP 重复监测的情况进行横向比较,建立n(列车数量)个list 内嵌string 并输入数据库中,极大减少数据处理的耗时.对于总车辆数从1 至n进行遍历,时间复杂度为log 2n.
图2 AP 人流统计流程Fig.2 AP passenger flow statistics process
3.3 探测系统的可视化应用
系统利用4 种颜色标注拥挤度,颜色越深车厢里越挤.其中:黑色为车厢严重拥挤,即一列列车开走后,站台上仍会有乘客滞留;红色为车厢拥挤,即乘客此时已经很难在车厢内移动,站在站台透过车窗往里看,已经看不到对面站台;黄色为车厢内比较拥挤,即乘客在车厢内移动有困难,此时在车厢里看报纸不现实,但看手机的空儿还是可以找到的;绿色为车厢比较舒适,即乘客可以在车厢内走动.这些信息将会显示在候车站台前,供等候乘客进行车厢乘坐选择.
除此之外,储存在数据库中各时间点、各车厢的人流状况还可作为车站人员在高峰时候疏导客流的依据,可以实时显示各线路列车车厢当前的乘客拥挤程度.车站管理者、运营调度方均可以根据实时变化的数据,更加合理精准地调度车辆,安排运力.供车站人员进行人流候车引导、用户提示.车厢人流量提示界面如图3 所示.
图3 车厢人流量提示界面Fig.3 Prompt interface of passenger flow in carriage
4 结语
本文采用BSSID 探测技术进行列车车厢的乘客识别,通过小型机的安装与Java 程序运用一定的算法进行分析与处理,对于数据存储模块进行性能优化,在当前疫情大背景下对地铁列车的人流量进行监控,可作为乘客、车站管理人员、运营调度人员对于车厢选择、车站引导、运力调整的依据,一定程度上减轻“拥塞”现象.
但系统对于不同人流程度的处理措施未作研究,后续工作将继续完善系统,结合大量的车厢装载试验和车站乘客的调查,获取不同车厢满载率情况下乘客的实际感受,再依据这些统计数据,研究制定不同线路车厢拥挤度分级标准.