Skip to content

Commit

Permalink
Add RecordAudio inspection step
Browse files Browse the repository at this point in the history
  • Loading branch information
GodVenn committed Mar 17, 2023
1 parent 9b96b48 commit 3c5b07e
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/isar/apis/models/start_mission_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from robot_interface.models.mission.step import (
STEPS,
DriveToPose,
RecordAudio,
TakeImage,
TakeThermalImage,
TakeThermalVideo,
Expand All @@ -22,6 +23,7 @@ class InspectionTypes(str, Enum):
thermal_image = "ThermalImage"
video = "Video"
thermal_video = "ThermalVideo"
audio = "Audio"


class StartMissionInspectionDefinition(BaseModel):
Expand Down Expand Up @@ -119,6 +121,8 @@ def create_inspection_step(
inspection_step = TakeThermalImage(target=target)
elif inspection_type == InspectionTypes.thermal_video.value:
inspection_step = TakeThermalVideo(target=target, duration=duration)
elif inspection_type == InspectionTypes.audio.value:
inspection_step = RecordAudio(target=target, duration=duration)
else:
raise ValueError(f"Inspection type '{inspection_type}' not supported")

Expand Down
1 change: 1 addition & 0 deletions src/robot_interface/models/inspection/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from .inspection import (
Audio,
Image,
ImageMetadata,
Inspection,
Expand Down
14 changes: 14 additions & 0 deletions src/robot_interface/models/inspection/inspection.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ class ThermalVideoMetadata(InspectionMetadata):
duration: Optional[float] = field(default=None)


@dataclass
class AudioMetadata(InspectionMetadata):
duration: Optional[float] = field(default=None)


@dataclass
class Inspection:
id: str = field(default_factory=uuid4_string, init=False)
Expand Down Expand Up @@ -83,3 +88,12 @@ class ThermalVideo(Inspection):
@staticmethod
def get_metadata_type() -> Type[InspectionMetadata]:
return ThermalVideoMetadata


@dataclass
class Audio(Inspection):
metadata: AudioMetadata

@staticmethod
def get_metadata_type() -> Type[InspectionMetadata]:
return AudioMetadata
28 changes: 26 additions & 2 deletions src/robot_interface/models/mission/step.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@
from alitra import Pose, Position

from isar.services.utilities.uuid_string_factory import uuid4_string
from robot_interface.models.inspection import Image, ThermalImage, ThermalVideo, Video
from robot_interface.models.inspection.inspection import Inspection
from robot_interface.models.inspection import (
Audio,
Image,
Inspection,
ThermalImage,
ThermalVideo,
Video,
)
from robot_interface.models.mission.status import StepStatus


Expand Down Expand Up @@ -166,11 +172,29 @@ def get_inspection_type() -> Type[Inspection]:
return ThermalVideo


@dataclass
class RecordAudio(InspectionStep):
"""
Step which causes the robot to record a video at its position, facing the target.
Duration of audio is given in seconds.
"""

target: Position
duration: float
type: Literal["record_audio"] = "record_audio"

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


STEPS = Union[
DriveToPose,
DockingProcedure,
TakeImage,
TakeThermalImage,
TakeVideo,
TakeThermalVideo,
RecordAudio,
]

0 comments on commit 3c5b07e

Please sign in to comment.