Report resolved camera resolutions in benchmark KPIs - #7402
Conversation
AntoineRichard
left a comment
There was a problem hiding this comment.
AI-generated review (Codex).
Two camera-discovery edge cases should be addressed before merge:
-
The global visited-object check runs before camera recording. If the same camera config object is referenced from two config paths, only the first path is emitted. The current test codifies this by assigning shared_camera to tiled_camera and duplicate but expecting only tiled_camera. Because the payload is path-based and the PR says it records each camera config path, camera detection should happen before container deduplication so every path is preserved.
-
Camera identity is matched only through MRO class names CameraCfg and RayCasterCameraCfg. This covers their current subclasses, but an unrelated task class with the same simple name and integer width/height fields is falsely reported, while a future independent camera-config family would be missed. Please use concrete types through a function-local import, or at least match module plus qualified class name.
For clarity: no-camera configurations are handled safely—the helper returns no metadata, so benchmark_info.camera_resolutions is omitted. Two distinct camera config objects are both reported and sorted by path; only aliased references lose the second path.
Suggested focused tests: no camera, two distinct cameras, one camera object referenced at two paths, and an unrelated same-named CameraCfg class.
|
Thanks @AntoineRichard , updated for the feedback. |
Greptile SummaryThis PR adds resolved camera dimensions to benchmark KPI metadata after environment configuration overrides are applied.
Confidence Score: 4/5The shared-container traversal defect should be fixed before merging so every configured camera path is reported as promised. Object-identity deduplication occurs before descendant traversal, causing cameras beneath a shared intermediate configuration object to disappear from all but the first reported path. Files Needing Attention: source/isaaclab/isaaclab/benchmark/capture.py, source/isaaclab/test/benchmark/test_capture.py Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[Resolved environment config] --> B[Traverse config paths]
B --> C{Camera configuration?}
C -- Yes --> D[Read resolved width and height]
C -- No --> E[Traverse child values]
D --> F[camera_resolutions workflow metadata]
F --> G[benchmark_info KPI payload]
Reviews (1): Last reviewed commit: "Merge branch 'develop' into codex/benchm..." | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The change adds resolved camera dimensions to benchmark KPI metadata across runtime, startup, training, and play entrypoints for RSL-RL, RL-Games, skrl, and SB3. The metadata is omitted when no concrete camera resolution is found.
- Design and architecture: Camera-config traversal is centralized in benchmark capture alongside existing environment-config inspection. Exact CameraCfg and RayCasterCameraCfg types are recognized, sensor imports remain deferred in production code, and deterministic config paths are emitted for downstream identification.
- API: The KPI surface gains an additive benchmark_info.camera_resolutions mapping while camera-less payloads retain the existing shape. Existing signatures and metadata keys are unchanged, and a changelog fragment records the user-visible addition.
- Implementation: The traversal handles direct and pattern-based dimensions, cycles, aliases to camera objects, mappings, sequences, and ordinary config objects. Integration paths were traced after environment overrides and serialization coverage confirms the expected KPI shape. A non-blocking residual limitation is that a non-camera container shared through multiple paths is traversed only through its first path because visitation is identity-based.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
AntoineRichard
left a comment
There was a problem hiding this comment.
Thanks @yts-nv! Should we add this to the schema?
Sure! added. |
Description
OmniPerf camera benchmark jobs currently record the requested resolution in runner metadata, but the Isaac Lab KPI payload does not record the resolved camera configuration. This makes it impossible for downstream dashboards to distinguish a verified 64x64 run from a run that retained the task default.
This change:
Example KPI metadata:
{ "camera_resolutions": { "env.scene.tiled_camera": { "width": 64, "height": 64 } } }Type of change
Release backport
Screenshots
Not applicable.
Validation
Checklist