isar 1.25.0__py3-none-any.whl → 1.25.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of isar might be problematic. Click here for more details.
- isar/apis/models/start_mission_definition.py +92 -38
- isar/apis/robot_control/robot_controller.py +0 -3
- isar/config/settings.py +1 -17
- isar/services/service_connections/mqtt/robot_info_publisher.py +0 -1
- {isar-1.25.0.dist-info → isar-1.25.2.dist-info}/METADATA +1 -1
- {isar-1.25.0.dist-info → isar-1.25.2.dist-info}/RECORD +13 -12
- robot_interface/models/mission/task.py +2 -2
- robot_interface/models/robots/battery_state.py +6 -0
- robot_interface/telemetry/payloads.py +3 -9
- {isar-1.25.0.dist-info → isar-1.25.2.dist-info}/LICENSE +0 -0
- {isar-1.25.0.dist-info → isar-1.25.2.dist-info}/WHEEL +0 -0
- {isar-1.25.0.dist-info → isar-1.25.2.dist-info}/entry_points.txt +0 -0
- {isar-1.25.0.dist-info → isar-1.25.2.dist-info}/top_level.txt +0 -0
|
@@ -46,6 +46,7 @@ class StartMissionInspectionDefinition(BaseModel):
|
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class StartMissionTaskDefinition(BaseModel):
|
|
49
|
+
id: Optional[str] = None
|
|
49
50
|
type: TaskType = Field(default=TaskType.Inspection)
|
|
50
51
|
pose: InputPose
|
|
51
52
|
inspection: Optional[StartMissionInspectionDefinition] = None
|
|
@@ -115,48 +116,101 @@ def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
|
|
|
115
116
|
inspection_definition = task_definition.inspection
|
|
116
117
|
|
|
117
118
|
if inspection_definition.type == InspectionTypes.image:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
+
)
|
|
125
136
|
elif inspection_definition.type == InspectionTypes.video:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
+
)
|
|
134
156
|
elif inspection_definition.type == InspectionTypes.thermal_image:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
+
)
|
|
142
174
|
elif inspection_definition.type == InspectionTypes.thermal_video:
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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
|
+
)
|
|
151
194
|
elif inspection_definition.type == InspectionTypes.audio:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
+
)
|
|
160
214
|
else:
|
|
161
215
|
raise ValueError(
|
|
162
216
|
f"Inspection type '{inspection_definition.type}' not supported"
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import List
|
|
3
2
|
|
|
4
3
|
from injector import inject
|
|
5
4
|
|
|
6
5
|
from isar.apis.models.models import (
|
|
7
6
|
RobotInfoResponse,
|
|
8
|
-
TaskResponse,
|
|
9
7
|
)
|
|
10
8
|
from isar.config.settings import robot_settings, settings
|
|
11
9
|
from isar.services.utilities.robot_utilities import RobotUtilities
|
|
12
|
-
from robot_interface.models.mission.task import Task
|
|
13
10
|
|
|
14
11
|
|
|
15
12
|
class RobotController:
|
isar/config/settings.py
CHANGED
|
@@ -8,7 +8,7 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
8
8
|
|
|
9
9
|
from isar.config import predefined_missions
|
|
10
10
|
from robot_interface.models.robots.robot_model import RobotModel
|
|
11
|
-
from robot_interface.telemetry.payloads import DocumentInfo
|
|
11
|
+
from robot_interface.telemetry.payloads import DocumentInfo
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Settings(BaseSettings):
|
|
@@ -194,22 +194,6 @@ class Settings(BaseSettings):
|
|
|
194
194
|
# Info about robot documentation
|
|
195
195
|
DOCUMENTATION: List[DocumentInfo] = Field(default=[])
|
|
196
196
|
|
|
197
|
-
# Endpoints to reach video streams for the robot
|
|
198
|
-
VIDEO_STREAMS: List[VideoStream] = Field(
|
|
199
|
-
default=[
|
|
200
|
-
VideoStream(
|
|
201
|
-
name="Front camera",
|
|
202
|
-
url="http://localhost:5000/videostream/front",
|
|
203
|
-
type="turtlebot",
|
|
204
|
-
),
|
|
205
|
-
VideoStream(
|
|
206
|
-
name="Rear camera",
|
|
207
|
-
url="http://localhost:5000/videostream/rear",
|
|
208
|
-
type="turtlebot",
|
|
209
|
-
),
|
|
210
|
-
]
|
|
211
|
-
)
|
|
212
|
-
|
|
213
197
|
# Data scheme the robot should adhere to
|
|
214
198
|
# Options [DS0001]
|
|
215
199
|
DATA_SCHEME: str = Field(default="DS0001")
|
|
@@ -22,7 +22,6 @@ class RobotInfoPublisher:
|
|
|
22
22
|
robot_serial_number=settings.SERIAL_NUMBER,
|
|
23
23
|
robot_asset=settings.PLANT_SHORT_NAME,
|
|
24
24
|
documentation=settings.DOCUMENTATION,
|
|
25
|
-
video_streams=settings.VIDEO_STREAMS,
|
|
26
25
|
host=settings.API_HOST_VIEWED_EXTERNALLY,
|
|
27
26
|
port=settings.API_PORT,
|
|
28
27
|
capabilities=robot_settings.CAPABILITIES,
|
|
@@ -5,8 +5,8 @@ isar/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
5
5
|
isar/apis/api.py,sha256=vUy7QbHrKcTHjh2rkU7lqQPkCasI6umha8r6H88JiXE,13942
|
|
6
6
|
isar/apis/models/__init__.py,sha256=NI1BYyN__Ogr00Qqe0XJ-9gEVPva2brXo2RJsbrS4tM,52
|
|
7
7
|
isar/apis/models/models.py,sha256=HzLaWhjAv0uJRBWipIgYg_F75eaQ5jl9Pi4UnYbDJ-M,1749
|
|
8
|
-
isar/apis/models/start_mission_definition.py,sha256=
|
|
9
|
-
isar/apis/robot_control/robot_controller.py,sha256=
|
|
8
|
+
isar/apis/models/start_mission_definition.py,sha256=yaWICdWJrCYFIm5Aq1K3BVxD9oyVuXYaaY9hJG2aoVY,8820
|
|
9
|
+
isar/apis/robot_control/robot_controller.py,sha256=nGfGkYUzwubzI4aXfNOMuL_vWOb13ZVAntFTR2oVFno,924
|
|
10
10
|
isar/apis/schedule/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
isar/apis/schedule/scheduling_controller.py,sha256=JvuioSWmJohiCqfGSCDvOq-CK2Y7ACHfXLfH-UhVQJ8,11371
|
|
12
12
|
isar/apis/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -16,7 +16,7 @@ isar/config/configuration_error.py,sha256=rO6WOhafX6xvVib8WxV-eY483Z0PpN-9PxGsq5
|
|
|
16
16
|
isar/config/log.py,sha256=zHFLmGWQRn8TrcsxUS6KHpJt2JE86kYazU7b-bkcN9o,2285
|
|
17
17
|
isar/config/logging.conf,sha256=mYO1xf27gAopEMHhGzY7-mwyfN16rwRLkPNMvy3zn2g,1127
|
|
18
18
|
isar/config/settings.env,sha256=hJFfyl4S84nmcyf70Pz8nbGlPf4KTVx0UkgP3uf6T8E,534
|
|
19
|
-
isar/config/settings.py,sha256=
|
|
19
|
+
isar/config/settings.py,sha256=NdFZSRTEeULulvU8tX904YblUFxZPwQpLu1opA5hbNE,12998
|
|
20
20
|
isar/config/certs/ca-cert.pem,sha256=qoNljfad_qcMxhXJIUMLd7nT-Qwf_d4dYSdoOFEOE8I,2179
|
|
21
21
|
isar/config/keyvault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
isar/config/keyvault/keyvault_error.py,sha256=zvPCsZLjboxsxthYkxpRERCTFxYV8R5WmACewAUQLwk,41
|
|
@@ -57,7 +57,7 @@ isar/services/service_connections/request_handler.py,sha256=0LxC0lu_HXeEf_xmJWjf
|
|
|
57
57
|
isar/services/service_connections/mqtt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
58
|
isar/services/service_connections/mqtt/mqtt_client.py,sha256=N6o9U1PUmMJdHz-EDI8TA28gnMTVmNoxo_BKlfGyzeU,3547
|
|
59
59
|
isar/services/service_connections/mqtt/robot_heartbeat_publisher.py,sha256=_bUOG7CfqBlCRvG4vh2XGoMXucBxsJarFIeXIKOH1aw,1019
|
|
60
|
-
isar/services/service_connections/mqtt/robot_info_publisher.py,sha256=
|
|
60
|
+
isar/services/service_connections/mqtt/robot_info_publisher.py,sha256=AxokGk51hRPTxxD2r0P9braPJCMrf1InaCxrUBKkF4g,1402
|
|
61
61
|
isar/services/service_connections/stid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
62
|
isar/services/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
63
|
isar/services/utilities/queue_utilities.py,sha256=Pw3hehSwkXJNeDv-bDVDfs58VOwtt3i5hpiJ2ZpphuQ,1225
|
|
@@ -96,19 +96,20 @@ robot_interface/models/inspection/inspection.py,sha256=nSoKTDPRWnpaJuoKnaE_2EEJ6
|
|
|
96
96
|
robot_interface/models/mission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
97
97
|
robot_interface/models/mission/mission.py,sha256=QZBDQiOmpb4C7nNCf1PaCWwpvAc8jrhwHSznOe2YhX8,842
|
|
98
98
|
robot_interface/models/mission/status.py,sha256=C_viZWNTYOncWCdurx7Pko_D9d595QmHuJZBT8YMHUg,724
|
|
99
|
-
robot_interface/models/mission/task.py,sha256=
|
|
99
|
+
robot_interface/models/mission/task.py,sha256=boRigdjY9dvJzHYxAweqydRGt7CUyXFcCjMVw-lrwJM,4969
|
|
100
100
|
robot_interface/models/robots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
101
|
+
robot_interface/models/robots/battery_state.py,sha256=BuZcgC3NaHDU-2WrjZBER2Ps96CnLy3vE2P4v4NajN4,108
|
|
101
102
|
robot_interface/models/robots/media.py,sha256=Bo6XisTND9MOsxvJe6mWtKumFCpX6pbEBzEnAKpoIpU,232
|
|
102
103
|
robot_interface/models/robots/robot_model.py,sha256=pZQsqhn9hh6XE3EjMZhWMzYqg5oJ4CJ4CXeOASKvEf8,452
|
|
103
104
|
robot_interface/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
105
|
robot_interface/telemetry/mqtt_client.py,sha256=DkzYZNWFaJkG3AVc0dM4Bj52hZEQj-14Q75zqzQcv9A,2988
|
|
105
|
-
robot_interface/telemetry/payloads.py,sha256=
|
|
106
|
+
robot_interface/telemetry/payloads.py,sha256=WMR4VtL-K0JmUA22OcCaZ_RJwT5X2UfcLuwSNg9Skno,1580
|
|
106
107
|
robot_interface/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
107
108
|
robot_interface/utilities/json_service.py,sha256=nU2Q_3P9Fq9hs6F_wtUjWtHfl_g1Siy-yDhXXSKwHwg,1018
|
|
108
109
|
robot_interface/utilities/uuid_string_factory.py,sha256=_NQIbBQ56w0qqO0MUDP6aPpHbxW7ATRhK8HnQiBSLkc,76
|
|
109
|
-
isar-1.25.
|
|
110
|
-
isar-1.25.
|
|
111
|
-
isar-1.25.
|
|
112
|
-
isar-1.25.
|
|
113
|
-
isar-1.25.
|
|
114
|
-
isar-1.25.
|
|
110
|
+
isar-1.25.2.dist-info/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
|
|
111
|
+
isar-1.25.2.dist-info/METADATA,sha256=t3sDmJeNGF2p0Vv_keYawujTe5qGymoTsw5rD9FRYXs,30661
|
|
112
|
+
isar-1.25.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
113
|
+
isar-1.25.2.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
|
|
114
|
+
isar-1.25.2.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
|
|
115
|
+
isar-1.25.2.dist-info/RECORD,,
|
|
@@ -38,7 +38,7 @@ class Task(BaseModel):
|
|
|
38
38
|
status: TaskStatus = Field(default=TaskStatus.NotStarted)
|
|
39
39
|
error_message: Optional[ErrorMessage] = Field(default=None)
|
|
40
40
|
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)
|
|
42
42
|
|
|
43
43
|
def is_finished(self) -> bool:
|
|
44
44
|
if (
|
|
@@ -59,7 +59,7 @@ class InspectionTask(Task):
|
|
|
59
59
|
Base class for all inspection tasks which produce results to be uploaded.
|
|
60
60
|
"""
|
|
61
61
|
|
|
62
|
-
inspection_id: str = Field(default_factory=uuid4_string)
|
|
62
|
+
inspection_id: str = Field(default_factory=uuid4_string, frozen=True)
|
|
63
63
|
robot_pose: Pose = Field(default=None, init=True)
|
|
64
64
|
metadata: Optional[dict] = Field(default_factory=dict)
|
|
65
65
|
zoom: Optional[ZoomDescription] = Field(default=None)
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
2
|
from datetime import datetime
|
|
3
|
-
from typing import List
|
|
3
|
+
from typing import List, Optional
|
|
4
4
|
|
|
5
5
|
from alitra import Pose
|
|
6
6
|
from transitions import State
|
|
7
7
|
|
|
8
8
|
from robot_interface.models.mission.status import RobotStatus
|
|
9
|
+
from robot_interface.models.robots.battery_state import BatteryState
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
@dataclass
|
|
@@ -30,6 +31,7 @@ class TelemetryPosePayload(TelemetryPayload):
|
|
|
30
31
|
@dataclass
|
|
31
32
|
class TelemetryBatteryPayload(TelemetryPayload):
|
|
32
33
|
battery_level: float
|
|
34
|
+
battery_state: Optional[BatteryState] = None
|
|
33
35
|
|
|
34
36
|
|
|
35
37
|
@dataclass
|
|
@@ -48,13 +50,6 @@ class DocumentInfo:
|
|
|
48
50
|
url: str
|
|
49
51
|
|
|
50
52
|
|
|
51
|
-
@dataclass
|
|
52
|
-
class VideoStream:
|
|
53
|
-
name: str
|
|
54
|
-
url: str
|
|
55
|
-
type: str
|
|
56
|
-
|
|
57
|
-
|
|
58
53
|
@dataclass
|
|
59
54
|
class RobotStatusPayload:
|
|
60
55
|
isar_id: str
|
|
@@ -76,7 +71,6 @@ class RobotInfoPayload:
|
|
|
76
71
|
robot_serial_number: str
|
|
77
72
|
robot_asset: str
|
|
78
73
|
documentation: List[DocumentInfo]
|
|
79
|
-
video_streams: List[VideoStream]
|
|
80
74
|
host: str
|
|
81
75
|
port: int
|
|
82
76
|
capabilities: List[str]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|