news 2026/9/11 10:32:40

RuView 三维天线布放指南:为什么纯吸顶安装是 WiFi 感知的最差选项(R6.2.1 Fresnel 椭球基准)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RuView 三维天线布放指南:为什么纯吸顶安装是 WiFi 感知的最差选项(R6.2.1 Fresnel 椭球基准)

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-heightwall-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.222ceiling_score = 0.0mixed_score = 0.257mixed_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)
绝对禁止两天线都吸顶安装且没有低位锚点

针对当前安装指南的三条修订建议:

  1. 高度与水平位置同等重要:混合高度比纯桌面高度提升 +15.8 个百分点。
  2. 吸顶不能单独使用:若在多锚点配置中使用吸顶,必须至少保留一个低高度锚点,把 Fresnel 包络拉回到地面层目标。
  3. 床旁感知需要低位锚点: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 直接解锁的能力:

  1. 把安装指南配方从"放对面墙"升级为"在对面墙混合高度放置";
  2. 量化解释了"为什么纯吸顶的 WiFi 感知不工作"——这是 DIY 部署中最常见的错误;
  3. 提供按使用场景(睡眠/坐姿/站立)的高度策略推荐;
  4. 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 10:32:19

xhEditor导入PPT图片自动压缩:老系统性能优化实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 10:32:05

如何用 pykan 快速完成你的第一次 KAN 函数拟合:完整指南

如何用 pykan 快速完成你的第一次 KAN 函数拟合&#xff1a;完整指南 【免费下载链接】pykan Kolmogorov Arnold Networks 项目地址: https://gitcode.com/GitHub_Trending/pyk/pykan pykan 是 Kolmogorov-Arnold Networks&#xff08;KAN&#xff09;的 PyTorch 实现。…

作者头像 李华
网站建设 2026/9/11 10:32:02

让AMD显卡跑CUDA程序:ZLUDA从源码构建到预编译缓存的4步完整指南

让AMD显卡跑CUDA程序&#xff1a;ZLUDA从源码构建到预编译缓存的4步完整指南 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 给NVIDIA显卡编译的程序&#xff0c;换到AMD显卡上就完全跑不起来&#xff0c;这是…

作者头像 李华
网站建设 2026/9/11 10:27:56

Transformers与LoRA微调实战:从迁移学习到Qwen模型落地

1. 迁移学习不是玄学&#xff1a;先把“落地”这件事想清楚 1.1 从预训练到微调&#xff1a;迁移学习的工程化表达 做 NLP 这行超过十年的人&#xff0c;应该都经历过那个“每个任务都要从零开始训练模型”的年代。那时候做个文本分类&#xff0c;你得准备几百万条标注数据&am…

作者头像 李华
网站建设 2026/9/11 10:27:46

NR2047/A-47停产背后的语音芯片代际升级指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华