传感器网络节点的测距和定位
1.处理器、存储和无线通信技术的不断进步为网络化传感器开辟了新的发展空间,网络化传感器不仅仅是一个简单的传感器,它由处理器、存储器、无线收发机、电池和一组传感器构成,具有传感、计算和通信等多种功能。而且伴随着制造工艺的不断革新,网络化传感器的体积变得越来越小,因此人们形象的称它为“智能尘埃”。由这种“智能尘埃”组成的无线传感网络被广泛的应用到各方面,例如环境监测、军事侦察等。定位问题是传感器网络设计与应用中的一个重要问题。传感器节点的位置信息在传感器网络的协议设计、网络管理、节点间协作、目标跟踪等方面都具有重要的理论和实际意义。
2. 基于测距的定位
2.1 软硬件环境及可行性分析
我们使用的节点是CrossBow公司的MPR400CB,节点上所使用的处理器是ATmega128L。ATmega128L处理器的约为主频 7.4MHz,CPU时钟周期是136ns,另外ATmega128L处理器使用的是精简指令集和流水线技术,大部分指令的执行周期都只占用一个CPU时钟周期,中断的响应周期占4个CPU时钟周期。如果测10cm的距离,声速假设是340m/s,那么则ΔT应该大约为0.294ms;假设每条指令的执行时间都是136ns,那么在ΔT这段时间内节点可以大约执行2161条指令,所以说处理器在处理速度上是足够了。另外处理器中计数器晶振的频率最快可以达到每毫秒7373次,所以计时器也具有足够的精确度用来计时。所以,声波法测距中,计时的环节上不存在问题。
我们所用的传感器板是CrossBow公司的MTS310CA。MTS310CA传感器板上同时集成了蜂鸣器和麦克风。蜂鸣器是一个简单的4KHz压电共鸣器。它的驱动和频率控制电路是内部集成的。对它的操作只需控制开关就行了。MTS310CA传感器板提供了麦克风,有两个主要用途,一个用途是用来做声音的测距,另一个用途是用来录音和测量声音。其中麦克风自带了滤波器和声音解码器,可以用来对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节点开始计时。
1楼
0
0
回复
1.处理器、存储和无线通信技术的不断进步为网络化传感器开辟了新的发展空间,网络化传感器不仅仅是一个简单的传感器,它由处理器、存储器、无线收发机、电池和一组传感器构成,具有传感、计算和通信等多种功能。而且伴随着制造工艺的不断革新,网络化传感器的体积变得越来越小,因此人们形象的称它为“智能尘埃”。由这种“智能尘埃”组成的无线传感网络被广泛的应用到各方面,例如环境监测、军事侦察等。定位问题是传感器网络设计与应用中的一个重要问题。传感器节点的位置信息在传感器网络的协议设计、网络管理、节点间协作、目标跟踪等方面都具有重要的理论和实际意义。
2. 基于测距的定位
2.1 软硬件环境及可行性分析
我们使用的节点是CrossBow公司的MPR400CB,节点上所使用的处理器是ATmega128L。ATmega128L处理器的约为主频 7.4MHz,CPU时钟周期是136ns,另外ATmega128L处理器使用的是精简指令集和流水线技术,大部分指令的执行周期都只占用一个CPU时钟周期,中断的响应周期占4个CPU时钟周期。如果测10cm的距离,声速假设是340m/s,那么则ΔT应该大约为0.294ms;假设每条指令的执行时间都是136ns,那么在ΔT这段时间内节点可以大约执行2161条指令,所以说处理器在处理速度上是足够了。另外处理器中计数器晶振的频率最快可以达到每毫秒7373次,所以计时器也具有足够的精确度用来计时。所以,声波法测距中,计时的环节上不存在问题。
我们所用的传感器板是CrossBow公司的MTS310CA。MTS310CA传感器板上同时集成了蜂鸣器和麦克风。蜂鸣器是一个简单的4KHz压电共鸣器。它的驱动和频率控制电路是内部集成的。对它的操作只需控制开关就行了。MTS310CA传感器板提供了麦克风,有两个主要用途,一个用途是用来做声音的测距,另一个用途是用来录音和测量声音。其中麦克风自带了滤波器和声音解码器,可以用来对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节点开始计时。
-
-
jijun 发表于 2011/9/11 10:52:37
结论2楼 回复本楼
由于在传感器网络中,时间同步是一个需要解决的核心科学问题,同时也是一个难题,而在节点的测距和定位过程中,我们又需要精确的时间同步。采用对特定的声音频率(4kHz蜂鸣器发出的声音)产生中断来判断声音是否到达从而进行测距的方法,我们得出以下几点结论:
l 外界环境对于测距的影响较大,尤其是外界噪声和蜂鸣器发出的声音的回声;
l 当测距较远时,如果是在室内回音对于测距结果影响很大,即使采用最小值滤波法也不会得到稳定的值。为了消除回音的影响,应该将蜂鸣器的发声时间间隔取小,两次发声之间的时间间隔取大,从而消除室内回音影响,在采用上述方法消除回音的影响之后,在长距离的测量中得到稳定而正确的数据;
l 对于距离的分辨率,可以通过改变Listener计时器触发的时间间隔来控制,也就是 call Timer.start2(TIMER_REPEAT,10),将第二个参数的数值变小可以提高,但不能变得太小,太小的话会使其负载增大,反而使测量结果不准确。另外由于麦克风不够灵敏的原因将其值设置得太小对测量结果影响不大。实验表明10厘米的分辨率是一个比较好的取值,而且国外大部分采用声音测距的误差也是10厘米,由于硬件本身的因素,误差无法进一步减小;
l 该方法的定位时间比较长,不如信号强度定位好,适用于节点间相对位置较为稳定或者变化速度不是很快的网络拓扑结构中的定位。
引用 jijun 2011/9/11 10:52:37 发表于2楼的内容