feat(deviceio): generate passthrough trackers from a TOML manifest - #853
feat(deviceio): generate passthrough trackers from a TOML manifest#853nv-jakob wants to merge 1 commit into
Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughThe change adds TOML-based tracker manifest resolution and configure-time code generation for C++ tracker facades, live/replay implementations, factory wiring, recording traits, pybind bindings, and Python exports. CMake tracks generator inputs and includes generated build fragments. Existing generated tracker implementations replace several hand-maintained files, while selected trackers remain explicit. Documentation describes the generated workflow and boundaries. Estimated code review effort: 5 (Critical) | ~120 minutes Sequence Diagram(s)sequenceDiagram
participant CMake
participant Generator
participant Manifest
participant TrackerLibraries
CMake->>Generator: run during configure
Generator->>Manifest: load and resolve TOML entries
Manifest-->>Generator: resolved tracker contexts
Generator->>TrackerLibraries: emit sources and include fragments
TrackerLibraries->>TrackerLibraries: compile generated facade/live/replay code
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/source/device/add_device.rst`:
- Around line 141-146: Update the hand-written tracker reference section to
remove references to the migrated generic 3-axis pedal tracker implementation
files. Replace those paths with the corresponding generated build-tree
locations, or substitute a genuinely hand-written tracker example while
preserving the manual facade/live-replay implementation guidance.
- Around line 134-139: Update the documented generate_trackers.py invocation
under “Diagnose surprising defaults” to supply the required --out-dir and
--emit-cmake arguments using temporary output paths, while preserving the
--print-resolved behavior.
In `@src/core/codegen/generate_trackers.py`:
- Around line 486-495: The render_for_entry flow must handle single_collection
entries with record=false consistently with factory emission. Add a dedicated
non-recording render path that omits MCAP traits/readers and recording
constructors, or reject this combination during manifest validation; preserve
the existing render_single_in behavior for recorded entries and update the
related rendering logic around the noted factory handling.
In `@src/core/codegen/manifest.py`:
- Around line 124-127: Validate the resolved direction in the manifest flow
before calling _merge_defaults, accepting only "in" or "out" and rejecting any
other value instead of treating it as inbound or outbound. Add a regression test
covering an unknown direction and verify it fails before defaults are merged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: efb310bc-82d3-48f0-b1ab-fff88897b964
📒 Files selected for processing (68)
cmake/GenerateTrackers.cmakedocs/source/device/add_device.rstdocs/source/index.rstdocs/source/references/generated_trackers.rstsrc/core/AGENTS.mdsrc/core/CMakeLists.txtsrc/core/codegen/AGENTS.mdsrc/core/codegen/generate_trackers.pysrc/core/codegen/manifest.pysrc/core/codegen/templates.pysrc/core/codegen/test_manifest.pysrc/core/deviceio_base/AGENTS.mdsrc/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/haptic_command_reader_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hppsrc/core/deviceio_session/AGENTS.mdsrc/core/deviceio_trackers/AGENTS.mdsrc/core/deviceio_trackers/cpp/CMakeLists.txtsrc/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cppsrc/core/deviceio_trackers/cpp/haptic_command_reader_tracker.cppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/haptic_command_reader_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hppsrc/core/deviceio_trackers/cpp/joint_state_tracker.cppsrc/core/deviceio_trackers/cpp/oglo_tactile_tracker.cppsrc/core/deviceio_trackers/cpp/se3_tracker.cppsrc/core/deviceio_trackers/defaults.tomlsrc/core/deviceio_trackers/python/CMakeLists.txtsrc/core/deviceio_trackers/python/deviceio_trackers_init.pysrc/core/deviceio_trackers/python/tracker_bindings.cppsrc/core/deviceio_trackers/trackers.tomlsrc/core/live_trackers/AGENTS.mdsrc/core/live_trackers/cpp/CMakeLists.txtsrc/core/live_trackers/cpp/inc/live_trackers/live_deviceio_factory.hppsrc/core/live_trackers/cpp/live_deviceio_factory.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hppsrc/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.cppsrc/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.hppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.cppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.hppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hppsrc/core/live_trackers/cpp/live_se3_tracker_impl.cppsrc/core/live_trackers/cpp/live_se3_tracker_impl.hppsrc/core/mcap/cpp/CMakeLists.txtsrc/core/mcap/cpp/inc/mcap/recording_traits.hppsrc/core/python/CMakeLists.txtsrc/core/replay_trackers/AGENTS.mdsrc/core/replay_trackers/cpp/CMakeLists.txtsrc/core/replay_trackers/cpp/inc/replay_trackers/replay_deviceio_factory.hppsrc/core/replay_trackers/cpp/replay_deviceio_factory.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.hppsrc/core/retargeting_engine_tests/python/test_haptic_devices.pysrc/haptic_devices/push_tensor.py
💤 Files with no reviewable changes (35)
- src/core/deviceio_trackers/cpp/oglo_tactile_tracker.cpp
- src/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/haptic_command_reader_tracker_base.hpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/haptic_command_reader_tracker.cpp
- src/core/deviceio_trackers/cpp/joint_state_tracker.cpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/haptic_command_reader_tracker.hpp
- src/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.cpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.hpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cpp
- src/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/se3_tracker.cpp
- src/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.hpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.hpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hpp
- src/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.cpp
- src/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hpp
9afbb34 to
67307c6
Compare
67307c6 to
a7fb344
Compare
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/core/codegen/generate_trackers.py`:
- Around line 897-907: Restrict _prune_stale to deleting only generator-owned
output files, preferably by filtering paths to the emitted tracker/header
extensions before unlinking; alternatively require a generator-written ownership
marker in out_dir and skip pruning when it is absent. Preserve pruning of stale
generated files while never deleting unrelated files from a caller-supplied
directory.
- Around line 684-691: Update the factory guards in the relevant generation
paths to require both recording and the single-endpoint shape before emitting
MCAP channel declarations or specialized constructors. Apply the same shape
check in _gen_replay_factory_methods and _gen_recording_traits, and ensure
recorded multi_endpoint entries use the multi implementation’s supported
constructors or are rejected during manifest validation.
In `@src/core/codegen/manifest.py`:
- Around line 106-113: Update the defaults merge logic to remove every known
direction table from the copied defaults root before applying the selected
overlay and base values, rather than popping only the table named by direction.
Preserve the existing selected-overlay precedence and ensure unrelated direction
tables cannot remain in the returned merged entry.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 90d6a4b5-bcde-45f6-9bff-d34433d3d32a
📒 Files selected for processing (68)
cmake/GenerateTrackers.cmakedocs/source/device/add_device.rstdocs/source/index.rstdocs/source/references/generated_trackers.rstsrc/core/AGENTS.mdsrc/core/CMakeLists.txtsrc/core/codegen/AGENTS.mdsrc/core/codegen/generate_trackers.pysrc/core/codegen/manifest.pysrc/core/codegen/templates.pysrc/core/codegen/test_manifest.pysrc/core/deviceio_base/AGENTS.mdsrc/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/haptic_command_reader_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hppsrc/core/deviceio_session/AGENTS.mdsrc/core/deviceio_trackers/AGENTS.mdsrc/core/deviceio_trackers/cpp/CMakeLists.txtsrc/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cppsrc/core/deviceio_trackers/cpp/haptic_command_reader_tracker.cppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/haptic_command_reader_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hppsrc/core/deviceio_trackers/cpp/joint_state_tracker.cppsrc/core/deviceio_trackers/cpp/oglo_tactile_tracker.cppsrc/core/deviceio_trackers/cpp/se3_tracker.cppsrc/core/deviceio_trackers/defaults.tomlsrc/core/deviceio_trackers/python/CMakeLists.txtsrc/core/deviceio_trackers/python/deviceio_trackers_init.pysrc/core/deviceio_trackers/python/tracker_bindings.cppsrc/core/deviceio_trackers/trackers.tomlsrc/core/live_trackers/AGENTS.mdsrc/core/live_trackers/cpp/CMakeLists.txtsrc/core/live_trackers/cpp/inc/live_trackers/live_deviceio_factory.hppsrc/core/live_trackers/cpp/live_deviceio_factory.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hppsrc/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.cppsrc/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.hppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.cppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.hppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hppsrc/core/live_trackers/cpp/live_se3_tracker_impl.cppsrc/core/live_trackers/cpp/live_se3_tracker_impl.hppsrc/core/mcap/cpp/CMakeLists.txtsrc/core/mcap/cpp/inc/mcap/recording_traits.hppsrc/core/python/CMakeLists.txtsrc/core/replay_trackers/AGENTS.mdsrc/core/replay_trackers/cpp/CMakeLists.txtsrc/core/replay_trackers/cpp/inc/replay_trackers/replay_deviceio_factory.hppsrc/core/replay_trackers/cpp/replay_deviceio_factory.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.hppsrc/core/retargeting_engine_tests/python/test_haptic_devices.pysrc/haptic_devices/push_tensor.py
💤 Files with no reviewable changes (35)
- src/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hpp
- src/core/deviceio_trackers/cpp/oglo_tactile_tracker.cpp
- src/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/se3_tracker.cpp
- src/core/deviceio_trackers/cpp/joint_state_tracker.cpp
- src/core/deviceio_trackers/cpp/haptic_command_reader_tracker.cpp
- src/core/deviceio_base/cpp/inc/deviceio_base/haptic_command_reader_tracker_base.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cpp
- src/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hpp
- src/core/replay_trackers/cpp/replay_haptic_command_reader_tracker_impl.hpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.hpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.cpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/haptic_command_reader_tracker.hpp
- src/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.cpp
- src/core/live_trackers/cpp/live_haptic_command_reader_tracker_impl.hpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.cpp
🚧 Files skipped from review as they are similar to previous changes (7)
- src/core/deviceio_trackers/python/CMakeLists.txt
- src/core/mcap/cpp/CMakeLists.txt
- src/core/deviceio_session/AGENTS.md
- src/core/replay_trackers/AGENTS.md
- src/core/live_trackers/AGENTS.md
- src/core/deviceio_trackers/AGENTS.md
- src/core/deviceio_base/AGENTS.md
| PICO vendor. Its ``collection_id`` and ``max_flatbuffer_size`` also arrive through | ||
| ``TrackerVendor::params`` at runtime instead of being fixed at generation time. | ||
|
|
||
| **Schema pybind bindings.** The field-by-field ``src/core/schema/python/*_bindings.h`` files are |
There was a problem hiding this comment.
@aristarkhovNV, I think you can follow up here for using flatbuffer objs rather than the manually coded bindings as the next step.
jiwenc-nv
left a comment
There was a problem hiding this comment.
let's use template files, rather than writing c++ code in python strings :)
a7fb344 to
c4f5a47
Compare
c4f5a47 to
5fe868c
Compare
5fe868c to
c889682
Compare
067a6d2 to
180c436
Compare
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/core/AGENTS.md`:
- Line 23: Correct the dependency-direction guidance in the CMake documentation
around python_package and stage_generated_tracker_exports: targets that produce
staged files must be built before and be dependencies of python_package, while
downstream consumers such as viz_py must depend on python_package. Remove
wording that instructs producers to depend on python_package, and preserve the
stated Windows Ninja ordering and stub-generation requirements.
In `@src/core/codegen/templates/fragments/replay_factory_in_plain.template`:
- Around line 1-4: Update ReplayDeviceIOFactory::create_@NAME@_tracker_impl in
the plain replay factory template to mark the unused tracker parameter with the
existing /*tracker*/ naming convention, matching replay_factory_out.template
while preserving the generated method signature and behavior.
In `@src/core/codegen/templates/in/facade.cpp.template`:
- Line 4: Update the include in the facade C++ template to use the canonical
consumer-visible package path for the generated tracker header instead of the
internal inc/deviceio_trackers/ layout, preserving the existing `@HEADER`@
substitution.
In `@src/core/codegen/templates/out/facade.cpp.template`:
- Line 4: Update the generated include in the facade template to use the
consumer-visible angle-bracket path deviceio_trackers/@HEADER@.hpp instead of
the in-tree inc/deviceio_trackers path, and configure the owning target to
expose the corresponding include directory publicly.
In `@src/viz/python/CMakeLists.txt`:
- Around line 36-43: Add isaacteleop_python to the dependency list in the viz_py
add_dependencies declaration, ensuring it is built before viz_py’s POST_BUILD
stub generation runs. Preserve all existing dependencies.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 45334b99-b713-4476-998d-d8966fdf66aa
📒 Files selected for processing (90)
cmake/ClangFormat.cmakecmake/GenerateTrackers.cmakedocs/source/device/add_device.rstdocs/source/index.rstdocs/source/references/generated_trackers.rstsrc/core/AGENTS.mdsrc/core/CMakeLists.txtsrc/core/codegen/AGENTS.mdsrc/core/codegen/generate_trackers.pysrc/core/codegen/in_renderer.pysrc/core/codegen/manifest.pysrc/core/codegen/templates.pysrc/core/codegen/templates/.clang-formatsrc/core/codegen/templates/fragments/live_factory_in.templatesrc/core/codegen/templates/fragments/live_factory_out.templatesrc/core/codegen/templates/fragments/live_try_create.templatesrc/core/codegen/templates/fragments/pybind_in.templatesrc/core/codegen/templates/fragments/pybind_out.templatesrc/core/codegen/templates/fragments/recording_traits_in.templatesrc/core/codegen/templates/fragments/replay_factory_in.templatesrc/core/codegen/templates/fragments/replay_factory_in_plain.templatesrc/core/codegen/templates/fragments/replay_factory_out.templatesrc/core/codegen/templates/fragments/replay_try_create.templatesrc/core/codegen/templates/in/deviceio_base.hpp.templatesrc/core/codegen/templates/in/facade.cpp.templatesrc/core/codegen/templates/in/facade.hpp.templatesrc/core/codegen/templates/in/live.cpp.templatesrc/core/codegen/templates/in/live.hpp.templatesrc/core/codegen/templates/in/replay.cpp.templatesrc/core/codegen/templates/in/replay.hpp.templatesrc/core/codegen/templates/out/deviceio_base.hpp.templatesrc/core/codegen/templates/out/facade.cpp.templatesrc/core/codegen/templates/out/facade.hpp.templatesrc/core/codegen/templates/out/live.cpp.templatesrc/core/codegen/templates/out/live.hpp.templatesrc/core/codegen/templates/out/replay.cpp.templatesrc/core/codegen/templates/out/replay.hpp.templatesrc/core/codegen/test_generate_prune.pysrc/core/codegen/test_manifest.pysrc/core/deviceio_base/AGENTS.mdsrc/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hppsrc/core/deviceio_session/AGENTS.mdsrc/core/deviceio_trackers/AGENTS.mdsrc/core/deviceio_trackers/cpp/CMakeLists.txtsrc/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hppsrc/core/deviceio_trackers/cpp/joint_state_tracker.cppsrc/core/deviceio_trackers/cpp/oglo_tactile_tracker.cppsrc/core/deviceio_trackers/cpp/se3_tracker.cppsrc/core/deviceio_trackers/defaults.tomlsrc/core/deviceio_trackers/python/CMakeLists.txtsrc/core/deviceio_trackers/python/tracker_bindings.cppsrc/core/deviceio_trackers/trackers.tomlsrc/core/live_trackers/AGENTS.mdsrc/core/live_trackers/cpp/CMakeLists.txtsrc/core/live_trackers/cpp/inc/live_trackers/live_deviceio_factory.hppsrc/core/live_trackers/cpp/live_deviceio_factory.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.cppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.hppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hppsrc/core/live_trackers/cpp/live_se3_tracker_impl.cppsrc/core/live_trackers/cpp/live_se3_tracker_impl.hppsrc/core/mcap/cpp/CMakeLists.txtsrc/core/mcap/cpp/inc/mcap/recording_traits.hppsrc/core/python/CMakeLists.txtsrc/core/replay_trackers/AGENTS.mdsrc/core/replay_trackers/cpp/CMakeLists.txtsrc/core/replay_trackers/cpp/inc/replay_trackers/replay_deviceio_factory.hppsrc/core/replay_trackers/cpp/replay_deviceio_factory.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.hppsrc/core/retargeting_engine_tests/python/test_haptic_devices.pysrc/python/isaacteleop/deviceio_trackers/__init__.pysrc/python/isaacteleop/haptic_devices/push_tensor.pysrc/viz/python/CMakeLists.txt
💤 Files with no reviewable changes (28)
- src/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hpp
- src/core/deviceio_trackers/cpp/se3_tracker.cpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.hpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/joint_state_tracker.cpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/oglo_tactile_tracker.cpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hpp
- src/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.hpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.cpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.hpp
🚧 Files skipped from review as they are similar to previous changes (23)
- src/core/mcap/cpp/CMakeLists.txt
- src/core/deviceio_trackers/defaults.toml
- src/core/replay_trackers/AGENTS.md
- docs/source/index.rst
- src/core/deviceio_trackers/python/CMakeLists.txt
- src/core/codegen/templates.py
- docs/source/device/add_device.rst
- src/core/mcap/cpp/inc/mcap/recording_traits.hpp
- src/core/codegen/AGENTS.md
- src/core/CMakeLists.txt
- src/core/deviceio_session/AGENTS.md
- src/core/live_trackers/AGENTS.md
- src/core/retargeting_engine_tests/python/test_haptic_devices.py
- src/core/live_trackers/cpp/live_deviceio_factory.cpp
- src/core/deviceio_base/AGENTS.md
- src/core/replay_trackers/cpp/CMakeLists.txt
- src/core/live_trackers/cpp/CMakeLists.txt
- src/core/replay_trackers/cpp/replay_deviceio_factory.cpp
- src/core/deviceio_trackers/cpp/CMakeLists.txt
- src/core/deviceio_trackers/AGENTS.md
- src/core/codegen/test_manifest.py
- docs/source/references/generated_trackers.rst
- cmake/GenerateTrackers.cmake
180c436 to
73852fe
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/core/codegen/manifest.py`:
- Around line 170-188: Validate that the resolved record field is a Boolean
before the direction/record conditions in the manifest validation flow; reject
values such as the string "false" rather than relying on Python truthiness.
Apply this before the checks using resolved.get("record"), including the
required-key validation and single_collection constraint, while preserving their
existing behavior for valid Boolean values.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: d666e79a-8bed-4d54-ba21-d311752b8a2f
📒 Files selected for processing (90)
cmake/ClangFormat.cmakecmake/GenerateTrackers.cmakedocs/source/device/add_device.rstdocs/source/index.rstdocs/source/references/generated_trackers.rstsrc/core/AGENTS.mdsrc/core/CMakeLists.txtsrc/core/codegen/AGENTS.mdsrc/core/codegen/generate_trackers.pysrc/core/codegen/in_renderer.pysrc/core/codegen/manifest.pysrc/core/codegen/templates.pysrc/core/codegen/templates/.clang-formatsrc/core/codegen/templates/fragments/live_factory_in.templatesrc/core/codegen/templates/fragments/live_factory_out.templatesrc/core/codegen/templates/fragments/live_try_create.templatesrc/core/codegen/templates/fragments/pybind_in.templatesrc/core/codegen/templates/fragments/pybind_out.templatesrc/core/codegen/templates/fragments/recording_traits_in.templatesrc/core/codegen/templates/fragments/replay_factory_in.templatesrc/core/codegen/templates/fragments/replay_factory_in_plain.templatesrc/core/codegen/templates/fragments/replay_factory_out.templatesrc/core/codegen/templates/fragments/replay_try_create.templatesrc/core/codegen/templates/in/deviceio_base.hpp.templatesrc/core/codegen/templates/in/facade.cpp.templatesrc/core/codegen/templates/in/facade.hpp.templatesrc/core/codegen/templates/in/live.cpp.templatesrc/core/codegen/templates/in/live.hpp.templatesrc/core/codegen/templates/in/replay.cpp.templatesrc/core/codegen/templates/in/replay.hpp.templatesrc/core/codegen/templates/out/deviceio_base.hpp.templatesrc/core/codegen/templates/out/facade.cpp.templatesrc/core/codegen/templates/out/facade.hpp.templatesrc/core/codegen/templates/out/live.cpp.templatesrc/core/codegen/templates/out/live.hpp.templatesrc/core/codegen/templates/out/replay.cpp.templatesrc/core/codegen/templates/out/replay.hpp.templatesrc/core/codegen/test_generate_prune.pysrc/core/codegen/test_manifest.pysrc/core/deviceio_base/AGENTS.mdsrc/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hppsrc/core/deviceio_session/AGENTS.mdsrc/core/deviceio_trackers/AGENTS.mdsrc/core/deviceio_trackers/cpp/CMakeLists.txtsrc/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hppsrc/core/deviceio_trackers/cpp/joint_state_tracker.cppsrc/core/deviceio_trackers/cpp/oglo_tactile_tracker.cppsrc/core/deviceio_trackers/cpp/se3_tracker.cppsrc/core/deviceio_trackers/defaults.tomlsrc/core/deviceio_trackers/python/CMakeLists.txtsrc/core/deviceio_trackers/python/tracker_bindings.cppsrc/core/deviceio_trackers/trackers.tomlsrc/core/live_trackers/AGENTS.mdsrc/core/live_trackers/cpp/CMakeLists.txtsrc/core/live_trackers/cpp/inc/live_trackers/live_deviceio_factory.hppsrc/core/live_trackers/cpp/live_deviceio_factory.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.cppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.hppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hppsrc/core/live_trackers/cpp/live_se3_tracker_impl.cppsrc/core/live_trackers/cpp/live_se3_tracker_impl.hppsrc/core/mcap/cpp/CMakeLists.txtsrc/core/mcap/cpp/inc/mcap/recording_traits.hppsrc/core/python/CMakeLists.txtsrc/core/replay_trackers/AGENTS.mdsrc/core/replay_trackers/cpp/CMakeLists.txtsrc/core/replay_trackers/cpp/inc/replay_trackers/replay_deviceio_factory.hppsrc/core/replay_trackers/cpp/replay_deviceio_factory.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.hppsrc/core/retargeting_engine_tests/python/test_haptic_devices.pysrc/python/isaacteleop/deviceio_trackers/__init__.pysrc/python/isaacteleop/haptic_devices/push_tensor.pysrc/viz/python/CMakeLists.txt
💤 Files with no reviewable changes (28)
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.hpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hpp
- src/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cpp
- src/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.hpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/joint_state_tracker.cpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.cpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/oglo_tactile_tracker.cpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/se3_tracker.cpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cpp
🚧 Files skipped from review as they are similar to previous changes (57)
- cmake/ClangFormat.cmake
- src/core/codegen/templates/.clang-format
- src/core/codegen/templates/fragments/live_try_create.template
- src/core/CMakeLists.txt
- src/core/codegen/templates/fragments/pybind_in.template
- src/core/codegen/templates/fragments/live_factory_in.template
- src/core/python/CMakeLists.txt
- src/core/codegen/templates/out/replay.hpp.template
- src/core/codegen/AGENTS.md
- src/core/codegen/templates.py
- docs/source/device/add_device.rst
- src/core/codegen/templates/fragments/replay_factory_out.template
- docs/source/index.rst
- src/core/codegen/templates/fragments/recording_traits_in.template
- src/core/codegen/templates/in/facade.cpp.template
- src/core/retargeting_engine_tests/python/test_haptic_devices.py
- src/core/deviceio_base/AGENTS.md
- src/core/codegen/templates/in/facade.hpp.template
- src/core/codegen/templates/fragments/replay_try_create.template
- cmake/GenerateTrackers.cmake
- src/core/codegen/templates/fragments/replay_factory_in_plain.template
- src/core/codegen/templates/out/deviceio_base.hpp.template
- src/viz/python/CMakeLists.txt
- src/core/live_trackers/cpp/CMakeLists.txt
- src/core/replay_trackers/AGENTS.md
- src/core/AGENTS.md
- src/core/codegen/test_generate_prune.py
- src/core/codegen/templates/fragments/replay_factory_in.template
- src/core/codegen/in_renderer.py
- src/core/deviceio_session/AGENTS.md
- src/core/mcap/cpp/CMakeLists.txt
- src/core/deviceio_trackers/AGENTS.md
- docs/source/references/generated_trackers.rst
- src/core/live_trackers/cpp/inc/live_trackers/live_deviceio_factory.hpp
- src/python/isaacteleop/deviceio_trackers/init.py
- src/core/codegen/templates/out/facade.hpp.template
- src/core/codegen/test_manifest.py
- src/core/codegen/templates/in/live.cpp.template
- src/core/deviceio_trackers/cpp/CMakeLists.txt
- src/core/replay_trackers/cpp/inc/replay_trackers/replay_deviceio_factory.hpp
- src/core/codegen/templates/in/replay.hpp.template
- src/core/codegen/templates/fragments/live_factory_out.template
- src/core/codegen/templates/in/replay.cpp.template
- src/core/replay_trackers/cpp/replay_deviceio_factory.cpp
- src/core/codegen/templates/out/facade.cpp.template
- src/core/live_trackers/cpp/live_deviceio_factory.cpp
- src/core/codegen/templates/out/live.cpp.template
- src/core/codegen/templates/out/live.hpp.template
- src/core/live_trackers/AGENTS.md
- src/core/deviceio_trackers/defaults.toml
- src/core/codegen/templates/fragments/pybind_out.template
- src/python/isaacteleop/haptic_devices/push_tensor.py
- src/core/deviceio_trackers/python/CMakeLists.txt
- src/core/deviceio_trackers/trackers.toml
- src/core/replay_trackers/cpp/CMakeLists.txt
- src/core/codegen/generate_trackers.py
- src/core/deviceio_trackers/python/tracker_bindings.cpp
444f83b to
fa22c20
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/core/codegen/test_manifest.py`:
- Around line 169-174: Update test_load_manifest_file to assert that the
required trackers.toml manifest exists instead of calling skipTest when it is
absent. Keep loading the manifest and validating that it contains entries after
the existence assertion.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 68bb9746-6fa3-4e23-8f8d-0b04ce1779b0
📒 Files selected for processing (89)
cmake/ClangFormat.cmakecmake/GenerateTrackers.cmakedocs/source/device/add_device.rstdocs/source/index.rstdocs/source/references/generated_trackers.rstsrc/core/AGENTS.mdsrc/core/CMakeLists.txtsrc/core/codegen/AGENTS.mdsrc/core/codegen/generate_trackers.pysrc/core/codegen/in_renderer.pysrc/core/codegen/manifest.pysrc/core/codegen/templates.pysrc/core/codegen/templates/.clang-formatsrc/core/codegen/templates/fragments/live_factory_in.templatesrc/core/codegen/templates/fragments/live_factory_out.templatesrc/core/codegen/templates/fragments/live_try_create.templatesrc/core/codegen/templates/fragments/pybind_in.templatesrc/core/codegen/templates/fragments/pybind_out.templatesrc/core/codegen/templates/fragments/recording_traits_in.templatesrc/core/codegen/templates/fragments/replay_factory_in.templatesrc/core/codegen/templates/fragments/replay_factory_in_plain.templatesrc/core/codegen/templates/fragments/replay_factory_out.templatesrc/core/codegen/templates/fragments/replay_try_create.templatesrc/core/codegen/templates/in/deviceio_base.hpp.templatesrc/core/codegen/templates/in/facade.cpp.templatesrc/core/codegen/templates/in/facade.hpp.templatesrc/core/codegen/templates/in/live.cpp.templatesrc/core/codegen/templates/in/live.hpp.templatesrc/core/codegen/templates/in/replay.cpp.templatesrc/core/codegen/templates/in/replay.hpp.templatesrc/core/codegen/templates/out/deviceio_base.hpp.templatesrc/core/codegen/templates/out/facade.cpp.templatesrc/core/codegen/templates/out/facade.hpp.templatesrc/core/codegen/templates/out/live.cpp.templatesrc/core/codegen/templates/out/live.hpp.templatesrc/core/codegen/templates/out/replay.cpp.templatesrc/core/codegen/templates/out/replay.hpp.templatesrc/core/codegen/test_generate_prune.pysrc/core/codegen/test_manifest.pysrc/core/deviceio_base/AGENTS.mdsrc/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hppsrc/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hppsrc/core/deviceio_session/AGENTS.mdsrc/core/deviceio_trackers/AGENTS.mdsrc/core/deviceio_trackers/cpp/CMakeLists.txtsrc/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hppsrc/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hppsrc/core/deviceio_trackers/cpp/joint_state_tracker.cppsrc/core/deviceio_trackers/cpp/oglo_tactile_tracker.cppsrc/core/deviceio_trackers/cpp/se3_tracker.cppsrc/core/deviceio_trackers/defaults.tomlsrc/core/deviceio_trackers/python/CMakeLists.txtsrc/core/deviceio_trackers/python/tracker_bindings.cppsrc/core/deviceio_trackers/trackers.tomlsrc/core/live_trackers/AGENTS.mdsrc/core/live_trackers/cpp/CMakeLists.txtsrc/core/live_trackers/cpp/inc/live_trackers/live_deviceio_factory.hppsrc/core/live_trackers/cpp/live_deviceio_factory.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cppsrc/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.cppsrc/core/live_trackers/cpp/live_joint_state_tracker_impl.hppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cppsrc/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hppsrc/core/live_trackers/cpp/live_se3_tracker_impl.cppsrc/core/live_trackers/cpp/live_se3_tracker_impl.hppsrc/core/mcap/cpp/CMakeLists.txtsrc/core/mcap/cpp/inc/mcap/recording_traits.hppsrc/core/python/CMakeLists.txtsrc/core/replay_trackers/AGENTS.mdsrc/core/replay_trackers/cpp/CMakeLists.txtsrc/core/replay_trackers/cpp/inc/replay_trackers/replay_deviceio_factory.hppsrc/core/replay_trackers/cpp/replay_deviceio_factory.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.cppsrc/core/replay_trackers/cpp/replay_se3_tracker_impl.hppsrc/core/retargeting_engine_tests/python/test_haptic_devices.pysrc/python/isaacteleop/deviceio_trackers/__init__.pysrc/python/isaacteleop/haptic_devices/push_tensor.py
💤 Files with no reviewable changes (28)
- src/core/deviceio_base/cpp/inc/deviceio_base/se3_tracker_base.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/generic_3axis_pedal_tracker_base.hpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.cpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.hpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.hpp
- src/core/deviceio_base/cpp/inc/deviceio_base/joint_state_tracker_base.hpp
- src/core/deviceio_trackers/cpp/generic_3axis_pedal_tracker.cpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.cpp
- src/core/deviceio_base/cpp/inc/deviceio_base/oglo_tactile_tracker_base.hpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_se3_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_generic_3axis_pedal_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/joint_state_tracker.cpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.hpp
- src/core/replay_trackers/cpp/replay_joint_state_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/oglo_tactile_tracker.cpp
- src/core/live_trackers/cpp/live_se3_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/se3_tracker.hpp
- src/core/live_trackers/cpp/live_oglo_tactile_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/generic_3axis_pedal_tracker.hpp
- src/core/deviceio_trackers/cpp/se3_tracker.cpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.hpp
- src/core/live_trackers/cpp/live_joint_state_tracker_impl.cpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/oglo_tactile_tracker.hpp
- src/core/live_trackers/cpp/live_generic_3axis_pedal_tracker_impl.cpp
- src/core/replay_trackers/cpp/replay_oglo_tactile_tracker_impl.hpp
- src/core/deviceio_trackers/cpp/inc/deviceio_trackers/joint_state_tracker.hpp
🚧 Files skipped from review as they are similar to previous changes (56)
- src/core/mcap/cpp/CMakeLists.txt
- src/core/codegen/templates/fragments/replay_factory_out.template
- cmake/ClangFormat.cmake
- src/core/codegen/templates/fragments/replay_try_create.template
- src/core/codegen/templates/.clang-format
- src/core/codegen/templates/fragments/live_factory_out.template
- src/core/deviceio_session/AGENTS.md
- src/core/codegen/templates/fragments/recording_traits_in.template
- src/core/replay_trackers/cpp/CMakeLists.txt
- src/core/codegen/templates/fragments/replay_factory_in.template
- src/core/codegen/templates/fragments/live_factory_in.template
- src/core/codegen/templates/out/replay.cpp.template
- src/core/deviceio_trackers/cpp/CMakeLists.txt
- docs/source/index.rst
- src/core/codegen/templates/fragments/pybind_in.template
- src/core/CMakeLists.txt
- src/core/codegen/templates/in/replay.hpp.template
- src/core/codegen/templates/fragments/live_try_create.template
- src/core/codegen/templates/in/facade.cpp.template
- src/core/deviceio_trackers/defaults.toml
- src/core/live_trackers/cpp/inc/live_trackers/live_deviceio_factory.hpp
- src/core/deviceio_trackers/AGENTS.md
- src/core/codegen/templates/in/replay.cpp.template
- src/core/codegen/AGENTS.md
- src/core/retargeting_engine_tests/python/test_haptic_devices.py
- src/core/codegen/templates/out/deviceio_base.hpp.template
- src/core/deviceio_base/AGENTS.md
- src/core/codegen/templates/in/live.cpp.template
- src/core/codegen/templates/out/replay.hpp.template
- src/core/replay_trackers/AGENTS.md
- src/core/replay_trackers/cpp/inc/replay_trackers/replay_deviceio_factory.hpp
- src/core/deviceio_trackers/python/CMakeLists.txt
- src/core/live_trackers/cpp/CMakeLists.txt
- src/core/codegen/templates/in/live.hpp.template
- src/core/deviceio_trackers/trackers.toml
- src/core/codegen/test_generate_prune.py
- src/core/codegen/templates/out/facade.hpp.template
- src/core/python/CMakeLists.txt
- src/python/isaacteleop/haptic_devices/push_tensor.py
- src/core/live_trackers/AGENTS.md
- src/core/mcap/cpp/inc/mcap/recording_traits.hpp
- src/core/codegen/templates/fragments/replay_factory_in_plain.template
- src/core/live_trackers/cpp/live_deviceio_factory.cpp
- src/core/deviceio_trackers/python/tracker_bindings.cpp
- src/python/isaacteleop/deviceio_trackers/init.py
- cmake/GenerateTrackers.cmake
- src/core/codegen/templates.py
- src/core/codegen/templates/in/deviceio_base.hpp.template
- docs/source/references/generated_trackers.rst
- src/core/replay_trackers/cpp/replay_deviceio_factory.cpp
- src/core/codegen/templates/out/facade.cpp.template
- src/core/codegen/in_renderer.py
- docs/source/device/add_device.rst
- src/core/codegen/templates/fragments/pybind_out.template
- src/core/codegen/generate_trackers.py
- src/core/codegen/templates/out/live.hpp.template
Passthrough trackers that only move FlatBuffers over the OpenXR tensor extensions had duplicated live/replay stacks and drifted (e.g. se3 warn-once vs oglo per-frame stderr). Each new one also meant ~24 files plus edits at six shared registration points. Declare them in deviceio_trackers/trackers.toml with %placeholder% defaults in defaults.toml. At CMake configure time, manifest.py resolves entries (including a strict boolean check on record), templates.py builds a TrackerGenContext, and generate_trackers.py emits C++ sources, generated_sources.cmake, and .inc fragments (factory dispatch, recording traits, pybind with share_tracked, Python __all__) that hand-written files include. Bodies live under codegen/templates/ (in/, out/, fragments/) as *.hpp.template / *.cpp.template with @key@ substitution via in_renderer.py. Generation is stdlib-only and compare-before-write; configure passes --prune-stale so renamed trackers cannot leave orphan headers on the generated include path. stage_generated_tracker_exports copies the Python export splice into the wheel tree (and installs it for editable scikit-build) before central stubgen. Migrate joint_state, se3_tracker, oglo_tactile, generic_3axis_pedal, and haptic_command (direction=out). Delete their hand-written stacks; all generated replay impls use warn-once-per-gap logging. direction=out yields a typed <Table>PushTracker around SchemaPusher so PushTensorHapticDevice pushes HapticCommand instead of packing bytes on the untyped TensorPushTracker escape hatch. HapticCommandReaderTracker stays hand-written (multi-sample per-endpoint bucketing); there is no generated multi_endpoint shape. head, hand, controller, full_body, message_channel, and FrameMetadataTrackerOak remain hand-written. Docs and package AGENTS.md describe the manifest workflow. Signed-off-by: Jakob Bornecrantz <tbornecrantz@nvidia.com>
fa22c20 to
4753694
Compare
Six trackers were pure FlatBuffer passthrough over the OpenXR tensor extensions, and after normalizing type names their live and replay impls were the same file. The duplication had already caused drift: the se3 replay impl logged a missing-data gap once behind a warned_no_data_ flag while the oglo one wrote to std::cerr every frame -- same intent, only one copy got the fix. Each new tracker also cost ~24 files of mechanical code plus edits to six shared registration points.
Declare passthrough trackers in deviceio_trackers/trackers.toml instead, with %placeholder% defaults in defaults.toml, and generate the facade, base interface, and live/replay impls at CMake configure time via codegen/generate_trackers.py. Registration points (factory dispatch rows and methods, MCAP recording traits, pybind blocks, Python all) are emitted as .inc fragments that the hand-written files include, so hand-written trackers keep their rows. Adding a passthrough tracker is now a .fbs schema plus ~10 lines of TOML.
Migrate se3_tracker, oglo_tactile, joint_state, generic_3axis_pedal and haptic_command_reader, and delete their hand-written stacks. All generated replay impls adopt the warn-once-per-gap logging, so oglo's per-frame stderr spam is gone -- a deliberate behavior change, not an accident.
Add a typed producer direction: direction = "out" generates a
PushTracker wrapping SchemaPusher, so PushTensorHapticDevice now pushes a typed HapticCommand instead of hand-rolling pack_haptic_command over the untyped TensorPushTracker, which stays as the bytes escape hatch.head, hand, controller, full_body, message_channel and FrameMetadataTrackerOak remain hand-written; the .fbs schemas and their pybind bindings are out of scope. Docs and the AGENTS.md files for the affected packages are updated to describe the manifest workflow.
Description
Fixes #(issue)
Type of change
Testing
Checklist
SKIP=check-copyright-year pre-commit run --all-filesgit commit -s) per the DCOSummary by CodeRabbit
New Features
Documentation
Tests