isar 1.30.2__py3-none-any.whl → 1.30.4__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/api.py +40 -3
- isar/config/settings.py +3 -0
- isar/modules.py +11 -10
- isar/robot/robot_start_mission.py +12 -0
- isar/robot/robot_status.py +5 -3
- isar/script.py +3 -1
- isar/state_machine/generic_states/idle.py +133 -0
- isar/state_machine/generic_states/ongoing_mission.py +294 -0
- isar/state_machine/generic_states/robot_unavailable.py +61 -0
- isar/state_machine/state_machine.py +9 -0
- isar/state_machine/states/await_next_mission.py +11 -83
- isar/state_machine/states/blocked_protective_stop.py +13 -39
- isar/state_machine/states/home.py +10 -78
- isar/state_machine/states/monitor.py +10 -242
- isar/state_machine/states/offline.py +11 -36
- isar/state_machine/states/paused.py +1 -1
- isar/state_machine/states/returning_home.py +14 -177
- isar/state_machine/states/robot_standing_still.py +11 -91
- isar/state_machine/transitions/functions/start_mission.py +1 -1
- isar/state_machine/transitions/mission.py +1 -1
- {isar-1.30.2.dist-info → isar-1.30.4.dist-info}/METADATA +1 -1
- {isar-1.30.2.dist-info → isar-1.30.4.dist-info}/RECORD +28 -25
- robot_interface/robot_interface.py +15 -7
- robot_interface/telemetry/payloads.py +6 -0
- {isar-1.30.2.dist-info → isar-1.30.4.dist-info}/WHEEL +0 -0
- {isar-1.30.2.dist-info → isar-1.30.4.dist-info}/entry_points.txt +0 -0
- {isar-1.30.2.dist-info → isar-1.30.4.dist-info}/licenses/LICENSE +0 -0
- {isar-1.30.2.dist-info → isar-1.30.4.dist-info}/top_level.txt +0 -0
|
@@ -1,187 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
from queue import Queue
|
|
3
|
-
from typing import TYPE_CHECKING, Optional
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
4
2
|
|
|
5
3
|
from transitions import State
|
|
6
4
|
|
|
7
|
-
from isar.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
check_for_event_without_consumption,
|
|
11
|
-
trigger_event,
|
|
5
|
+
from isar.state_machine.generic_states.ongoing_mission import (
|
|
6
|
+
OngoingMission,
|
|
7
|
+
OngoingMissionStates,
|
|
12
8
|
)
|
|
13
|
-
from robot_interface.models.exceptions.robot_exceptions import ErrorMessage
|
|
14
|
-
from robot_interface.models.mission.status import TaskStatus
|
|
15
|
-
from robot_interface.models.mission.task import Task
|
|
16
9
|
|
|
17
10
|
if TYPE_CHECKING:
|
|
18
11
|
from isar.state_machine.state_machine import StateMachine
|
|
19
12
|
|
|
20
13
|
|
|
21
|
-
class ReturningHome(State):
|
|
14
|
+
class ReturningHome(State, OngoingMission):
|
|
22
15
|
def __init__(self, state_machine: "StateMachine") -> None:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def start(self) -> None:
|
|
33
|
-
self.state_machine.update_state()
|
|
34
|
-
self._run()
|
|
35
|
-
|
|
36
|
-
def stop(self) -> None:
|
|
37
|
-
self.state_machine.mission_ongoing = False
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
def _check_and_handle_stop_mission_event(self, event: Queue) -> bool:
|
|
41
|
-
if check_for_event(event):
|
|
42
|
-
self.state_machine.stop() # type: ignore
|
|
43
|
-
return True
|
|
44
|
-
return False
|
|
45
|
-
|
|
46
|
-
def _check_and_handle_mission_started_event(self, event: Queue) -> bool:
|
|
47
|
-
if self.state_machine.mission_ongoing:
|
|
48
|
-
return False
|
|
49
|
-
|
|
50
|
-
if check_for_event(event):
|
|
51
|
-
self.state_machine.mission_ongoing = True
|
|
52
|
-
return False
|
|
53
|
-
|
|
54
|
-
return True
|
|
55
|
-
|
|
56
|
-
def _check_and_handle_mission_failed_event(self, event: Queue) -> bool:
|
|
57
|
-
mission_failed: Optional[ErrorMessage] = check_for_event(event)
|
|
58
|
-
if mission_failed is not None:
|
|
59
|
-
self.state_machine.logger.warning(
|
|
60
|
-
f"Failed to initiate mission "
|
|
61
|
-
f"{str(self.state_machine.current_mission.id)[:8]} because: "
|
|
62
|
-
f"{mission_failed.error_description}"
|
|
63
|
-
)
|
|
64
|
-
self.state_machine.current_mission.error_message = ErrorMessage(
|
|
65
|
-
error_reason=mission_failed.error_reason,
|
|
66
|
-
error_description=mission_failed.error_description,
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
self.state_machine.mission_failed_to_start() # type: ignore
|
|
70
|
-
return True
|
|
71
|
-
return False
|
|
72
|
-
|
|
73
|
-
def _check_and_handle_task_status_failed_event(self, event: Queue) -> bool:
|
|
74
|
-
task_failure: Optional[ErrorMessage] = check_for_event(event)
|
|
75
|
-
if task_failure is not None:
|
|
76
|
-
self.awaiting_task_status = False
|
|
77
|
-
self.state_machine.current_task.error_message = task_failure
|
|
78
|
-
self.logger.error(
|
|
79
|
-
f"Monitoring task {self.state_machine.current_task.id[:8]} failed "
|
|
80
|
-
f"because: {task_failure.error_description}"
|
|
81
|
-
)
|
|
82
|
-
return self._handle_new_task_status(TaskStatus.Failed)
|
|
83
|
-
elif not self.awaiting_task_status:
|
|
84
|
-
trigger_event(
|
|
85
|
-
self.events.state_machine_events.task_status_request,
|
|
86
|
-
self.state_machine.current_task.id,
|
|
87
|
-
)
|
|
88
|
-
self.awaiting_task_status = True
|
|
89
|
-
return False
|
|
90
|
-
|
|
91
|
-
def _check_and_handle_task_status_event(self, event: Queue) -> bool:
|
|
92
|
-
status: Optional[TaskStatus] = check_for_event(event)
|
|
93
|
-
if status is not None:
|
|
94
|
-
self.awaiting_task_status = False
|
|
95
|
-
return self._handle_new_task_status(status)
|
|
96
|
-
elif not self.awaiting_task_status:
|
|
97
|
-
trigger_event(
|
|
98
|
-
self.events.state_machine_events.task_status_request,
|
|
99
|
-
self.state_machine.current_task.id,
|
|
100
|
-
)
|
|
101
|
-
self.awaiting_task_status = True
|
|
102
|
-
return False
|
|
103
|
-
|
|
104
|
-
def _handle_new_task_status(self, status: TaskStatus) -> bool:
|
|
105
|
-
if self.state_machine.current_task is None:
|
|
106
|
-
self.state_machine.iterate_current_task()
|
|
107
|
-
|
|
108
|
-
self.state_machine.current_task.status = status
|
|
109
|
-
|
|
110
|
-
if self.state_machine.current_task.is_finished():
|
|
111
|
-
self._report_task_status(self.state_machine.current_task)
|
|
112
|
-
self.state_machine.publish_task_status(task=self.state_machine.current_task)
|
|
113
|
-
|
|
114
|
-
self.state_machine.iterate_current_task()
|
|
115
|
-
if self.state_machine.current_task is None:
|
|
116
|
-
if status != TaskStatus.Successful:
|
|
117
|
-
self.state_machine.return_home_failed() # type: ignore
|
|
118
|
-
return True
|
|
119
|
-
self.state_machine.returned_home() # type: ignore
|
|
120
|
-
return True
|
|
121
|
-
|
|
122
|
-
# Report and update next task
|
|
123
|
-
self.state_machine.current_task.update_task_status()
|
|
124
|
-
self.state_machine.publish_task_status(task=self.state_machine.current_task)
|
|
125
|
-
return False
|
|
126
|
-
|
|
127
|
-
def _check_and_handle_start_mission_event(
|
|
128
|
-
self, event: Queue[StartMissionMessage]
|
|
129
|
-
) -> bool:
|
|
130
|
-
if check_for_event_without_consumption(event):
|
|
131
|
-
self.state_machine.stop() # type: ignore
|
|
132
|
-
return True
|
|
133
|
-
|
|
134
|
-
return False
|
|
135
|
-
|
|
136
|
-
def _run(self) -> None:
|
|
137
|
-
while True:
|
|
138
|
-
if self.signal_state_machine_to_stop.is_set():
|
|
139
|
-
self.logger.info(
|
|
140
|
-
"Stopping state machine from %s state", self.__class__.__name__
|
|
141
|
-
)
|
|
142
|
-
break
|
|
143
|
-
|
|
144
|
-
if self._check_and_handle_stop_mission_event(
|
|
145
|
-
self.events.api_requests.stop_mission.input
|
|
146
|
-
):
|
|
147
|
-
break
|
|
148
|
-
|
|
149
|
-
if self._check_and_handle_mission_started_event(
|
|
150
|
-
self.events.robot_service_events.mission_started
|
|
151
|
-
):
|
|
152
|
-
continue
|
|
153
|
-
|
|
154
|
-
if self._check_and_handle_task_status_event(
|
|
155
|
-
self.events.robot_service_events.task_status_updated
|
|
156
|
-
):
|
|
157
|
-
break
|
|
158
|
-
|
|
159
|
-
if self._check_and_handle_start_mission_event(
|
|
160
|
-
self.events.api_requests.start_mission.input
|
|
161
|
-
):
|
|
162
|
-
break
|
|
163
|
-
|
|
164
|
-
if self._check_and_handle_mission_failed_event(
|
|
165
|
-
self.events.robot_service_events.mission_failed
|
|
166
|
-
):
|
|
167
|
-
break
|
|
168
|
-
|
|
169
|
-
if self._check_and_handle_task_status_failed_event(
|
|
170
|
-
self.events.robot_service_events.task_status_failed
|
|
171
|
-
):
|
|
172
|
-
break
|
|
173
|
-
|
|
174
|
-
if self._check_and_handle_task_status_event(
|
|
175
|
-
self.events.robot_service_events.task_status_updated
|
|
176
|
-
):
|
|
177
|
-
break
|
|
178
|
-
|
|
179
|
-
def _report_task_status(self, task: Task) -> None:
|
|
180
|
-
if task.status == TaskStatus.Failed:
|
|
181
|
-
self.logger.warning(
|
|
182
|
-
f"Task: {str(task.id)[:8]} was reported as failed by the robot"
|
|
183
|
-
)
|
|
184
|
-
elif task.status == TaskStatus.Successful:
|
|
185
|
-
self.logger.info(
|
|
186
|
-
f"{type(task).__name__} task: {str(task.id)[:8]} completed"
|
|
187
|
-
)
|
|
16
|
+
State.__init__(
|
|
17
|
+
self, name="returning_home", on_enter=self.start, on_exit=self.stop
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
OngoingMission.__init__(
|
|
21
|
+
self,
|
|
22
|
+
state_machine=state_machine,
|
|
23
|
+
state=OngoingMissionStates.ReturningHome,
|
|
24
|
+
)
|
|
@@ -1,100 +1,20 @@
|
|
|
1
|
-
import
|
|
2
|
-
import time
|
|
3
|
-
from queue import Queue
|
|
4
|
-
from typing import TYPE_CHECKING, Optional
|
|
1
|
+
from typing import TYPE_CHECKING
|
|
5
2
|
|
|
6
3
|
from transitions import State
|
|
7
4
|
|
|
8
|
-
from isar.models.communication.message import StartMissionMessage
|
|
9
|
-
from isar.models.communication.queues.queue_io import QueueIO
|
|
10
|
-
from isar.models.communication.queues.queue_utils import (
|
|
11
|
-
check_for_event,
|
|
12
|
-
check_shared_state,
|
|
13
|
-
)
|
|
14
|
-
from isar.models.communication.queues.status_queue import StatusQueue
|
|
15
|
-
from robot_interface.models.mission.status import RobotStatus
|
|
16
|
-
|
|
17
5
|
if TYPE_CHECKING:
|
|
18
6
|
from isar.state_machine.state_machine import StateMachine
|
|
19
7
|
|
|
8
|
+
from isar.state_machine.generic_states.idle import Idle, IdleStates
|
|
9
|
+
|
|
20
10
|
|
|
21
|
-
class RobotStandingStill(State):
|
|
11
|
+
class RobotStandingStill(State, Idle):
|
|
22
12
|
def __init__(self, state_machine: "StateMachine") -> None:
|
|
23
|
-
|
|
24
|
-
name="robot_standing_still", on_enter=self.start, on_exit=self.stop
|
|
13
|
+
State.__init__(
|
|
14
|
+
self, name="robot_standing_still", on_enter=self.start, on_exit=self.stop
|
|
15
|
+
)
|
|
16
|
+
Idle.__init__(
|
|
17
|
+
self,
|
|
18
|
+
state_machine=state_machine,
|
|
19
|
+
state=IdleStates.RobotStandingStill,
|
|
25
20
|
)
|
|
26
|
-
self.state_machine: "StateMachine" = state_machine
|
|
27
|
-
self.logger = logging.getLogger("state_machine")
|
|
28
|
-
self.events = self.state_machine.events
|
|
29
|
-
self.shared_state = self.state_machine.shared_state
|
|
30
|
-
self.signal_state_machine_to_stop = state_machine.signal_state_machine_to_stop
|
|
31
|
-
|
|
32
|
-
def start(self) -> None:
|
|
33
|
-
self.state_machine.update_state()
|
|
34
|
-
self._run()
|
|
35
|
-
|
|
36
|
-
def stop(self) -> None:
|
|
37
|
-
return
|
|
38
|
-
|
|
39
|
-
def _check_and_handle_stop_mission_event(self, event: Queue) -> bool:
|
|
40
|
-
if check_for_event(event):
|
|
41
|
-
self.state_machine.stop() # type: ignore
|
|
42
|
-
return True
|
|
43
|
-
return False
|
|
44
|
-
|
|
45
|
-
def _check_and_handle_start_mission_event(
|
|
46
|
-
self, event: Queue[StartMissionMessage]
|
|
47
|
-
) -> bool:
|
|
48
|
-
start_mission: Optional[StartMissionMessage] = check_for_event(event)
|
|
49
|
-
if start_mission:
|
|
50
|
-
self.state_machine.start_mission(mission=start_mission.mission)
|
|
51
|
-
self.state_machine.request_mission_start() # type: ignore
|
|
52
|
-
return True
|
|
53
|
-
return False
|
|
54
|
-
|
|
55
|
-
def _check_and_handle_return_home_event(self, event: QueueIO) -> bool:
|
|
56
|
-
if check_for_event(event.input):
|
|
57
|
-
event.output.put(True)
|
|
58
|
-
self.state_machine.request_return_home() # type: ignore
|
|
59
|
-
return True
|
|
60
|
-
return False
|
|
61
|
-
|
|
62
|
-
def _check_and_handle_robot_status_event(
|
|
63
|
-
self, event: StatusQueue[RobotStatus]
|
|
64
|
-
) -> bool:
|
|
65
|
-
robot_status: RobotStatus = check_shared_state(event)
|
|
66
|
-
if robot_status != RobotStatus.Available:
|
|
67
|
-
self.state_machine.robot_status_changed() # type: ignore
|
|
68
|
-
return True
|
|
69
|
-
|
|
70
|
-
return False
|
|
71
|
-
|
|
72
|
-
def _run(self) -> None:
|
|
73
|
-
while True:
|
|
74
|
-
if self.signal_state_machine_to_stop.is_set():
|
|
75
|
-
self.logger.info(
|
|
76
|
-
"Stopping state machine from %s state", self.__class__.__name__
|
|
77
|
-
)
|
|
78
|
-
break
|
|
79
|
-
|
|
80
|
-
if self._check_and_handle_stop_mission_event(
|
|
81
|
-
self.events.api_requests.stop_mission.input
|
|
82
|
-
):
|
|
83
|
-
break
|
|
84
|
-
|
|
85
|
-
if self._check_and_handle_start_mission_event(
|
|
86
|
-
self.events.api_requests.start_mission.input
|
|
87
|
-
):
|
|
88
|
-
break
|
|
89
|
-
|
|
90
|
-
if self._check_and_handle_return_home_event(
|
|
91
|
-
self.events.api_requests.return_home
|
|
92
|
-
):
|
|
93
|
-
break
|
|
94
|
-
|
|
95
|
-
if self._check_and_handle_robot_status_event(
|
|
96
|
-
self.shared_state.robot_status
|
|
97
|
-
):
|
|
98
|
-
break
|
|
99
|
-
|
|
100
|
-
time.sleep(self.state_machine.sleep_time)
|
|
@@ -18,7 +18,7 @@ def put_start_mission_on_queue(state_machine: "StateMachine") -> bool:
|
|
|
18
18
|
|
|
19
19
|
def initiate_mission(state_machine: "StateMachine") -> bool:
|
|
20
20
|
state_machine.logger.info(
|
|
21
|
-
"
|
|
21
|
+
"Initiating mission:\n"
|
|
22
22
|
f" Mission ID: {state_machine.current_mission.id}\n"
|
|
23
23
|
f" Mission Name: {state_machine.current_mission.name}\n"
|
|
24
24
|
f" Number of Tasks: {len(state_machine.current_mission.tasks)}"
|
|
@@ -106,7 +106,7 @@ def get_mission_transitions(state_machine: "StateMachine") -> List[dict]:
|
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
"trigger": "mission_failed_to_start",
|
|
109
|
-
"source": state_machine.monitor_state,
|
|
109
|
+
"source": [state_machine.monitor_state, state_machine.returning_home_state],
|
|
110
110
|
"dest": state_machine.robot_standing_still_state,
|
|
111
111
|
"before": def_transition(state_machine, report_failed_mission_and_finalize),
|
|
112
112
|
},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
isar/__init__.py,sha256=cH8p8bVveu3FUL6kBhldcSlLaoHgD82Kd0-SwSNfGXw,87
|
|
2
|
-
isar/modules.py,sha256=
|
|
3
|
-
isar/script.py,sha256=
|
|
2
|
+
isar/modules.py,sha256=QBB1pge1i17HVMLA5n-qd9K3APCrX9bFF2vlfjheOhU,4778
|
|
3
|
+
isar/script.py,sha256=0oUUfytKDOsWrPv4iWemTWl5L3Ug66mQsbvqGqQrVWk,6050
|
|
4
4
|
isar/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
isar/apis/api.py,sha256=
|
|
5
|
+
isar/apis/api.py,sha256=2hggLxcdsHqTYDAfVUMwMIBgpuB-0ba2HWMscHkRGzA,15072
|
|
6
6
|
isar/apis/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
isar/apis/models/models.py,sha256=HzLaWhjAv0uJRBWipIgYg_F75eaQ5jl9Pi4UnYbDJ-M,1749
|
|
8
8
|
isar/apis/models/start_mission_definition.py,sha256=S87i_vrgXTY1nTMTiXMJAnx_q5uVxuiRNcrQrAYWKeo,6152
|
|
@@ -15,7 +15,7 @@ isar/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
15
15
|
isar/config/configuration_error.py,sha256=rO6WOhafX6xvVib8WxV-eY483Z0PpN-9PxGsq5ATfKc,46
|
|
16
16
|
isar/config/log.py,sha256=SzEWbzXU1DpN7YONIRT8k0zBOGm_qVkXlJuuZtb8STc,2300
|
|
17
17
|
isar/config/logging.conf,sha256=mYO1xf27gAopEMHhGzY7-mwyfN16rwRLkPNMvy3zn2g,1127
|
|
18
|
-
isar/config/settings.py,sha256=
|
|
18
|
+
isar/config/settings.py,sha256=dn9fEKX7GpzD9Y7q0TjQxW9Xf0iY-pCl3NV7bkxH1E8,12487
|
|
19
19
|
isar/config/certs/ca-cert.pem,sha256=qoNljfad_qcMxhXJIUMLd7nT-Qwf_d4dYSdoOFEOE8I,2179
|
|
20
20
|
isar/config/keyvault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
21
|
isar/config/keyvault/keyvault_error.py,sha256=zvPCsZLjboxsxthYkxpRERCTFxYV8R5WmACewAUQLwk,41
|
|
@@ -50,8 +50,8 @@ isar/models/communication/queues/queue_utils.py,sha256=wg6bIR3NS35Ek9hnGR5eN8z6i
|
|
|
50
50
|
isar/models/communication/queues/status_queue.py,sha256=on8kvlNsG6MJjEVsyqtBswIpmOdOggQiKr7F5x0T3jw,514
|
|
51
51
|
isar/models/mission_metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
isar/robot/robot.py,sha256=h-Z_1xCACekHvaj-vPJAhdzixSlcW4zMpe9__ui0zv8,5490
|
|
53
|
-
isar/robot/robot_start_mission.py,sha256=
|
|
54
|
-
isar/robot/robot_status.py,sha256=
|
|
53
|
+
isar/robot/robot_start_mission.py,sha256=vQKsKnrWQuY70jEK-qeeaZYpXxQH4vElorczYZheXTQ,3423
|
|
54
|
+
isar/robot/robot_status.py,sha256=FpkTIAA-O5vKuyU7fnWn2YXtbstq5qbk9XSxbn_0MXU,2015
|
|
55
55
|
isar/robot/robot_stop_mission.py,sha256=jUyfemvbyigxrlIp9aKPn-PvarhagJEgajQPS_LgJ7g,2442
|
|
56
56
|
isar/robot/robot_task_status.py,sha256=71SYPnoqaFbTe1bELLTvAUigAJ-McpomC2sjYQNQs_A,3290
|
|
57
57
|
isar/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -70,20 +70,23 @@ isar/services/utilities/robot_utilities.py,sha256=J3miRs0t74HNBoMIzVMceMCibp5Doz
|
|
|
70
70
|
isar/services/utilities/scheduling_utilities.py,sha256=SVmpAuU7101FVUx6x4tcMDrxYaWBPhgOkntFxX_d6Zc,10179
|
|
71
71
|
isar/services/utilities/threaded_request.py,sha256=py4G-_RjnIdHljmKFAcQ6ddqMmp-ZYV39Ece-dqRqjs,1874
|
|
72
72
|
isar/state_machine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
-
isar/state_machine/state_machine.py,sha256=
|
|
73
|
+
isar/state_machine/state_machine.py,sha256=onPjxGqDGSSvjHxCosKxIyiTw0X01FLwJX9rJArqfXg,13152
|
|
74
74
|
isar/state_machine/states_enum.py,sha256=Z3dO6k6JmQAZ1lzcR58oVCxoCky_-ZS9MaL3RSaNbZ4,434
|
|
75
|
+
isar/state_machine/generic_states/idle.py,sha256=T_LSadQ8Eu9egYPgL43WKDYv27MwFu-dqIxDazVE_KU,4359
|
|
76
|
+
isar/state_machine/generic_states/ongoing_mission.py,sha256=NTYQIddTG0Nsq_ZjcWWBSe9KsQp_7zQcKH_0HYW18SQ,10850
|
|
77
|
+
isar/state_machine/generic_states/robot_unavailable.py,sha256=pHmed1uRPwCWAR4uBJmdnxi9WX8veTbGG9ephmROhm0,1851
|
|
75
78
|
isar/state_machine/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
-
isar/state_machine/states/await_next_mission.py,sha256=
|
|
77
|
-
isar/state_machine/states/blocked_protective_stop.py,sha256=
|
|
78
|
-
isar/state_machine/states/home.py,sha256=
|
|
79
|
-
isar/state_machine/states/monitor.py,sha256=
|
|
80
|
-
isar/state_machine/states/offline.py,sha256=
|
|
81
|
-
isar/state_machine/states/paused.py,sha256=
|
|
82
|
-
isar/state_machine/states/returning_home.py,sha256=
|
|
83
|
-
isar/state_machine/states/robot_standing_still.py,sha256=
|
|
79
|
+
isar/state_machine/states/await_next_mission.py,sha256=U0oGi-O05S-ZvdhpQRuirrY3ZBbblURo5U95PsscMlQ,573
|
|
80
|
+
isar/state_machine/states/blocked_protective_stop.py,sha256=KDux2lm5kwEEarnDt9FG4MFrWbYUzs1_DX5hu2ILIlI,675
|
|
81
|
+
isar/state_machine/states/home.py,sha256=2v7BFQn4QZ0npOrXpWLWCoHD5IpSyAJr-vQCS3MQWJs,514
|
|
82
|
+
isar/state_machine/states/monitor.py,sha256=1PMirQaaQa_V-DEmbv-4dqlrB5q_XTg1Q1Gt--F1Bgw,655
|
|
83
|
+
isar/state_machine/states/offline.py,sha256=vZnBMVDnehZ-0gPsHNVRpZtb8OBBFkeEnq2olo_Ep6M,609
|
|
84
|
+
isar/state_machine/states/paused.py,sha256=IgnWBM6WXj3wjFZMARAPWIpzWGyUSW35DVBvNHuiNP8,1460
|
|
85
|
+
isar/state_machine/states/returning_home.py,sha256=BBQo3PoNP-THlvJa5gQr0fNBhInh_Ox1L2OeH8evUq8,638
|
|
86
|
+
isar/state_machine/states/robot_standing_still.py,sha256=RbOZSiQz72tWAJID5ksgzcb4lND6OniiG35IE1wMUHk,579
|
|
84
87
|
isar/state_machine/states/stopping.py,sha256=Y44kEw-xB9_63eP6utAMY0RegrIz_1nL5cSI3cfaXEg,2838
|
|
85
88
|
isar/state_machine/states/unknown_status.py,sha256=tOwfHW_4bKKkUTpKD7qc5gIwGT_fTXaCNxXcogGw-wo,2416
|
|
86
|
-
isar/state_machine/transitions/mission.py,sha256=
|
|
89
|
+
isar/state_machine/transitions/mission.py,sha256=Sb_D9i1orV_I_eCDI0c8ZvhCU89peUqTfHI5-G36d08,4905
|
|
87
90
|
isar/state_machine/transitions/return_home.py,sha256=LeOMnckUUQYzBYRidD2ge6M0KdxGDTgo-ioXR7_9r8A,2714
|
|
88
91
|
isar/state_machine/transitions/robot_status.py,sha256=c1ceyWRGCtx-KTDtxHXRD7oPbt8TQ2ej24A0wyim8vc,2720
|
|
89
92
|
isar/state_machine/transitions/functions/fail_mission.py,sha256=_6HqBMALDinFZ4yh5GMpeqqgV5tw5i8OVMj5UDdqesg,495
|
|
@@ -92,7 +95,7 @@ isar/state_machine/transitions/functions/pause.py,sha256=aoDkq2nV6wBY0YQX3KbjvBR
|
|
|
92
95
|
isar/state_machine/transitions/functions/resume.py,sha256=9KQjH_6YBGyxFhb7G5dgDe3WH0xHawhEIw6yTVEm9os,998
|
|
93
96
|
isar/state_machine/transitions/functions/return_home.py,sha256=UlniwYvpz74hxqgN0TyVv3LCmiMsqsosKEtEGLqkNj0,1139
|
|
94
97
|
isar/state_machine/transitions/functions/robot_status.py,sha256=xhKZ5u_X8uDvnhvGnAIABuKaPXeVqFjkgj4H2Om-j_A,1013
|
|
95
|
-
isar/state_machine/transitions/functions/start_mission.py,sha256=
|
|
98
|
+
isar/state_machine/transitions/functions/start_mission.py,sha256=ricRfhLH1_lNpqWxneMZcm7ps2YfY6sQGHkiT0Glf6M,2564
|
|
96
99
|
isar/state_machine/transitions/functions/stop.py,sha256=aIj3EPnpgNLdsJwOK1ehhI1TpenQa9JjBxZH0Nm6dLg,1649
|
|
97
100
|
isar/state_machine/transitions/functions/utils.py,sha256=Wa72Ocq4QT1E6qkpEJZQ3h5o33pGvx7Tlkt2JZ2Grbk,314
|
|
98
101
|
isar/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -101,9 +104,9 @@ isar/storage/local_storage.py,sha256=Bnmoi5gyN8r-oRh0aHrOdGqaH3JqRScFKMRXYojW5kY
|
|
|
101
104
|
isar/storage/storage_interface.py,sha256=DYDry4I7aZpDHJhsBF6s8zrgokFAc7fdKJKfA8AvL7o,828
|
|
102
105
|
isar/storage/uploader.py,sha256=HAC3ssuPQCQ1xH4aTQfHIaq-ZoEzKwONWmsAOpNXOzw,9523
|
|
103
106
|
isar/storage/utilities.py,sha256=oLH0Rp7UtrQQdilfITnmXO1Z0ExdeDhBImYHid55vBA,3449
|
|
104
|
-
isar-1.30.
|
|
107
|
+
isar-1.30.4.dist-info/licenses/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
|
|
105
108
|
robot_interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
106
|
-
robot_interface/robot_interface.py,sha256=
|
|
109
|
+
robot_interface/robot_interface.py,sha256=Miout0IRX7QniUNu_upyNzkB8KDUWin7GGCqIeMh83E,8195
|
|
107
110
|
robot_interface/test_robot_interface.py,sha256=FV1urn7SbsMyWBIcTKjsBwAG4IsXeZ6pLHE0mA9EGGs,692
|
|
108
111
|
robot_interface/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
112
|
robot_interface/models/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -121,12 +124,12 @@ robot_interface/models/robots/media.py,sha256=8A-CuuubfngzPprs6zWB9hSaqe3jzgsE8r
|
|
|
121
124
|
robot_interface/models/robots/robot_model.py,sha256=-0jNKWPcEgtF_2klb1It3u0SCoAR0hSW9nce58Zq0Co,417
|
|
122
125
|
robot_interface/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
123
126
|
robot_interface/telemetry/mqtt_client.py,sha256=ueXdtIFNCwciTj4spvdJj9emd-IOmUuJjpsXQSSWZPY,2987
|
|
124
|
-
robot_interface/telemetry/payloads.py,sha256=
|
|
127
|
+
robot_interface/telemetry/payloads.py,sha256=PpvmV7XeGgfhc_aRUYFOdwBTwV2x8TwTBINJ-rKchVw,2804
|
|
125
128
|
robot_interface/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
129
|
robot_interface/utilities/json_service.py,sha256=qkzVkb60Gi_pto-b5n1vNzCrQze2yqgIJqSLNLYj1Fg,1034
|
|
127
130
|
robot_interface/utilities/uuid_string_factory.py,sha256=_NQIbBQ56w0qqO0MUDP6aPpHbxW7ATRhK8HnQiBSLkc,76
|
|
128
|
-
isar-1.30.
|
|
129
|
-
isar-1.30.
|
|
130
|
-
isar-1.30.
|
|
131
|
-
isar-1.30.
|
|
132
|
-
isar-1.30.
|
|
131
|
+
isar-1.30.4.dist-info/METADATA,sha256=SaISJES198lknEfIqlqwrZ1CZe4A0vzi_mKYuu1fZrU,31063
|
|
132
|
+
isar-1.30.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
133
|
+
isar-1.30.4.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
|
|
134
|
+
isar-1.30.4.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
|
|
135
|
+
isar-1.30.4.dist-info/RECORD,,
|
|
@@ -48,6 +48,9 @@ class RobotInterface(metaclass=ABCMeta):
|
|
|
48
48
|
|
|
49
49
|
Raises
|
|
50
50
|
------
|
|
51
|
+
RobotCommunicationTimeoutException or RobotCommunicationException
|
|
52
|
+
If the robot package is unable to communicate with the robot API the fetching
|
|
53
|
+
of task status will be attempted again until a certain number of retries
|
|
51
54
|
RobotException
|
|
52
55
|
If the task status could not be retrieved.
|
|
53
56
|
|
|
@@ -56,7 +59,7 @@ class RobotInterface(metaclass=ABCMeta):
|
|
|
56
59
|
|
|
57
60
|
@abstractmethod
|
|
58
61
|
def stop(self) -> None:
|
|
59
|
-
"""Stops the execution of the current task and
|
|
62
|
+
"""Stops the execution of the current task and corresponding mission.
|
|
60
63
|
|
|
61
64
|
Returns
|
|
62
65
|
-------
|
|
@@ -121,8 +124,8 @@ class RobotInterface(metaclass=ABCMeta):
|
|
|
121
124
|
|
|
122
125
|
Returns
|
|
123
126
|
-------
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
Inspection
|
|
128
|
+
The inspection connected to the given task.
|
|
126
129
|
get_inspection has responsibility to assign the inspection_id of the task
|
|
127
130
|
to the inspection that it returns.
|
|
128
131
|
|
|
@@ -188,6 +191,7 @@ class RobotInterface(metaclass=ABCMeta):
|
|
|
188
191
|
-------
|
|
189
192
|
MediaConfig
|
|
190
193
|
An object containing the connection information for a media stream connection
|
|
194
|
+
|
|
191
195
|
"""
|
|
192
196
|
raise NotImplementedError
|
|
193
197
|
|
|
@@ -210,6 +214,7 @@ class RobotInterface(metaclass=ABCMeta):
|
|
|
210
214
|
-------
|
|
211
215
|
List[Thread]
|
|
212
216
|
List containing all threads that will be started to publish telemetry.
|
|
217
|
+
|
|
213
218
|
"""
|
|
214
219
|
raise NotImplementedError
|
|
215
220
|
|
|
@@ -229,13 +234,16 @@ class RobotInterface(metaclass=ABCMeta):
|
|
|
229
234
|
Raises
|
|
230
235
|
-------
|
|
231
236
|
RobotCommunicationException
|
|
232
|
-
Raised if the robot package is unable to communicate with the robot API
|
|
237
|
+
Raised if the robot package is unable to communicate with the robot API.
|
|
238
|
+
The fetching of robot status will be attempted again until success
|
|
233
239
|
RobotAPIException
|
|
234
240
|
Raised if the robot package is able to communicate with the API but an error
|
|
235
|
-
occurred while interpreting the response
|
|
241
|
+
occurred while interpreting the response. The fetching of robot status will
|
|
242
|
+
be attempted again until success
|
|
236
243
|
RobotException
|
|
237
244
|
Catches other RobotExceptions that may have occurred while retrieving the
|
|
238
|
-
robot status
|
|
239
|
-
|
|
245
|
+
robot status. The fetching of robot status will be attempted again until
|
|
246
|
+
success
|
|
247
|
+
|
|
240
248
|
"""
|
|
241
249
|
raise NotImplementedError
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|