这是学习时的笔记,包含相关资料链接,有的当时没有细看,记录下来在需要的时候回顾。
有些较混乱的部分,后续会再更新。
欢迎感兴趣的小伙伴一起讨论,跪求大神指点~
需求提要
解决停车位人工监管问题,需要设备得知车位停车信息。目前有许多解决的途径,如地感线圈、红外、超声波、雷达、摄像头、地磁等。考虑了成本、功耗、稳定性、安装难易程度、后期维护等问题,最终选用地磁。
这看起来不是多复杂的问题,但实现过程中仍遇到some troubles。
解决流程
对磁传感器一无所知的情况下,很难直接操刀,因此要先了解一下,磁传感器原理,影响地磁的因素,各因素的影响效应。其次,车体构造对地磁影响,因此要获取尽可能多的不同车型停车过程的地磁变化数据。
磁性及磁传感器
其实我并不是很明白磁传感器内部构造和具体原理,但测试获取一些数据后,数据变化情况不太一致,有的车辆停放后,地磁数据比基线(初始地磁数据)大,有的反而小。因此查看了磁传感器的磁力变化影响原因:
当有外界磁场Ha时,传感器上主磁域方向就会发生变化而不再是初始的方向了,那么磁场方向和电流的夹角θ也会发生变化,夹角变化决定了数据趋势是增还是减。
磁力方向和电流方向夹角
θ-R特性曲线
同时,明白了磁传感器的方向对检测数据的影响,因此,测试时设计试验需注意。
推荐阅读磁力计工作原理
车型差异检测
实测车辆入库出库的地磁数据变化:
(只显示地磁z轴数据。图中x轴表示测试得到的数据点,相关时间与测试时的波特率相关。这部分波特率为119200)
普通电动汽车
三厢电动汽车
普通小轿车
小跑车
还有电动货车,小型公交,高底盘的SUV等,不一一列举。上述已经能看出各个车型的差异了,而且短期的区分度还是很明显的。
方法1
既然区分度如此明显,而且要在单片机上做数据流分析,计算部分越简单越好。因此我采用平均值滤波+阈值+峰谷值差进行判断;无车时用一阶滞后滤波进行基线更新。
滤波降低了突变情况的干扰;
阈值与峰谷值差结合,提取有车进入时的稳定变化特征,检测微小抖动、大抖动,当每个阶段稳定后,判断有车或无车。
简单的算法,理清逻辑后,很容易实现。
推荐阅读
基于磁阻的车辆检测 北京交通
基于地磁的车辆检测 华南理工
实测遇到的问题
-
按大多数论文的说法,基本上认为地球同一个地点的地磁信号不变,可是初期拿到的地磁长时测试数据,效果并不好,一度怀疑是传感器的问题。
室内尽量减少其他干扰后得到的结果,漂移范围上下波动100左右。同样在室外检测了一组数据(夏),数据变化趋势与温度变化趋势有相关性。
如果说车辆长时停放时数据漂移严重,此期间不能进行基线更新,那么以此作为判断出库的标志显然是不明智的。不选用只看峰谷值差来判断车辆出库,是因为,如果中间出现大的影响因子,这里判断出错,那么后续所有判断都会反转,没有良好的监察机制。 (后来更换了一个型号的地磁传感器,效果好的多,室内放置两天,上下波动只有10-20左右)
-
有的车辆完全入库停放后,地磁数据与基线值没有差异。
方法2
匹配:记录入库时的散点(保留入库图像特征),在之后的窗移过程中选取合适的点,当点数足够多时开始匹配,我选用DTW匹配,当匹配到合适的图形时,DTW距离出现局部最小,此时匹配完成,认为车出库。当然实际操作,需要再延时检测一会,确定地磁数据稳定后再决定。
原始数据如图0,记录入库的散点特征如下图1,该部分经过翻转得到,因为入库与出库的特征呈对称分布。最优匹配采集的散点如下图2:
匹配算法部分比较容易实现,主要问题在于处理数据流时的性能优化。需要窗移,因此我选用单链表,减少移动时的操作。
但是每次移动,窗口内的峰谷值都发生变化,为了性能优化,我舍弃了窗口内的最大最小值,只比对每次进入的new value、移出窗口的old value和原最大最小值,如果移除的值是当前的max或min,选用old value->next,由于数据流的连续性,基本保留了数据特征。
优点:不用考虑不同车型和车体结构对地磁影响不同的问题,毕竟做不到各种车型都测一遍。
不用考虑基线漂移问题,因为不管基线飘到哪,车出库都对地磁造成影响,且影响效应基本相同。
缺点:驾驶人的行为问题,多次入库或多次出库都会对匹配造成影响。不过可以用逻辑尽量规避。
可能产生局部最优图形,造成的匹配失误。
(若非特别声明,文章是Vanessa的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除)