班车实时定位系统的设计
2020-02-25张洪硕
张 煜,张洪硕,丁 阳
(大连民族大学 计算机科学与工程学院,辽宁 大连 116650)
随着智慧校园与智能移动设备的普及和发展,人们对于高校后勤工作的需求日益增加,例如班车实时管理。主要原因之一是在极端天气下,会造成班车延误,教师们等待时间过长,班车是否过站及是否正常运行不明确等。
通过对班车实时定位的深入研究,解决包括硬件设计、GPS信号处理、实时定位、班车轨迹精确匹配等关键技术,设计了一种由STM32F103单片机、SIM7600CE模块集成的终端和新型的班车实时定位系统。结合坐标转换、异常数据处理、轨迹压缩算法、轨迹平滑算法等来实现班车历史轨迹的绘制,并使用企业微信平台来呈现班车实时定位系统的应用效果。本项目的研究一方面解决了教师日常等班车的难题,另一方面推动了智慧校园的建设,具有实际应用价值,已经产生良好的社会效益。
如果能够实时采集班车的运行位置,并通过手机显示,那么教师们就可以方便的查看班车运行状态,获取班车的位置信息,以便决定继续等待还是选择乘坐其他的交通工具。本文设计了一种主要由STM32F103 单片机、SIM7600CE模块集成的终端和新型的班车实时定位系统,通过企业微信平台,来查看车辆的实时定位。
1 系统整体架构
系统的架构主要分为三个部分:车载终端、服务器、手机端,系统架构如图1。
图1 系统架构
车载终端放置在班车上,上面带有GPS模块,用来接收卫星信号,获取车辆的经纬度信息,并通过GPRS传至服务器,如果信号强度不高,会向服务器发送LBS基站定位,保证车辆定位的准确性。手机端通过企业微信这一平台选择班车定位,定时向服务器发送请求,服务器返回当前的车辆经纬度,并实时显示班车的地理位置、实时速度等。
2 车载终端
2.1 硬件设计
车载终端主要是由STM32F103 单片机、GSM模块、GPS模块、SIM7600CE模块、电源模块等组成。STM32F103 单片机是由ST厂商推出的STM32系列单片机,相比于51单片机,性能高、成本低,在功耗和集成度方面也有所提高,基本上接近于计算机的CPU,适用于本文设备使用。电源模块采用5V的USB接口即可。其中GSM模块是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块,通过GSM模块连接4G信号发送数据包。SIM7600CE模块集成了大大小小的端口,常用的端口有COM17、COM5、COM14,它是一款新型无线模块,并且功耗很低。SIM7600CE与单片机是通过COM17串口通信的,COM5串口主要用来与 PC 通信,实现AT指令控制芯片实现功能,GPS 模块采集的数据也可以通过COM14串口直接发送到上位机。车载终端的工作原理是:GPS 模块采集车辆的经纬度信息,通过 COM14串口传送给单片机,单片机通过COM17串口发送给SIM7600CE模块,SIM7600CE模块通过GSM模块采用 GPRS 方式发送到远端的服务器。
2.2 GPS信号处理
2.2.1 GPS定位+LBS基站定位
终端连接上网后,分两种情况,通过心跳包来判断,如果信号强的话采用GPS定位, GPS模块每隔固定的周期就会返回以字符‘$’开头的一定格式的数据,即:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh。
(1)
式中: GPRMC 代表推荐的最小定位信息;<1>代表时间,东八区需要加8小时的时差;<2>代表定位状态,如果为 A,则表示定位有效,数据可以使用,如果为 V,表示定位无效,数据舍弃;<3>代表纬度;<4>代表纬度半球;<5>代表经度;<6>代表经度半球;<7>代表地面速率。其中,经纬度为度度分分.分分分分(ddmm.mmmm);格式<8>代表地面航向;<9>代表日期; <10>代表磁偏角;<11>代表磁偏角方向; <12>代表校验和。
当终端丢失信号时,采用LBS定位,基于基站位置的定位[1]。一种通过移动运营商的无线电通讯网络获取移动终端用户最近的基站位置的定位技术,三点法定位原理是进行基站定位的最常用技术,即当信号丢失时,通过计算三个基站的信号差异,就可以判断出终端所在的位置。三点代表三个基站,选择基站时随机选择可涵盖终端的定位基站,它们之间并无密切联系,相对独立。只要终端处于基站的有效范围之内,即可以随时进行位置定位,而不受天气、高楼、位置等等的影响,符合业务需求,所以本文主要采用了三点法定位原理定位移动基站与监测点的位置。步骤如下:
(1)检测GPS信号,检测心跳包发射间隔;
(2)GPS信号弱或者丢失,采用基站定位;
(3)SIM7600CE模块采用三点法原理获取终端定位信息。
(4)终端获取定位信息,发送LBS数据包,返回LBS的相应格式的数据,即:
$CLBS:
(2)
式中:
2.2.2 坐标转换
当定位终端发送数据包后,系统端接收到GCJ-02数据,在地图显示时需要WGS-84格式的坐标轴信息,不同的格式坐标系之间要再进一步的转换,以满足地图实时显示的需求,这里采用的是GCJ-02坐标系转WGS-84坐标系[2]。longcj代表gcj02坐标系下经度,利用坐标系转化原理Longcj-105.0的经度作为lon,经度偏移量
。(3)
同理,利用坐标系转化原理Latgcj-35.0的纬度作为lat,纬度偏移量
(4)
本文地球的长半轴(即赤道的半径)a为6 378 245,短半轴(极半径)b为6 356 775,利用上述公式(5)用来确定扁率e,e代表地球的扁平程度,进一步为转换做准备。扁率公式
(5)
进一步通过公式(5),求得相对于WGS-84转移后的坐标偏移
(6)
最后利用公式(3)、公式(4)和公式(6)得到WGS-84坐标下的经度
(7)
同理,WGS-84坐标下纬度latwgs如下表示,
(8)
2.2.3 异常数据处理
在处理数据中,由于多路径效应、复杂环境以及 GPS 芯片质量参差不齐的影响,接收到的 GPS 数据都会含有噪声[3],只有处理过的 GPS 数据才能向用户展示。这里采用了两种算法进行比对优化。第一种基于几何距离的算法,多应用于LBS定位。如果两点的坐标为(A1,B1)、(A2,B2),首先A0代表两点间坐标的横坐标的中点,即
(9)
同理,
(10)
根据公式(9)~(10),f为两点间的弧长,其表达式
(11)
根据球面空间原理可以计算出目标两点的最小球面距离
d=2Rsin-1f。
(12)
式中:R为地球半径。假设数据接收间隔时间为t,物体移动速度为v,则时间间隔内目标移动的距离为D=vt。
最后直接将d和D进行比较:这两个值应该是在相同趋势下震荡,当趋势偏离较大时就可认为这是一个噪点数据。
第二种基于速度约束的漂移点判定[4],计算过程如下:
(2)对速度序列计算出整体的均值μ,以及方差σ;
(3)对每个点的速度进行判断,若(vi-μ)2>3σ,并且vi>μ,则该点是一个噪点。
检测到噪点之后反复实验,应用过插值处理,发现效果并不理想,所以决定直接把噪点删除。
3 数据服务处理
服务端与车载终端利用GPRS通过websocket建立连接,实时接收经纬度信息,并进行解析、坐标转换、服务器存储,并且服务端响应请求,返回班车经纬度信息,最后进行完数据处理后,存储车辆、班车路线等基本信息。
3.1 轨迹的压缩算法
当数据取出来,进行完噪点的去除,下一步就是进行数据的压缩。一般轨迹数据会包含很多的密集的集中区域,称其为停留点。停留点包括两种:因数据采集错误而导致的坐标完全一致的点;因数据源原地徘徊而产生的密集点。这里轨迹压缩参考了道格拉斯-普克算法,具体就是将曲线近似表示为一系列点,并减少点的数量的一种算法[5]。该算法的原始类型分别由乌尔斯·拉默于 1972 年以及大卫·道格拉斯和托马斯·普克于 1973 年提出,并在之后的数十年中由其他学者予以完善。道格拉斯-普克算法的计算过程如图2。
图2 道格拉斯-普克算法计算过程
(1)其中曲线 0 是原始数据,设置阈值距离为d,开始循环;
(2)循环查找距离起始点最远的点c,其距离为b,判断若b (3)分别对前后两段执行迭代步骤2; (4)得到最终结果。 另一方面普通的聚类方法没有考虑轨迹是时间序列的特征,因此聚类效果不是很好,这里应用了一种基于时间序列的轨迹聚类算法。算法的执行过程如下,流程图如图3。 图3 聚类算法流程图 (1)定义密度阈值pnum,矩形半边长d,遍历轨迹点ai; (2)取出轨迹序列中的点ai,检索其前后pnum个点内在以ai为中心,以2d为边长的矩形A中的数量innum; (3)如果innum (4)如果innum>=pnum,将在范围内的点索引推入聚类数组classi[],再检索ai前2pnum-前pnum和后pnum- 后2pnum点在A中的数量,并令pnum= 2pnum,并将在A中的点索引推入classi[],再对其分别执行步骤 3和步骤4; (5)检查i次循环的聚类classi[0] 和 i-1 次数组classi-1[classi-1length-1],如果classi[0] (6)如果还有点则执行步骤(1)-(5),否则结束循环。 该算法具有以下优势: (1) 采用矩形作为查询范围,从而避免了大量的经纬度距离计算; (2) 利用轨迹是时间序列的特性,以当前点为中心查询前后一定范围内的点,减少循环次数; (3) 将相邻的聚类进行合并可以提取更符合实际的停留点,检测出停留点之后这里直接将停留点删除。 地图展示历史线路时,实践证明拐点位置过渡特别生硬,没有平滑过渡,为了达到更好的应用效果,需要进一步优化。 3.2.1 均值滤波、中值滤波 由于终端定位时,信号波动大,发送GPS和LBS两种定位数据,会产生步幅比较大的定位点,在轨迹显示时认定为干扰因素是噪点, 本文先进行了均值滤波实验[6]。均值滤波方法是,对待处理的当前点位,选择一个模板,该模板为其邻近的若干个点位组成,用模板的均值来替代原点位的坐标的方法,计算公式为 (13) 式中:n代表样本数量,f(x,y)代表样本中每一点,x是横坐标,y是纵坐标。 均值滤波算法简单,计算速度快,但是在实验中发现,对异常值较为敏感,如出现偏差较大的点使用均值滤波会对它相邻的一些数据产生影响,即均值滤波对噪声抑制效果不好。而后又进行了中值滤波实验,中值滤波方法[7]是对待处理的当前点位,选择一个模板,该模板为其邻近的若干个点位组成,与均值滤波不同的是,对模板的点位由小到大进行排序,再用模板的中值来替代原点位的坐标的方法。中值滤波抑制效果很好,轨迹走势基本保持,对噪声剔除效果明显。优化前的和优化后线路对比如图4。 a)噪声优化前效果图 b)噪声优化后效果图 在进行数据绘制时,实践发现有的点在地图上但不在轨迹上,也不在道路上,结果显然不够理想,为了实现坐标的吸附[8],参考了大量的匹配算法,对比实验结果,最终采用了坐标点匹配地图的方法[9],决定采用从周围存在的路中找到该点对于每个路线段的垂线在该路网线段的垂足,并计算垂足到该点的距离。找出最近的距离的垂足作为该点绑路的点,垂足坐标如 (14) 式中:(x1,y1),(x2,y2)是路网上的点,(xi,yi)是要判断的点,y坐标和x坐标对称,筛选选数据库小数点后面两位不一样就抛弃,应用匹配算法效果对比图如图5。 a)匹配算法应用前效果 b)匹配算法应用后效果图 系统主要分为了用户端(手机)和管理后台。用户端界面如图6。用户登录企业微信后可以选择班车,在地图定位界面会绘制出该路线车辆的运行轨迹[10],及车辆当前的位置与时速,并定时进行更新,用户可以很方便地查看该线路班车信息。 图6 手机客户端 以现有班车为研究对象,针对班车的连续精确定位进行了深入研究。基于班车连续高精度定位的目标,提出了新型班车实时定位方案,并进行了多线程并发测试。测试结果表明:新的定位方案能大幅降低定位误差,可以在班车运行时间内输出可靠的定位信息,能满足连续高精度的定位需求。这可以极大的解决学校教师人员乘坐班车的问题,方便及时查询车辆的实时位置,减少不必要的等待,满足了教师们的实际需求。3.2 轨迹的平滑算法
3.3 坐标吸附到主干道
3.4 客户端
4 结 语