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.

@@ -9,6 +9,7 @@ from robot_interface.models.mission.task import TaskTypes
9
9
  class TaskResponse(BaseModel):
10
10
  id: str
11
11
  tag_id: Optional[str] = None
12
+ inspection_id: Optional[str] = None
12
13
  type: TaskTypes
13
14
 
14
15
 
@@ -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] = None
65
- undock: Optional[bool] = None
60
+ dock: Optional[bool] = Field(default=False)
61
+ undock: Optional[bool] = Field(default=False)
66
62
 
67
63
 
68
- def to_isar_mission(start_mission_definition: StartMissionDefinition) -> 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 start_mission_task_definition in start_mission_definition.tasks:
72
- task: TASKS = create_isar_task(start_mission_task_definition)
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
- check_for_duplicate_ids(isar_tasks)
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
- isar_mission.name = start_mission_definition.name
82
+ isar_mission_name = start_mission_definition.name
89
83
  else:
90
- isar_mission.name = _build_mission_name()
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
- input_pose: InputPose = start_mission_definition.start_pose
97
- input_frame: Frame = Frame(name=input_pose.frame_name)
98
- input_position: Position = Position(
99
- input_pose.position.x,
100
- input_pose.position.y,
101
- input_pose.position.z,
102
- input_frame,
103
- )
104
- input_orientation: Orientation = Orientation(
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
- if start_mission_task_definition.type == TaskType.Inspection:
130
- return create_inspection_task(start_mission_task_definition)
131
- elif start_mission_task_definition.type == TaskType.Localization:
132
- return create_localization_task(start_mission_task_definition)
133
- elif start_mission_task_definition.type == TaskType.ReturnToHome:
134
- return create_return_to_home_task(start_mission_task_definition)
135
- elif start_mission_task_definition.type == TaskType.Dock:
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: '{start_mission_task_definition.type}' is not a valid"
110
+ f"Failed to create task: '{task_definition.type}' is not a valid"
140
111
  )
141
112
 
142
113
 
143
- def create_inspection_task(
144
- start_mission_task_definition: StartMissionTaskDefinition,
145
- ) -> TASKS:
114
+ def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
115
+ inspection_definition = task_definition.inspection
146
116
 
147
- if start_mission_task_definition.inspection.type == InspectionTypes.image:
117
+ if inspection_definition.type == InspectionTypes.image:
148
118
  return TakeImage(
149
- target=start_mission_task_definition.inspection.inspection_target.to_alitra_position(),
150
- tag_id=start_mission_task_definition.tag,
151
- robot_pose=start_mission_task_definition.pose.to_alitra_pose(),
152
- metadata=start_mission_task_definition.inspection.metadata,
153
- zoom=start_mission_task_definition.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 start_mission_task_definition.inspection.type == InspectionTypes.video:
125
+ elif inspection_definition.type == InspectionTypes.video:
156
126
  return TakeVideo(
157
- target=start_mission_task_definition.inspection.inspection_target.to_alitra_position(),
158
- duration=start_mission_task_definition.inspection.duration,
159
- tag_id=start_mission_task_definition.tag,
160
- robot_pose=start_mission_task_definition.pose.to_alitra_pose(),
161
- metadata=start_mission_task_definition.inspection.metadata,
162
- zoom=start_mission_task_definition.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
- target=start_mission_task_definition.inspection.inspection_target.to_alitra_position(),
168
- tag_id=start_mission_task_definition.tag,
169
- robot_pose=start_mission_task_definition.pose.to_alitra_pose(),
170
- metadata=start_mission_task_definition.inspection.metadata,
171
- zoom=start_mission_task_definition.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
- target=start_mission_task_definition.inspection.inspection_target.to_alitra_position(),
177
- duration=start_mission_task_definition.inspection.duration,
178
- tag_id=start_mission_task_definition.tag,
179
- robot_pose=start_mission_task_definition.pose.to_alitra_pose(),
180
- metadata=start_mission_task_definition.inspection.metadata,
181
- zoom=start_mission_task_definition.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
- target=start_mission_task_definition.inspection.inspection_target.to_alitra_position(),
187
- duration=start_mission_task_definition.inspection.duration,
188
- tag_id=start_mission_task_definition.tag,
189
- robot_pose=start_mission_task_definition.pose.to_alitra_pose(),
190
- metadata=start_mission_task_definition.inspection.metadata,
191
- zoom=start_mission_task_definition.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 '{start_mission_task_definition.inspection.type}' not supported"
162
+ f"Inspection type '{inspection_definition.type}' not supported"
196
163
  )
197
164
 
198
165
 
199
- def create_localization_task(
200
- start_mission_task_definition: StartMissionTaskDefinition,
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
- start_mission_task_definition: StartMissionTaskDefinition,
171
+ task_definition: StartMissionTaskDefinition,
209
172
  ) -> ReturnToHome:
210
- return ReturnToHome(pose=start_mission_task_definition.pose.to_alitra_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 TASKS, Localize, MoveArm, ReturnToHome
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(mission_definition)
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(tasks=[ReturnToHome(pose=pose)])
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(tasks=[Localize(localization_pose=pose)])
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(tasks=[MoveArm(arm_pose=arm_pose_literal)])
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
- return TaskResponse(id=task.id, tag_id=task.tag_id, type=task.type)
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
+ )
@@ -1,35 +1,35 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIGGzCCBAOgAwIBAgIUSYiMjuwMgyqwMJ50grQRj92s7tEwDQYJKoZIhvcNAQEL
2
+ MIIGGzCCBAOgAwIBAgIUCVuS8tL7R2bdjRJznkk1NN0oUa8wDQYJKoZIhvcNAQEL
3
3
  BQAwgZwxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZCZXJnZW4xDzANBgNVBAcMBkJl
4
4
  cmdlbjEUMBIGA1UECgwLRXFfUm9ib3RpY3MxETAPBgNVBAsMCFJvYm90aWNzMRww
5
5
  GgYDVQQDDBNSb2JvdGljc19TZWxmU2lnbmVkMSQwIgYJKoZIhvcNAQkBFhVmZ19y
6
- b2JvdHNAZXF1aW5vci5jb20wHhcNMjQxMTI5MTIwODA3WhcNMjUxMTI5MTIwODA3
6
+ b2JvdHNAZXF1aW5vci5jb20wHhcNMjQxMjExMDczNzAzWhcNMjUxMjExMDczNzAz
7
7
  WjCBnDELMAkGA1UEBhMCTk8xDzANBgNVBAgMBkJlcmdlbjEPMA0GA1UEBwwGQmVy
8
8
  Z2VuMRQwEgYDVQQKDAtFcV9Sb2JvdGljczERMA8GA1UECwwIUm9ib3RpY3MxHDAa
9
9
  BgNVBAMME1JvYm90aWNzX1NlbGZTaWduZWQxJDAiBgkqhkiG9w0BCQEWFWZnX3Jv
10
10
  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
- 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
- 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
- G44aC8XTm4szetb5HijbLLu5Lvay7hlYynuQ9D6GkVlEjew3xiAcUhVA8BctjBGm
14
- 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
- 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
- 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
- 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
- 6SBgc0conq+3olbtaIutK7Mn244ynz1+Edadn2lwhf/FQG95pSIb/1PayrtkzPgv
19
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
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": "robot"
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": "robot"
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": "robot"
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": "robot"
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": "robot"
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": "robot"
103
+ "frame": {"name": "asset"}
103
104
  }
104
105
  }
105
106
  ]