news 2026/9/9 20:19:25

RuView 持久身份跟踪设计:ADR-307 隐私优先的跨域概率轨迹方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RuView 持久身份跟踪设计:ADR-307 隐私优先的跨域概率轨迹方案

RuView 持久身份跟踪设计:ADR-307 隐私优先的跨域概率轨迹方案

【免费下载链接】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

导读

本文基于 RuView 感知子层(ADR-300)体系中的 ADR-307《Persistent identity & tracking》,剖析"持久身份与跟踪"原语(primitive #7)的设计骨架:如何在无摄像头、无姓名/账号/手机号等公民身份的前提下,跨无线信号(radios)、跨传感模态、跨房间表达"person_7 从厨房走到走廊再走进卧室"这种持久伪匿名轨迹。你将理解现有多目标跟踪器(MAT 的SurvivorTracker)的复用边界、概率关联与衰减失效设计、基于本体图的空间拓扑约束,以及"低关联是隐私安全失败模式"这一关键取舍在代码结构中的落点。

说明:本文属架构决策记录的工程解读,重点是还原 ADR-307 的决策逻辑并对照仓库中已存在的跟踪代码与本体类型验证其可行性;文中不声称任何跟踪准确率数字(ADR-307 亦明确不主张任何精度指标)。


一、背景:为什么需要"持久身份",而不是"临时目标"

1.1 产品需求与硬约束

RuView 面向的是把普通 WiFi 信号变成实时空间智能的感知系统(ADR-282 确立了无摄像头定位)。但在家庭自动化、跌倒告警、存在检测等场景中,仅仅回答"现在有人"是不够的,还需要回答**"这一个人"随时间去了哪里**:

"person_7 进了厨房,然后到走廊,最后进了卧室。"

这要求系统跨无线电、跨模态、跨房间、跨时间地对持久实体进行推理。与此同时存在一条硬约束:绝不能建立公民身份。持久伪匿名轨迹永远不能变成——也不能被联接成——真实世界的具名个体。ADR-307 明确写道,这是一条"通过构造来强制(by construction)"的隐私属性,而不是写在脚注里的策略。

1.2 在 ADR-300 DAG 中的位置

ADR-307 是 ADR-300 感知子层程序(phase-2 21 原语规划)的子决策,属于phase 2原语,坐落在 phase 1 脊柱之上:

  • 消费 ADR-306 本体:产出并更新该本体定义的TrackPerson节点类型;
  • 依赖 ADR-305 认证身份:它关联的观测必须具有可验证的起源(RF 溯源链);
  • 输出受治理的Event:这些事件由 ADR-318(能力证书)认证、ADR-319(见证链)见证。

值得注意的仓库现状:ADR-306 描述的世界图本体在当前工作树中由 v2/crates/ruview-ontology 承载。该 crate 已定义PersonTrackSensorObservationEventZone等节点类型与Located边,其中:

  • entity.rs 定义Person { id: PersonId, ... }Track { id: TrackId, person: Option<PersonId>, ... }Track的注释直接写明它是"ADR-307 持久轨迹,可选地解析为Person";
  • id.rs 定义PersonId(前缀person)与TrackId(前缀track),后者注释同样指向 ADR-307;
  • graph.rs 提供以PersonId/TrackId为键的有序映射与add_person/add_track等图写入口。

也就是说,ADR-307 所约定的"Person作为持久实体、Track作为其时间片段"这一契约,在本体 crate 中已有类型化占位,是后续 phase-2 跟踪层的落点。


二、已存在的基座:wifi-densepose-mat跟踪子系统

ADR-307 反复强调一句原则:复用并扩展已有脚手架,而不是推倒重建。现成的基座位于 v2/crates/wifi-densepose-mat/src/tracking,该模块由四个协作部件构成(见 mod.rs 的模块文档):

部件职责关键 API
SurvivorTracker聚合根,协调预测/关联/再识别/生命周期update(observations, dt_secs) -> AssociationResult
TrackedSurvivor一条被跟踪实体及其全部状态id / survivor / kalman / fingerprint / lifecycle
TrackId稳定轨迹标识,UUID 支撑new()as_uuid()
TrackLifecycle/TrackState生命周期状态机hit / miss / rescue / check_lost_expiry / can_reidentify
KalmanState恒速 3D 位置滤波器predict / update / mahalanobis_distance_sq / position_uncertainty
CsiFingerprint体征+位置指纹,用于信号丢失后再识别from_vitals / update_from_vitals / distance / matches
TrackerConfig跟踪器行为参数见下表默认值
DetectionObservation单个感知 tick 的一条检测position / vital_signs / confidence / zone_id
AssociationResult一次 tick 的结果摘要matched / born / lost / reidentified / terminated / rescued

模块文档给出了最小调用示例:

use wifi_densepose_mat::tracking::{SurvivorTracker, TrackerConfig, DetectionObservation}; let mut tracker = SurvivorTracker::with_defaults(); let observations = vec![]; // DetectionObservation instances from sensing pipeline let result = tracker.update(observations, 0.5); // dt = 0.5s (2 Hz) println!("Active survivors: {}", tracker.active_count());

2.1 生命周期状态机与配置参数

lifecycle.rs 定义了五态生命周期:Tentative → Active → Lost → Terminated(另有操作员确认的终态Rescued)。其行为完全由TrackerConfig驱动,各字段默认值如下:

参数类型默认值语义
birth_hits_requiredu322连续命中达到该次数,Tentative才晋升Active
max_active_missesu323Active连续丢帧达到该次数转入Lost
max_lost_age_secsf6430.0Lost可被再识别的窗口(秒)
reid_thresholdf320.35指纹再识别距离阈值(≈典型室内匹配经验值)
gate_mahalanobis_sqf649.0数据关联的马氏距离²门限,9.0 ≈ 3D 中的 3σ
obs_noise_varf642.25卡尔曼量测噪声方差 σ²_obs(m²,即 1.5 m)²
process_noise_varf640.01卡尔曼过程噪声方差 σ²_a((m/s²)²)

测试用例完整覆盖了各转移路径:test_tentative_confirmation(2 次命中晋升)、test_tentative_miss_terminates(Tentative 一次 miss 即终止)、test_active_to_lost(3 次 miss 转 Lost)、test_lost_to_active_via_hittest_lost_expirytest_rescue

2.2 核心更新算法:一个 tick 的八步流水

tracker.rs 把update组织为清晰的八步流水:

  1. Kalman 预测:对所有非终态轨道执行kalman.predict(dt_secs)
  2. 门限代价矩阵:轨道 × 观测构造代价矩阵,仅当观测带位置且马氏距离²小于gate_mahalanobis_sq才记入代价,否则记f64::MAX
  3. 指派:目标数 ≤ 10 时用匈牙利(Kuhn–Munkres)最优指派,否则退化为贪心最近邻,见同文件hungarian_assign/greedy_assign; 3b.纯体征匹配:无位置观测且该 zone 恰好只有一个活跃轨道时,用指纹距离做二次关联;
  4. 再识别(Re-ID):未匹配观测与Lost轨道按指纹距离匹配,命中则Lost → Active并回填位置/体征;
  5. 新生(Birth):仍未匹配的观测生成新的Tentative轨道;
  6. 更新:对匹配对做 Kalman 位置更新、体征与指纹 EMA 更新;
  7. 生命周期转移:未匹配的活跃轨道miss(),统计lost_track_ids/terminated_track_ids
  8. 清理:终止超过 60 s 的轨道被移除。

其中第 4 步正是 ADR-307 要"带衰减弱化复用"的再识别表面——当前实现通过lifecycle.can_reidentify(now, max_lost_age_secs)判定 Lost 轨道是否仍在再识别窗口内。

2.3 运动模型:恒速卡尔曼与马氏门限

kalman.rs 实现 3D 恒速模型:状态向量x = [px, py, pz, vx, vy, vz],量测只观测位置(H = [I₃ | 0₃])。两个值得留意的实现细节:

  • 过程噪声矩阵 Q按分段恒加速度离散化构造:Q = σ²·[[dt⁴/4·I₃, dt³/2·I₃],[dt³/2·I₃, dt²·I₃]]
  • 马氏距离²门限mahalanobis_distance_sq(z−Hx)ᵀ·S⁻¹·(z−Hx)S = H·P·Hᵀ + R;当 S 奇异(退化几何)时返回f64::INFINITY,让关联天然拒绝该观测。

position_uncertainty()返回位置协方差前 3×3 块的迹(σ²px+σ²py+σ²pz),作为"位置已知程度"的标量度量——ADR-307 决策中"每次切换都携带置信度"正是建立在这类不确定性量之上。单元测试test_kalman_update_convergestest_mahalanobis_far_observation等验证了收敛性与门限行为。

2.4 外观/指纹通道:CsiFingerprint

fingerprint.rs 把CsiFingerprint定义为"体征+最近位置"的加权组合,用于轨迹连续性判断。距离度量是归一化加权欧氏距离,权重与归一化范围如下:

特征权重归一化范围
呼吸频率0.4030 bpm(典型 0–30 区间)
呼吸幅度0.251.0(已归一化到 [0,1])
心跳频率0.2080 bpm(40–120 跨度);缺失时权重按比例摊给其余特征
位置提示0.1520 m(典型房间尺度)

指纹通过 EMA(alpha = 0.3)随观测滚动更新(update_from_vitals),并记录sample_countdistance < threshold(默认 0.35)即认为"同一个人"。这段代码就是 ADR-307 说"绝不变成长期生物特征模板"的那条指纹通道——它仅携带呼吸/心跳/近距位置这类短时程弱特征。


三、缺口分析:单节点跟踪器做不了什么

ADR-307 指出,已有跟踪器"今天只在节点/房间上下文内推理",缺三样东西:

  1. 跨无线电、跨模态、跨房间的连续性——SurvivorTracker的 zone 概念是单节点/单房间粒度的;
  2. 能扛过轨迹丢失与空间交接的"持久"实体——Lost 轨道 30 s 后即 Terminated(max_lost_age_secs默认值),实体随之消亡;
  3. 显式隐私边界——现有指纹与再识别逻辑没有在 schema 层面杜绝公民身份绑定。

四、候选方案与取舍

方案结论原因
逐房间独立跟踪器,不做跨房身份❌ 拒绝无法表达 "kitchen → hallway → bedroom",实体在每个房间边界丢失
基于强生物特征指纹的全局身份键❌ 拒绝足以跨长间隙再识别的强指纹趋向于公民级生物特征——正是隐私约束所禁止的
概率持久轨迹 + 有界、衰减的伪匿名关联,构建于现有 MAT 跟踪器之上✅ 采纳复用基座、隐私可控、可给出逐交接置信度

五、决策内容:三层设计

ADR-307 的决策是:把wifi-densepose-mat/tracking扩展为跨域持久轨迹层,产出 ADR-306 的Track/Person节点。

5.1 第一层:持久概率实体(Persistent probabilistic entity)

  • 一个持久实体 = 一个伪匿名Person节点,携带稳定合成 ID(如person_7),底层是现有 UUID 支撑的TrackId
  • Person在时间与空间上聚合一条或多条SurvivorTracker轨迹,持有的是概率性连续性信念——关联从不被断言为确定,每次交接都带置信度;
  • 跨越轨迹丢失间隙的连续性复用现有再识别表面(can_reidentifyCsiFingerprintAssociationResult),但新增时间与距离双重衰减的关联先验:"同一实体"的置信度随间隙增大而下降;
  • 有界视界:超过有界视界后放弃关联,铸造新伪名而不是强行合并——低关联(under-linking)是隐私安全的失败模式

这与本体 crate 的类型结构一一对应:Track.person: Option<PersonId>允许一条轨迹"尚未解析到 Person",而多条Track可指向同一个PersonId,正是"聚合多条轨道为一个持久伪名"的图表达。

5.2 第二层:跨无线电 / 跨模态 / 跨房间连续性

  • 关联在 ADR-306 本体图上进行:来自多个SensorObserves边与AdjacentTo/Doorway拓扑约束限定合理的交接(一个人只能移动到相邻空间);
  • 现有mahalanobis_distance_sq门限从"单节点检测"扩展到"跨模态融合观测";
  • 此处融合是轨迹级关联:底层多模态融合(ADR-063 雷达/mmWave、ADR-029 多基地、ADR-311 真实传感器融合)负责供给观测;本 ADR 依赖它们提供原始跨模态证据,不重新实现传感器融合

5.3 第三层:隐私边界(by construction)

三条构造性保证构成隐私边界:

  1. 无公民身份绑定:持久 ID 是合成伪名,类型上不存在任何字段、边或连接键指向姓名、账号、电话、MAC 或其他公民标识符——绑定在 schema 层面不可能发生,而不只是"不被鼓励";
  2. 有界且衰减的CsiFingerprint:指纹仅用于短时程连续性,不作为长期生物模板持久化,且会过期。这让再识别对"同一个人穿过走廊"有用,而在结构上无法回答"这就是上个月来过的同一个人"
  3. 全程证据纪律:每个Track/Person/Event都携带SemanticProvenanceEvidenceLevel(ADR-282 的 L0–L5),遵守 ADR-277/ADR-280 的边缘治理与 ADR-141 证明。伪匿名轨迹仍然是受治理的 P 类数据;跟踪精度是逐领域声明,必须打上 MEASURED/CLAIMED/SYNTHETIC 标签并附复现者——本 ADR 自身不主张任何精度数字

六、后果与权衡

  • RuView 可在保持无摄像头、无公民身份的前提下,为自动化与分析表达持久的跨房间轨迹
  • 隐私安全失败模式是低关联(不确定就铸造新伪名),这会使轨迹在长间隙或稀疏覆盖下碎片化——碎片化伪名是安全的,错误的公民身份合并则不是,这是一个刻意的取舍;
  • 扩展而非分叉现有跟踪器:单房间单无线电部署保持现有行为(一个实体 = 一条轨迹);
  • 跨模态质量依赖 ADR-311/ADR-063/ADR-029 落地;在那之前,连续性以 WiFi 为主,其局限被明说而不隐藏
  • 作为 phase-2 设计意图,本 ADR 会随 ADR-306 本体与 ADR-305 身份脊柱定型而修订。

七、验证与验收路径

ADR-307 的 Validation 章节规划了三类验收:

验证层手段目标
单元测试cargo test -p wifi-densepose-mat衰减关联先验;拓扑约束交接;schema 检查置信度随间隙下降、超视界丢弃并铸造新伪名;非相邻空间无法关联;Person/Track无公民标识字段
集成测试合成多房间多无线电场景脚本化行走 kitchen → hallway → bedroom 得到一个持久伪名且带逐交接置信度;刻意制造的歧义交汇得到两个伪名而非错误合并
证据纪律 + 隐私评审ADR-291 无泄漏协议与证据标签;显式检查清单任何跟踪连续性精度只能按协议与标签报告;pilot 前确认无长期生物特征模板、无公民身份连接路径

可以与之对应的实现侧依据是:当前 tracking crate 的测试已覆盖生命周期转移、Kalman 收敛/门限、指纹自距离/阈值/EMA 更新等原子行为(tracker.rs 的#[cfg(test)]模块、lifecycle.rs、kalman.rs、fingerprint.rs),而"无公民标识字段"的 schema 约束已由 entity.rs 中Person/Track的字段集体现(目前仅含idlocated_inperson、位置与不确定度等空间字段,无任何公民字段)。

结语:给后续实现者的三个抓手

  • 复用点:不要重写跟踪器。SurvivorTracker.update的八步流水、KalmanState的马氏门限、CsiFingerprint的 EMA 指纹就是 phase-2 概率关联的原料;
  • 落点:持久实体写入ruview-ontologyPerson/Track图节点(add_person/add_track),而不是再造 schema;
  • 红线:任何新字段不得引入公民标识连接键;指纹必须保持有界、衰减、可过期;连续性的精度数字只能带 ADR-291 协议与证据标签出现——这条红线是 ADR-307 的全部意义所在。

【免费下载链接】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/9 20:17:34

React Native鸿蒙跨端开发:统一货币与百分比格式化工具实践

前阵子在把项目从 Android/iOS 双端往鸿蒙端迁移时&#xff0c;团队里吵了三次架&#xff0c;核心原因全是“数字显示不一致”&#xff1a;同一个 1234567.8&#xff0c;iOS 上显示1,234,567.80&#xff0c;Android 上显示1,234,567.8&#xff0c;同一个 0.126&#xff0c;有的…

作者头像 李华
网站建设 2026/9/9 20:16:05

【JAVA课程设计/毕业设计】 SpringBoot 框架下校园信息发布平台的设计与实现 基于 SpringBoot+ElementUI 的校园新闻更新系统的设计【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/9 20:15:20

从虚拟偶像事件看软件测试如何防范诱导消费与极端消费

那天下午&#xff0c;测试群里有人甩了一条新闻链接。我没点开&#xff0c;光是标题就让我愣了几秒——虚拟偶像、线下见面、极端个案。群里安静了一会儿&#xff0c;然后有人问了一句让我记到现在的话&#xff1a;"这功能要是咱们测的&#xff0c;能拦住吗&#xff1f;&q…

作者头像 李华
网站建设 2026/9/9 20:15:04

2026年AI写作辅助软件推荐:9款实用AI工具全攻略

一、AI 全面赋能学术写作 人工智能技术正加速渗透至学术研究的各个环节&#xff0c;AI 写作工具在提升论文效率与质量方面展现出强大潜力。从选题策划、内容生成&#xff0c;到语言优化与查重检测&#xff0c;AI 已实现全流程支持。 本文将为您精选 9 款当前市场上实用性强且具…

作者头像 李华
网站建设 2026/9/9 20:14:38

React 列表页返回重复请求?从 useState 到 React Query 的缓存方案

前几天一个做移动端 H5 的同事跑过来问我&#xff1a;HomeList 列表页&#xff0c;从详情页返回时每次都要重新 loading&#xff0c;网络请求一遍遍发。他自己在组件内部用 useState 存了列表&#xff0c;但一离开页面状态就没了&#xff0c;回来又得重新拉一遍。这个场景太典型…

作者头像 李华