# 手机端 Atom RGB + ToF + IMU 数据采集 当前“数据采集”使用 Atom 相机、外接 H3 ToF 与 Atom BMI270 IMU,并同时预览三路读数。RGB 原始 JPEG 保存在手机,供后续离线研究使用。“同时记录 IMU”默认开启,选项会记住;也可在开始前关闭,只采 Atom RGB + ToF。此页不调用手机相机。 v10.19.4 试用包在预览下方提供“去畸变”“轻增强”两个开关,默认开启并记住选择;关闭两者可比较原始画面。处理只影响预览,录像和导出继续保留原始 JPEG。去畸变使用此前安装的 Atom 标定,缺失或尺寸不符时显示提示并保留原始视场;校正会裁剪边缘。此轮尚未真机安装,画面对照与验证见[试用记录](../research/active/hardware-bringup/ATOM_PREVIEW_POSTPROCESS_DEV_20261014.md)。 ## 使用 1. 手机、XIAO ToF 与 Atom 加入同一 Wi-Fi,或打开各设备已配置的手机热点。ToF 需要 H3 Wi-Fi 固件的 TCP 3335 完整 CNH 输出;Atom 提供 `http://地址:81/stream` 相机流,开启 IMU 时还需 TCP 3336 的 BMI270 姿态固件。各板固件与凭据完成一次配置后,日常采集不需要电脑,具体切网方式见下文。App 本身不刷固件、不修改网络凭据。 2. 关闭占用 ToF 的电脑预览/采集;H3 固件仅允许一个 TCP 客户端。 3. 在 App 首页进入“数据采集”,点击“自动寻找设备”。找到唯一 H3 ToF 和 Atom 时填写地址并连接;无法唯一确定时手动填写设备地址,再点击“连接 / 重连”。Atom 地址同时用于相机和 IMU。地址随网络变化,原网络中的默认地址不一定适用;显示实际画面与有效读数后才算就绪。 4. 默认等待 RGB、ToF、IMU 三路均就绪后开始;无需 IMU 时先关闭“同时记录 IMU”,等待 RGB、ToF 两路就绪。可填写场景备注,点击“开始采集”。页面显示秒数和各路已保存的有效帧数;点击“停止并保存”结束本段,再开始下一段。 5. 在已保存列表点击“导出 ZIP”,使用系统文件选择器保存到手机文件夹。v10.18.0 起导出由独立任务执行,离开页面后继续;返回采集页可查看进度、取消或在失败后重新选择位置导出。允许通知后可从通知栏查看进度和取消,再通过 USB、网盘或其他自行选择的方式转移。 顶部同屏显示 Atom 画面、8×8 ToF 距离网格、IMU 俯角/横滚与加速度/陀螺仪读数。无效 ToF 格子不显示距离;输入过期后预览清空。沿用当前支架的 RGB 顺时针 90°、水平镜像和 ToF 180°显示映射,只改变预览,不改变保存的原始数据。IMU 读数是 BMI270 原生轴,手机不施加人工 ToF 安装零点。 v10.16.2 将相机解码、读数刷新、连接和停止分别放到后台工作队列。相机预览只取最新帧,避免排队增加显示延迟;原始记录仍逐帧保存,预览取最新帧不改变已接收数据的保存规则。文件流复用后仍逐条同步落盘;已结束会话优先读取保存计数,损坏或旧记录继续扫描恢复。 v10.16.3 进一步将新图更新限制在画布绘制阶段,按固定周期取最新帧;CNH / IMU 分片批量组包,停止 Atom 时先断开 HTTP 再关闭读取流。ZIP 导出改成 256 KiB 缓冲批量写入,JPEG 不再重复压缩,JSON 使用快速压缩,显示进度与完成耗时。系统文件选择器期间页面重建仍能恢复待导出的会话;原始文件与逐条同步落盘规则保留。ZIP 压缩率可能略降,导出到网盘等目标的速度仍取决于其文档提供器。 采集期间保持页面打开;页面保持屏幕常亮。v10.16.4 中,任一启用输入超过 2 秒未更新时清除过期预览并显示逐路等待,录制继续;超过 8 秒仍无更新、连接明确断开、切到后台或返回首页时结束当前段并保留已有数据。短暂停顿和恢复写入 events.jsonl,缺失区间不会补采;真正断线后按下述 v10.16.7 规则自动恢复连接,再手动开始新段。首个中断原因不会被其他流的停止消息覆盖。IMU 开关在一段采集中不可修改。采集原始数据不依赖电脑或模型推理;网络连接使用当前局域网明文传输。 配套 H3 固件将发送无进展期限由 200ms 改为 2s、整行期限由 400ms 改为 5s,仍只保留当前一行;发生等待时设备采样间隔可能增加。`/api/cnh` 的 `tcp_diagnostics` 提供发送断开/超时次数及最后原因、已发送/总字节、耗时,重启后计数归零。手机相机读取超时为 10s,录制期间由上述 8s 无有效输入规则限制等待。明确 EOF 不会因延长期限而被忽略。 v10.16.5 为 ToF 和 IMU 各增加最多 8 个 8192 字节块的网络预读队列,短时解析/写盘等待不再立即阻塞网络读取。时间戳仍取实际 socket 读取时刻;满队列会背压,不覆盖数据。停止时关闭连接并排空已读队列与尾包后完成保存,因此积压时停止耗时可能增加。新段不会保存开始前收到的普通排队记录;已有启动配置和 IMU 初始参考例外沿用。已保存计数仍只在逐条同步落盘后增长。这不会消除固件主循环自身的采样停顿。 2026-10-12 配套 H3 固件进一步改为有界增量 HTTP 查询:每轮最多收发各 1024 字节,请求上限 2 KiB,总期限 5 秒,避免慢请求拖住采样。`/api/status`、`/api/cnh` 保留;后者显示 `http_service=bounded_poll` 及成功发送耗时、最大采样间隔。其他固件接口不变。TCP 接收方长时间不读取仍可造成背压,刷写后的传感器热重启失败仍可能需要拔插电源。 v10.16.6 将相机停止也改为等待已接收帧的保存回调完成,避免慢写盘超过原 1.5 秒等待时丢弃末帧。配套 H3 固件在启动首次探测失败后释放 I²C 总线并重试一次,`startup_diagnostics` 保留首次状态及恢复前后总线电平;不会在录制中自动重启。刷写后及 3 次热重启均正常出帧,但本轮未触发失败恢复分支,不能据此认定热重启故障已消除。 v10.16.7 在采集页前台按每路 1、2、4、8、10 秒退避自动重连断开的输入。录制中断先保存旧段,恢复后提示手动开始新段;不会跨断线拼接或自动恢复录制。离开页面、手动断开、修改地址或切换 IMU 会取消旧计划。地址变化仍需重新寻找设备。预览改由新帧通知触发单个后台解码任务,合并通知并读取最新帧,取消 16 ms 轮询;原始帧保存不受预览合并影响。 配套 Atom 固件保留 64 条 IMU 样本历史,每个 TCP 客户端有独立游标;选取待发送样本时最多回补 500 ms,短暂停顿可按原序补发。缓冲溢出或样本过期会计数并保留序号缺口,不能保证任意长停顿无损。已部分发送的 JSON 继续完成,不替换为新样本;500 ms 是选样年龄上限,不是网络送达期限。采样任务不等待客户端读取。 v10.19.1 为相机增加8个完整JPEG的有界预读,最新预览直接从收流线程发布,减少同步写盘造成的画面停顿。满队列仍背压,原始JPEG不覆盖;停止会排空已收帧再完成保存,新段排除开始前的缓冲帧。三路原始写盘与独立时间戳保持。本次同12秒录制预览12.58→23.74fps,另30秒录制23.66fps、三路源序号缺口0;是当前网络/场景短测,不是固定帧率承诺。[完整性能记录](../research/active/hardware-bringup/FUSION_INPUT_AND_MEASURED_GEOMETRY_DEV_20261013.md) 2026-10-13 配套Atom固件将multipart头与原JPEG合成一次HTTP chunk发送,先复制到自有PSRAM包再归还相机帧,减少发送期间占用相机缓冲。无线、VGA及JPEG质量保持;App61/10.19.3三路30秒复测预览约23.5→24.8fps,三路保存完整性检查通过,仍有约121ms到帧间隔。[固件优化与完整测量记录](../research/active/hardware-bringup/HOTSPOT_PRIORITY_20261013.md#后续mjpeg-预览节奏优化) 同日独立重建32KiB TCP发送缓冲,板端同步发送P95由约60ms降到2.4–4.2ms,但仍有发送前长停顿。继续检查发现一份相机buffer可能合并多张完整JPEG;现已采用驱动收到首张原生JPEG结束标记即完成收帧的修复,保留原图字节与时间戳。两段30秒三路测试中合并帧为0/797、0/814,预览24.6–25.4fps,对照为21.8fps;三路保存完整性通过,仍有约151ms长间隔。本机Atom已更新,复现构建需 `-Sketch atom_wifi -AtomTcpSendBufferBytes 32768 -AtomCameraEarlyEoi`,默认仍是原SDK。详情、限制及回退二进制见[相机驱动修复记录](../research/active/hardware-bringup/HOTSPOT_PRIORITY_20261013.md#后续相机合并帧定位与原生-jpeg-完成条件修复)。 继续排查后,Atom 的 OV3660 帧同步改为场开始脉冲,减少 JPEG 输出分段边界附近的跳帧;保留原生JPEG、VGA/质量12及上述构建选项。正式固件两段30秒三路录制预览26.1–26.3fps、到帧间隔P95 52.7–54.3ms,1679张图全部解码及保存哈希通过;仍有最大149.5ms到帧间隔。只读 `/api/camera-timing` 可核对模式2、质量12、行宽1024;时间戳仍为驱动收帧开始,不能当曝光时间。已刷入本机Atom;[诊断、部署及剩余长尾](../research/active/hardware-bringup/HOTSPOT_PRIORITY_20261013.md#后续ov3660-帧同步边界定位与修复)。 ## 打开融合实验(59 / 10.19.1) 2026-10-13 状态:59/10.19.1已保留数据覆盖安装,包含因果输入和数值修复;原模型与图像变换检查保留。本轮用户不便佩戴,完整实时RGB融合仍待验证。此入口用于显示研究组合的实时响应;默认首页“开始辅助”仍使用当前 H3 基础 ToF 提醒。 1. 若正在采集,先点“停止并保存”,等待当前段结束。只有不在采集且页面空闲时才显示可用的“打开融合实验”。先确认采集页保存的 Atom、ToF 地址正确,实验复用这些地址。 2. 点“打开融合实验”。采集页先取消重连、释放采集连接,再打开实验页;进入页面本身不会开始推理。结束电脑预览或其他占用 H3 的客户端。 3. 点“开始实验”。需要预先部署实验模型包;缺文件时页面提示“本机尚未安装实验模型包”,不会开始。实验显示头部/身体的 ToF 强档或 RGB 融合结果,经各 query 最近 3 帧至少 2 帧确认;等待或过期结果显示未知。 4. 可选:保持安装不变,低头看空地,点“低头看空地,标定安装高度”,查看高度来源提示。标定失败不代表可用高度已更新;按页面实际状态判断。 5. 点“停止实验”或返回、离开页面即停止连接和推理。需要保存新录制时返回采集页,重新连接并显式开始新段。 实验页不发语音或震动,也不替代原始三路采集。它采用因果接收样本和当帧姿态,与冻结离线评价的整段平均 ToF 姿态及最近 RGB 配对不同;跑通页面不能当成冻结 v1/v2 通过或真实障碍检出率。新头戴数据仍由用户佩戴录制,按[冻结执行说明](../research/active/hardware-bringup/FROZEN_FUSION_EVAL_RUNBOOK.md)完成标签与评价。 开发部署使用[实验资产安装脚本](../scripts/install_mobile_fusion_assets.ps1),将预先生成的五个文件放入 App 私有目录并逐个核对 SHA256;脚本不安装 APK。候选构建所需 QAIRT 环境、部署与设备检查的实际完成范围见[本轮工程记录](../research/active/hardware-bringup/MOBILE_FUSION_INTEGRATION_20261012.md)。这些开发步骤不是日常采集操作。 ## Wi-Fi 与手机热点 支持双配置的固件可同时记住两个网络:槽位 0 保留原 Wi-Fi,槽位 1 保存手机热点。首次刷写和配置使用电脑;热点名称、密码须与设备中保存的配置一致。可用 [provision_wifi.py](../research/active/hardware-bringup/host/provision_wifi.py) 的 `--slot 1` 添加热点并保留原 Wi-Fi,凭据只通过 USB 配置,不写入采集 ZIP。 两板采用**手机热点优先**:开机或断线重连先尝试槽位 1,热点不可用时回退槽位 0 的原 Wi-Fi;每次连接尝试最多 12 秒。只有一个配置的旧设备仍使用该配置,已有网络名称和密码保留。 已连接原 Wi-Fi 且没有活动 RGB/IMU/CNH 传输时,两板每 30 秒异步检查已配置的热点,发现后自动切换。持续传输期间暂停偏好扫描、取消已有扫描,传输结束后等待完整检查间隔再考虑切网。如果检测到热点却连接失败,回到原 Wi-Fi 后等待 120 秒再检查。热点关闭等真实掉线仍触发原有重连/回退。实现与本机验证见[热点优先更新](../research/active/hardware-bringup/HOTSPOT_PRIORITY_20261013.md)。 2026-10-13 已更新配套两板固件及手机 61 / 10.19.3,另修复旧缓存帧干扰新连接计时的问题。预览同样属于活动传输:需要从仍可用的原 Wi-Fi 切到热点时,先断开采集连接,待设备空闲切网后重新寻找,再开始新段。持续已有流受到保护,首次建立连接与空闲状态检查之间的边界仍不作零竞态承诺。 切网可能改变 ToF、Atom 地址,也会使当前 TCP 采集段结束。各设备接入新网络后,在 App 点击“自动寻找设备”,等待所有启用输入重新就绪,再开始新段;App 不跨断连自动拼接记录。自动寻找使用同一局域网的 UDP 3334 发现接口,识别 H3 CNH ToF 与 Atom 网络身份;IMU 是否可用仍由 TCP 3336 的有效样本决定。未找到时可手动填写设备实际地址。 ## 每段文件 采集目录位于 App 私有且不自动备份的 `noBackupFilesDir/phone-capture//`。安装覆盖升级保留已有记录;卸载或清除 App 数据会删除私有记录,请先手动导出。 | 文件 | 内容 | | --- | --- | | `manifest.json` | 会话身份、备注、源信息、IMU 是否启用、各路有效帧/原始记录计数、开始/结束和状态 | | `rgb/frame-000001.jpg` 等 | Atom MJPEG 流中的原始 JPEG,不重编码;实际尺寸/帧率以索引为准 | | `rgb.jsonl` | 文件名、实际尺寸、显示方向、Atom 帧头/序号/boot、设备 capture/JPEG ready 时间、独立 Android 接收时间及相机来源 | | `tof.raw.jsonl` | 收到的原始字节:8×8 zone、每 zone 16 bin 的 histogram/scaler、ambient、距离/status/target、seq、ms、read_us、stream、header、boot/config 等 | | `tof.index.jsonl` | 原始记录字节位置/长度、接收单调时间、序号、设备毫秒、完整 CNH 校验状态及 `imu_alignment` 接收时间匹配 | | `imu.raw.jsonl` | Atom IMU 原始字节:`imu_boot`(含配置)、`imu_frame`、`imu_status`、坏包与未完成尾包 | | `imu.index.jsonl` | 原始字节位置/长度、Android 接收纳秒、序号、Atom 设备微秒、设备/boot 身份、六轴原始整数与 accel_g/gyro_dps、pitch/roll、可用 gravity_unit、校正/采样间隔/读时/缺口标记及有效帧状态 | | `events.jsonl` | 开始、ToF/IMU 连接异常、缺帧/重复/时钟异常等记录 | 原始传输出现坏包或未完成尾包时保留字节,按 index 的 offset/length 恢复;它们不计作有效 ToF/IMU 帧。关闭 IMU 的新会话中对应文件为空;早期无 IMU 文件的会话仍可列出和导出,IMU 计数为 0。程序异常退出后目录仍出现在列表,可导出完整或部分文件。ZIP 包含全部已保存原始文件,不把画面编码成大段 JSON/base64。 ## 时间与空间 Atom 相机帧头的 capture/JPEG ready 时间、ToF `ms`、IMU `device_us`、手机 `elapsedRealtimeNanos` 接收时间分别保存。Atom 相机和 IMU 保留各自来源与 boot,ToF 属于另一设备时钟;手机不映射这些设备时钟。 每条有效 ToF 记录可引用同一会话中最近的因果 IMU 接收记录:IMU 的 Android 接收时间不晚于 ToF,差距最多 100 ms。`imu_alignment` 保存原始 IMU 索引引用与有符号 `imu_minus_tof_ns`(IMU 接收时间减 ToF 接收时间);无符合条件的记录时为 `UNAVAILABLE` 且引用/差值为空,关闭 IMU 时为 `DISABLED`。这个匹配是接收时间匹配,不代表传感器采样或曝光同步。 JPEG 原字节、ToF zone/bin 顺序与数值不改。IMU 六轴、pitch/roll 与 gravity_unit 保留 BMI270 本机轴,标为 `BMI270_NATIVE_NOT_TOF_OPTICAL`;手机不施加安装旋转、零偏或主机侧姿态变换。Atom RGB 与 ToF 的显示朝向沿用已有安装核对,精确光轴/图像外参尚未标定。场景备注是用户描述,不是障碍真值或安全标签。 ## 连接记录与导出任务 v10.18.0 的“连接记录”保留最近 64 条事件,展开默认显示最近 12 条,也可继续显示全部;包括观察时间、各路连接尝试、连接已建立但没有有效数据、Socket 异常及恢复耗时。退出页面后仍可查看历史,录制事件也包含诊断快照。网络异常不等于确认设备断电或 Wi-Fi 故障;只有 Atom 启动标识变化才记录新的启动周期。历史时间用于显示,不用于恢复数据新鲜度或跨重启同步。 导出不会删除原始记录。取消会等待当前文件提供方的写入返回;失败或取消后尝试清理本次创建的目标文件,无法清理时页面提示手动检查。系统终止进程后任务显示中断,目标可能不完整,需要重新选择位置导出,不自动续传。采集本身仍要求页面在前台,离开页面会结束当前采集段;独立导出不改变这条规则。 ## 验证 v10.18.0 在 SM-S9280 验证 Wi-Fi 中断:记录 IMU Socket 异常,2 次连接尝试后约 5.9 秒恢复;中断段没有改写或自动续录,退出重进仍保留历史。独立导出通过关闭采集页、阻塞提供方时取消、拒绝重叠任务和重试测试。另一次 15 秒真实采集保存 246 RGB/79 ToF/1546 IMU;切回手机桌面后,系统 Downloads 导出约 1.0 秒完成,253 个 ZIP 条目与已核验内容逐字节一致。这是该手机与提供方的单次验证,不代表网盘或其他系统均有相同速度。 v10.16.7 已安装到 SM-S9280,配套 Atom 历史队列固件已更新。49 项聚焦 JVM 测试、9 项控制器真机测试、139 个固件队列断言、构建/lint/APK 校验通过。实际录制中重启 ToF,约 9.56 秒后恢复三路就绪,旧中断段保持不变,需点击开始才产生新段。两客户端短暂停读测试无序号缺口。最终 30.078 秒保存 604 RGB/154 ToF/3020 IMU,三路均无发送序号缺口;停止 207 ms,14.73 MB 数据在缓存导出 0.164 秒,611 个 ZIP 文件逐字节一致。停止时 ToF 未完尾行仍原样保留并标记。 预览比较中 Android 接收至 Canvas 提交中位延迟从 20.232 降至 9.907 ms,P95 从 43.116 降至 37.297 ms;最终生产固件组合为 10.348/36.987 ms。源 RGB 分别约 25.17/23.99/20.00 Hz,场景及传输负载变化,不能解释为相机帧率提升。ToF 故障注入首次未成功,第二次真实形成传感器拉低 SDA 后首次事务即恢复,应用层重试分支未触发;恢复生产固件后完成上述测试,不能认定所有热重启故障已消除。证据在 `artifacts.local/evidence/capture-all-opt-20261012/`。 历史 v10.16.6 的 7 项相机源码/解析单测、构建、lint、APK 校验通过;最终 30 秒三路采集保存 806 RGB/154 ToF/3017 IMU,停止 281 ms,17.01 MB 数据在缓存导出 0.279 秒、813 条目逐字节一致。该段 IMU 有一次序号缺 2 条,停止时的 ToF 未完尾行也原样保留;两者均在事件中明确标记,未发生录制断连。当时 Atom 使用最新样本发送策略,该轮未修改固件。 更新前 v10.16.5/有界 HTTP H3 的两段各 5 分钟长测通过:共保存 15804 RGB/3065 ToF/60026 IMU,无停顿、断连事件或发送序号缺口,ToF 两段最大源间隔均 198 ms;正常停止用时 408/394 ms。171.90/171.30 MB 原始数据在缓存导出用时 3.410/3.260 秒,8005/7813 个 ZIP 条目原字节一致。这是两段连续运行的记录,不是单段 10 分钟,也不是所有网络环境的可靠性保证。 H3 有界 HTTP 固件在三次各延迟 2 秒传完请求的受控测试中,最大源帧间隔从 2138 ms 降到 198 ms,三次均返回 200;最终约 60 秒手机三路采集叠加三次慢查询通过,保存 1480 RGB/308 ToF/6029 IMU,无录制中断或发送序号缺口。ToF 5.1035 Hz,最大源间隔 201 ms、接收间隔 217.365 ms。停止保存 187 ms,33.57 MB 原始数据在本机缓存导出用时 0.368 秒,1487 个 ZIP 条目原字节一致。初版独立 HTTP 任务反而卡顿约 19 秒,已弃用并保留证据;最终固件 SHA256、冷启动恢复及完整记录见 DEVELOPMENT_LOG 本次条目。上述结果验证慢查询阻塞修复,不代表排除所有断线原因或提高传感器额定帧率。 v10.16.3 在同一 SM-S9280 / Android16 验证两段各30秒:保存794/708 RGB、155/155 CNH、3036/3024 IMU,停止保存329/88ms;JPEG SHA、ToF/IMU原字节索引和 ZIP 文件内容独立核对通过。约15.78/15.46MB原始会话的本机缓存文件导出从29.091/36.513秒降到0.165/0.466秒,ZIP体积增加约18–20%。系统文件选择器实际向 Downloads 导出另一份5.05MB会话用了0.3秒,ZIP与缓存导出的SHA完全一致;其他文档提供器、网盘和文件缓存条件不在该速度结论内。 最终16ms预览检查的10秒采集测试通过,保存165RGB/52CNH/1014IMU,停止185ms。Android接收至Canvas提交年龄中位19.874ms/P9539.254ms,旧版本5秒窗口为40.485/71.746ms。最终显示156幅独立画面/10.021秒;源RGB本轮在16–28Hz之间变化,ToF约5.103Hz、IMU约100Hz。Atom帧头显示较大JPEG之后取下一帧变慢;固件同步发送JPEG后才归还framebuffer,发送序号连续不代表传感器帧没有被覆盖,因此不把本轮显示帧率比较作为源采集帧率提高的证明。40项聚焦单测、最终构建/lint/APK校验通过;测试收尾界面查询失败留证,修正后的3项短流程及最终10秒真机测试通过。原始证据在 ignored `artifacts.local/evidence/phone-capture-opt-20261012/`。 框架外未录制窗口,系统慢帧由248/721(34.40%)降至349/1241(28.12%),帧耗时中位7→5ms、P9536→32ms;两窗约24/38秒且源图像负载变化,仅作描述性检查,仍有尾部慢帧。验证结束回到首页,采集连接释放;实际导出的ZIP保留在手机 Downloads。 同手机/LAN/硬件摆放的框架外 12 秒对比:整页渲染速率从 10.145 增至 29.728 帧/秒,系统慢帧比例从 94.31% 降至 32.60%,最近帧耗时中位数从 27.990 降至 6.354 ms。P95 从 38.203 到 39.078 ms,尾部慢帧仍存在。整页渲染速率不是相机源帧率;完整口径与收据见 [IMU/手机报告](../research/active/hardware-bringup/ATOM_IMU_PITCH_20261012.md#手机性能优化-v10162)。v10.16.2 当轮结束时保留三路预览;本轮结束状态见上文。 v10.16.2 真机约 5 秒保存 138 Atom RGB/26 CNH/507 有效 IMU(508 条原始记录),状态 `COMPLETED/user_stop`;CNH 5.10412 Hz、序号连续,IMU 100.02507 Hz、sample_gap 0。26/26 ToF 因果匹配,年龄 P95 13.600 ms。ZIP 145 条目逐项原字节一致,Activity 重建、设备重连与完整三路面板显示通过。测试框架内录制期间画面独立更新 24.246 帧/秒,Android 接收至 Canvas 提交年龄 P95 67.641 ms;这不是曝光至显示延迟。35 项聚焦单测、最终 debug/androidTest/lint、APK 身份/签名/16KB 校验通过。最终安装包 SHA256 `1B7AD5E47EC8527596A2442D1B2A086240CA72FCC59A144DDDC981FEB26334D3`;原始收据在 ignored `artifacts.local/evidence/phone-capture-atom-v1/phone-live-lan-20261012-021241/`。 v10.16.1 的真实 Atom 来源检查已通过:约 5 秒保存 138 Atom RGB/26 ToF/508 IMU,26/26 ToF 因果匹配、年龄 P95 12.339 ms,IMU 99.99765 Hz、零 sample_gap。核对了 Atom 帧头、设备 capture 时间、原 JPEG SHA/Content-Length/尺寸、显示旋转/镜像与相机/IMU boot 一致;三路同屏及 Activity 重建重连通过。ZIP 145 个条目与手机原文件逐字节一致,状态 `COMPLETED`。源码/存储 33 项聚焦单测、debug/androidTest 构建与 lint 通过;证据在 ignored `artifacts.local/evidence/phone-capture-atom-v1/phone-live-lan-20261012-014800/`。 此前 v10.16.0 使用手机后置相机:SM-S9280(Android API 36)约 5 秒保存 50 RGB、25 ToF、507 IMU/508 条 IMU 原始记录,状态 `COMPLETED`。IMU 设备速率 100.0003 Hz,sample_gap 0;25/25 ToF 因果匹配,年龄 P95 10.438 ms。ZIP 57 个文件与保存会话逐字节一致。该历史段保留,不将其当成 Atom 相机采集证据。 Galaxy 热点段保存 51 RGB/27 ToF/509 IMU,26/27 因果匹配、年龄 P95 10.465 ms;首个 ToF 前尚无 IMU,明确不可用。关闭热点后两板在同一 boot 自动回原 LAN(Atom 4.250 秒、ToF 6.469 秒),恢复段保存 50/25/506、25/25 匹配、P95 11.196 ms。三段均正常停止,ZIP 每个条目与手机原文件一致。测试结束后热点关闭,App 首页待用,所有采集连接已释放。 27 项聚焦数据完整性单测、debug/androidTest 构建、lint、APK 身份/签名/16KB 检查及真机相机重建通过。此前两路版本的 50 RGB/27 ToF/30 原始记录、24 帧 Android 原包解码与系统文件选择器实际导出结果继续保留。 首次 H3 TCP 检查的 EOF、刷写后的 `is_alive` 失败及随后冷启动恢复均保留在证据中。完整顺序与回执见 [DEVELOPMENT_LOG.md](../DEVELOPMENT_LOG.md) 本版本条目及 ignored `artifacts.local/evidence/phone-capture-v1/`、`phone-capture-imu-v1/`。Atom 实机 I²C 冲突、修复、静止测量、人工俯角参考和主机对齐见 [IMU 报告](../research/active/hardware-bringup/ATOM_IMU_PITCH_20261012.md)。双网络实际切换结果在该报告另记。