Skip to content

feat: 实现 vision-based cartpole,评估 motrixsim batch render 能力 #31

Description

@wlgys8

背景

感知运控方向(#30,lidar/raycast 评估)之外,视觉 obs(camera → pixel obs → policy)是另一条需要验证的 sim 能力线。motrixsim 0.10.1.dev 已提供批量渲染入口:

  • RenderApp.launch(model, batch=N, render_offset, render_settings):多 world 批量渲染
  • RenderCamera.capture() -> CaptureTask:异步取图,CaptureTask.take_image() 取回 Image
  • RenderSettings:quality/performance 预设、share_lights_between_envs、shadow/ssao 等开关
  • create_camera_viewport(camera, layout, sim_world_index):按 world index 建视口

现状:MotrixLab 侧渲染只用于视频录制(MotrixSimRenderer offscreen system camera RGB,motrix_env_motrixsim/renderer.py:21),在环 egocentric 相机 obs 管线不存在;且 TorchEnv 仅支持 CPU 仿真(torch_env.py:119),渲染通道与训练循环的集成方式未验证。

目标

以 vision-based cartpole(现成 state-based cartpole 的像素版)为载体,对 motrixsim batch render 做测试评估:

  1. 功能正确性:批量 env 下 per-env 相机图像与对应 world 一一对应(无串图/偏移错误)
  2. 吞吐与延迟:capture→CPU/GPU tensor 的端到端延迟;batch 规模(16/64/256/…)与分辨率(48×64 / 90×160 / …)扩展曲线;异步 capture 与物理 step 的重叠度
  3. 集成方式:渲染服务进程与训练循环的数据通道(sync() 语义、共享内存/拷贝路径、obs 摊平进 TorchObs)
  4. 训练可行性:像素 obs 下的 cartpole 是否可学(前置:FastSAC 目前无 CNN encoder,见下方范围说明)

工作分解

  • Spike:cartpole.xml 挂相机,RenderApp batch=N headless capture,输出吞吐/延迟基线数据表(batch × 分辨率矩阵)
  • 相机 obs 管线:capture → tensor → TorchEnv obs 通道(图像型 obs 摊平/布局约定,policy-value 双通道中的挂载位置)
  • 异步化:capture 任务与物理 step 重叠(update_period 风格的逐 env 刷新 + 过期帧缓存,参照 InstinctMJ 的 sensor 更新模式)
  • vision cartpole env 注册(basic/cartpole 的 pixels 变体,保持与 state 版同 reward/termination 以便对照)
  • (可选,超出评估范围再立项)FastSAC 增加 CNN encoder / 蒸馏路径,像素端到端训练
  • 评估报告:结论给出 batch render 在训练在环场景的可行性判断与瓶颈定位(渲染本身 vs 传输 vs 集成)

范围说明

本 issue 优先完成"渲染管线评估 + env 注册";若评估发现吞吐达标,像素端到端训练(需要给 FastSAC 补 CNN encoder)另开 issue。

参考

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions