General ncore_vis updates and fixes#53
Merged
janickm merged 5 commits intoNVIDIA:mainfrom Mar 18, 2026
Merged
Conversation
…n lidar projection Use cam.get_frames_T_source_sensor() which directly returns T_world_camera, instead of se3_inverse(cam.get_frames_T_sensor_target()) which computes T_camera_world and then inverts it. Removes the unnecessary se3_inverse import.
Replace the incorrect per-observation-timestamp projection approach with proper cuboid track interpolation. Group all CuboidTrackObservations into CuboidTrack objects (built once globally, cached in DataLoader), then interpolate each track's bbox3 to the camera frame's mid-of-exposure timestamp using linear translation + SLERP rotation via PoseInterpolator. All cuboids are projected using a single camera pose evaluated at the same mid-frame time. - Add ncore/impl/data/tracks.py: CuboidTrack dataclass with interpolate_at() and from_observations() factory - Add ncore/impl/data/tracks_test.py: 20 unit tests (pass on 3.8 and 3.11) - Update ncore/impl/data/BUILD.bazel: pylib_tracks + pytest_tracks targets - Update tools/ncore_vis/data_loader.py: get_cuboid_tracks() lazy cache - Update tools/ncore_vis/BUILD.bazel: add pylib_tracks dep - Update tools/ncore_vis/components/camera.py: _overlay_cuboids_on_image now receives frame_idx, computes mid_timestamp_us, and uses interpolated tracks
…ization - Move CuboidTrack and tests from ncore/impl/data/ to tools/ncore_vis/ - Transform interpolated observations to world coordinates before projection - Restore cuboid source filter (dropdown was non-functional) - Use rolling-shutter-aware projection via shared projection mode dropdown - Add return_all_projections parameter to _project_points - Build cuboid tracks eagerly in DataLoader.__init__ (fixes thread-safety) - Add max_clamp_us parameter to interpolate_at for bounded clamping - Use reference-time range as clamp boundary to avoid false positives - Remove float64 type annotations from tracks.py
789c1ca to
70d2423
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several improvements and refactors to the visualization components for camera, lidar, and cuboid overlays. The main focus is on improving the accuracy of projections (especially for cuboids), standardizing frame index naming, and enhancing code clarity and maintainability. The changes also add new Bazel build targets for testing and modularization.
Projection and interpolation improvements
tools/ncore_vis/components/camera.py) [1] [2]_project_pointshelper now supports areturn_all_projectionsargument and passes it through to projection calls, allowing more flexible projection results. (tools/ncore_vis/components/camera.py) [1] [2]Frame index naming and consistency
frameare renamed toframe_idxin camera and lidar components, clarifying intent and reducing confusion between frame numbers and indices. (tools/ncore_vis/components/camera.py,tools/ncore_vis/components/lidar.py) [1] [2] [3] [4] [5] [6] [7]API and method updates
tools/ncore_vis/components/cuboids.py)frame_idxand more descriptive argument names, improving parallel loading and clarity. (tools/ncore_vis/components/lidar.py)Build system enhancements
py_librarytarget fortracks.pyand a correspondingpytest_testtarget fortracks_test.pyin the Bazel build file, improving modularity and testability. (tools/ncore_vis/BUILD.bazel) [1] [2]Code cleanup
se3_inversein the camera component, streamlining dependencies. (tools/ncore_vis/components/camera.py)