RuView 三维天线布放指南:为什么纯吸顶安装是 WiFi 感知的最差选项(R6.2.1 Fresnel 椭球基准)
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
本文基于仓库研究文档 R6_2_1-3d-placement.md 展开,结合其基准脚本 r6_2_1_3d_placement.py 与结果文件 r6_2_1_3d_results.json 进行源码级印证。
导读
RuView 用商用 WiFi 信号实现无摄像头的人体感知,而感知质量的第一步不取决于算法,而取决于天线放哪儿。R6.2.1 把 R6.2 的二维 Fresnel 布放分析扩展到三维空间,通过 5×5×2.5 m 卧室基准得出一个反直觉结论:纯吸顶安装的三维覆盖率是 0%,是所有布放策略中最差的一个;而"一低一高"的混合高度布放以 25.7% 的覆盖率胜出。读完本文,你将掌握三维 Fresnel 椭球的物理判定式、四种布放策略的量化对比、按使用场景(睡眠/坐姿/站立)选择天线高度的部署配方,以及这些结论对 RuView 安装指南和 ADR-029 多基站配置的直接影响。
1. 从 2D 到 3D:为什么二维分析会给出错误答案
R6 建立了第一 Fresnel 区前向模型:一条 WiFi 链路的感知灵敏度并非均匀分布,而是集中在一个以 Tx-Rx 连线为轴的椭球包络内——包络内的人体运动会驱动整条 CSI 向量,包络外的人体只能扰动边缘子载波(见 R6-fresnel-forward-model.md)。
R6.2 将其产品化为二维布放工具:在 2D 平面内,第一 Fresnel 区是焦点位于 Tx/Rx 的椭圆,点x位于区内当且仅当|Tx-x| + |x-Rx| ≤ d + λ/2。该工具在 5×5 m 卧室基准上找到的最优对角布放把覆盖率从随机布放的 0.5% 中位数提升到 51.1%,提升约93×(见 R6_2-fresnel-antenna-placement.md)。
但 R6.2 明确承认了自己的局限:"Real Fresnel envelopes are 3D ellipsoids; the 2D model is correct for floor-level scattering (most occupancy) but underestimates ceiling-mounted antennas' coverage of standing occupants"——真实人体在垂直方向上有 0~1.8 m 的分布,而真实 WiFi 节点则可能被装在桌面(0.8 m)、墙面(1.5 m)或天花板(2.5 m)。R6.2.1 正是为了填补这个空缺:用 3D 椭球替换 2D 椭圆,并把天花板/地板安装纳入候选集。
2. 反直觉头条:纯吸顶安装的三维覆盖率为 0%
基准设定为 5×5×2.5 m 卧室,三个高度各异的三维目标区:
| 目标区 | 位置(米) | 高度范围(米) | 物理含义 |
|---|---|---|---|
| bed(床) | (1.5, 0.5)-(3.5, 2.0) | z ∈ [0.3, 0.6] | 平躺入睡 |
| chair(椅) | (3.5, 3.5)-(4.3, 4.3) | z ∈ [0.5, 1.2] | 坐姿工作 |
| standing(站立区) | (0.5, 3.5)-(1.5, 4.5) | z ∈ [1.0, 1.7] | 站立活动 |
对四种布放策略穷举所有候选 Tx-Rx 对(0.5 m 步长、0.1 m 体素分辨率)后,结果如下:
| 策略 | 三维覆盖率 |
|---|---|
| 桌面高度(0.8 m,贴墙) | 22.2% |
| 墙面安装(1.5 m,贴墙) | 17.4% |
| 纯吸顶(2.5 m,全天花板网格) | 0.0% |
| 混合高度(贴墙 + 吸顶,任意高度) | 25.7% ← 最优 |
纯吸顶安装完全失效:其 Fresnel 包络停留在 2.1~2.9 m 的天花板高度,而床(0.3~0.6 m)、椅(0.5~1.2 m)、站立区(1.0~1.7 m)全部在包络之下 0.4~2.0 m,一个都够不着。这是 R6.1 发现的"on-LOS 退化"在三维中的延伸——R6.1 指出目标恰好在 LOS 直线上时信号退化,而 R6.2.1 揭示的是**"on-CEILING 退化"**:任意高度的水平扁平链路都会在垂直维度上屏蔽感知。
3. 背后的物理:三维第一 Fresnel 区是扁长椭球
三维中,第一 Fresnel 区是一个扁长椭球(prolate ellipsoid),焦点位于 Tx 与 Rx,LOS 为长轴。中点处的横向半径为:
r = sqrt(d·λ) / 2对于 5 m 链路、2.4 GHz(λ = 12.5 cm):横向半径 ≈ 39 cm。这是围绕 LOS 线的对称包络。
问题出在吸顶场景:Tx 与 Rx 都在 2.5 m 高度、LOS 水平,Fresnel 包络以 2.5 m 为垂直中心,纵向延伸 2.1~2.9 m。而目标人体位于 0.3~1.7 m,比包络最低点还低 0.4~2.0 m,被完全错过。
点p是否在第一 Fresnel 椭球内,判定式为(与 R6.2 的 2D 公式同构):
|Tx - p| + |p - Rx| <= |Tx - Rx| + λ/2即"到两焦点距离之和不超过直达距离加半个波长"。仓库中的基准脚本 r6_2_1_3d_placement.py 正是用 NumPy 的向量化范数实现这一判定:
def in_first_fresnel_3d(p, tx, rx, wavelength): r1 = np.linalg.norm(p - tx, axis=1) r2 = np.linalg.norm(p - rx, axis=1) direct = np.linalg.norm(tx - rx) return (r1 + r2) <= (direct + wavelength / 2)4. 源码实现:三维布放搜索如何工作
基准脚本 r6_2_1_3d_placement.py 是纯 NumPy 实现,无需仓库其他依赖,可独立复现。其核心流程分四步:
① 定义三维目标区(脚本 L84-L92):每个区域用(name, x0, y0, z0, dx, dy, dz)六元组描述,代表人体躯干占据的立方体:
target_zones = [ ("bed", 1.5, 0.5, 0.3, 2.0, 1.5, 0.3), # 躺姿:低空 ("chair", 3.5, 3.5, 0.5, 0.8, 0.8, 0.7), # 坐姿:中空 ("standing", 0.5, 3.5, 1.0, 1.0, 1.0, 0.7), # 站立:高空 ]② 按策略生成候选天线位(脚本 L114-L135):desk-height与wall-mount只在四面墙生成候选;ceiling在 2.5 m 高度铺满 0.5 m 步长的天花板网格;mixed则同时纳入墙面(0.8/1.5 m)与天花板(2.5 m)三种高度的候选,去重后共 201 个候选位。
③ 穷举 Tx-Rx 对并计算覆盖率(脚本 L144-L168):跳过j <= i的重复对与距离 < 1 m 的过短链路,对每对用 0.1 m 分辨率把目标区栅格化,统计落在椭球内的体素占比:
def coverage_3d(tx, rx, target_zones, wavelength, resolution=0.1): # 每个 zone: xs/ys/zs 栅格 -> meshgrid -> 3D 点云 # mask = in_first_fresnel_3d(pts, tx, rx, wavelength) # per_zone[name]["coverage_fraction"] = mask.mean()④ 汇总四种策略的最优值(脚本 L170-L210),并把结果与头条结论写入 JSON。
4.1 复现基准
cd examples/research-sota/02-placement python3 r6_2_1_3d_placement.py --out r6_2_1_3d_results.json运行后终端会打印每种策略评估的对数(桌面 736 对、墙面 736 对、吸顶 4608 对、混合 19464 对)与最优覆盖率,并把完整结果(房间参数、目标区、每种策略的最优 Tx/Rx 坐标与分区覆盖率、混合方案相对桌面方案的提升百分比)写入 r6_2_1_3d_results.json。结果文件确认了文档头条的所有数字:desk_score = 0.222、ceiling_score = 0.0、mixed_score = 0.257、mixed_lift_over_desk_pct = 15.82。
5. 为什么混合高度胜出:垂直链路多样性
最优混合布放(结果文件中的best_tx/best_rx)为:
- Tx:(5.0, 4.0,0.8) —— 桌面高度
- Rx:(0.0, 4.0,1.5) —— 墙面安装高度
这条链路在 x 方向跨房间对角线,在 z 方向同样是斜的。倾斜的 Fresnel 椭球像一根穿过多层高度的"感知针",把坐姿区(z=0.5~1.2)与站立区(z=1.0~1.7)同时纳入包络(结果文件中两区覆盖率分别为 48.4% 与 44.3%);文档同时指出它还能覆盖床区的一部分。作为对比,桌面高度方案的最优解 (0.5, 0.0, 0.8)-(5.0, 5.0, 0.8) 是水平对角线,床区覆盖 10.4% 而站立区为 0%;墙面高度方案 (0.0, 5.0, 1.5)-(4.5, 0.0, 1.5) 只覆盖站立区 51%,床区与椅区均为 0。
文档给出的核心洞察一句话可概括:
垂直链路多样性是二维分析完全遗漏的关键三维洞察。
这也是 R6.2.1 相对 R6.2 的核心增量:二维分析只优化 x-y 平面,会给出"放在对面墙"这类忽略高度的错误建议;三维分析证明高度与水平位置同等重要。
6. 按使用场景的天线高度部署配方
文档将三维结论整理为可直接照做的部署配方表:
| 使用场景 | 三维布放配方 |
|---|---|
| 单 Tx-Rx 对 | 一低一高:一端桌面高度(约 0.8 m),一端墙面(约 1.5 m),对墙放置 |
| 4 锚点多基站(R6.2.2) | 2 个低角落 + 2 个高对角角落 |
| 5 锚点(R6.2.2 拐点) | 混合 0.8 m / 1.5 m,外加一个 2.5 m 吸顶锚点提供俯视覆盖 |
| 仅床区(睡眠监测) | 两天线都低(0.5~0.8 m),且分置床的两侧 |
| 仅站立区(健身房、厨房) | 两天线都高(1.5 m) |
| 绝对禁止 | 两天线都吸顶安装且没有低位锚点 |
针对当前安装指南的三条修订建议:
- 高度与水平位置同等重要:混合高度比纯桌面高度提升 +15.8 个百分点。
- 吸顶不能单独使用:若在多锚点配置中使用吸顶,必须至少保留一个低高度锚点,把 Fresnel 包络拉回到地面层目标。
- 床旁感知需要低位锚点:0.3~0.6 m 的床只能由低高度链路覆盖,高挂天线会完全错过床区。
这三条应作为**高度配方(height recipes)**与 R6.2 的水平布放配方一同并入安装指南——R6.2 的二维结论单独使用会给出错误指导。
7. 与既有线程/ADR 的组成关系
R6.2.1 不是孤立的基准,它与仓库中的感知研究体系紧密咬合:
- R6.2(二维布放):二维分析完全掩盖了高度问题,单独依赖 R6.2 会给安装者错误指导;R6.2.1 是它的直接三维扩展。
- R6.2.2(N 锚点多基站):N=5 锚点应跨高度分布,而不是集中在同一高度。
- R6.2.2.1(3D 多基站):三维饱和曲线显示"拐点消失",N=5 时三维覆盖率只有二维的一半(49.4% vs 96.8%);其贪心搜索在每个 N 上都偏好"3~5 个低位 + 0~1 个中位 + 1 个高位",从多锚点侧再次印证了 R6.2.1"一低一高"的策略。
- R6.1(多散射体):其人体模型是二维俯视图;三维人体模型(头 z=1.7、胸 z=1.3、腿 z=0.5)能按高度细化各身体部位的贡献估计。
- R14(共情家电):V1 照明(卧室检测睡眠者)需要低位锚点;V3(桌面认知负荷)需要中位高度;布放策略取决于共情家电的具体用例。
- ADR-029(多基站感知模式):锚点数量与布放高度都应成为必需配置参数;其 4 节点 TDMA 网格($73-91 BOM)在三维空间中必须借助本结论决定每个锚点的 (x, y, z)。
8. 诚实的边界:这些数字意味着什么、不意味着什么
文档明确列出了本基准的适用范围,引用时不应越界:
- 覆盖率数字(22%、17%、26%)低于 R6.2 二维的 51%:因为三维目标是体积而非二维的面积。体积覆盖天然更低——三维点必须在三个轴向上都落在椭球内。
- 三个离散高度区是近似:真实房间的人体占用是连续分布(站、坐、躺),三区设置是离散近似。
- 仅单链路对:多锚点三维场景(R6.2.2.1)由于每个锚点椭球在三维中更稀疏,饱和会远早于二维版本。
- 未建模家具遮挡:真实卧室的衣柜会挡住部分 Fresnel 椭球(自由空间假设)。
- 0.1 m 分辨率:更细的分辨率只会微调数字。
- 贪心单对搜索:全局最优可能略高;在该候选规模下暴力穷举是可行的。
9. 能力边界:能做什么、不能做什么
R6.2.1 直接解锁的能力:
- 把安装指南配方从"放对面墙"升级为"在对面墙混合高度放置";
- 量化解释了"为什么纯吸顶的 WiFi 感知不工作"——这是 DIY 部署中最常见的错误;
- 提供按使用场景(睡眠/坐姿/站立)的高度策略推荐;
- 为
wifi-densepose plan-antennas提供一个可加入的--3d三维布放搜索(R6.2 已给出该 CLI 的二维形态,见 R6_2-fresnel-antenna-placement.md 中的--room/--target/--freq-ghz/--step参数用法)。
R6.2.1 不能做到的事:
- 连续占用分布建模(需要姿态轨迹数据,归 R6.2.3);
- 多链路三维联合优化(R6.2.2.1,需与 R6.2.2 在三维中组合);
- 家具/墙体遮挡建模(需要三维射线追踪扩展);
- 逐共情家电的最优布放(需要 V1/V2/V3 的任务特定区域)。
10. 后续工作(R6.2 家族)
- R6.2.2.1:三维多锚点并集覆盖——5 锚点拐点在三维中是否仍然成立?(已完成:拐点消失,见 R6_2_2_1-3d-multistatic.md)
- R6.2.3:胸部中心目标区——R6.1 指出胸部占信号 27.6%,布放应专门瞄准胸部(后续 R6.2.4 把三维多锚点与胸部中心区组合)。
- R6.2 产品化:为 CLI 工具增加
--3d标志。
结论
R6.2.1 用一组可复现的三维基准给出了 RuView 部署者最需要的安装常识:天线高度不是装修细节,而是感知系统的第一决定因素。纯吸顶安装的 0% 覆盖率与混合高度 25.7% 的对比,把"垂直链路多样性"从直觉上升为可量化、可搜索、可写进安装指南的工程指标。无论你部署的是单对链路、ADR-029 的四锚点网格,还是面向 R14 共情家电的场景化感知,R6.2.1 的结论都适用:在对面墙混合高度放置,永远保留至少一个低位锚点——这条配方不需要任何硬件改动,就能让现有安装的感知能力产生数量级差异。
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考