一种低功耗地磁传感器的车辆检测方法与流程

文档序号:18707826发布日期:2019-09-17 23:58阅读:338来源:国知局
一种低功耗地磁传感器的车辆检测方法与流程

本发明涉及车位停车检测技术领域,具体涉及一种低功耗地磁传感器的车辆检测方法。



背景技术:

目前国内对交通信息的检测主要是利用感应线圈检测器来进行的。但由于线圈完好率较低,维护费用较高等,使其安装和维护不尽如人意,从而希望寻找另外一些新的车辆信息检测技术。地磁传感器是一种能动态检测地磁场变化的感应设备。因为体积较小且不易损坏,使用起来具有占用空间小、安装简易、可靠性高等特点,能较好的弥补线圈检测器的不足。

地磁是通过对地球磁场变化的分析来检测机动车辆,当地磁上没有机动车的情况下,地球磁场处于相对稳定的状态,而当机动车辆经过地磁上方时引起地球磁场的变化,从而可以检测到有车。现在市场上的地磁设备主要采用以下几种方法来进行车辆检测:

方法一:进行简单的阈值判断,在地磁设备中预先设定好车辆入位后的磁场变化量(阈值),当地磁设备检测到磁场变化量大于该值即认为有车停入。这种方式实现起来比较简单,但是使用简单的阈值判断很容易受到外部环境和邻近车位的干扰,导致车辆检测的准确率很低。

方法二:针对车辆进出时的地磁变化特征进行分析。地磁设备需要开辟一段内存作为数据窗,然后周期性的对地磁场数据进行采样,将采样数据和车辆进出时的地磁变化特征使用dtw算法进行对比分析,当出现匹配值比较高的图像时认为车辆入库或出库。这种方式检测成功率高,但是运算量非常大,而且需要大量的存储设备来保存各种车辆的出入车位时的图像,所以要借助中高档的mcu来运行这些算法,造价及运行费用都花费很多,而且不同的驾驶员的停车习惯不同,很容易出现匹配失误。

因此,车位停车检测技术领域急需一种低成本、低功耗的地磁传感器的车辆检测算法。



技术实现要素:

有鉴于此,本发明提供的目的是针对现有技术的不足,提供一种低功耗地磁传感器的车辆检测方法,该算法通过单地磁芯片来实现稳定的车辆出入位检测,使用该算法可以有效消除地磁飘移和邻近车位车辆的影响。而且针对错峰停车的路边车位,平常车位上方是正常行驶的汽车的情况,该算法也能很好的进行过滤。

为解决上述技术问题,本发明所采取的技术方案是:

一种低功耗地磁传感器的车辆检测方法,包括地磁传感器和mcu,所述mcu内的算法包括数据输入模块,数据判断模块和结果输出模块,该算法包括如下步骤:

s1、数据输入:数据输入模块从地磁传感器内读取,地磁传感器每次测量可以输出一组xyz三轴的磁场分量;

s2、数据判断:数据判断模块包括基线更新任务子模块、入位检测任务子模块和出位检测任务子模块,针对各个子模块各开辟一段数据窗,在每一组新的测量数据被送入数据判断模块后,会先求出该组数据的偏移量,然后对偏移量进行判断并打上标签后送入数据窗,最后统计数据窗内同一类型标签的数量并且结合当前的工作状态来得到判断结果;

s3、结果输出:结果输出模块将判断的结果进行输出。

进一步的,所述数据输入模块里,每次检测都会连续测量20组数据,然后对这20组数据进行升序排序,排序完成后以变化量为依据进行分组,然后取点数最多的数据分组为有效分组,对该分组内的测量数据做均值滤波,最终将滤波后的数据送入数据判断模块。

进一步的,一次从地磁芯片中读出的20组数据为(x0,y0,z0),(x1,y1,z1)......(x19,y19,z19),将它们按x,y,z三个轴分为三个数组(x0,x1,x2...x19),(y0,y1,y2...y19)和(z0,z1,z2...z19),将(x0,x1,x2...x19)进行升序排序,排序后的数组为(p0,p1,p2...p19),

构造一个结构体t_groupinfo来记录分组的信息:

结构体中的glabel为组号,staidx为分组数据在数组中的起始索引,memnums为分组成员数,

取中间索引处的值p9,并将该分组标记为分组1,阈值delta=p9>>3,定义变量tg1来记录分组1的信息,tg1.glabel=1;

向前搜索,直到搜索到不满足(p9-px)<=delta的位置或搜索到索引0为止,统计满足条件的成员数为mnum1,将x+1赋值给tg1.staidx;

向后搜索,直到搜索到不满足(py-p9)<=delta的位置或搜索到索引19为止,统计满足条件的成员数为mnum2,将mnum1+mnum2赋值给tg1.memnums;

如果x>0,取x索引处的值px,delta=px>>3,往前搜索满足(px-pm)<=delta的成员并记录成员数量,如果搜索到索引0则结束该方向的搜索,否则另起一组按此方式继续往前搜索,直到搜索到索引0为止;

如果y<19,取y索引处的值py,delta=py>>3,往后搜索满足(pn-py)<=delta的成员并记录成员数量,如果搜索到索引19则结束该方向的搜索,否则另起一组按此方式继续往前搜索,直到搜索到索引19为止;

最后比较各组结构体的memnums值,取出memnums最大的组,然后求出该组数据的平均值avg送入数据判断模块,

avg=[p(staidx)+p(staidx+1)+...+p(staidx+memnums)]/memnums,

y轴和z轴与x轴算法相同,最后得到测量数据avgx,avgy,avgz。

进一步的,在基线更新任务中,将地磁场的xyz三轴数据抽象到三维坐标系中进行分析,将基线看成是三维坐标系的坐标原点,将每个轴的数据看成是三维坐标系中相应坐标轴上的分量,基线更新就是重新测量芯片所在处的磁场,对于三维坐标系来说就是重新确定坐标系的原点坐标,系统启动后,数据判断模块首先从数据输入模块中获取一次测量数据avgx、avgy、avgz,并将其作为初始的原点。

进一步的,测得的车辆入位偏移阈值为thin,基线更新偏移阈值为thzero,三轴的偏移阈值为thx、thy、thz;

剧烈偏移的阈值为thmax;

原点坐标为(avgx,avgy,avgz),新测得的数据的坐标为(a,b,c),数据偏移量为vectordelta,

vectordelta=sqrt[(a-avgx)^2+(b-avgy)^2+(c-avgz)^2]。

进一步的,标签分为四种,

第一种标签为还未检测到车辆入位地磁数据发生剧烈偏移的情况;

第二种标签为还未检测到车辆入位,地磁偏移大于车辆入位偏移阈值,即vectordelta>thin,并且输入数据在每个轴上的偏移都要达到一定的值,即同时满足(x-avgx)>thx,(y-avgy)>thy和(z-avgz)>thz;

第三种标签是为了能够较好地检测车辆出位而设计的,它的判定条件和当前的状态有关,在等待车辆入位状态时,标签失效,在已检测到车辆入位且基线更新前,它会检测磁场偏移量是否跌落至阈值thin的32.75%以下,在车辆入位且基线更新后,此时新的原点坐标已经更新成当前芯片所在处的磁场值,此时车辆出位的磁场数据变化刚好是和入位数据变化趋势相反,可以使用标签一和标签二的条件来判断,如果满足标签一或者标签二的条件则为此数据打上标签三;

第四种标签为除上面第一中、第二种标签外并且地磁偏移大于基线更新偏移阈值thzero的情况,即vectordelta>thzero。

进一步的,在基线更新任务子模块,通过对数据窗内的标签四作统计,当标签四的数量达到一定的值(预定值)则清除窗内的标签并且进行一次更新操作,更新采用的是最近几次测量的平均值,且这些值均被判定为标签四,这样可以防止更新发生在磁场突变状态下,导致整个算法的错误。

进一步的,在入位检测任务子模块,如果车辆入位的数据窗被标签一或者标签二填满,则认定为有车入位,在判断到车辆入位后,会持续监测后面的每一次新数据,如果持续一段时间的数据都在预定的幅度内波动则认为停车行为结束,并且进行一次基线更新。

进一步的,出位检测任务子模块中车辆出位的判断分成两种情况,第一种是入位后但是还未进行基线更新前,这时的基线还是车辆入位前的基线,所以只需要判定前期车辆入位时增长的偏移量又下降到了基线附近,即对应标签三中偏移量下降到阈值的32.75%以下;第二种是车辆入位后已经进行了基线更新,此时判定车辆出位直接采用车辆入位时的条件来进行。

以100hz采样频率为例,地磁每隔3s输出20组数据(200ms),地磁端在该采样频率下的工作电流在250~450ua取350ua来计算,地磁消耗的平均电流为(350*0.2)/(3+0.2)+istandby=21.875ua+istandby,istandby为地磁的待机电流,一般在几个微安,所以地磁整体消耗的平均电流小于30ua。mcu端大部分时间都在休眠状态下,主要的工作时间是在地磁数据准备好之后通过int脚唤醒mcu读取数据然后运行计算量很小的车辆检测算法。因此本算法在运行过程中只需要占用极少的cpu资源,在低功耗设计上,可以每隔一段时间采集一次数据送入算法中计算,其余时间系统可以处于完全休眠的状态,非常适合于低成本的地磁车辆检测系统。

附图说明

图1为本发明偏移量进行判断并打上标签后送入数据窗的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图1,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

另外,本发明实施例中若有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。

另外,在本发明中若涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。

本发明提供了一种低功耗地磁传感器的车辆检测方法,包括地磁传感器和mcu,所述mcu内的算法包括数据输入模块,数据判断模块和结果输出模块,该算法包括如下步骤:

s1、数据输入:数据输入模块从地磁传感器内读取,地磁传感器每次测量可以输出一组xyz三轴的磁场分量;

s2、数据判断:数据判断模块包括基线更新任务子模块、入位检测任务子模块和出位检测任务子模块,针对各个子模块各开辟一段数据窗,在每一组新的测量数据被送入数据判断模块后,会先求出该组数据的偏移量,然后对偏移量进行判断并打上标签后送入数据窗,最后统计数据窗内同一类型标签的数量并且结合当前的工作状态来得到判断结果;

s3、结果输出:结果输出模块将判断的结果进行输出。

输入数据从地磁芯片内读取,地磁芯片每次测量可以输出一组xyz三轴的磁场分量。数据输入模块用于给数据判断模块提供准确无误的地磁场数据。在数据输入模块里,每次检测都会连续测量20组数据,然后对这20组数据进行升序排序,排序完成后以变化量为依据进行分组,然后取点数最多的数据分组为有效分组,对该分组内的测量数据做均值滤波,最终将滤波后的数据送入数据判断模块。

在本设计中,地磁采样频率为100hz(建议频率在80hz以上),每次检测会读取20组数据,这20组数据所处的时间跨度为200ms,在这么短的时间内外部磁场环境不会发生或者很难得会发生连续剧烈的变化,所以可以认为本次测量数据中正确的数据占据主要部分。假设一次从地磁芯片中读出的20组数据为(x0,y0,z0),(x1,y1,z1)......(x19,y19,z19),将它们按x,y,z三个轴分为三个数组(x0,x1,x2...x19),(y0,y1,y2...y19)和(z0,z1,z2...z19),下面以x轴为例进行说明,y轴和z轴与x轴相同。将(x0,x1,x2...x19)进行升序排序,因为数据长度不是很长所以采用冒泡排序法即可,假设排序后的数组为(p0,p1,p2...p19)

构造一个结构体t_groupinfo来记录分组的信息:

glabel为组号,staidx为分组数据在数组(排序后的数组)中的起始索引,memnums为分组成员数。

1:取中间索引处的值p9,并将该分组标记为分组1,阈值delta=p9>>3(相当于p9*12.5%),定义变量structt_groupinfotg1来记录分组1的信息,tg1.glabel=1。

2:向前搜索,直到搜索到不满足(p9-px)<=delta的位置或搜索到索引0为止,统计满足条件的成员数为mnum1,将x+1赋值给tg1.staidx。

3:向后搜索,直到搜索到不满足(py-p9)<=delta的位置或搜索到索引19为止,统计满足条件的成员数为mnum2,将mnum1+mnum2赋值给tg1.memnums。

4:如果x>0,取x索引处的值px,delta=px>>3,往前搜索满足(px-pm)<=delta的成员并记录成员数量如果搜索到索引0则结束该方向的搜索,否则另起一组按此方式继续往前搜索直到搜索到索引0为止。

5:如果y<19,取y索引处的值py,delta=py>>3,往后搜索满足(pn-py)<=delta的成员并记录成员数量如果搜索到索引19则结束该方向的搜索,否则另起一组按此方式继续往前搜索直到搜索到索引19为止。

最后比较各组结构体的memnums值,取出memnums最大的组,然后求出该组数据的平均值avg送入数据判断模块。

avg=[p(staidx)+p(staidx+1)+...+p(staidx+memnums)]/memnums。

数据判断模块主要进行三个任务的处理,分别是基线更新任务,入位检测任务,出位检测任务。

在基线更新任务中,将地磁场的xyz三轴数据抽象到三维坐标系中进行分析,将基线看成是三维坐标系的坐标原点,将每个轴的数据看成是三维坐标系中相应坐标轴上的分量,基线更新本质上就是重新测量芯片所在处的磁场(地球磁场和周边其它磁场合成),对于三维坐标系来说就是重新确定坐标系的原点坐标。系统启动后,数据判断模块首先会从数据输入模块中获取一次测量数据(avgx,avgy,avgz)并将其作为初始的原点,之后的原点的跟随会在下述数据窗算法中进行。在以(avgx,avgy,avgz)为原点的坐标系中,后面任意一次测量值(a,b,c)的模值则为地磁场的偏移量p,p^2=(a-avgx)^2+(b-avgy)^2+(c-avgz)^2。

本发明引入了数据窗的概念,针对基线更新和车辆入位出位各开辟了一段数据窗。在每一组新的测量数据被送入数据判断模块后,模块会先求出该组数据的偏移量即相对于原点(avgx,avgy,avgz)的模值),然后对偏移量进行判断并打上标签后送入数据窗,如图1所示。

假设测得的车辆入位偏移阈值为thin,基线更新偏移阈值为thzero,三轴的偏移阈值为thx,thy,thz

假设剧烈偏移的阈值为thmax

假设原点坐标为(avgx,avgy,avgz),新测得的数据的坐标为(a,b,c),数据偏移量为vectordelta

vectordelta=sqrt[(a-avgx)^2+(b-avgy)^2+(c-avgz)^2]。

标签分为四种:

第一种为还未检测到车辆入位地磁数据发生剧烈偏移的情况,这种情况下测量到的偏移量会比正常值大出几十倍甚至是上百倍。当发生这种情况时有可能是地磁位于发送机正下方或者地磁周围出现了强磁性的物体。此时直接给该数据打上标签1。

第二种为还未检测到车辆入位地磁偏移大于车辆入位偏移阈值,即vectordelta>thin并且输入数据在每个轴上的偏移都要达到一定的值,即同时满足(x-avgx)>thx,(y-avgy)>thy和(z-avgz)>thz。设立这个条件是为了避免相邻车位的车辆出入库时对地磁产生的干扰。经过测试发现,某些车型停放在相邻车位时,会引起地磁内某个轴向或者某两个轴向数据的较大偏移,此时剩下的一个或两个轴的数据会维持较稳定的状态,在这种情况下,地磁数据的偏移量仍然能够达到之前所测得的阈值。而在车辆停在地磁正上方时,地磁场的xyz三轴数据都会发生一定的变化。所以在算法内加入了对每个轴向偏移的判定条件,来避免这种邻近车位车辆产生的干扰。

第三种标签是为了能够较好地检测车辆出位而设计的,它的判定条件和当前的状态有关。在等待车辆入位状态时,标签失效。在已检测到车辆入位且基线更新前,它会检测磁场偏移量是否跌落至阈值thin的32.75%以下(通过实际测量得到)。在车辆入位且基线更新后,此时新的原点坐标已经更新成当前芯片所在处的磁场值,此时车辆出位的磁场数据变化刚好是和入位数据变化趋势相反,假设入位是从a->b,则出位为从b->a(中途可能会受到边上车位车辆出入的影响但是变化趋势是不变的),所以可以使用标签一和标签二的条件来判断,如果满足标签一或者标签二的条件则为此数据打上标签三。

第四种标签,第四种标签为除上面第一第二种标签外并且地磁偏移大于基线更新偏移阈值thzero的情况,即vectordelta>thzero。

标签四主要是为基线更新而设置的,在基线更新中除了标签四之外还存在两种特殊的情况是需要额外进行判断处理的,第一种情况为车辆入位后且基线更新前,此时算法会持续监测输出数据的波动,当持续一段时间(取8~16组数据)监测到波动幅度在预定的幅度内则认为车辆已经停稳,此时应该进行一次基线更新。第二种情况为检测到车辆出位后,会取最近几次测量数据的平均值立即进行一次基线更新。

算法的数据判断部分通过将这些标签送入数据窗,然后统计数据窗内同一类型标签的数量并且结合当前的工作状态来得到判断结果并进行相应的处理。

在基线更新部分,由于地球磁场本身会随着时间发生偏移,而且地磁周围的环境也时刻会受到各种铁磁性物质的影响而持续发生变化,为了消除这种变化的影响,必须要让空间坐标系的原点"跟着这些变化走",但是基线更新的速度也不可太快,如果基线的更新速度过快,会导致一些即时消除的变化量(比如马路上正常行驶的汽车)被累加进去从而导致输出错误的结果。在基线更新部分,通过对数据窗内的标签四作统计,当标签四的数量达到一定的值则清除窗内的标签并且进行一次更新操作。更新采用的是最近几次测量的平均值,且这些值均被判定为标签四,这样可以防止更新发生在磁场突变状态下,导致整个算法的错误。

在车辆入位判断部分,如果车辆入位数据窗被标签一或者标签二填满,则认定为有车入位。标签一虽然存在强干扰的情况,但是在非人为情况下,突然出现的固定的强干扰且持续存在的可能性非常小。针对不同司机的停车习惯不同,算法里面做了改良,在判断到车辆入位后,会持续监测后面的每一次新数据,如果持续一段时间的数据都在很窄的幅度内波动则认为停车行为结束,并且进行一次基线更新。这样处理的好处是当遇到车辆第一次未停正然后在车位内慢慢挪正的情况时,这种情况下算法会监测到车辆入位后波动幅度很大,然后会持续等待,直到波动收窄(车辆停稳)后才会将基线更新。如果车辆入位后不进行基线更新,则无法消除车辆停放后旁边车位车辆进出对本车位的影响,而且如果车辆停放时间比较长,地磁本身的漂移也是比较大的。

车辆出位的判断分成了两种情况,第一种是入位后但是还未进行基线更新前。这种情况多见于停车停好后发现两边空间过窄,无法打开车门,此时司机会将车开出车位去寻找其它位置。这时的基线还是车辆入位前的基线,所以只需要判定前期车辆入位时增长的偏移量又下降到了基线附近(对应标签三中偏移量下降到阈值的32.75%以下)。第二种是车辆入位后已经进行了基线更新,此时判定车辆出位可以完全采用车辆入位时的条件来进行。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1