标题：CC2431
关键词
• CC2430
• CC2431
• ZigBee
• 定位引擎
介绍
该文档描述了CC2431中应用的定位引擎。
CC2431是一个ZigBee片上系统，所以它自然需要在ZigBee网络中使用定位引擎。该手册尽量做到通俗易懂，且不涉及到ZigBee协议层。
这份文档的主要目的是介绍一些定位技术的概况，并提供一些简单应用、开发CC2431定位引擎的注意事项和要点。该文档应当被作为CC2431和CC2430的data sheet的扩展。
定位引擎
CC2431使用的定位算法基于收到的接收信号强度指示（Received SignalStrength Indicator）。RSSI值将随着距离的增加而减小。
  图1：定位判断
图1显示了一个用于定位检测的简单应用系统。“参考结点”是一个安置在已知位置的静态结点。简单的说，这个结点知道并能在其它结点请求时返回它自己的位置。一个参考结点并不需要定位引擎的硬件应用，也不需要负责任何计算。一个“盲结点”是一个由CC2431构成的结点。这个结点将收集所有参考结点对它的请求返回的信息，读出相关的RSSI值，将收集到的数值传输到硬件定位引擎，并在之后读出计算得到的位置并将该位置信息传输给一个控制应用程序。
从参考结点传输给盲结点的数据包内最少要包括相关结点的X、Y坐标。RSSI由接收器，即盲结点进行计算。
定位引擎的主要功能在于定位计算能够在每个盲结点中进行，因此算法是可分散的。这种属性减少了网络传输的数据量，因为只有计算得到的位置信息被传输，而不是所有用于计算的数据。
二维坐标被用来在地图上准确标注自然环境中的每个位置。这些方向将如下面所示被X、Y代表。在所有的数据中X用于定义水平方向，Y用于定义竖直方向。CC2431定位系统只能够处理两个纬度，但有可能在软件中实现对第三维的处理（例如代表建筑物中的楼层数）。点(X,Y)=(0,0)被放置在坐标网络的左上角。3.1 结点类型3.11 参考结点一个静止不动的结点被叫做参考结点。这个结点必须设置反映物理位置的X、Y坐标值。
参考结点的主要任务是提供一个包括相应盲结点X、Y坐标的“参考”数据包，也称为锚节点。
由于这种结点并不使用硬件定位引擎，所以并不必需使用CC2431。这意味着参考结点可以是CC2430或CC2431。由于CC2430/31是基于同CC2420相同的传输技术，因此甚至一个带有合适的微控器的CC2420都可被用作参考结点。
3.1.2 盲结点 
一个盲结点和离它最近的参考结点通信，收集这里面每个结点的X、Y坐标和RSSI值，并基于定位引擎硬件和输入的坐标值计算出它的位置。之后计算出的位置信息将被发送到控制站。这个控制站可能是一台PC机或是系统中的另一个结点。
盲结点必须使用CC2431。3.2 定位硬件定位引擎使用了一个从软件层看来十分简单的接口，写入坐标，等待计算，并读出计算得到的位置信息。
这节将讨论不同的参数和怎样理解它们。
  图2：定位引擎，输入和输出
 
3.2.1 输入
表1显示了定位硬件的所有必要的输入。所有的数值在本文中将给出详细的介绍。下面是一个简介。
  3.2.2 输出
  
 
接收信号强度指示
当CC2431接收到一个数据包后会自动将RSSI值添加到该数据包中。RSSI值为数据包接收在开始的8个周期中的平均值，用1个字节表示。当一个数据包从CC2431的FIFO中读出时，倒数第二个字节包含RSSI值，这个值在接收到实际数据包的8个符号后测量得到，也可在数据包接收的同时获得。此时RSSI将反映当时接收信号的强度，而不一定是接收到的数据的信号强度，从而增加了大量节点同时使用信道时RSSI值出错的可能性。
CC2430/31包含一个RSSI寄存器，此寄存器保留与上述相同的值，但因为接受数据包的时候它并不锁定，所以寄存器值不能用于进一步的计算。只有与接收到的数据相关的被锁定的RSSI值才能认为是接收数据时获得的正确RSSI测量值。4.1 偏移量如上所述的RSSI值被声明为有符合二进制补码。这个值不能被读成或解释成接受到的信号强度。要转换成实际的接受信号强度值，必须加上一个偏移量。在data sheet（数据手册）中给出的偏移量的近似值是-45，更准确的说它依赖于实际的天线配置。4.2 线性TI实验室的通过测量研究，表明了芯片的RSSI测量值与信号输入功率近似线性。这个线性曲线在CC2430的数据手册中作为输入功率/RSSI图给出。
  4.3信号传播理论接收信号强度是传输功率和传输距离（收发者之间的距离）的函数。
接受信号强度会随距离的增加按如下等式递减：
  式中：
n：信号传播常数，也叫传播系数。
d：与发送者的距离。
A：距发送者一米时的信号强度。
有关n和A的更深入的讨论在第5章中。
 4.4 RSSI—实际考虑4.3节给出了RSSI的理论表达式。本节将讨论如何在现实世界中测量RSSI值。当使用理想公式计算信号强度时非常简单，但要使用真实值时需要考虑那些不确定因素。大多数不确定性是由硬件造成的，但是要用软件处理的方法来增加精确度。在本节中提供的方法的一个主要目标是：以最可行的方式获得与距离相关的信号强度值。
4.4.1 RSSI的简单滤波法有很多滤波器可用于平滑RSSI值，其中最常用的是简单平均和反馈滤波器。简单平均滤波器是最基本的，但它需要发送很多数据包。反馈滤波器仅把部分最近接收到的RSSI值用于计算。它需要比较少的数据，但却加大了新位置定位计算的时延。
通过每次从各个参考节点接收到的数据包，RSSI平均值按公式1计算：
  如果想得到滤波近似值的话，可以使用公式2。
在此式中，变量a的典型值是0.75或更大些。这种方法可以确保大差异的RSSI值被平滑掉。当盲节点移动比较快时不建议使用此方法。
4.4.2 RSSI的计算值与测量值的比较
从左到右分别是RSSI的理论值，慢速变化单元，快速变化单元，例如多径效应。最右边的轮廓最接近实际值。注意这些图并不是实际测量的值，而是象征性的说明使用RSSI值来计算位置时会遇到的问题。
不同参数的影响
Cc2431使用的计算位置的定位引擎需要两个参数。它们就是“A”和“n”，将在下面进行讨论。
本节的例子都是引用的实际试验的数据。实验中使用了八个节点，放置在了下面所示的位置上。盲节点放置在参考节点网络的中心区，表中给出了它在在典型位置上的RSSI值。
  例中的0，3，4，7节点等距离的放在盲节点周围。1，2，5，6节点也是等距离的放置的，只不过更近一些。图中所示的值并不直接的代表测量值。
  5.1 A（一米处的RSSI值）A，是一个经验参数，可以通过测量距离发送者1米处的RSSI值得到。
5.1.1 测量A  理论上A的值在各个方向上应该是一致的。但是由于发射者和接收者的天线的各向性，使它的值并不可能一致，因此要使用平均值。
图9描述了距发射者1米处的RSSI的典型值。它显示了在图8的P0，P1，P2和P3位置上的测量值。从图中得到的结论是天线是各向性的，因此要使用A的平均值。本实验中使用的设备的平均值近似于-46，这些测量值的结论就是RSSI_OFFSET=-45。
   
5.1.2 A 与计算位置的比较下图展示了参数A的误差对盲节点位置计算的影响。它没有给出A的使用值。蓝点表明盲节点按不同的A值而得到的位置结果，由此可以看出X和Y的最大相关误差。A取值于45到49之间已经可以很好的满足一般的室内环境的精度要求。本例中盲节点放置在（22，26）的位置上，A取值45和49之间的数，计算得到的位置近似为（22，28。
  5.2 N—信号传播系数N是用来描述信号强度随距离增加而递减的参量。N的值依赖具体的环境，比如一堵厚墙会很大的影响其取值。只能通过经验来判断其值。
CC2431的定位引擎并不直接使用N的值，而使用n_index来替代。N和n_index之间的关系如下表所示。这个转换表的使用降低了实际硬件的执行复杂度。
  由表4可以看出N可以在1.0~8.0之间取值。
  图11给出了在给定的以米为单位的距离上，不同的N值对RSSI理论值的影响。N应该尽可能的适用于具体的环境。
5.2.1 测量n它是一直在变化的，对于所有的环境来说，找到一个最优的缺省值也不是不可能的。最简单的方法是先放置好所有的参考节点，然后尝试用不同的n_index值以找到最适合这个具体环境的值。
根据经验来说，使用15~25之间的值时的结果都很好。5.3 参考节点数一个经验法则是，使用尽可能多的节点。至少要使用三个。如果节点太少，每个节点的影响都很高，一个不正确的RSSI值就会很大程度上影响位置的计算。不正确的RSSI值在本文中是指与理论值不匹配，比如由于类似多径效应或信号被墙阻碍等等所引起的误差。
如果盲节点放置在参考节点网络之外的位置上，那么得到的计算结果将会极大的偏离实际位置。所以不建议跟踪网格之外的对象。
软件算法
一些通常的算法可以在软件中实现，下面将会细致的描述它们。请注意，本应用指南中并不描述任何网络拓扑应用的细节问题。6.1选择最好的参考节点定位计算应该使用“最优”参考节点，即使用具有最高RSSI值的8个参考节点。其他节点都应放弃。如果得不到8个节点，则应该使用尽可能多的节点。6.2扩展覆盖区定位引擎可以处理最高达64 m的X、Y值，对实际应用来说这个区域太小，因此扩展区域非常必要。这可以通过简单的软件预处理算法得到，例如每个节点用2个字节的X、Y代表。因为精度为0.25 m，从而最大范围为16384 m(2^14=16384)。
  图12给出了一个定位算法的示例，在X、Y方向上每隔30 m放置一个参考节点，图中浅绿色节点为盲节点，其他节点为参考节点。
第1步，确定具有最高RSSI值的一个节点，并计算把它映射到64 m×64 m范围的正方形中心的偏移值。由于已知来自此节点的RSSI值，所以到此节点的距离很容易得到。盲节点必须放置在图12的白色圆环内。
第2步，确定除“最强”节点之外的其他使用节点，即图中黑色节点。所有节点用第1步中的偏移值进行修正。
第3步，所有获得值送人定位引擎并读出结果位置。
最后一步，将补偿值添加到计算位置中。完成这些计算之后，盲节点在全局网格中的位置就确定了。6.3 多层说明定位引擎得到的只是二维坐标，如何区分不同的水平面，就只能通过软件方法处理。例如，可以首先确定最近的参考节点并读出此节点的水平值。这个水平值被假定为盲节点所在的层，之后盲节点要保证只有同层节点被输入到定位引擎当中。水平层用一个字节Z来表示，则可以区分256个不同的层。
假设盲节点在同一层的接收到的信号强度大于从其他层节点的。这意味着参考节点的密度会非常高。这并不是说从同一层参考节点接收到的信号强度都大于其他层的。