Skip to content

feat: align native camera horizontal field of view - #9

Merged
kleinlau17 merged 4 commits into
mainfrom
feat/camera-horizontal-fov
Oct 24, 2026
Merged

kleinlau17 merged 4 commits into
mainfrom
feat/camera-horizontal-fov

Conversation

@kleinlau17

@kleinlau17 kleinlau17 commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

为原生相机增加可选 horizontalFov,与 BotLab 浏览器独立横纵视野标定保持一致。省略/null 时仍按纵向 fov 和完整传感器宽高推导横向视野。配套 BotLab #58 已合入 dev。

  • 校验新字段并设置 MuJoCo 视锥半宽;完整传感器渲染后按原窗口裁剪。
  • 同步公共 Sensor 参数文档,浏览器与原生共用 pinhole golden。
  • 原生显示连接的初始消息和注册相对广播原子化,避免收到场景描述后立即步进漏发首帧;增加可稳定复现旧问题的并发回归。
  • GL 测试隔离到子进程,无显示环境在渲染器初始化失败时明确跳过;核心像素方向始终验证。wheel 验收命令显式指定 --native。

审查与合并

按用户明确授权,经代理代码审查和检查后已 squash 合入 main:9a6943dbde16eb61084524891ae11a65b38de84a。代理审查记录不冒充人工负责人审批,仓库负责人为项总。

main 新合入 #8 后,本分支更新到 3173fc6,唯一冲突为文档末尾追加段落,保留双方内容。最终 PR head 1f5c090 的 CI run 40099177648 四组 Python 3.10–3.13 全部通过:lint、测试、原生处理器 golden、非 editable source wheel 契约检查均通过。

最新隔离验收(2026-10-24)

独立工程 supermimic-project-horizontal-fov-merged 使用普通 wheel、独立 runtime 缓存。固定 SDK 合并提交 9a6943d 与 BotLab dev 已合入提交 794ccea。合并源码树与验收提交一致;合并后重新构建 wheel,与已验收安装包逐字节一致。

检查 结果
相机 横向87°、纵向58°;48×27完整传感器,四边各裁2像素,原缩放流程
像素方向 上游原有内参/射线函数:完整1296、裁剪1012像素;原生最大方向分量误差1.208428119e-7,浏览器共享golden为1.203312929e-7
浏览器投影 真实投影矩阵逐像素反投影、可选字段兼容和裁剪测试26项通过
原生动作 10动作×2回合,20/20正常结束,9792控制步;重置qpos轨迹误差0
迁移前后 10动作逐控制步qpos及策略输出与上一可运行候选完全相同
标准编辑器 10/10完整动作、暂停稳定;实际相机参数均87°/58°
发布包 10/10标准release.zip/site构建、资产逐字节核对及真实浏览器运行通过;无资源/console/page错误
控制计划 10动作的编辑器、发布页和CLI计划一致
跨域嵌入 无隔离头宿主的跨域iframe跑完case 9并稳定暂停,双方crossOriginIsolated=false
原生显示 真实SuperMimic模型10次连接,新旧协议均收到首帧;标准native CLI的浏览器viewer收到场景与连续帧、画布正常,无页面错误
wheel 非editable安装、原生30步/查看器、离线runtime导入、site构建全部通过
保留 旧项目与共享缓存40502个文件哈希不变,旧可运行版本保留

本地完整 SDK 套件796 passed、1 skipped、2 deselected、58 subtests passed;安装包的显示/相机31项通过(实际GL无跳过);独立工程回合测试7项通过。BotLab editor/viewer构建通过。

产物身份

两个产物仍标记0.3.0,以以下哈希区分本轮本地构建,并非新发布版本:

  • wheel SHA-256:2ff236d4f66f6d044e8c050e7563dede04f7c8101bb828dedf0eed407ebb34a9
  • runtime ZIP SHA-256:ed942b8801d7545aef6e619beef461971f31f8f68c5d2ba299c242822bd9f96e
  • 安装的53个SDK源文件与固定合并源码一致,runtime143个文件哈希通过。两仓源码干净;无安装后修改、无手工release.zip改写。
  • 全部原始JSON/NPZ、每个动作的浏览器记录、截图与日志保存在独立项目 reports/、output/playwright/;汇总为 reports/merged-validation.md 与 .migration/versions.json。

验证边界与失败原因

原生逐控制步检查,浏览器为显示时钟采样;不是官方成功率,也不代表与上游完整环境逐步等价。相同输入下独立观测组装/融合策略最大误差5.7220459e-6。浏览器动作结束仍按原流程暂停,没有扩展回合管理。编辑器只有既有/api/auth/me 404。

首次CI失败是无显示环境下MuJoCo Renderer原生abort;隔离后发现另一处scene描述发送与注册之间的真实首帧竞争,均已修复。本轮完整wheel验收还修复了测试脚本误用默认浏览器模式的问题。

不修改策略、执行器、运动数据、深度后端或噪声;本任务不上传PyPI/GitHub Release,不推进FAT/生产部署。

@kleinlau17
kleinlau17 force-pushed the feat/camera-horizontal-fov branch from fb46059 to f678cca Compare October 24, 2026 13:35

@kleinlau17 kleinlau17 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

本轮代理代码审查完成,未发现阻断合并的问题。核对了可选 horizontalFov 的校验与旧配置兼容、MuJoCo 全画幅视锥半宽及裁剪顺序、共享 golden、GL 子进程隔离,以及 scene/meta 初始消息与登记相对广播的原子性。首帧回归测试在旧实现可稳定复现,修复后通过。

由于 main 新合入 #8,本 PR 已 rebase 到 3173fc6;唯一冲突是 docs/component-reference.md 末尾两段独立文档,均保留。range-diff 确认两项 CI 修复补丁不变。更新后本地完整测试 796 passed、1 skipped、2 deselected、58 subtests passed,ruff 和 diff 检查通过。等待当前 head 的 CI 完成后,按用户本轮明确授权通过 GitHub PR 合并;此记录是代理审查,不冒充仓库负责人审批。

@kleinlau17 kleinlau17 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

补充审查当前 head:新增的一行仅为 wheel 验收命令显式指定 --native,修复验收脚本使用旧默认模式的假设;无新增运行时变更,无阻断发现。已用普通安装 wheel 与合并版 BotLab runtime 完成20原生回合、10编辑器/10发布页、跨域iframe、真实原生viewer和10次首帧连接检查,结果通过。等待本 head CI 四组全部通过后,按用户明确授权合并。

@kleinlau17
kleinlau17 merged commit 9a6943d into main Oct 24, 2026
4 checks passed
@carlvon17
carlvon17 deleted the feat/camera-horizontal-fov branch November 5, 2026 11:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant