diff --git a/src/isar/robot/robot_monitor_mission.py b/src/isar/robot/robot_monitor_mission.py index 8fac3dc3..c2ab4bc4 100644 --- a/src/isar/robot/robot_monitor_mission.py +++ b/src/isar/robot/robot_monitor_mission.py @@ -251,9 +251,10 @@ def _get_and_handle_task_status(self, current_task: TASKS) -> Optional[TASKS]: publish_task_status(self.mqtt_publisher, current_task, self.mission_id) return current_task - def _handle_stopped_mission(self, current_task: TASKS) -> None: - current_task.status = TaskStatus.Cancelled - publish_task_status(self.mqtt_publisher, current_task, self.mission_id) + def _handle_stopped_mission(self, current_task: Optional[TASKS]) -> None: + if current_task is not None: + current_task.status = TaskStatus.Cancelled + publish_task_status(self.mqtt_publisher, current_task, self.mission_id) publish_mission_status( self.mqtt_publisher, self.mission_id, @@ -302,6 +303,16 @@ def run(self) -> None: not in [MissionStatus.NotStarted, MissionStatus.InProgress] and current_task is None # We wait for all task statuses ): + if ( + new_mission_status == MissionStatus.Cancelled + and current_task is not None + and current_task.status == TaskStatus.InProgress + ): + current_task.status = TaskStatus.Cancelled + publish_task_status( + self.mqtt_publisher, current_task, self.mission_id + ) + # Standardises final mission status report new_mission_status = self._get_mission_status_based_on_task_status() if self.error_message is None and new_mission_status in [ diff --git a/src/isar/storage/utilities.py b/src/isar/storage/utilities.py index 94f46110..0fe0b2dd 100644 --- a/src/isar/storage/utilities.py +++ b/src/isar/storage/utilities.py @@ -35,7 +35,9 @@ def construct_metadata_file( "inspection_id": inspection.id, "mission_id": mission.id, "mission_name": mission.name, - "mission_date": datetime.now(timezone.utc).date(), + "mission_date": datetime.now(timezone.utc) + .date() + .strftime("%Y-%m-%dT%H:%M:%S.%f"), "plant_name": settings.PLANT_NAME, "isar_id": settings.ISAR_ID, "robot_name": settings.ROBOT_NAME, @@ -47,14 +49,18 @@ def construct_metadata_file( "y": inspection.metadata.robot_pose.position.y, "z": inspection.metadata.robot_pose.position.z, }, - "orientation": inspection.metadata.robot_pose.orientation.to_quat_array(), + "orientation": str( + inspection.metadata.robot_pose.orientation.to_quat_array() + ), }, "target_position": { "x": inspection.metadata.target_position.x, "y": inspection.metadata.target_position.y, "z": inspection.metadata.target_position.z, }, - "timestamp": inspection.metadata.start_time, + "timestamp": inspection.metadata.start_time.strftime( + "%Y-%m-%dT%H:%M:%S.%f" + ), }, "data_files": [ {