本节摘要:光知道"哪里温度高"还不够,很多应用要的是"哪个方位的哪个节点报警"。GPS 在室内、地下、树冠下常失效且本身耗电,于是有了协作定位。本节区分测距类与范围无关两大类定位,讲清三边定位、RSSI、DV-Hop、布撒与质心定位等主流方法,并用几何示意说明定位精度的代价权衡。
数据省着传回来了,可网关收到的只是无数个节点的读数,若不知道"这条数据来自哪个位置",监测就是"有眼无珠"。这一节解决"节点自己在地图上的哪一格"。
很多 WSN 的坐标诉求很朴素:异常在哪出现、哪个区域的温度趋势糟。GPS 虽然能精确定位,但在 WSN 里常不适用——它需要在开阔天空下工作、耗电偏高、且室内/地下/密林遮挡下直接失灵。要知道"众多无线节点里的定位"是个行业难题,因为普通节点用的是射频信号,而信号强弱与距离并不线性。
测距类(range-based):先估计"我离锚节点/邻居多近",再据此算坐标。典型手段:
范围无关(range-free):不精确测距,只用"我是否在某锚点的覆盖半径内"这类粗信息估算位置。代价小、能耗低,精度粗一些:
测距类贵在硬件或时间能力但准,范围无关便宜省电但粗。选型几乎总要在"精度"与"成本+能耗"之间做取舍。
三边定位是测距派的根基,一句话说清:知道了自己到三个已知锚点的距离,就能以三个锚为圆心、以距离为半径画三个圆,交点即是自己的位置。

图里三个圆画得干净利落,但在真实环境里,受噪声影响这里会是一团模糊的"可行区",需要最大似然等算法来"求最像的点"——定位误差的实质,就是这一团模糊区域的大小。
设想森林火灾监测:卫星定位信号被树冠挡得不行。改用协作定位——少数 GPS 节点(锚点)已知坐标,普通节点用 RSSI + 质心定位估自己的大致位置。平时"大概到几十米精度"就足够报警标出"西南一片区域烟感触发";真要精确到米,再上测距类手段与更多锚点,同时接受额外耗能的代价。先定"够用精度",再谈"多准",是野外定位的默认态度。
⚠️ 常见坑:为了让定位"更准"动辄上高精度测距与大量锚点,结果能耗、成本、复杂度一起涨,可很多应用只需要"够用"的方位。先回答"准到多少米够用",再反推选哪套方案。
测距类听着很美,实际误差源一大片,先认清它们才好判断"该信到哪一步":
RSSI: 多径反射、遮挡、温度 → 同距离信号强弱差异大, 环境一变就漂 TOA: 需精确时钟与同步, 轻微偏差放大成米级误差 AOA: 测向天线对硬件摆放敏感, 金属旁一放就偏 综合: 环境类的误差往往 > 算法本身的误差, 别全赖算法
所以工程里常说"定位精度瓶颈在环境,不在公式"。做方案时,与其升级算法,不如先想办法把环境误差压下去——比如多点采样取均值、避开金属密集区、多设几个锚点。误差管理的优先级,常常是"环境"大于"算法"。
定位的另一面是"锚点贵不贵"。锚点通常要自带更高精度定位能力(往往就是 GPS 或人工标定),一颗锚点比普通节点贵得多,而且布置越多、成本与能耗越高:
锚点少: 便宜, 但覆盖稀疏, 普通节点往往算不准 锚点多: 精度好, 但成本、能耗、维护一起上来 折中: 按"需要多准"反推锚点密度, 别盲目加
这就是为什么野外大网常用"少数锚点 + 范围无关定位"的组合:用最低的成本拿到"够用的几十米",把昂贵的精准留给极少数关键节点。定位的性价比,往往体现在"够用精度"与"锚点投入"之间的平衡点上。
容易被忽视的是定位并非免费。一次测距、一轮广播锚点坐标、交换邻居估计,都要花电:
定位动作: 测距/收发/迭代 → 每回都有一点代价 锚点广播: 周期性广播坐标 → 全网都要接收 策略: 低频定位(隔很久才估一次) + 只在必要时触发, 省下大笔
对固定节点,坐标其实变一次就不太变,完全可以"定位一次、长期使用",只在拓扑大变时才重估。把定位当成"偶尔做一次的手术"而非"时时在做的事",能省下很可观的电。
再看室内(GPS 基本失效),比如仓库货架温度监测。可以用少量有坐标的参考节点做锚,普通节点用 RSSI + 质心定位标注大致的巷道位置。仓库金属货架密集、多径严重,RSSI 会偏,但只要误差控制在"哪个巷道"这一档,应用就能接受——因为业务根本不需要"哪坨货架的第三层"。这个案例再次印证:先定"要准到哪档",再选方案,比追求"技术最优"更省心。
最后把定位放回同伴里看,它跟数据融合、时间同步都紧紧咬合:融合需要知道"哪些读数属于同一个空间位置"(定位给坐标),测距类的 TOA 又要靠时间同步"两个节点同一时刻"(同步给时戳)。所以定位的精度,往往不是定位算法单独能保证的,而是建立在融合与同步都靠谱的基础之上。看懂这三者互为前提,你就不会再把第四章五项技术当成彼此独立的清单,而会理解它们是一套联动的整体。
位置定了,还要对得起"时间"——两路读数要放到同一条时间轴上才有意义。下一节看时间同步。