From e86d1804d7e00e2af4b809ef3184688c5e0d869f Mon Sep 17 00:00:00 2001 From: Adam Shapiro Date: Wed, 14 May 2025 09:52:56 -0400 Subject: [PATCH 1/2] Include baseline distance/std dev in raw GNSS attitude printout. --- python/fusion_engine_client/messages/measurements.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/fusion_engine_client/messages/measurements.py b/python/fusion_engine_client/messages/measurements.py index a44d54f7..1c33f5e4 100644 --- a/python/fusion_engine_client/messages/measurements.py +++ b/python/fusion_engine_client/messages/measurements.py @@ -1398,6 +1398,8 @@ def __str__(self): Solution Type: {self.solution_type} Relative position (ENU) (m): {self.relative_position_enu_m[0]:.2f}, {self.relative_position_enu_m[1]:.2f}, {self.relative_position_enu_m[2]:.2f} Position std (ENU) (m): {self.position_std_enu_m[0]:.2f}, {self.position_std_enu_m[1]:.2f}, {self.position_std_enu_m[2]:.2f} + Baseline distance (m): {np.linalg.norm(self.relative_position_enu_m):.2f} + Baseline std (m): {np.sqrt(np.sum(self.position_std_enu_m ** 2)):.2f} YPR (deg): {ypr_deg[0]:.2f}, {ypr_deg[1]:.2f}, {ypr_deg[2]:.2f}""" @classmethod From 7e5fdb43ba98e338a42e242c991b9784ae1e10b5 Mon Sep 17 00:00:00 2001 From: Adam Shapiro Date: Wed, 14 May 2025 09:53:20 -0400 Subject: [PATCH 2/2] Fixed displacement plot median position calculation. --- python/fusion_engine_client/analysis/analyzer.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/python/fusion_engine_client/analysis/analyzer.py b/python/fusion_engine_client/analysis/analyzer.py index a1925d5c..ab80833c 100755 --- a/python/fusion_engine_client/analysis/analyzer.py +++ b/python/fusion_engine_client/analysis/analyzer.py @@ -911,8 +911,17 @@ def _plot_pose_displacement(self, title='Pose Displacement', reference=None): reference_ecef_m = position_ecef_m[:, 0] title_suffix = ' From First Position' elif reference == 'median': - reference_ecef_m = position_ecef_m[:, 0] + reference_ecef_m = np.median(position_ecef_m, axis=1) title_suffix = ' From Median Position' + elif reference == 'median_fixed': + idx = solution_type == SolutionType.RTKFixed + if np.any(idx): + reference_ecef_m = np.median(position_ecef_m[:, idx], axis=1) + title_suffix = ' From Median Fixed Position' + else: + self.logger.warning('No fixed positions available. Using median as displacement plot reference.') + reference_ecef_m = np.median(position_ecef_m, axis=1) + title_suffix = ' From Median Position' else: raise ValueError('Unrecognized reference specifier.') else: