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: 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