验证等级
可见原生 Isaac 场景相机。 验收必须同时看到原生 Isaac 窗口,并得到由
sensors.overview 生成的 1280×720 PNG。桌面或 viewport 截图不能通过这个等级。
前置条件
- 兼容 Python 3.12 环境中的 Isaac Lab 3.0 和 Isaac Sim 6.0。
- 同一环境安装 FastSim
0.1.0a6、unirobosim==0.10.0和unirobosim-isaaclab==0.10.1。 - Pillow(
python -m pip install Pillow)只负责把 RGB 字节编码成 PNG。 - NVIDIA GPU 和正常显示环境。请在原生 application 可见的情况下验收;
main.py仍然只保存场景相机数据,不截取窗口。
配置
物体使用 _shared/assets/ 中的小型红色 USD 方块。sensor 是程序化 camera component,
不需要相机资产文件。
yaml
backend: isaaclab # 选择 Isaac Lab provider。
objects:
red_cube:
use: object://fastsim/demo-cube # Registry 会选择 Isaac USD 变体。
pose:
xyz_m: [0.0, 0.0, 0.3] # 放到 provider 地面之上。
quat_xyzw: [0.0, 0.0, 1.0, 0.0] # 绕世界 Z 轴半圈的合法姿态。
sensors:
overview:
use: sensor://fastsim/demo-rgb-camera # 1280×720,仅 RGB。
pose:
xyz_m: [1.4, -1.4, 1.0] # 世界系相机光心,单位米。
quat_xyzw: [0.5334021, 0.22094238, 0.31245971, 0.75434448]
相机四元数使用 XYZW 和 OpenGL optical 约定:局部 -Z 朝前,局部 +Y 朝上。
这个四元数看向方块。不能用修改资产 world up axis 来代替实例 pose;本例 USD 已明确
声明 upAxis = "Z"、metersPerUnit = 1。
逐行理解 Python
fastsim.app(RUN_FILE)编译 Run;相机查询不需要碰撞几何发布,所以不打开 planning reads。await simulation.start()创建原生世界,并启动物理与渲染。camera_rgb("sensors.overview")使用编译后的标准 sensor entity ID,最多等待 30 秒,返回不可变紧凑 RGB 数据。- 离开
async with会先关闭仿真器,再做普通文件编码。 - 显式尺寸检查会拒绝任何不是 1280×720 的帧。
Image.frombytes(...)按准确rgb24解释数据,不改分辨率或通道。OUTPUT_DIR.mkdir(...)在需要时创建案例内已忽略的output/目录。image.save(...)不改变帧尺寸,写出output/overview-1280x720.png。
运行
bash
cd demo/fundamentals/06_camera_rgb_screenshot
fastsim config validate run.yaml --json
UNIROBOSIM_ISAACLAB_LAUNCH_PROFILE=visible \
python main.py
预期结果:原生 Isaac 窗口打开,终端报告已经保存 1280x720 帧。输出文件是
output/overview-1280x720.png;打开后应从配置视角看到红色方块和 Isaac provider
地面。
UNIROBOSIM_ISAACLAB_LAUNCH_PROFILE=visible 要求本次验收保留原生 Isaac 应用窗口。
PNG 仍然来自场景相机,而不是窗口截图。完整 output/ 目录和 Python bytecode 已被
Git 忽略。
常见错误
UNSUPPORTED sensor.camera.rgb@1:provider 不具备相机能力,或安装了错误版本。NOT_FOUND sensors.overview:必须使用带sensors.的编译后 entity ID。- 空白或朝向错误:检查 OpenGL optical 约定,并保证四元数单位长度。
No module named PIL:在同一个 Isaac Python 环境安装 Pillow。- 只改成 PyBullet/MuJoCo 后端:本共享相机验收只对 Isaac Lab 有文档和验证;没有 provider 能力检查与可视证据时,不应宣称渲染一致。
下一步
继续阅读 07 — 查看场景实体与实时状态。