Skip to content

Commit 07a911b

Browse files
tsundvolloysand
authored andcommitted
Reintroduce isar task id in mission task definition
for Flotilla to be able to match its existing task request to the one that is returned from ISAR
1 parent c8ff71c commit 07a911b

File tree

2 files changed

+94
-40
lines changed

2 files changed

+94
-40
lines changed

src/isar/apis/models/start_mission_definition.py

Lines changed: 92 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class StartMissionInspectionDefinition(BaseModel):
4646

4747

4848
class StartMissionTaskDefinition(BaseModel):
49+
id: Optional[str] = None
4950
type: TaskType = Field(default=TaskType.Inspection)
5051
pose: InputPose
5152
inspection: Optional[StartMissionInspectionDefinition] = None
@@ -115,48 +116,101 @@ def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
115116
inspection_definition = task_definition.inspection
116117

117118
if inspection_definition.type == InspectionTypes.image:
118-
return TakeImage(
119-
robot_pose=task_definition.pose.to_alitra_pose(),
120-
tag_id=task_definition.tag,
121-
target=task_definition.inspection.inspection_target.to_alitra_position(),
122-
metadata=task_definition.inspection.metadata,
123-
zoom=task_definition.zoom,
124-
)
119+
if task_definition.id:
120+
return TakeImage(
121+
id=task_definition.id,
122+
robot_pose=task_definition.pose.to_alitra_pose(),
123+
tag_id=task_definition.tag,
124+
target=task_definition.inspection.inspection_target.to_alitra_position(),
125+
metadata=task_definition.inspection.metadata,
126+
zoom=task_definition.zoom,
127+
)
128+
else:
129+
return TakeImage(
130+
robot_pose=task_definition.pose.to_alitra_pose(),
131+
tag_id=task_definition.tag,
132+
target=task_definition.inspection.inspection_target.to_alitra_position(),
133+
metadata=task_definition.inspection.metadata,
134+
zoom=task_definition.zoom,
135+
)
125136
elif inspection_definition.type == InspectionTypes.video:
126-
return TakeVideo(
127-
robot_pose=task_definition.pose.to_alitra_pose(),
128-
tag_id=task_definition.tag,
129-
target=task_definition.inspection.inspection_target.to_alitra_position(),
130-
duration=inspection_definition.duration,
131-
metadata=task_definition.inspection.metadata,
132-
zoom=task_definition.zoom,
133-
)
137+
if task_definition.id:
138+
return TakeVideo(
139+
id=task_definition.id,
140+
robot_pose=task_definition.pose.to_alitra_pose(),
141+
tag_id=task_definition.tag,
142+
target=task_definition.inspection.inspection_target.to_alitra_position(),
143+
duration=inspection_definition.duration,
144+
metadata=task_definition.inspection.metadata,
145+
zoom=task_definition.zoom,
146+
)
147+
else:
148+
return TakeVideo(
149+
robot_pose=task_definition.pose.to_alitra_pose(),
150+
tag_id=task_definition.tag,
151+
target=task_definition.inspection.inspection_target.to_alitra_position(),
152+
duration=inspection_definition.duration,
153+
metadata=task_definition.inspection.metadata,
154+
zoom=task_definition.zoom,
155+
)
134156
elif inspection_definition.type == InspectionTypes.thermal_image:
135-
return TakeThermalImage(
136-
robot_pose=task_definition.pose.to_alitra_pose(),
137-
tag_id=task_definition.tag,
138-
target=task_definition.inspection.inspection_target.to_alitra_position(),
139-
metadata=task_definition.inspection.metadata,
140-
zoom=task_definition.zoom,
141-
)
157+
if task_definition.id:
158+
return TakeThermalImage(
159+
id=task_definition.id,
160+
robot_pose=task_definition.pose.to_alitra_pose(),
161+
tag_id=task_definition.tag,
162+
target=task_definition.inspection.inspection_target.to_alitra_position(),
163+
metadata=task_definition.inspection.metadata,
164+
zoom=task_definition.zoom,
165+
)
166+
else:
167+
return TakeThermalImage(
168+
robot_pose=task_definition.pose.to_alitra_pose(),
169+
tag_id=task_definition.tag,
170+
target=task_definition.inspection.inspection_target.to_alitra_position(),
171+
metadata=task_definition.inspection.metadata,
172+
zoom=task_definition.zoom,
173+
)
142174
elif inspection_definition.type == InspectionTypes.thermal_video:
143-
return TakeThermalVideo(
144-
robot_pose=task_definition.pose.to_alitra_pose(),
145-
tag_id=task_definition.tag,
146-
target=task_definition.inspection.inspection_target.to_alitra_position(),
147-
duration=inspection_definition.duration,
148-
metadata=task_definition.inspection.metadata,
149-
zoom=task_definition.zoom,
150-
)
175+
if task_definition.id:
176+
return TakeThermalVideo(
177+
id=task_definition.id,
178+
robot_pose=task_definition.pose.to_alitra_pose(),
179+
tag_id=task_definition.tag,
180+
target=task_definition.inspection.inspection_target.to_alitra_position(),
181+
duration=inspection_definition.duration,
182+
metadata=task_definition.inspection.metadata,
183+
zoom=task_definition.zoom,
184+
)
185+
else:
186+
return TakeThermalVideo(
187+
robot_pose=task_definition.pose.to_alitra_pose(),
188+
tag_id=task_definition.tag,
189+
target=task_definition.inspection.inspection_target.to_alitra_position(),
190+
duration=inspection_definition.duration,
191+
metadata=task_definition.inspection.metadata,
192+
zoom=task_definition.zoom,
193+
)
151194
elif inspection_definition.type == InspectionTypes.audio:
152-
return RecordAudio(
153-
robot_pose=task_definition.pose.to_alitra_pose(),
154-
tag_id=task_definition.tag,
155-
target=task_definition.inspection.inspection_target.to_alitra_position(),
156-
duration=inspection_definition.duration,
157-
metadata=task_definition.inspection.metadata,
158-
zoom=task_definition.zoom,
159-
)
195+
if task_definition.id:
196+
return RecordAudio(
197+
id=task_definition.id,
198+
robot_pose=task_definition.pose.to_alitra_pose(),
199+
tag_id=task_definition.tag,
200+
target=task_definition.inspection.inspection_target.to_alitra_position(),
201+
duration=inspection_definition.duration,
202+
metadata=task_definition.inspection.metadata,
203+
zoom=task_definition.zoom,
204+
)
205+
else:
206+
return RecordAudio(
207+
robot_pose=task_definition.pose.to_alitra_pose(),
208+
tag_id=task_definition.tag,
209+
target=task_definition.inspection.inspection_target.to_alitra_position(),
210+
duration=inspection_definition.duration,
211+
metadata=task_definition.inspection.metadata,
212+
zoom=task_definition.zoom,
213+
)
160214
else:
161215
raise ValueError(
162216
f"Inspection type '{inspection_definition.type}' not supported"

src/robot_interface/models/mission/task.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class Task(BaseModel):
3838
status: TaskStatus = Field(default=TaskStatus.NotStarted)
3939
error_message: Optional[ErrorMessage] = Field(default=None)
4040
tag_id: Optional[str] = Field(default=None)
41-
id: str = Field(default_factory=uuid4_string)
41+
id: str = Field(default_factory=uuid4_string, frozen=True)
4242

4343
def is_finished(self) -> bool:
4444
if (
@@ -59,7 +59,7 @@ class InspectionTask(Task):
5959
Base class for all inspection tasks which produce results to be uploaded.
6060
"""
6161

62-
inspection_id: str = Field(default_factory=uuid4_string)
62+
inspection_id: str = Field(default_factory=uuid4_string, frozen=True)
6363
robot_pose: Pose = Field(default=None, init=True)
6464
metadata: Optional[dict] = Field(default_factory=dict)
6565
zoom: Optional[ZoomDescription] = Field(default=None)

0 commit comments

Comments
 (0)