feat(perception): run PointPillars on RAVNOVES00
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
from k1link.compute.l31_pointpillars_ravnoves import (
|
||||
L31PointPillarsRavnovesError,
|
||||
nearest_pose_indices,
|
||||
select_visual_frame_indices,
|
||||
sensor_frame_xyzi,
|
||||
)
|
||||
|
||||
|
||||
def test_nearest_pose_binding_prefers_earlier_pose_on_tie() -> None:
|
||||
indices, age_ms = nearest_pose_indices(
|
||||
np.asarray([10, 20, 31], dtype=np.int64) * 1_000_000,
|
||||
np.asarray([5, 15, 30], dtype=np.int64) * 1_000_000,
|
||||
)
|
||||
assert indices.tolist() == [0, 1, 2]
|
||||
assert age_ms.tolist() == [5.0, 5.0, 1.0]
|
||||
|
||||
|
||||
def test_sensor_frame_xyzi_inverts_map_pose() -> None:
|
||||
points = np.asarray([[11.0, 20.0, 30.0], [10.0, 22.0, 30.0]])
|
||||
intensity = np.asarray([255, 0], dtype=np.uint8)
|
||||
result = sensor_frame_xyzi(
|
||||
points,
|
||||
intensity,
|
||||
position_map_xyz=np.asarray([10.0, 20.0, 30.0]),
|
||||
orientation_map_from_lidar_xyzw=np.asarray([0.0, 0.0, 0.0, 1.0]),
|
||||
)
|
||||
np.testing.assert_allclose(
|
||||
result,
|
||||
np.asarray([[1.0, 0.0, 0.0, 1.0], [0.0, 2.0, 0.0, 0.0]]),
|
||||
)
|
||||
|
||||
|
||||
def test_visual_selection_prefers_vehicles_with_route_coverage() -> None:
|
||||
selected = select_visual_frame_indices(
|
||||
[0, 3, 1, 0, 0, 2],
|
||||
[5, 3, 9, 0, 4, 2],
|
||||
maximum_frames=3,
|
||||
)
|
||||
assert selected == (1, 2, 5)
|
||||
|
||||
|
||||
def test_visual_selection_rejects_impossible_class_count() -> None:
|
||||
with pytest.raises(L31PointPillarsRavnovesError):
|
||||
select_visual_frame_indices([2], [1])
|
||||
Reference in New Issue
Block a user