From b851f2cd00332f959ef4eb0dc7efa5b08d8dc4b5 Mon Sep 17 00:00:00 2001 From: Romain Thalineau Date: Wed, 12 Jul 2023 10:47:41 +0300 Subject: [PATCH 1/3] fix issue when rotation is not provided in pose --- src/pye57/scan_header.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pye57/scan_header.py b/src/pye57/scan_header.py index cce2ef6..c9143ea 100644 --- a/src/pye57/scan_header.py +++ b/src/pye57/scan_header.py @@ -24,12 +24,16 @@ def point_count(self): @property def rotation_matrix(self) -> np.array: + q = Quaternion([e.value() for e in self.node["pose"]["rotation"]]) return q.rotation_matrix @property def rotation(self) -> np.array: - q = Quaternion([e.value() for e in self.node["pose"]["rotation"]]) + try: + q = Quaternion([e.value() for e in self.node["pose"]["rotation"]]) + except libe57.E57Exception: + q = Quaternion() return q.elements @property From 677378ffa698a26dab256b2dd13095ab9e16f42e Mon Sep 17 00:00:00 2001 From: dancergraham Date: Mon, 12 Aug 2024 16:32:37 +0200 Subject: [PATCH 2/3] nit: catch more restricted exception type --- src/pye57/scan_header.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pye57/scan_header.py b/src/pye57/scan_header.py index c9143ea..1c479bd 100644 --- a/src/pye57/scan_header.py +++ b/src/pye57/scan_header.py @@ -24,15 +24,15 @@ def point_count(self): @property def rotation_matrix(self) -> np.array: - q = Quaternion([e.value() for e in self.node["pose"]["rotation"]]) return q.rotation_matrix @property def rotation(self) -> np.array: try: - q = Quaternion([e.value() for e in self.node["pose"]["rotation"]]) - except libe57.E57Exception: + rotation = self.node["pose"]["rotation"] + q = Quaternion([e.value() for e in rotation]) + except KeyError: q = Quaternion() return q.elements From 383d39b1362b9ddd9dd4c5b131fafcc766ee1e83 Mon Sep 17 00:00:00 2001 From: dancergraham Date: Mon, 12 Aug 2024 16:44:48 +0200 Subject: [PATCH 3/3] docs: Add a docstring for the ScanHeader class --- src/pye57/scan_header.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pye57/scan_header.py b/src/pye57/scan_header.py index 1c479bd..908f44b 100644 --- a/src/pye57/scan_header.py +++ b/src/pye57/scan_header.py @@ -5,6 +5,10 @@ from pye57.utils import get_fields, get_node class ScanHeader: + """Provides summary statistics for an individual lidar scan in an E57 file. + + Including the number of points, bounds and pose of the scan. + """ def __init__(self, scan_node): self.node = scan_node points = self.node["points"]