File tree Expand file tree Collapse file tree 2 files changed +41
-2
lines changed Expand file tree Collapse file tree 2 files changed +41
-2
lines changed Original file line number Diff line number Diff line change 1
1
from dataclasses import dataclass
2
- from typing import Optional , Dict , List
2
+ from typing import Optional , Dict , List , Set
3
3
from enum import Enum
4
+ from .annotation import Point3D
5
+ from .utils import flatten
4
6
5
7
6
8
class DatasetItemType (Enum ):
@@ -9,12 +11,31 @@ class DatasetItemType(Enum):
9
11
VIDEO = "video"
10
12
11
13
14
+ @dataclass
15
+ class Quaternion :
16
+ x : float
17
+ y : float
18
+ z : float
19
+ w : float
20
+
21
+
22
+ @dataclass
23
+ class CameraParams :
24
+ position : Point3D
25
+ heading : Quaternion
26
+ fx : float
27
+ fy : float
28
+ cx : float
29
+ cy : float
30
+
31
+
12
32
@dataclass
13
33
class SceneDatasetItem :
14
34
url : str
15
35
type : DatasetItemType
16
36
reference_id : Optional [str ] = None
17
37
metadata : Optional [dict ] = None
38
+ camera_params : Optional [CameraParams ] = None
18
39
19
40
20
41
@dataclass
@@ -40,4 +61,18 @@ class Scene:
40
61
class LidarScene (Scene ):
41
62
def __post_init__ (self ):
42
63
# do validation here for lidar scene
43
- pass
64
+ lidar_sources = flatten (
65
+ [
66
+ [
67
+ source
68
+ for source in frame .items .keys ()
69
+ if frame .items [source ].type == DatasetItemType .POINTCLOUD
70
+ ]
71
+ for frame in self .frames
72
+ ]
73
+ )
74
+ assert (
75
+ len (Set (lidar_sources )) == 1
76
+ ), "Each lidar scene must have exactly one lidar source"
77
+
78
+ # TODO: check single pointcloud per frame
Original file line number Diff line number Diff line change @@ -32,6 +32,10 @@ def _get_all_field_values(metadata_list: List[dict], key: str):
32
32
return {metadata [key ] for metadata in metadata_list if key in metadata }
33
33
34
34
35
+ def flatten (t ):
36
+ return [item for sublist in t for item in sublist ]
37
+
38
+
35
39
def suggest_metadata_schema (
36
40
data : Union [
37
41
List [DatasetItem ], List [BoxPrediction ], List [PolygonPrediction ]
You can’t perform that action at this time.
0 commit comments