发布日期:2022-05-11 点击率:49
滤波器和声音解码器,可以用来对MTS310CA传感器板上蜂鸣器发出的4kHz的声音进行监听。
节点上运行的操作系统为TinyOS。TinyOS是一种源代码开放的操作系统,是美国加州大学伯克利分校为低功率的嵌入式网络传感器而设计的基于事件驱动的嵌入式操作系统,它以最少的硬件配置支持网络化传感器所需的并发密集操作,是一种微线程、事件触发的操作系统。它保持了网络化传感器所特有的诸多特性,高效的管理硬件系统,同时支持并发密集操作,从某种意义上达到高效的模块化和运行的健壮性。
2.2 算法实现
为了用声波测距且将距离的最小分辨率提高到至少10厘米,我们必须对TinyOS提供的定时器TimerC进行改造。考虑到TinyOS本身的一些其他重要组件,如节点间无线通信模块GenericComm.nc、模数转换器ADCC等都用到了系统提供的TimerC组件。所以我们如果要改造 TimerC,那么在改造的同时还要保证原来的功能不变。另外一种方法是利用处理的另外一个硬件资源,也就是Timer/Counter1,自己编写一个专用的Timer。比较两种方法,前一种在原来的基础上稍加改进节省硬件资源;后一种方法的话比较简单,但专门用了处理器的一个定时计数器只实现一个 Timer,从硬件角度看浪费较大,不过它可以达到很高的计时速度,可以用来进行高频率的采样。
这种方法的基本思想为:Beacon节点以固定的时间间隔先通过无线发射装置向Listener节点发射一条准备测距的消息,其中包含一个时间戳,没法一次准备测距的消息时Beacon节点将时间戳加1。这里Beacon节点是用两个定时器,第一个定时器用来控制向Listener发送准备测距的消息的时间间隔,第二个定时器用来控制蜂鸣器的发声时间。这里两节点通过Beacon使用的SendMsg接口的 SendMsg.sendDone(TOS_MsgPtr sent, result_t success)事件和Listener使用的 ReceiveMsg接口的event TOS_MsgPtr ReceiveMsg.receive(TOS_MsgPtr m)事件达到两节点间的同步。也就是说,对于Beacon来说,当SendMsg的发送完成时即产生SendMsg.sendDone事件,Beacon将蜂鸣器打开一段时间;对 Listener来说当ReceiveMsg产生ReceiveMsg.receive事件时,Listener节点开始计时。
2.3 结果分析
程序在传感器节点上运行,在基站接收到的数据(如图1)是两节点距离20厘米时的测量结果,其中发回基站标出的数值乘以10厘米就是两节点间的实际距离。
图1 基站接收到原始数据
图1中横线的数据表示节点测量到的距离,比例因子是10厘米。从数据流可以看出,测量的结果不稳定,有漂流而且较大。但其中有正确的结果02也就是 20厘米,同样,将两节点的距离放置30厘米、40厘米、50厘米、60厘米、70厘米和80厘米,得到的数据有类似的特点。仔细对声波测距的误差分布图分析后,发现其误差的分布以一种比较随意的分布,不能用我们常用的例如正态分布等分布来对其进行拟合。然而,我们使用一种比较简单的最小值滤波得到了比较好的效果。因为对接收到的数据流仔细观察,虽然在同一距离中测量值偏差的分布没有任何规律,但是从某一宽度的时间窗口,也就是同一距离时连续测到的一组数据(例如连续的10个测量值),内中必有和真实距离相符的正确的测量值,而且在这一组数据中值最小。
由上面分析得到数据的特点我们决定采用最小值滤波法来改进测量,也就是在一组连续的数据(试验中发现10个连续的数据长度是在可以保证数据的正确率大于98%的情况下的最短距离)中找出这些数据中值最小的那个值来代表着一段时间内测距结果。这样两节点的一次测距,通过10对他们的10次连续测距并采用最小滤波得到。不过这种方法的缺点也是比较明显的,也就是增加了节点之间的测距所需要的时间,如果原来是每一秒钟测一次距离,那么用这种算法如果滤波的长度取10的话,变成每10秒钟测一次距离,也就是10秒定一次位。这使测量的实时性降低,为了提高实时性,可以缩短Beacon每次发射准备测距信号的时间间隔,如每100毫秒进行一次,这样就使得同样的算法情况下定位测距的时间缩短到1秒钟一次。
将算法改进,对两节点的一次测距值,通过连续的10测距并采用最小滤波得到。将改进的程序烧上载到传感器节点,将两节点的距离分别放置为10厘米、 20厘米、30厘米……200厘米,观察基站接收到的数据。接收到的数据也就是测量值比较稳定且与两节点之间实际的距离最大误差在正负10厘米之内。
在这里我们使用最小值滤波的原因是,我们对时间的读数总不可能比声音到达的时间快,所以这里用最小的值估计应该是最接近真实值的。
3. 结论
由于在传感器网络中,时间同步是一个需要解决的核心科学问题,同时也是一个难题,而在节点的测距和定位过程中,我们又需要精确的时间同步。采用对特定的声音频率(4kHz蜂鸣器发出的声音)产生中断来判断声音是否到达从而进行测距的方法,我们得出以下几点结论:
l 外界环境对于测距的影响较大,尤其是外界噪声和蜂鸣器发出的声音的回声;
l 当测距较远时,如果是在室内回音对于测距结果影响很大,即使采用最小值滤波法也不会得到稳定的值。为了消除回音的影响,应该将蜂鸣器的发声时间间隔取小,两次发声之间的时间间隔取大,从而消除室内回音影响,在采用上述方法消除回音的影响之后,在长距离的测量中得到稳定而正确的数据;
l 对于距离的分辨率,可以通过改变Listener计时器触发的时间间隔来控制,也就是 call Timer.start2(TIMER_REPEAT,10),将第二个参数的数值变小可以提高,但不能变得太小,太小的话会使其负载增大,反而使测量结果不准确。另外由于麦克风不够灵敏的原因将其值设置得太小对测量结果影响不大。实验表明10厘米的分辨率是一个比较好的取值,而且国外大部分采用声音测距的误差也是10厘米,由于硬件本身的因素,误差无法进一步减小;
l 该方法的定位时间比较长,不如信号强度定位好,适用于节点间相对位置较为稳定或者变化速度不是很快的网络拓扑结构中的定位。
本文作者创新点:通过简单而有效的时间戳来达到近似的时间同步并对测量数据进行最小滤波来实现测距和定位。
参考文献:
[1] Bahl P, Padmanabhan VN. RADAR: An in-building RF-based user location and tracking system. In: Proc. of the IEEE INFOCOM 2000. Vol.2, Tel Aviv: IEEE Computer and Communications Societies, 2000.
[2] Savarese C, Rabaey JM, Beutel J. Locationing in distributed ad-hoc wireless sensor network. In: Proc. of the 2001 IEEE Int’l Conf. on Acoustics, Speech, and Signal. Vol.4, Salt Lake: IEEE Signal Processing Society, 2001.
[3] Doherty L, Pister KSJ, Ghaoui LE. Convex position estimation in wireless sensor networks. In: Proc. of the IEEE INFOCOM 2001. Vol.3, Anchorage: IEEE Computer and Communications Societies, 2001.
[4] Piyush Gupta,P.R.Kumar,The Capacity of Wireless Networks. IEEE Transactions on information theory, 2000,46(2)
[5] 代庆瑜,季振洲. 声音传感器节点的设计. 微计算机信息, 2006, 5-1期, P.146-147
下一篇: PLC、DCS、FCS三大控
上一篇: 索尔维全系列Solef?PV