2121 "SegmentationPointCloud" ,
2222 "PointCloudLike" ,
2323 "PointCloudMetainfo" ,
24- "PointcloudSourceInfo " ,
24+ "PointCloudSourceInfo " ,
2525 "Stamp" ,
2626]
2727
@@ -38,9 +38,17 @@ class Stamp:
3838 sec : int
3939 nanosec : int
4040
41+ @property
42+ def in_seconds (self ) -> float :
43+ """Convert timestamp to seconds as a float.
4144
45+ Returns:
46+ float: Timestamp in seconds.
47+ """
48+ return self .sec + self .nanosec * 1e-9
49+
4250@define
43- class PointcloudSourceInfo :
51+ class PointCloudSourceInfo :
4452 """A dataclass to represent pointcloud source information.
4553
4654 Attributes:
@@ -62,11 +70,11 @@ class PointCloudMetainfo:
6270
6371 Attributes:
6472 stamp (Stamp): Timestamp.
65- sources (list[PointcloudSourceInfo ]): List of source information.
73+ sources (list[PointCloudSourceInfo ]): List of source information.
6674 """
6775
6876 stamp : Stamp = field (converter = lambda x : Stamp (** x ) if isinstance (x , dict ) else x )
69- sources : list [PointcloudSourceInfo ] = field (factory = list )
77+ sources : list [PointCloudSourceInfo ] = field (factory = list )
7078
7179 @classmethod
7280 def from_file (cls , filepath : str ) -> Self :
@@ -82,7 +90,7 @@ def from_file(cls, filepath: str) -> Self:
8290 stamp = Stamp (** data ["stamp" ])
8391 sources = []
8492 for source_data in data .get ("sources" , []):
85- sources .append (PointcloudSourceInfo (** source_data ))
93+ sources .append (PointCloudSourceInfo (** source_data ))
8694 return cls (stamp = stamp , sources = sources )
8795
8896 @property
@@ -94,7 +102,6 @@ def source_tokens(self) -> list[str]:
94102 """
95103 return [source .sensor_token for source in self .sources ]
96104
97-
98105@define
99106class PointCloud :
100107 """Abstract base dataclass for pointcloud data."""
0 commit comments