isar 1.24.5__py3-none-any.whl → 1.25.0__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/models.py +1 -0
- isar/apis/models/start_mission_definition.py +73 -123
- isar/apis/schedule/scheduling_controller.py +27 -9
- isar/config/certs/ca-cert.pem +26 -26
- isar/config/predefined_missions/default.json +12 -11
- isar/config/predefined_missions/default_turtlebot.json +17 -16
- isar/mission_planner/local_planner.py +6 -20
- isar/mission_planner/mission_planner_interface.py +1 -1
- isar/script.py +5 -4
- isar/state_machine/state_machine.py +4 -4
- isar/state_machine/states/idle.py +9 -7
- isar/state_machine/states/monitor.py +11 -3
- isar/storage/slimm_storage.py +4 -1
- isar/storage/utilities.py +3 -4
- {isar-1.24.5.dist-info → isar-1.25.0.dist-info}/METADATA +1 -1
- {isar-1.24.5.dist-info → isar-1.25.0.dist-info}/RECORD +24 -26
- robot_interface/models/inspection/inspection.py +4 -11
- robot_interface/models/mission/mission.py +9 -17
- robot_interface/models/mission/task.py +28 -40
- robot_interface/robot_interface.py +7 -5
- isar/services/readers/__init__.py +0 -0
- isar/services/readers/base_reader.py +0 -37
- {isar-1.24.5.dist-info → isar-1.25.0.dist-info}/LICENSE +0 -0
- {isar-1.24.5.dist-info → isar-1.25.0.dist-info}/WHEEL +0 -0
- {isar-1.24.5.dist-info → isar-1.25.0.dist-info}/entry_points.txt +0 -0
- {isar-1.24.5.dist-info → isar-1.25.0.dist-info}/top_level.txt +0 -0
isar/apis/models/models.py
CHANGED
|
@@ -2,7 +2,6 @@ import time
|
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from typing import List, Optional
|
|
4
4
|
|
|
5
|
-
from alitra import Frame, Orientation, Pose, Position
|
|
6
5
|
from pydantic import BaseModel, Field
|
|
7
6
|
|
|
8
7
|
from isar.apis.models.models import InputPose, InputPosition
|
|
@@ -44,7 +43,6 @@ class StartMissionInspectionDefinition(BaseModel):
|
|
|
44
43
|
analysis_type: Optional[str] = None
|
|
45
44
|
duration: Optional[float] = None
|
|
46
45
|
metadata: Optional[dict] = None
|
|
47
|
-
id: Optional[str] = None
|
|
48
46
|
|
|
49
47
|
|
|
50
48
|
class StartMissionTaskDefinition(BaseModel):
|
|
@@ -52,180 +50,132 @@ class StartMissionTaskDefinition(BaseModel):
|
|
|
52
50
|
pose: InputPose
|
|
53
51
|
inspection: Optional[StartMissionInspectionDefinition] = None
|
|
54
52
|
tag: Optional[str] = None
|
|
55
|
-
id: Optional[str] = None
|
|
56
53
|
zoom: Optional[ZoomDescription] = None
|
|
57
54
|
|
|
58
55
|
|
|
59
56
|
class StartMissionDefinition(BaseModel):
|
|
60
57
|
tasks: List[StartMissionTaskDefinition]
|
|
61
|
-
id: Optional[str] = None
|
|
62
58
|
name: Optional[str] = None
|
|
63
59
|
start_pose: Optional[InputPose] = None
|
|
64
|
-
dock: Optional[bool] =
|
|
65
|
-
undock: Optional[bool] =
|
|
60
|
+
dock: Optional[bool] = Field(default=False)
|
|
61
|
+
undock: Optional[bool] = Field(default=False)
|
|
66
62
|
|
|
67
63
|
|
|
68
|
-
def to_isar_mission(
|
|
64
|
+
def to_isar_mission(
|
|
65
|
+
start_mission_definition: StartMissionDefinition,
|
|
66
|
+
return_pose: Optional[InputPose] = None,
|
|
67
|
+
) -> Mission:
|
|
69
68
|
isar_tasks: List[TASKS] = []
|
|
70
69
|
|
|
71
|
-
for
|
|
72
|
-
task: TASKS =
|
|
73
|
-
if start_mission_task_definition.id:
|
|
74
|
-
task.id = start_mission_task_definition.id
|
|
70
|
+
for task_definition in start_mission_definition.tasks:
|
|
71
|
+
task: TASKS = to_isar_task(task_definition)
|
|
75
72
|
isar_tasks.append(task)
|
|
76
73
|
|
|
74
|
+
if return_pose:
|
|
75
|
+
isar_tasks.append(ReturnToHome(pose=return_pose.to_alitra_pose()))
|
|
76
|
+
|
|
77
77
|
if not isar_tasks:
|
|
78
78
|
raise MissionPlannerError("Mission does not contain any valid tasks")
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
isar_mission: Mission = Mission(tasks=isar_tasks)
|
|
83
|
-
|
|
84
|
-
isar_mission.dock = start_mission_definition.dock
|
|
85
|
-
isar_mission.undock = start_mission_definition.undock
|
|
86
|
-
|
|
80
|
+
isar_mission_name: str
|
|
87
81
|
if start_mission_definition.name:
|
|
88
|
-
|
|
82
|
+
isar_mission_name = start_mission_definition.name
|
|
89
83
|
else:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if start_mission_definition.id:
|
|
93
|
-
isar_mission.id = start_mission_definition.id
|
|
84
|
+
isar_mission_name = _build_mission_name()
|
|
94
85
|
|
|
86
|
+
start_pose = None
|
|
95
87
|
if start_mission_definition.start_pose:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
input_pose.orientation.x,
|
|
106
|
-
input_pose.orientation.y,
|
|
107
|
-
input_pose.orientation.z,
|
|
108
|
-
input_pose.orientation.w,
|
|
109
|
-
input_frame,
|
|
110
|
-
)
|
|
111
|
-
isar_mission.start_pose = Pose(
|
|
112
|
-
position=input_position, orientation=input_orientation, frame=input_frame
|
|
113
|
-
)
|
|
114
|
-
|
|
115
|
-
return isar_mission
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
def check_for_duplicate_ids(items: List[TASKS]):
|
|
119
|
-
duplicate_ids = get_duplicate_ids(items=items)
|
|
120
|
-
if len(duplicate_ids) > 0:
|
|
121
|
-
raise MissionPlannerError(
|
|
122
|
-
f"Failed to create as there were duplicate IDs which is not allowed "
|
|
123
|
-
f"({duplicate_ids})"
|
|
124
|
-
)
|
|
125
|
-
|
|
88
|
+
start_pose = start_mission_definition.start_pose.to_alitra_pose()
|
|
89
|
+
|
|
90
|
+
return Mission(
|
|
91
|
+
tasks=isar_tasks,
|
|
92
|
+
name=isar_mission_name,
|
|
93
|
+
start_pose=start_pose,
|
|
94
|
+
dock=start_mission_definition.dock,
|
|
95
|
+
undock=start_mission_definition.undock,
|
|
96
|
+
)
|
|
126
97
|
|
|
127
|
-
def create_isar_task(start_mission_task_definition) -> TASKS:
|
|
128
98
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
99
|
+
def to_isar_task(task_definition: StartMissionTaskDefinition) -> TASKS:
|
|
100
|
+
if task_definition.type == TaskType.Inspection:
|
|
101
|
+
return to_inspection_task(task_definition)
|
|
102
|
+
elif task_definition.type == TaskType.Localization:
|
|
103
|
+
return to_localization_task(task_definition)
|
|
104
|
+
elif task_definition.type == TaskType.ReturnToHome:
|
|
105
|
+
return create_return_to_home_task(task_definition)
|
|
106
|
+
elif task_definition.type == TaskType.Dock:
|
|
136
107
|
return create_dock_task()
|
|
137
108
|
else:
|
|
138
109
|
raise MissionPlannerError(
|
|
139
|
-
f"Failed to create task: '{
|
|
110
|
+
f"Failed to create task: '{task_definition.type}' is not a valid"
|
|
140
111
|
)
|
|
141
112
|
|
|
142
113
|
|
|
143
|
-
def
|
|
144
|
-
|
|
145
|
-
) -> TASKS:
|
|
114
|
+
def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
|
|
115
|
+
inspection_definition = task_definition.inspection
|
|
146
116
|
|
|
147
|
-
if
|
|
117
|
+
if inspection_definition.type == InspectionTypes.image:
|
|
148
118
|
return TakeImage(
|
|
149
|
-
|
|
150
|
-
tag_id=
|
|
151
|
-
|
|
152
|
-
metadata=
|
|
153
|
-
zoom=
|
|
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,
|
|
154
124
|
)
|
|
155
|
-
elif
|
|
125
|
+
elif inspection_definition.type == InspectionTypes.video:
|
|
156
126
|
return TakeVideo(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
metadata=
|
|
162
|
-
zoom=
|
|
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,
|
|
163
133
|
)
|
|
164
|
-
|
|
165
|
-
elif start_mission_task_definition.inspection.type == InspectionTypes.thermal_image:
|
|
134
|
+
elif inspection_definition.type == InspectionTypes.thermal_image:
|
|
166
135
|
return TakeThermalImage(
|
|
167
|
-
|
|
168
|
-
tag_id=
|
|
169
|
-
|
|
170
|
-
metadata=
|
|
171
|
-
zoom=
|
|
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,
|
|
172
141
|
)
|
|
173
|
-
|
|
174
|
-
elif start_mission_task_definition.inspection.type == InspectionTypes.thermal_video:
|
|
142
|
+
elif inspection_definition.type == InspectionTypes.thermal_video:
|
|
175
143
|
return TakeThermalVideo(
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
metadata=
|
|
181
|
-
zoom=
|
|
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,
|
|
182
150
|
)
|
|
183
|
-
|
|
184
|
-
elif start_mission_task_definition.inspection.type == InspectionTypes.audio:
|
|
151
|
+
elif inspection_definition.type == InspectionTypes.audio:
|
|
185
152
|
return RecordAudio(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
metadata=
|
|
191
|
-
zoom=
|
|
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,
|
|
192
159
|
)
|
|
193
160
|
else:
|
|
194
161
|
raise ValueError(
|
|
195
|
-
f"Inspection type '{
|
|
162
|
+
f"Inspection type '{inspection_definition.type}' not supported"
|
|
196
163
|
)
|
|
197
164
|
|
|
198
165
|
|
|
199
|
-
def
|
|
200
|
-
|
|
201
|
-
) -> Localize:
|
|
202
|
-
return Localize(
|
|
203
|
-
localization_pose=start_mission_task_definition.pose.to_alitra_pose()
|
|
204
|
-
)
|
|
166
|
+
def to_localization_task(task_definition: StartMissionTaskDefinition) -> Localize:
|
|
167
|
+
return Localize(localization_pose=task_definition.pose.to_alitra_pose())
|
|
205
168
|
|
|
206
169
|
|
|
207
170
|
def create_return_to_home_task(
|
|
208
|
-
|
|
171
|
+
task_definition: StartMissionTaskDefinition,
|
|
209
172
|
) -> ReturnToHome:
|
|
210
|
-
return ReturnToHome(pose=
|
|
173
|
+
return ReturnToHome(pose=task_definition.pose.to_alitra_pose())
|
|
211
174
|
|
|
212
175
|
|
|
213
176
|
def create_dock_task() -> DockingProcedure:
|
|
214
177
|
return DockingProcedure(behavior="dock")
|
|
215
178
|
|
|
216
179
|
|
|
217
|
-
def get_duplicate_ids(items: List[TASKS]) -> List[str]:
|
|
218
|
-
unique_ids: List[str] = []
|
|
219
|
-
duplicate_ids: List[str] = []
|
|
220
|
-
for item in items:
|
|
221
|
-
id: str = item.id
|
|
222
|
-
if id not in unique_ids:
|
|
223
|
-
unique_ids.append(id)
|
|
224
|
-
else:
|
|
225
|
-
duplicate_ids.append(id)
|
|
226
|
-
|
|
227
|
-
return duplicate_ids
|
|
228
|
-
|
|
229
|
-
|
|
230
180
|
def _build_mission_name() -> str:
|
|
231
181
|
return f"{settings.PLANT_SHORT_NAME}{settings.ROBOT_NAME}{int(time.time())}"
|
|
@@ -21,7 +21,13 @@ from isar.mission_planner.mission_planner_interface import MissionPlannerError
|
|
|
21
21
|
from isar.services.utilities.scheduling_utilities import SchedulingUtilities
|
|
22
22
|
from isar.state_machine.states_enum import States
|
|
23
23
|
from robot_interface.models.mission.mission import Mission
|
|
24
|
-
from robot_interface.models.mission.task import
|
|
24
|
+
from robot_interface.models.mission.task import (
|
|
25
|
+
TASKS,
|
|
26
|
+
InspectionTask,
|
|
27
|
+
Localize,
|
|
28
|
+
MoveArm,
|
|
29
|
+
ReturnToHome,
|
|
30
|
+
)
|
|
25
31
|
|
|
26
32
|
|
|
27
33
|
class SchedulingController:
|
|
@@ -115,7 +121,9 @@ class SchedulingController:
|
|
|
115
121
|
self.scheduling_utilities.verify_state_machine_ready_to_receive_mission(state)
|
|
116
122
|
|
|
117
123
|
try:
|
|
118
|
-
mission: Mission = to_isar_mission(
|
|
124
|
+
mission: Mission = to_isar_mission(
|
|
125
|
+
start_mission_definition=mission_definition, return_pose=return_pose
|
|
126
|
+
)
|
|
119
127
|
except MissionPlannerError as e:
|
|
120
128
|
error_message = f"Bad Request - Cannot create ISAR mission: {e}"
|
|
121
129
|
self.logger.warning(error_message)
|
|
@@ -127,9 +135,6 @@ class SchedulingController:
|
|
|
127
135
|
self.scheduling_utilities.verify_robot_capable_of_mission(
|
|
128
136
|
mission=mission, robot_capabilities=robot_settings.CAPABILITIES
|
|
129
137
|
)
|
|
130
|
-
if return_pose:
|
|
131
|
-
pose: Pose = return_pose.to_alitra_pose()
|
|
132
|
-
mission.tasks.append(ReturnToHome(pose=pose))
|
|
133
138
|
|
|
134
139
|
initial_pose_alitra: Optional[Pose] = (
|
|
135
140
|
initial_pose.to_alitra_pose() if initial_pose else None
|
|
@@ -213,7 +218,9 @@ class SchedulingController:
|
|
|
213
218
|
self.scheduling_utilities.verify_state_machine_ready_to_receive_mission(state)
|
|
214
219
|
|
|
215
220
|
pose: Pose = target_pose.to_alitra_pose()
|
|
216
|
-
mission: Mission = Mission(
|
|
221
|
+
mission: Mission = Mission(
|
|
222
|
+
name="Drive to pose", tasks=[ReturnToHome(pose=pose)]
|
|
223
|
+
)
|
|
217
224
|
|
|
218
225
|
self.logger.info(
|
|
219
226
|
f"Starting drive to mission with ISAR Mission ID: '{mission.id}'"
|
|
@@ -237,7 +244,9 @@ class SchedulingController:
|
|
|
237
244
|
self.scheduling_utilities.verify_state_machine_ready_to_receive_mission(state)
|
|
238
245
|
|
|
239
246
|
pose: Pose = localization_pose.to_alitra_pose()
|
|
240
|
-
mission: Mission = Mission(
|
|
247
|
+
mission: Mission = Mission(
|
|
248
|
+
name="Localization mission", tasks=[Localize(localization_pose=pose)]
|
|
249
|
+
)
|
|
241
250
|
|
|
242
251
|
self.logger.info(
|
|
243
252
|
f"Starting localization mission with ISAR Mission ID: '{mission.id}'"
|
|
@@ -284,7 +293,9 @@ class SchedulingController:
|
|
|
284
293
|
|
|
285
294
|
self.scheduling_utilities.verify_state_machine_ready_to_receive_mission(state)
|
|
286
295
|
|
|
287
|
-
mission: Mission = Mission(
|
|
296
|
+
mission: Mission = Mission(
|
|
297
|
+
name="Move arm mission", tasks=[MoveArm(arm_pose=arm_pose_literal)]
|
|
298
|
+
)
|
|
288
299
|
|
|
289
300
|
self.logger.info(
|
|
290
301
|
f"Starting move arm mission with ISAR Mission ID: '{mission.id}'"
|
|
@@ -302,4 +313,11 @@ class SchedulingController:
|
|
|
302
313
|
)
|
|
303
314
|
|
|
304
315
|
def _task_api_response(self, task: TASKS) -> TaskResponse:
|
|
305
|
-
|
|
316
|
+
if isinstance(task, InspectionTask):
|
|
317
|
+
inspection_id = task.inspection_id
|
|
318
|
+
else:
|
|
319
|
+
inspection_id = None
|
|
320
|
+
|
|
321
|
+
return TaskResponse(
|
|
322
|
+
id=task.id, tag_id=task.tag_id, inspection_id=inspection_id, type=task.type
|
|
323
|
+
)
|
isar/config/certs/ca-cert.pem
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
|
-
|
|
2
|
+
MIIGGzCCBAOgAwIBAgIUCVuS8tL7R2bdjRJznkk1NN0oUa8wDQYJKoZIhvcNAQEL
|
|
3
3
|
BQAwgZwxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZCZXJnZW4xDzANBgNVBAcMBkJl
|
|
4
4
|
cmdlbjEUMBIGA1UECgwLRXFfUm9ib3RpY3MxETAPBgNVBAsMCFJvYm90aWNzMRww
|
|
5
5
|
GgYDVQQDDBNSb2JvdGljc19TZWxmU2lnbmVkMSQwIgYJKoZIhvcNAQkBFhVmZ19y
|
|
6
|
-
|
|
6
|
+
b2JvdHNAZXF1aW5vci5jb20wHhcNMjQxMjExMDczNzAzWhcNMjUxMjExMDczNzAz
|
|
7
7
|
WjCBnDELMAkGA1UEBhMCTk8xDzANBgNVBAgMBkJlcmdlbjEPMA0GA1UEBwwGQmVy
|
|
8
8
|
Z2VuMRQwEgYDVQQKDAtFcV9Sb2JvdGljczERMA8GA1UECwwIUm9ib3RpY3MxHDAa
|
|
9
9
|
BgNVBAMME1JvYm90aWNzX1NlbGZTaWduZWQxJDAiBgkqhkiG9w0BCQEWFWZnX3Jv
|
|
10
10
|
Ym90c0BlcXVpbm9yLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
11
|
+
ALVlT8EjA8UpXdARJM6YfhH+9DEyytb0SJYOEm9jWL7X0G5eMbNfKtfFj/BLQBBw
|
|
12
|
+
GDqyvhFa8SO56zM3Yi1Lir41JkpOKf2zJpNaL1syPxOA87MAm43UN/p2Mo6QAYpC
|
|
13
|
+
lJzmeNoagLFi/kIzGajeUwISOf//Zej0jK/9CpuvvNVHz4wRk4Ap9qtgrM9qhlNq
|
|
14
|
+
rZL4ZQODnvDZ/nwAYwEh9O2sbRr73aiHFcbxNAU2XxtT5UwbZMHom2Xic2Dmubqn
|
|
15
|
+
cWFU+C4upEqPvgYU/hxia/rkhHyicXmdXT6IzjVxPbrlPBHoKVodJOCQ3UoBQl5X
|
|
16
|
+
caHCluKOblA/yX+vEhv2h/m8XOtWiq0Jxnx+6D7B1piZfQnnNVSBT0bOYASb2cpn
|
|
17
|
+
8rJE3RBdBwiqjKTotVTZ8PAS/GY0Gz3GoMAUCvIGA02+/cO9ENls9D79/86lgiCQ
|
|
18
|
+
UqyteNNmo+oMqKHBw9Jmeejw1kbpnJN1abc270+qCT17aeX8yiMza5CyUTQTtgFI
|
|
19
|
+
62xIYaHWhN7GrxOvoMU8X0G1HINwjS5heIhu5bND/26dLZqV3aBUWwb4ql5QIce2
|
|
20
|
+
q5BQKmMqQLZF6J0aFL9dKJv5u3ioPFmiYPsPiRlwusPOoOFCiMt2kqZE3h3wxu6V
|
|
21
|
+
cXWdj0sH+dgxuGYTxrLuoSru4Xv/HPXh15mVY0/eI+u/AgMBAAGjUzBRMB0GA1Ud
|
|
22
|
+
DgQWBBQW2Ms6M3iadKVLOnraMlx6Exm8KjAfBgNVHSMEGDAWgBQW2Ms6M3iadKVL
|
|
23
|
+
OnraMlx6Exm8KjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQB0
|
|
24
|
+
XorfCLmVUN3aQWBouwG0fXHBqi3d4RA0vPsi8w+R/dOuHnLBLlHAiOkCMqW23bLs
|
|
25
|
+
ir2UVqpGXcp5keKGeCTj+bmdqhnS/B9eoaeA8np/zDPH834v+Qv7JA5ch50gYrL7
|
|
26
|
+
llF/02e5m0egP2xx9V7k90Du8OBm7xQgfbyrUcB2laC+loPyQiHMF24CU4ESfC4K
|
|
27
|
+
DBXOZm8Kd6+fvzEs8XDLKwjNb9MocHIJikysZTncxfhgVPaU5KCqF3afHkCkZGzn
|
|
28
|
+
Z+yMBfWbZ2WtM3lfwmM7z5NCTSqSFucW5+kw/OnzS3nQLyz2Q4nh4ApojsI3v+FH
|
|
29
|
+
xz8aCITPbVwKAHGYO9jbk9x8LlkzDPCCzBH7dGKLKaQSCoD+IOwig1cI7pM77WeI
|
|
30
|
+
BNC0g2ZCuLdb7c37/kT/1xGrIGUrpDsO34ZWW7E2X8kQPkAgqMNp0uXcnvIoNHO1
|
|
31
|
+
eVL08Om+7WbwK7wS3te5IWDq4rRWVW4Jv709w8z6porr3W8ipdtUoYqbgZI8jOiW
|
|
32
|
+
osY4UVcRwQ4S1oF5pNRzXlZAPwAnaDipglxHBiy9/ARS6HKpOCbmUHbj+goXYNyZ
|
|
33
|
+
ps8TcYc9LFOq4HBE4KKbV971jf/wQy1nVcm2qSbOJ9MPHM5BG22m1iVhSYbLPgE2
|
|
34
|
+
SBZvCS+voD8MqpBB1tPcvVqlPb1pFxf1lOc5QV3uOA==
|
|
35
35
|
-----END CERTIFICATE-----
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "1",
|
|
3
|
+
"name": "Default mission",
|
|
3
4
|
"tasks": [
|
|
4
5
|
{
|
|
5
6
|
"type": "take_image",
|
|
@@ -8,22 +9,22 @@
|
|
|
8
9
|
"x": -2,
|
|
9
10
|
"y": -2,
|
|
10
11
|
"z": 0,
|
|
11
|
-
"frame": "asset"
|
|
12
|
+
"frame": {"name": "asset"}
|
|
12
13
|
},
|
|
13
14
|
"orientation": {
|
|
14
15
|
"x": 0,
|
|
15
16
|
"y": 0,
|
|
16
17
|
"z": 0.4794255,
|
|
17
18
|
"w": 0.8775826,
|
|
18
|
-
"frame": "asset"
|
|
19
|
+
"frame": {"name": "asset"}
|
|
19
20
|
},
|
|
20
|
-
"frame": "asset"
|
|
21
|
+
"frame": {"name": "asset"}
|
|
21
22
|
},
|
|
22
23
|
"target": {
|
|
23
24
|
"x": 2,
|
|
24
25
|
"y": 2,
|
|
25
26
|
"z": 0,
|
|
26
|
-
"frame": "
|
|
27
|
+
"frame": {"name": "asset"}
|
|
27
28
|
}
|
|
28
29
|
},
|
|
29
30
|
{
|
|
@@ -33,22 +34,22 @@
|
|
|
33
34
|
"x": -2,
|
|
34
35
|
"y": 2,
|
|
35
36
|
"z": 0,
|
|
36
|
-
"frame": "asset"
|
|
37
|
+
"frame": {"name": "asset"}
|
|
37
38
|
},
|
|
38
39
|
"orientation": {
|
|
39
40
|
"x": 0,
|
|
40
41
|
"y": 0,
|
|
41
42
|
"z": 0.4794255,
|
|
42
43
|
"w": 0.8775826,
|
|
43
|
-
"frame": "asset"
|
|
44
|
+
"frame": {"name": "asset"}
|
|
44
45
|
},
|
|
45
|
-
"frame": "asset"
|
|
46
|
+
"frame": {"name": "asset"}
|
|
46
47
|
},
|
|
47
48
|
"target": {
|
|
48
49
|
"x": 2,
|
|
49
50
|
"y": 2,
|
|
50
51
|
"z": 0,
|
|
51
|
-
"frame": "
|
|
52
|
+
"frame": {"name": "asset"}
|
|
52
53
|
}
|
|
53
54
|
},
|
|
54
55
|
{
|
|
@@ -58,16 +59,16 @@
|
|
|
58
59
|
"x": 2,
|
|
59
60
|
"y": 2,
|
|
60
61
|
"z": 0,
|
|
61
|
-
"frame": "asset"
|
|
62
|
+
"frame": {"name": "asset"}
|
|
62
63
|
},
|
|
63
64
|
"orientation": {
|
|
64
65
|
"x": 0,
|
|
65
66
|
"y": 0,
|
|
66
67
|
"z": 0.4794255,
|
|
67
68
|
"w": 0.8775826,
|
|
68
|
-
"frame": "asset"
|
|
69
|
+
"frame": {"name": "asset"}
|
|
69
70
|
},
|
|
70
|
-
"frame": "asset"
|
|
71
|
+
"frame": {"name": "asset"}
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "2",
|
|
3
|
+
"name": "Default mission Turtlebot",
|
|
3
4
|
"tasks": [
|
|
4
5
|
{
|
|
5
6
|
"type": "take_image",
|
|
@@ -8,22 +9,22 @@
|
|
|
8
9
|
"x": -3.6,
|
|
9
10
|
"y": 4,
|
|
10
11
|
"z": 0,
|
|
11
|
-
"frame": "asset"
|
|
12
|
+
"frame": {"name": "asset"}
|
|
12
13
|
},
|
|
13
14
|
"orientation": {
|
|
14
15
|
"x": 0,
|
|
15
16
|
"y": 0,
|
|
16
17
|
"z": -0.7286672256879113,
|
|
17
18
|
"w": -0.6848660759820616,
|
|
18
|
-
"frame": "asset"
|
|
19
|
+
"frame": {"name": "asset"}
|
|
19
20
|
},
|
|
20
|
-
"frame": "asset"
|
|
21
|
+
"frame": {"name": "asset"}
|
|
21
22
|
},
|
|
22
23
|
"target": {
|
|
23
24
|
"x": -4.7,
|
|
24
25
|
"y": 4.9,
|
|
25
26
|
"z": 0,
|
|
26
|
-
"frame": "
|
|
27
|
+
"frame": {"name": "asset"}
|
|
27
28
|
}
|
|
28
29
|
},
|
|
29
30
|
|
|
@@ -34,22 +35,22 @@
|
|
|
34
35
|
"x": 4.7,
|
|
35
36
|
"y": 3,
|
|
36
37
|
"z": 0,
|
|
37
|
-
"frame": "asset"
|
|
38
|
+
"frame": {"name": "asset"}
|
|
38
39
|
},
|
|
39
40
|
"orientation": {
|
|
40
41
|
"x": 0,
|
|
41
42
|
"y": 0,
|
|
42
43
|
"z": 0.5769585,
|
|
43
44
|
"w": 0.8167734,
|
|
44
|
-
"frame": "asset"
|
|
45
|
+
"frame": {"name": "asset"}
|
|
45
46
|
},
|
|
46
|
-
"frame": "asset"
|
|
47
|
+
"frame": {"name": "asset"}
|
|
47
48
|
},
|
|
48
49
|
"target": {
|
|
49
50
|
"x": 5.6,
|
|
50
51
|
"y": 5.2,
|
|
51
52
|
"z": 0,
|
|
52
|
-
"frame": "
|
|
53
|
+
"frame": {"name": "asset"}
|
|
53
54
|
}
|
|
54
55
|
},
|
|
55
56
|
{
|
|
@@ -59,22 +60,22 @@
|
|
|
59
60
|
"x": 4.7,
|
|
60
61
|
"y": 3,
|
|
61
62
|
"z": 0,
|
|
62
|
-
"frame": "asset"
|
|
63
|
+
"frame": {"name": "asset"}
|
|
63
64
|
},
|
|
64
65
|
"orientation": {
|
|
65
66
|
"x": 0,
|
|
66
67
|
"y": 0,
|
|
67
68
|
"z": 0.5769585,
|
|
68
69
|
"w": 0.8167734,
|
|
69
|
-
"frame": "asset"
|
|
70
|
+
"frame": {"name": "asset"}
|
|
70
71
|
},
|
|
71
|
-
"frame": "asset"
|
|
72
|
+
"frame": {"name": "asset"}
|
|
72
73
|
},
|
|
73
74
|
"target": {
|
|
74
75
|
"x": 3.1,
|
|
75
76
|
"y": 5.2,
|
|
76
77
|
"z": 0,
|
|
77
|
-
"frame": "
|
|
78
|
+
"frame": {"name": "asset"}
|
|
78
79
|
}
|
|
79
80
|
},
|
|
80
81
|
{
|
|
@@ -84,22 +85,22 @@
|
|
|
84
85
|
"x": 0.95,
|
|
85
86
|
"y": 2.6,
|
|
86
87
|
"z": 0,
|
|
87
|
-
"frame": "asset"
|
|
88
|
+
"frame": {"name": "asset"}
|
|
88
89
|
},
|
|
89
90
|
"orientation": {
|
|
90
91
|
"x": 0,
|
|
91
92
|
"y": 0,
|
|
92
93
|
"z": -0.6992469,
|
|
93
94
|
"w": 0.7148802,
|
|
94
|
-
"frame": "asset"
|
|
95
|
+
"frame": {"name": "asset"}
|
|
95
96
|
},
|
|
96
|
-
"frame": "asset"
|
|
97
|
+
"frame": {"name": "asset"}
|
|
97
98
|
},
|
|
98
99
|
"target": {
|
|
99
100
|
"x": 1.9,
|
|
100
101
|
"y": 1.9,
|
|
101
102
|
"z": 0,
|
|
102
|
-
"frame": "
|
|
103
|
+
"frame": {"name": "asset"}
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
106
|
]
|