Skip to content

Commit

Permalink
Create gas measurement task
Browse files Browse the repository at this point in the history
  • Loading branch information
mrica-equinor committed Jan 29, 2025
1 parent 246f355 commit c83f94f
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 3 deletions.
18 changes: 16 additions & 2 deletions src/isar/apis/models/start_mission_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
TakeThermalImage,
TakeThermalVideo,
TakeVideo,
TakeGasMeasurement,
ZoomDescription,
)

Expand All @@ -28,6 +29,7 @@ class InspectionTypes(str, Enum):
video = "Video"
thermal_video = "ThermalVideo"
audio = "Audio"
gas_measurement = "GasMeasurement"


class TaskType(str, Enum):
Expand Down Expand Up @@ -200,7 +202,6 @@ def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
target=task_definition.inspection.inspection_target.to_alitra_position(),
duration=inspection_definition.duration,
metadata=task_definition.inspection.metadata,
zoom=task_definition.zoom,
)
else:
return RecordAudio(
Expand All @@ -209,7 +210,20 @@ def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
target=task_definition.inspection.inspection_target.to_alitra_position(),
duration=inspection_definition.duration,
metadata=task_definition.inspection.metadata,
zoom=task_definition.zoom,
)
elif inspection_definition.type == InspectionTypes.gas_measurement:
if task_definition.id:
return TakeGasMeasurement(
id=task_definition.id,
robot_pose=task_definition.pose.to_alitra_pose(),
tag_id=task_definition.tag,
metadata=task_definition.inspection.metadata,
)
else:
return TakeGasMeasurement(
robot_pose=task_definition.pose.to_alitra_pose(),
tag_id=task_definition.tag,
metadata=task_definition.inspection.metadata,
)
else:
raise ValueError(
Expand Down
1 change: 1 addition & 0 deletions src/isar/config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ def prefix_isar_topics(cls, v: Any, info: ValidationInfo):


load_dotenv()
print(os.getenv("env"))
settings = Settings()


Expand Down
2 changes: 1 addition & 1 deletion src/isar/state_machine/states/monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ def _queue_inspections_for_upload(
inspection: Inspection = self.state_machine.robot.get_inspection(
task=current_task
)
if current_task.inspection_id == inspection.id:
if current_task.inspection_id != inspection.id:
self.logger.warning(
f"The inspection_id of task ({current_task.inspection_id}) "
f"and result ({inspection.id}) is not matching. "
Expand Down
13 changes: 13 additions & 0 deletions src/robot_interface/models/inspection/inspection.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ class AudioMetadata(InspectionMetadata):
duration: Optional[float] = field(default=None)


@dataclass
class GasMeasurementMetadata(InspectionMetadata):
pass


class Inspection(BaseModel):
metadata: InspectionMetadata
id: str = Field(frozen=True)
Expand Down Expand Up @@ -90,3 +95,11 @@ class Audio(Inspection):
@staticmethod
def get_metadata_type() -> Type[InspectionMetadata]:
return AudioMetadata


class GasMeasurement(Inspection):
metadata: GasMeasurementMetadata

@staticmethod
def get_metadata_type() -> Type[InspectionMetadata]:
return GasMeasurementMetadata
17 changes: 17 additions & 0 deletions src/robot_interface/models/mission/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
Inspection,
ThermalImage,
ThermalVideo,
GasMeasurement,
Video,
)
from robot_interface.models.mission.status import TaskStatus
Expand All @@ -25,6 +26,7 @@ class TaskTypes(str, Enum):
TakeThermalImage = "take_thermal_image"
TakeVideo = "take_video"
TakeThermalVideo = "take_thermal_video"
TakeGasMeasurement = "take_gas_measurement"
RecordAudio = "record_audio"
DockingProcedure = "docking_procedure"

Expand Down Expand Up @@ -179,6 +181,20 @@ def get_inspection_type() -> Type[Inspection]:
return Audio


class TakeGasMeasurement(InspectionTask):
"""
Task which causes the robot to take a CO2 measurement at its position.
Duration of audio is given in seconds.
"""

type: Literal[TaskTypes.TakeGasMeasurement] = TaskTypes.TakeGasMeasurement

@staticmethod
def get_inspection_type() -> Type[Inspection]:
return GasMeasurement


TASKS = Union[
ReturnToHome,
Localize,
Expand All @@ -187,6 +203,7 @@ def get_inspection_type() -> Type[Inspection]:
TakeThermalImage,
TakeVideo,
TakeThermalVideo,
TakeGasMeasurement,
RecordAudio,
DockingProcedure,
]

0 comments on commit c83f94f

Please sign in to comment.