feat(perception): add ground-aware cuboid refusion
This commit is contained in:
+45
-29
@@ -237,7 +237,15 @@ def test_recorded_blueprint_accumulates_point_frames_on_session_timeline() -> No
|
||||
visible_ranges = spatial_view.properties["VisibleTimeRanges"]
|
||||
line_grid = spatial_view.properties["LineGrid3D"]
|
||||
|
||||
assert visible_ranges.ranges.as_arrow_array().to_pylist() == [
|
||||
assert visible_ranges.ranges.as_arrow_array().to_pylist() == []
|
||||
assert line_grid.visible.as_arrow_array().to_pylist() == [False]
|
||||
point_behavior, point_visualizer, point_time_ranges = spatial_view.visualizer_overrides[
|
||||
"/world/points"
|
||||
]
|
||||
trajectory_behavior, trajectory_time_ranges = spatial_view.visualizer_overrides[
|
||||
"/world/trajectory"
|
||||
]
|
||||
expected_accumulation = [
|
||||
{
|
||||
"timeline": SESSION_TIMELINE,
|
||||
"range": {
|
||||
@@ -246,9 +254,8 @@ def test_recorded_blueprint_accumulates_point_frames_on_session_timeline() -> No
|
||||
},
|
||||
}
|
||||
]
|
||||
assert line_grid.visible.as_arrow_array().to_pylist() == [False]
|
||||
point_behavior, point_visualizer = spatial_view.visualizer_overrides["/world/points"]
|
||||
trajectory_behavior = spatial_view.visualizer_overrides["/world/trajectory"]
|
||||
assert point_time_ranges.ranges.as_arrow_array().to_pylist() == expected_accumulation
|
||||
assert trajectory_time_ranges.ranges.as_arrow_array().to_pylist() == expected_accumulation
|
||||
perception_behavior = spatial_view.visualizer_overrides["/world/perception"]
|
||||
assert point_behavior.visible.as_arrow_array().to_pylist() == [False]
|
||||
assert trajectory_behavior.visible.as_arrow_array().to_pylist() == [True]
|
||||
@@ -277,9 +284,9 @@ def test_zero_accumulation_uses_latest_frame_instead_of_empty_time_range() -> No
|
||||
blueprint = _recorded_blueprint(RerunSceneSettings(accumulation_seconds=0.0, show_grid=True))
|
||||
spatial_view = blueprint.root_container.contents[0]
|
||||
|
||||
assert "VisibleTimeRanges" not in spatial_view.properties
|
||||
assert spatial_view.properties["VisibleTimeRanges"].ranges.as_arrow_array().to_pylist() == []
|
||||
point_behavior, point_visualizer = spatial_view.visualizer_overrides["/world/points"]
|
||||
trajectory_behavior = spatial_view.visualizer_overrides["/world/trajectory"]
|
||||
(trajectory_behavior,) = spatial_view.visualizer_overrides["/world/trajectory"]
|
||||
assert point_behavior.visible.as_arrow_array().to_pylist() == [True]
|
||||
assert trajectory_behavior.visible.as_arrow_array().to_pylist() == [True]
|
||||
point_components = {str(batch.component_descriptor()) for batch in point_visualizer.overrides}
|
||||
@@ -309,18 +316,32 @@ def test_dynamic_blueprint_reuses_scene_ids_without_playback_mutation() -> None:
|
||||
assert first.root_container.contents[3].id == RECORDED_METRICS_VIEW_ID
|
||||
assert second.root_container.contents[3].id == RECORDED_METRICS_VIEW_ID
|
||||
|
||||
first_point_behavior, first_point_visualizer = first_view.visualizer_overrides["/world/points"]
|
||||
second_point_behavior, second_point_visualizer = second_view.visualizer_overrides[
|
||||
"/world/points"
|
||||
first_point_behavior, first_point_visualizer, first_point_time_ranges = (
|
||||
first_view.visualizer_overrides["/world/points"]
|
||||
)
|
||||
second_point_behavior, second_point_visualizer, second_point_time_ranges = (
|
||||
second_view.visualizer_overrides["/world/points"]
|
||||
)
|
||||
first_trajectory, first_trajectory_time_ranges = first_view.visualizer_overrides[
|
||||
"/world/trajectory"
|
||||
]
|
||||
second_trajectory, second_trajectory_time_ranges = second_view.visualizer_overrides[
|
||||
"/world/trajectory"
|
||||
]
|
||||
first_trajectory = first_view.visualizer_overrides["/world/trajectory"]
|
||||
second_trajectory = second_view.visualizer_overrides["/world/trajectory"]
|
||||
assert first_point_visualizer.id == RECORDED_POINTS_VISUALIZER_ID
|
||||
assert second_point_visualizer.id == RECORDED_POINTS_VISUALIZER_ID
|
||||
assert first_point_behavior.visible.as_arrow_array().to_pylist() == [False]
|
||||
assert second_point_behavior.visible.as_arrow_array().to_pylist() == [True]
|
||||
assert first_trajectory.visible.as_arrow_array().to_pylist() == [True]
|
||||
assert second_trajectory.visible.as_arrow_array().to_pylist() == [False]
|
||||
assert (
|
||||
first_point_time_ranges.ranges.as_arrow_array().to_pylist()
|
||||
== first_trajectory_time_ranges.ranges.as_arrow_array().to_pylist()
|
||||
)
|
||||
assert (
|
||||
second_point_time_ranges.ranges.as_arrow_array().to_pylist()
|
||||
== second_trajectory_time_ranges.ranges.as_arrow_array().to_pylist()
|
||||
)
|
||||
|
||||
payload = recorded_blueprint_rrd(
|
||||
RerunSceneSettings(show_points=False, show_trajectory=False),
|
||||
@@ -373,17 +394,14 @@ def test_viewer_blueprint_reset_is_bounded_and_recreates_render_views() -> None:
|
||||
cuboid_view = cuboids.root_container.contents[2]
|
||||
assert cuboid_view.origin == "/world"
|
||||
assert "VisibleTimeRanges" not in cuboid_view.properties
|
||||
cuboid_points, cuboid_point_visualizer = cuboid_view.visualizer_overrides[
|
||||
"/world/points"
|
||||
]
|
||||
cuboid_points, cuboid_point_visualizer = cuboid_view.visualizer_overrides["/world/points"]
|
||||
cuboid_perception = cuboid_view.visualizer_overrides["/world/perception"]
|
||||
cuboid_diagnostic_lidar = cuboid_view.visualizer_overrides[
|
||||
"/world/perception/lidar"
|
||||
]
|
||||
cuboid_diagnostic_lidar = cuboid_view.visualizer_overrides["/world/perception/lidar"]
|
||||
assert cuboid_points.visible.as_arrow_array().to_pylist() == [True]
|
||||
assert cuboid_point_visualizer.id != initial.root_container.contents[0].visualizer_overrides[
|
||||
"/world/points"
|
||||
][1].id
|
||||
assert (
|
||||
cuboid_point_visualizer.id
|
||||
!= initial.root_container.contents[0].visualizer_overrides["/world/points"][1].id
|
||||
)
|
||||
assert cuboid_perception.visible.as_arrow_array().to_pylist() == [True]
|
||||
assert cuboid_diagnostic_lidar.visible.as_arrow_array().to_pylist() == [False]
|
||||
perception_behavior = initial.root_container.contents[0].visualizer_overrides[
|
||||
@@ -415,18 +433,16 @@ def test_viewer_blueprint_unifies_original_video_and_independent_ai_layers() ->
|
||||
assert camera_view.visualizer_overrides[
|
||||
"/perception/camera/segmentation"
|
||||
].visible.as_arrow_array().to_pylist() == [True]
|
||||
semantic_behavior, semantic_time_ranges = spatial_view.visualizer_overrides[
|
||||
"/world/perception/semantic_points"
|
||||
]
|
||||
cuboid_behavior, cuboid_time_ranges = spatial_view.visualizer_overrides[
|
||||
"/world/perception/boxes3d"
|
||||
]
|
||||
(semantic_behavior,) = spatial_view.visualizer_overrides["/world/perception/semantic_points"]
|
||||
(cuboid_behavior,) = spatial_view.visualizer_overrides["/world/perception/boxes3d"]
|
||||
assert semantic_behavior.visible.as_arrow_array().to_pylist() == [True]
|
||||
assert cuboid_behavior.visible.as_arrow_array().to_pylist() == [False]
|
||||
assert semantic_time_ranges.ranges.as_arrow_array().to_pylist() == []
|
||||
assert cuboid_time_ranges.ranges.as_arrow_array().to_pylist() == []
|
||||
visible_ranges = spatial_view.properties["VisibleTimeRanges"]
|
||||
assert visible_ranges.ranges.as_arrow_array().to_pylist() == [
|
||||
assert visible_ranges.ranges.as_arrow_array().to_pylist() == []
|
||||
_point_behavior, _point_visualizer, point_time_ranges = spatial_view.visualizer_overrides[
|
||||
"/world/points"
|
||||
]
|
||||
assert point_time_ranges.ranges.as_arrow_array().to_pylist() == [
|
||||
{
|
||||
"timeline": SESSION_TIMELINE,
|
||||
"range": {"start": -12_000_000_000, "end": 0},
|
||||
|
||||
Reference in New Issue
Block a user