RuView ADR-113 多静态天线布放决策矩阵:把 9 个 R6 研究 Tick 收敛为一套可部署的部署规格
本篇以 RuView 的 SOTA 研究循环记录 tick-31 为主体,完整解析其核心产出——ADR-113 多静态(multistatic)锚点布放策略。读完本文,你将掌握 RuView 多静态 CSI 感知的“4 轴决策矩阵”(维度 × 区域模式 × 人数 × 认知功能 cog)、7 条绑定布放规则、每个 cog 的自动配置参数,以及底层 Fresnel 菲涅尔搜索参考实现与可复现的基准数据位置。
背景:布放问题为什么必须量化
ADR-029(RuvSense 多静态感知模式) 引入了多锚点 CSI 感知,但没有回答三个关键工程问题:需要多少个锚点、锚点放在哪里、布放方案如何随目标 cog(presence、person-count、pose、vital-signs 等)变化。2026-05-22 的 SOTA 研究循环在 R6 家族中产出了 9 个连续 tick 的物理推导与 NumPy 仿真,逐轴回答了这些问题:
- R6 / R6.1:Fresnel 正向模型(单散射体 + 多散射体)
- R6.2:2D 单对天线布放搜索——实测最优布放比随机中位数好 93 倍
- R6.2.1:3D 布放——天花板单点安装彻底失效(0% 覆盖)
- R6.2.2:2D N 锚点饱和曲线,拐点在 N=5
- R6.2.2.1:3D N 锚点——2D 的拐点在 3D 中不成立
- R6.2.3:胸部中心(chest-centric)区域——对 vital-signs 有 +27 pp 覆盖增益
- R6.2.4:3D + 胸部组合——拐点在 N=6,且不需要天花板锚点
- R6.2.5:多目标并集——N=5 在 1-4 人时达到 100% 覆盖
ADR-113 把上述 9 个 tick 收敛为一份按 维度 × 区域模式 × 人数 × cog 参数化的布放规格。tick-31 的结论是:这是该研究循环中“最具落地整合价值(most ship-relevant integrative)”的产出,因为它把物理学家才能解读的 9 份仿真报告压缩成非物理背景的安装工程师可以直接查表的矩阵。
4 轴决策矩阵:布放问题的完整答案
ADR-113 的绑定决策矩阵如下(完整继承自 tick-31 与 ADR-113):
| Cog | 维度 | 区域模式 | 人数 | 推荐 N | 锚点高度 | 预期覆盖 |
|---|---|---|---|---|---|---|
| Presence(在场) | 2D | body | 1 | 3 | 墙面 0.8 m | 63% |
| Person count(人数统计) | 2D | body | 1-4 | 4 | 墙面混合高度 | 86% |
| Pose(姿态估计) | 2D | body | 1-2 | 5 | 墙面 0.8/1.5 m 混合 | 97% |
| Vital signs(生命体征) | 2D | chest | 1-4 | 5 | 墙面 0.8/1.5 m | 100% |
| Pose(姿态估计) | 3D | body | 1-2 | 7-8 | 混合 0.8/1.5/2.4 m | 65%+ |
| Vital signs(3D) | 3D | chest | 1-4 | 6 | 墙面 0.8/1.5 m,不用天花板 | 82% |
| 船舱(maritime cabin) | 2D | chest | 1-3 | 4 | 低处(0.5-0.8 m) | 80%+ |
| 野生动物(wildlife) | 1D | linear | 1-5 | 4 | 树装混合高度 | 70%+ |
矩阵背后的物理直觉来自 R6.2 的基准实验(详见 R6_2 研究文档):2.4 GHz 下波长 λ = 12.5 cm,第一菲涅尔区在 2D 中是一个椭圆,半短轴约 b ≈ √(d·λ)/2。5 m 链路的中点处包络宽约 39.5 cm,而对角穿过房间的 6.1 m 链路则有 43.7 cm——链路越长,菲涅尔包络越宽,覆盖的空间越多(在链路预算允许范围内)。R6.2 在 5×5 m 卧室中评估了 2,900 个天线对,最优布放(对角贯穿床区与椅区)总覆盖 51.1%,而随机中位数只有 0.5%,最差 0.0%——这就是 ADR-113 拒绝“ADR-029 对布放保持沉默”这一替代方案的原因:沉默等价于 93 倍的隐式覆盖损失。
七条绑定规则
从 R6 家族提炼出的 7 条规则是矩阵每一行的依据,安装与调优时应逐条对照:
- 天花板单点安装必然失败(R6.2.1):当天线都位于天花板高度时,菲涅尔包络也悬在天花板高度,永远够不到地面层的目标区域。必须至少包含一个低高度锚点。
- 3D 中垂直链路多样性获胜(R6.2.1):不同高度的对角链路(如 0.8 m → 1.5 m)会让椭球体倾斜穿过多个高度层。
- 锚点高度应与目标区域高度匹配(R6.2.4):z=0.3-1.5 m 的胸部区域不会从 z=2.4 m 的天花板锚点受益;全身体覆盖则需要。
- 生命体征场景下胸部中心优于全身体(R6.2.3):更小、针对人体的区域在 N=5 时带来 +27 pp 覆盖增益。
- 多目标并集才是家庭场景的正确目标(R6.2.5):单目标优化扩展到 4 人时损失 29 pp;多目标联合优化保持 100%。
- N=5 是消费级推荐值(R6.2.2 + R6.2.5):2D 胸部中心多目标的饱和拐点,超过 N=5 后边际增益不足 1 pp。
- 目标区域不要放在视距(LOS)连线上(R6.1):对 LOS 上的散射体,路径差随偏移量是二阶小量,呼吸运动几乎不改变路径长度;真实安装要求目标主体偏离 LOS。
参考实现:贪心 + 重启搜索的覆盖率计算
矩阵中的每个数值都由纯 NumPy 参考脚本生成,位于 examples/research-sota/02-placement/,共 7 个脚本逐一回答布放问题的一个轴:
| 脚本 | 研究轴 | 关键结论 |
|---|---|---|
r6_2_antenna_placement.py |
2D 单对 | 最优比随机中位数好 93×,对角贯穿最优 |
r6_2_1_3d_placement.py |
3D 单对 | 天花板单点安装 0% 覆盖 |
r6_2_2_multistatic_placement.py |
2D N 锚点 | N=5 拐点(96.8% body 区域覆盖) |
r6_2_2_1_3d_multistatic.py |
3D N 锚点 | 2D 拐点在 3D 消失(N=5 仅 49%) |
r6_2_3_chest_centric.py |
2D 胸部中心 | +27 pp 覆盖增益(vital-signs cog) |
r6_2_4_3d_chest_multistatic.py |
3D 胸部中心 | N=5 恢复 77%,N=6 达 82% |
r6_2_5_multi_subject.py |
多目标并集 | N=5 对 1-4 人达成 100% 覆盖 |
以 r6_2_2_multistatic_placement.py 为例,其核心算法结构是:
- 覆盖判据:点 (x, y) 在第一菲涅尔区内当且仅当
|Tx-x| + |x-Rx| ≤ d + λ/2(in_first_fresnel,源码第 35-40 行);N 个锚点产生 C(N,2) 条成对链路,任一条覆盖即计为覆盖(union_coverage)。 - 搜索策略:由于完整组合搜索 O(M^N) 不可行(墙周 25 cm 步长下候选点约 100 个),采用贪心——每步加入使边际覆盖最大的候选锚点——并以 K 次随机初始对重启来逃离局部极小值(
greedy_search,默认 4-8 次重启)。 - 候选点集:仅沿四面墙周边枚举(
candidate_positions),对应墙装天线的实际安装约束。
R6_2_2 的结果文件 记录了 5×5 m 房间、2.4 GHz、bed/chair/desk 三个目标区下的完整饱和曲线:N=2 覆盖 35.7% → N=3 达 63.4% → N=4 达 86.2% → N=5 达 96.8% → N=6 起 100%。边际增益序列(+27.6 pp、+22.8 pp、+10.6 pp、+3.2 pp、+0)直接印证了规则 6 中“拐点在 N=5”的判断。同样的分析模式贯穿整个 R6.2 家族——每份 *_results.json 都包含锚点坐标、覆盖率和边际增益,可直接复现矩阵中任一数值。
多目标并集:家庭场景的 100% 覆盖
R6.2.5 研究文档 把单个胸部位置推广为多个预期占位区域的并集,结果是整个矩阵中最“可出货”的一行:
| 场景 | 区域数 | 总面积 | N=5 覆盖 |
|---|---|---|---|
| 1 人(椅) | 1 | 0.16 m² | 100% |
| 2 人(椅 + 床) | 2 | 0.40 m² | 100% |
| 3 人(椅 + 床 + 桌) | 3 | 0.48 m² | 100% |
| 4 人(+ 第二把椅) | 4 | 0.64 m² | 100% |
对照实验还证明 CLI 必须支持多个 --target 参数并对并集优化,而不是选一个代表区域碰运气:单目标优化放到 4 区域目标上只有 70.6% 覆盖,多目标联合优化则保持 100%(+29.4 pp)。几何原因也直观:40×40 cm 的胸部区域可以塞进单个约 40 cm 宽的菲涅尔椭球体内,N=4 锚点产生的 6 条成对链路就足以无浪费地覆盖 4 个不相交的小区域。
Per-cog 自动配置
产品化的关键是用一个 --cog 标志吸收“该查矩阵哪一行”的复杂度。各 cog 到矩阵行的映射(完整继承自 tick-31 与 ADR-113):
| Cog | 区域模式 | N |
|---|---|---|
| cog-presence | body | 3 |
| cog-person-count | body | 4 |
| cog-pose-estimation | body | 5/7(2D/3D) |
| cog-vital-signs | chest | 5/6(2D/3D) |
| cog-breathing | chest | 5/6 |
| cog-heart-rate | chest | 5/6 |
| cog-intruder | body | 5 |
| cog-maritime-watch | chest | 4 |
| cog-wildlife | linear | 4 |
注意 vital-signs 家族(cog-vital-signs / cog-breathing / cog-heart-rate)统一走胸部中心模式,而 3D 姿态估计(body)需要 7-8 个锚点且覆盖只有 65%+——ADR-113 明确承认 3D body-centric 目前没有架构级解法,胸部中心只是 vital-signs 的绕行方案,3D 姿态估计可能需要另外的方法。
CLI 与 MCP 产品化接口
tick-31 给出的产品化表面包括 CLI 子命令和 MCP 工具两层:
wifi-densepose plan-antennas
--room W H [Z] # 2D 或 3D
--target NAME X Y W H [DX DY DZ] # 可重复
--target-mode {body, chest} # R6.2.3
--freq-ghz F # 2.4, 5.0, 6.0
--n-anchors N # 省略时自动饱和
--restarts K # 默认 4
--cog COG_NAME # 自动选定 target-mode 与 N
R6.2.5 给出的一个可复制的 4 人家庭示例(5×5 m 房间、2.4 GHz):
wifi-densepose plan-antennas \
--room 5 5 \
--target chair_chest 3.7 3.7 0.4 0.4 \
--target bed_chest 2.2 0.8 0.6 0.4 \
--target desk_chest 0.5 2.7 0.4 0.2 \
--target chair2_chest 1.0 4.2 0.4 0.4 \
--freq-ghz 2.4
AI Agent 侧则通过 MCP 工具暴露(对应 ADR-104 的 CLI/MCP 分发面):
ruview_placement_recommend(
room: {width, depth, ceiling?},
targets: [{name, position, size}],
cog: str // 自动配置 target-mode 与 N
) -> {
anchors: [{x, y, z, height_category}],
expected_coverage: float,
placement_rationale: str
}
规模预算:ADR-113 的实现计划约 260 LOC(CLI --cog 分类查找 60、MCP 工具 80、cog manifest 元数据 30、CLI 的 3D 椭球扩展 50、多目标并集 40),加上 R6.2.5 参考实现之上的约 100 LOC 产品化,布放策略产品化总预算约 360 LOC。
诚实范围:矩阵当前的适用前提
tick-31 与 ADR-113 都以“Honest scope”一节明示边界,读者引用矩阵数值时必须附带这些前提:
- 合成物理推导:所有矩阵数值来自 NumPy 仿真而非实测,真实部署可能偏移 ±5-15%;基准验证(bench validation)在记录时仍待完成;
- 单一房间几何基线:仅 5×5 m 卧室 + 4×6 m 客厅级几何;走廊、大客厅、厂房等需要单独基准;
- 5 cm 姿态跟踪噪声假设(R12.1):姿态跟踪退化可能使部分推荐失效;
- 自由空间传播:未建模多径,真实房间通常还叠加 5-15% 的多径覆盖增益;
- 无家具遮挡:沙发、墙体、衣柜均被忽略;
- 贪心 + 4 重启搜索:全局最优可能比报告值高 1-2 pp;
- 未覆盖:生产硬件验证、时变/移动锚点(如扫地机载)、跨房间布放、分频段矩阵(当前全部行基于 2.4 GHz,5 GHz / 6 GHz 的包络宽度不同,最优解可能移动)。
与研究线程和 ADR 链的组合关系
tick-31 记录的是整个 SOTA 循环的收尾节点,其组合关系值得索引:
- R7 mincut:所有多功能 cog 满足 N ≥ 4 的对抗性单链路欺骗防御要求——布放矩阵自动保证了这一点;
- R10 / R11:wildlife 与 maritime 条目进入矩阵;
- R12 PABS / R12.1:布放覆盖率 = 入侵检测灵敏度;
- R14 V1/V2/V3(共情家电):V1 照明(chest 模式 N=5)、V2 HVAC(混合)、V3 注意力(chest 模式)全部被矩阵行覆盖;
- ADR-029:被直接修订(amended)——其留白的“锚点布放”规范即本矩阵;
- ADR-100/103:cog 打包签名与 person-count cog 的 2D body N=4 行映射;
- ADR-105/106/107(联邦学习链):布放质量影响联邦梯度质量(更好的布放 → 更快的 ε 收敛);
- ADR-108/109(PQC 链):保护布放推荐输出的传输安全。
至此 SOTA 循环共产出 9 份 ADR(105-109 + 113,加上循环前已发布的 100/103/104),覆盖隐私 + 联邦 + 溯源 + 布放四条主线。tick-31 同时给出循环的完整产出清单:13 条研究线程(R1、R3、R5-R15)、6 份 ADR、3 类负结果(physics-floor、architecture-error、missing-tool-revisited)、2 次显式自我修正、3 项诚实范围发现、9 tick 的 R6 布放家族、3 tick 的 R3 跨房间重识别弧线,以及 R12 结构检测弧线(负结果 → 正结果 → 闭环)。
在仓库中如何验证本文内容
- 主记录:tick-31(本文主体,分支
research/sota-adr113-multistatic-placement) - 完整 ADR:ADR-113(决策矩阵、替代方案、威胁模型、实现计划)
- 物理基础:R6.2 研究文档、R6.2.5 多目标并集
- 参考实现与可复现数据:02-placement 目录(7 个脚本 + 7 份结果 JSON)
- 相邻线程:R7 多链路一致性、R6.2.1 3D 布放、R6.2.4 3D 胸部多静态
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0631
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
video-shotcraftAI宣传片skill,使用 Remotion 制作电影级产品视频:提供106 张镜头配方卡和可复用的视频魔板。适用于 Claude Code 与 Codex以及所有其他智能体Markdown00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python09
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00