isar 1.32.3__py3-none-any.whl → 1.33.1__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.

Files changed (35) hide show
  1. isar/apis/models/models.py +6 -0
  2. isar/apis/schedule/scheduling_controller.py +21 -52
  3. isar/config/open_telemetry.py +52 -12
  4. isar/config/settings.py +17 -3
  5. isar/eventhandlers/eventhandler.py +22 -0
  6. isar/models/events.py +56 -27
  7. isar/robot/robot_status.py +3 -0
  8. isar/services/utilities/scheduling_utilities.py +52 -21
  9. isar/state_machine/state_machine.py +39 -1
  10. isar/state_machine/states/await_next_mission.py +3 -1
  11. isar/state_machine/states/home.py +3 -1
  12. isar/state_machine/states/monitor.py +22 -0
  13. isar/state_machine/states/recharging.py +44 -0
  14. isar/state_machine/states/returning_home.py +15 -1
  15. isar/state_machine/states/robot_standing_still.py +3 -1
  16. isar/state_machine/states/stopping.py +33 -0
  17. isar/state_machine/states_enum.py +1 -0
  18. isar/state_machine/transitions/functions/pause.py +1 -1
  19. isar/state_machine/transitions/functions/resume.py +1 -1
  20. isar/state_machine/transitions/functions/start_mission.py +11 -3
  21. isar/state_machine/transitions/functions/stop.py +3 -30
  22. isar/state_machine/transitions/mission.py +0 -2
  23. isar/state_machine/transitions/return_home.py +11 -1
  24. isar/state_machine/transitions/robot_status.py +10 -0
  25. isar/state_machine/utils/common_event_handlers.py +16 -4
  26. {isar-1.32.3.dist-info → isar-1.33.1.dist-info}/METADATA +1 -1
  27. {isar-1.32.3.dist-info → isar-1.33.1.dist-info}/RECORD +35 -34
  28. robot_interface/models/inspection/inspection.py +6 -15
  29. robot_interface/models/mission/status.py +1 -0
  30. robot_interface/robot_interface.py +27 -0
  31. robot_interface/telemetry/payloads.py +10 -0
  32. {isar-1.32.3.dist-info → isar-1.33.1.dist-info}/WHEEL +0 -0
  33. {isar-1.32.3.dist-info → isar-1.33.1.dist-info}/entry_points.txt +0 -0
  34. {isar-1.32.3.dist-info → isar-1.33.1.dist-info}/licenses/LICENSE +0 -0
  35. {isar-1.32.3.dist-info → isar-1.33.1.dist-info}/top_level.txt +0 -0
@@ -23,7 +23,9 @@ class Home(EventHandlerBase):
23
23
  EventHandlerMapping(
24
24
  name="start_mission_event",
25
25
  event=events.api_requests.start_mission.request,
26
- handler=lambda event: start_mission_event_handler(state_machine, event),
26
+ handler=lambda event: start_mission_event_handler(
27
+ state_machine, event, events.api_requests.start_mission.response
28
+ ),
27
29
  ),
28
30
  EventHandlerMapping(
29
31
  name="return_home_event",
@@ -2,6 +2,7 @@ import logging
2
2
  from copy import deepcopy
3
3
  from typing import TYPE_CHECKING, Callable, List, Optional
4
4
 
5
+ from isar.config.settings import settings
5
6
  from isar.eventhandlers.eventhandler import EventHandlerBase, EventHandlerMapping
6
7
  from isar.models.events import Event
7
8
  from isar.services.utilities.threaded_request import ThreadedRequest
@@ -23,6 +24,7 @@ class Monitor(EventHandlerBase):
23
24
  def __init__(self, state_machine: "StateMachine"):
24
25
  logger = logging.getLogger("state_machine")
25
26
  events = state_machine.events
27
+ shared_state = state_machine.shared_state
26
28
 
27
29
  def _pause_mission_event_handler(event: Event[bool]) -> Optional[Callable]:
28
30
  if event.consume_event():
@@ -46,6 +48,21 @@ class Monitor(EventHandlerBase):
46
48
  return state_machine.mission_finished # type: ignore
47
49
  return None
48
50
 
51
+ def _robot_battery_level_updated_handler(
52
+ event: Event[float],
53
+ ) -> Optional[Callable]:
54
+ battery_level: float = event.check()
55
+ if battery_level < settings.ROBOT_MISSION_BATTERY_START_THRESHOLD:
56
+ state_machine.publish_mission_aborted(
57
+ "Robot battery too low to continue mission", True
58
+ )
59
+ state_machine._finalize()
60
+ state_machine.logger.warning(
61
+ "Cancelling current mission due to low battery"
62
+ )
63
+ return state_machine.stop # type: ignore
64
+ return None
65
+
49
66
  event_handlers: List[EventHandlerMapping] = [
50
67
  EventHandlerMapping(
51
68
  name="stop_mission_event",
@@ -85,6 +102,11 @@ class Monitor(EventHandlerBase):
85
102
  state_machine, _handle_task_completed, event
86
103
  ),
87
104
  ),
105
+ EventHandlerMapping(
106
+ name="robot_battery_update_event",
107
+ event=shared_state.robot_battery_level,
108
+ handler=_robot_battery_level_updated_handler,
109
+ ),
88
110
  ]
89
111
  super().__init__(
90
112
  state_name="monitor",
@@ -0,0 +1,44 @@
1
+ from typing import TYPE_CHECKING, List
2
+
3
+ from isar.config.settings import settings
4
+ from isar.eventhandlers.eventhandler import EventHandlerBase, EventHandlerMapping
5
+ from isar.models.events import Event
6
+ from robot_interface.models.mission.status import RobotStatus
7
+
8
+ if TYPE_CHECKING:
9
+ from isar.state_machine.state_machine import StateMachine
10
+
11
+
12
+ class Recharging(EventHandlerBase):
13
+
14
+ def __init__(self, state_machine: "StateMachine"):
15
+ shared_state = state_machine.shared_state
16
+
17
+ def robot_battery_level_updated_handler(event: Event[float]):
18
+ battery_level: float = event.check()
19
+ if battery_level >= settings.ROBOT_BATTERY_RECHARGE_THRESHOLD:
20
+ return state_machine.robot_recharged # type: ignore
21
+ return None
22
+
23
+ def robot_offline_handler(event: Event[RobotStatus]):
24
+ robot_status: RobotStatus = event.check()
25
+ if robot_status == RobotStatus.Offline:
26
+ return state_machine.robot_went_offline # type: ignore
27
+
28
+ event_handlers: List[EventHandlerMapping] = [
29
+ EventHandlerMapping(
30
+ name="robot_battery_update_event",
31
+ event=shared_state.robot_battery_level,
32
+ handler=robot_battery_level_updated_handler,
33
+ ),
34
+ EventHandlerMapping(
35
+ name="robot_offline_event",
36
+ event=shared_state.robot_status,
37
+ handler=robot_offline_handler,
38
+ ),
39
+ ]
40
+ super().__init__(
41
+ state_name="recharging",
42
+ state_machine=state_machine,
43
+ event_handler_mappings=event_handlers,
44
+ )
@@ -1,5 +1,6 @@
1
1
  from typing import TYPE_CHECKING, Callable, List, Optional
2
2
 
3
+ from isar.apis.models.models import MissionStartResponse
3
4
  from isar.eventhandlers.eventhandler import EventHandlerBase, EventHandlerMapping
4
5
  from isar.models.events import Event
5
6
  from isar.state_machine.utils.common_event_handlers import (
@@ -32,12 +33,25 @@ class ReturningHome(EventHandlerBase):
32
33
  self.failed_return_home_attemps += 1
33
34
  return state_machine.return_home_failed # type: ignore
34
35
 
35
- return state_machine.returned_home # type: ignore
36
+ if not state_machine.battery_level_is_above_mission_start_threshold():
37
+ return state_machine.starting_recharging # type: ignore
38
+ else:
39
+ return state_machine.returned_home # type: ignore
36
40
 
37
41
  def _start_mission_event_handler(
38
42
  event: Event[Mission],
39
43
  ) -> Optional[Callable]:
40
44
  if event.has_event():
45
+ if not state_machine.battery_level_is_above_mission_start_threshold():
46
+ response = MissionStartResponse(
47
+ mission_id=None,
48
+ mission_started=False,
49
+ mission_not_started_reason="Robot battery too low",
50
+ )
51
+ state_machine.events.api_requests.start_mission.response.trigger_event(
52
+ response
53
+ )
54
+ return None
41
55
  return state_machine.stop # type: ignore
42
56
  return None
43
57
 
@@ -23,7 +23,9 @@ class RobotStandingStill(EventHandlerBase):
23
23
  EventHandlerMapping(
24
24
  name="start_mission_event",
25
25
  event=events.api_requests.start_mission.request,
26
- handler=lambda event: start_mission_event_handler(state_machine, event),
26
+ handler=lambda event: start_mission_event_handler(
27
+ state_machine, event, events.api_requests.start_mission.response
28
+ ),
27
29
  ),
28
30
  EventHandlerMapping(
29
31
  name="return_home_event",
@@ -1,9 +1,11 @@
1
1
  import logging
2
2
  from typing import TYPE_CHECKING, Callable, List, Optional
3
3
 
4
+ from isar.apis.models.models import ControlMissionResponse
4
5
  from isar.eventhandlers.eventhandler import EventHandlerBase, EventHandlerMapping
5
6
  from isar.models.events import Event
6
7
  from robot_interface.models.exceptions.robot_exceptions import ErrorMessage
8
+ from robot_interface.models.mission.status import MissionStatus, TaskStatus
7
9
 
8
10
  if TYPE_CHECKING:
9
11
  from isar.state_machine.state_machine import StateMachine
@@ -15,6 +17,32 @@ class Stopping(EventHandlerBase):
15
17
  logger = logging.getLogger("state_machine")
16
18
  events = state_machine.events
17
19
 
20
+ def _stop_mission_cleanup() -> None:
21
+ if state_machine.current_mission is None:
22
+ state_machine._queue_empty_response()
23
+ state_machine.reset_state_machine()
24
+ return None
25
+
26
+ state_machine.current_mission.status = MissionStatus.Cancelled
27
+
28
+ for task in state_machine.current_mission.tasks:
29
+ if task.status in [
30
+ TaskStatus.NotStarted,
31
+ TaskStatus.InProgress,
32
+ TaskStatus.Paused,
33
+ ]:
34
+ task.status = TaskStatus.Cancelled
35
+
36
+ stopped_mission_response: ControlMissionResponse = (
37
+ state_machine._make_control_mission_response()
38
+ )
39
+ state_machine.events.api_requests.stop_mission.response.trigger_event(
40
+ stopped_mission_response
41
+ )
42
+ state_machine.publish_task_status(task=state_machine.current_task)
43
+ state_machine._finalize()
44
+ return None
45
+
18
46
  def _failed_stop_event_handler(
19
47
  event: Event[ErrorMessage],
20
48
  ) -> Optional[Callable]:
@@ -38,6 +66,11 @@ class Stopping(EventHandlerBase):
38
66
  ):
39
67
  return state_machine.return_home_mission_stopped # type: ignore
40
68
  else:
69
+ _stop_mission_cleanup()
70
+ if (
71
+ not state_machine.battery_level_is_above_mission_start_threshold()
72
+ ):
73
+ return state_machine.request_return_home # type: ignore
41
74
  return state_machine.mission_stopped # type: ignore
42
75
  return None
43
76
 
@@ -13,6 +13,7 @@ class States(str, Enum):
13
13
  BlockedProtectiveStop = "blocked_protective_stop"
14
14
  UnknownStatus = "unknown_status"
15
15
  InterventionNeeded = "intervention_needed"
16
+ Recharging = "recharging"
16
17
 
17
18
  def __repr__(self):
18
19
  return self.value
@@ -29,7 +29,7 @@ def pause_mission(state_machine: "StateMachine") -> bool:
29
29
  paused_mission_response: ControlMissionResponse = (
30
30
  state_machine._make_control_mission_response()
31
31
  )
32
- state_machine.events.api_requests.pause_mission.response.put(
32
+ state_machine.events.api_requests.pause_mission.response.trigger_event(
33
33
  paused_mission_response
34
34
  )
35
35
 
@@ -35,7 +35,7 @@ def resume_mission(state_machine: "StateMachine") -> bool:
35
35
  resume_mission_response: ControlMissionResponse = (
36
36
  state_machine._make_control_mission_response()
37
37
  )
38
- state_machine.events.api_requests.resume_mission.response.put(
38
+ state_machine.events.api_requests.resume_mission.response.trigger_event(
39
39
  resume_mission_response
40
40
  )
41
41
 
@@ -3,6 +3,7 @@ from typing import TYPE_CHECKING
3
3
  if TYPE_CHECKING:
4
4
  from isar.state_machine.state_machine import StateMachine
5
5
 
6
+ from isar.apis.models.models import MissionStartResponse
6
7
  from robot_interface.models.exceptions.robot_exceptions import (
7
8
  ErrorMessage,
8
9
  RobotException,
@@ -12,7 +13,9 @@ from robot_interface.models.mission.status import MissionStatus, TaskStatus
12
13
 
13
14
 
14
15
  def acknowledge_mission(state_machine: "StateMachine") -> bool:
15
- state_machine.events.api_requests.start_mission.response.put(True)
16
+ state_machine.events.api_requests.start_mission.response.trigger_event(
17
+ MissionStartResponse(mission_started=True)
18
+ )
16
19
  return True
17
20
 
18
21
 
@@ -63,12 +66,17 @@ def set_mission_to_in_progress(state_machine: "StateMachine") -> bool:
63
66
 
64
67
 
65
68
  def trigger_start_mission_event(state_machine: "StateMachine") -> bool:
66
- state_machine.events.state_machine_events.start_mission.put(
69
+ state_machine.events.state_machine_events.start_mission.trigger_event(
67
70
  state_machine.current_mission
68
71
  )
69
72
  return True
70
73
 
71
74
 
72
75
  def _initialization_failed(state_machine: "StateMachine") -> None:
73
- state_machine.events.api_requests.start_mission.response.put(False)
76
+ state_machine.events.api_requests.start_mission.response.trigger_event(
77
+ MissionStartResponse(
78
+ mission_started=False,
79
+ mission_not_started_reason="Failed to initialize robot",
80
+ )
81
+ )
74
82
  state_machine._finalize()
@@ -12,38 +12,11 @@ def trigger_stop_mission_event(state_machine: "StateMachine") -> bool:
12
12
  return True
13
13
 
14
14
 
15
- def stop_mission_cleanup(state_machine: "StateMachine") -> bool:
16
- if state_machine.current_mission is None:
17
- state_machine._queue_empty_response()
18
- state_machine.reset_state_machine()
19
- return True
20
-
21
- state_machine.current_mission.status = MissionStatus.Cancelled
22
-
23
- for task in state_machine.current_mission.tasks:
24
- if task.status in [
25
- TaskStatus.NotStarted,
26
- TaskStatus.InProgress,
27
- TaskStatus.Paused,
28
- ]:
29
- task.status = TaskStatus.Cancelled
30
-
31
- stopped_mission_response: ControlMissionResponse = (
32
- state_machine._make_control_mission_response()
33
- )
34
- state_machine.events.api_requests.stop_mission.response.put(
35
- stopped_mission_response
36
- )
37
- state_machine.publish_task_status(task=state_machine.current_task)
38
- state_machine._finalize()
39
- return True
40
-
41
-
42
15
  def stop_mission_failed(state_machine: "StateMachine") -> bool:
43
16
  stopped_mission_response: ControlMissionResponse = (
44
17
  state_machine._make_control_mission_response()
45
18
  )
46
- state_machine.events.api_requests.stop_mission.response.put(
19
+ state_machine.events.api_requests.stop_mission.response.trigger_event(
47
20
  stopped_mission_response
48
21
  )
49
22
  return True
@@ -69,7 +42,7 @@ def stop_return_home_mission_cleanup(state_machine: "StateMachine") -> bool:
69
42
  stopped_mission_response: ControlMissionResponse = (
70
43
  state_machine._make_control_mission_response()
71
44
  )
72
- state_machine.events.api_requests.stop_mission.response.put(
45
+ state_machine.events.api_requests.stop_mission.response.trigger_event(
73
46
  stopped_mission_response
74
47
  )
75
48
 
@@ -83,7 +56,7 @@ def stop_return_home_mission_failed(state_machine: "StateMachine") -> bool:
83
56
  stopped_mission_response: ControlMissionResponse = (
84
57
  state_machine._make_control_mission_response()
85
58
  )
86
- state_machine.events.api_requests.stop_mission.response.put(
59
+ state_machine.events.api_requests.stop_mission.response.trigger_event(
87
60
  stopped_mission_response
88
61
  )
89
62
  return True
@@ -14,7 +14,6 @@ from isar.state_machine.transitions.functions.start_mission import (
14
14
  trigger_start_mission_event,
15
15
  )
16
16
  from isar.state_machine.transitions.functions.stop import (
17
- stop_mission_cleanup,
18
17
  stop_mission_failed,
19
18
  stop_return_home_mission_cleanup,
20
19
  stop_return_home_mission_failed,
@@ -66,7 +65,6 @@ def get_mission_transitions(state_machine: "StateMachine") -> List[dict]:
66
65
  "trigger": "mission_stopped",
67
66
  "source": state_machine.stopping_state,
68
67
  "dest": state_machine.await_next_mission_state,
69
- "before": def_transition(state_machine, stop_mission_cleanup),
70
68
  },
71
69
  {
72
70
  "trigger": "mission_stopping_failed",
@@ -30,13 +30,14 @@ def get_return_home_transitions(state_machine: "StateMachine") -> List[dict]:
30
30
  state_machine.home_state,
31
31
  state_machine.robot_standing_still_state,
32
32
  state_machine.intervention_needed_state,
33
+ state_machine.monitor_state,
34
+ state_machine.stopping_state,
33
35
  ],
34
36
  "dest": state_machine.returning_home_state,
35
37
  "conditions": [
36
38
  def_transition(state_machine, start_return_home_mission),
37
39
  def_transition(state_machine, set_return_home_status),
38
40
  def_transition(state_machine, initialize_robot),
39
- def_transition(state_machine, initialize_robot),
40
41
  ],
41
42
  "before": def_transition(state_machine, trigger_start_mission_event),
42
43
  },
@@ -67,6 +68,15 @@ def get_return_home_transitions(state_machine: "StateMachine") -> List[dict]:
67
68
  def_transition(state_machine, return_home_finished),
68
69
  ],
69
70
  },
71
+ {
72
+ "trigger": "starting_recharging",
73
+ "source": state_machine.returning_home_state,
74
+ "dest": state_machine.recharging_state,
75
+ "before": [
76
+ def_transition(state_machine, reset_return_home_failure_counter),
77
+ def_transition(state_machine, return_home_finished),
78
+ ],
79
+ },
70
80
  {
71
81
  "trigger": "return_home_failed",
72
82
  "source": state_machine.returning_home_state,
@@ -69,5 +69,15 @@ def get_robot_status_transitions(state_machine: "StateMachine") -> List[dict]:
69
69
  ],
70
70
  "dest": state_machine.unknown_status_state,
71
71
  },
72
+ {
73
+ "trigger": "robot_went_offline",
74
+ "source": [state_machine.recharging_state],
75
+ "dest": state_machine.offline_state,
76
+ },
77
+ {
78
+ "trigger": "robot_recharged",
79
+ "source": [state_machine.recharging_state],
80
+ "dest": state_machine.home_state,
81
+ },
72
82
  ]
73
83
  return robot_status_transitions
@@ -1,6 +1,6 @@
1
1
  from typing import TYPE_CHECKING, Callable, Optional
2
2
 
3
- from isar.apis.models.models import ControlMissionResponse
3
+ from isar.apis.models.models import ControlMissionResponse, MissionStartResponse
4
4
  from isar.models.events import Event
5
5
  from robot_interface.models.exceptions.robot_exceptions import ErrorMessage
6
6
  from robot_interface.models.mission.mission import Mission
@@ -11,10 +11,21 @@ if TYPE_CHECKING:
11
11
 
12
12
 
13
13
  def start_mission_event_handler(
14
- state_machine: "StateMachine", event: Event[Mission]
14
+ state_machine: "StateMachine",
15
+ event: Event[Mission],
16
+ response: Event[MissionStartResponse],
15
17
  ) -> Optional[Callable]:
16
18
  mission: Optional[Mission] = event.consume_event()
17
19
  if mission:
20
+ if not state_machine.battery_level_is_above_mission_start_threshold():
21
+ response.trigger_event(
22
+ MissionStartResponse(
23
+ mission_id=mission.id,
24
+ mission_started=False,
25
+ mission_not_started_reason="Robot battery too low",
26
+ )
27
+ )
28
+ return None
18
29
  state_machine.start_mission(mission=mission)
19
30
  return state_machine.request_mission_start # type: ignore
20
31
  return None
@@ -24,7 +35,7 @@ def return_home_event_handler(
24
35
  state_machine: "StateMachine", event: Event[bool]
25
36
  ) -> Optional[Callable]:
26
37
  if event.consume_event():
27
- state_machine.events.api_requests.return_home.response.put(True)
38
+ state_machine.events.api_requests.return_home.response.trigger_event(True)
28
39
  return state_machine.request_return_home # type: ignore
29
40
  return None
30
41
 
@@ -48,7 +59,7 @@ def stop_mission_event_handler(
48
59
  if state_machine.current_mission.id == mission_id or mission_id == "":
49
60
  return state_machine.stop # type: ignore
50
61
  else:
51
- state_machine.events.api_requests.stop_mission.response.put(
62
+ state_machine.events.api_requests.stop_mission.response.trigger_event(
52
63
  ControlMissionResponse(
53
64
  mission_id=mission_id,
54
65
  mission_status=state_machine.current_mission.status,
@@ -65,6 +76,7 @@ def mission_started_event_handler(
65
76
  event: Event[bool],
66
77
  ) -> Optional[Callable]:
67
78
  if event.consume_event():
79
+ state_machine.logger.info("Received confirmation that mission has started")
68
80
  state_machine.mission_ongoing = True
69
81
  return None
70
82
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: isar
3
- Version: 1.32.3
3
+ Version: 1.33.1
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Author-email: Equinor ASA <fg_robots_dev@equinor.com>
6
6
  License: Eclipse Public License version 2.0
@@ -4,19 +4,19 @@ isar/script.py,sha256=LCb7CHvNyZhQz1OaQ-BUX8w7RDmu975zA0kL6FPwfzk,5912
4
4
  isar/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  isar/apis/api.py,sha256=VM_WBlHJ4Juv9A0FvaUTeaMVYCN6a7pAojxIGCmDtf0,14154
6
6
  isar/apis/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- isar/apis/models/models.py,sha256=GMOss2C8lBeRFV7E37mLwSOM6RhiyLQLcLBRzm_51d4,1835
7
+ isar/apis/models/models.py,sha256=iRyqflpjGopm4KJjgRrOnC2swNEk3a-iwVynzw3Nm6c,1992
8
8
  isar/apis/models/start_mission_definition.py,sha256=v-wt1XDd53Sw7DCdFAkxBBut-xd_uGJa7qMJnE3VI9k,6364
9
9
  isar/apis/robot_control/robot_controller.py,sha256=0EHjMqOBdfJlMrCItGPz5X-4X2kc-2XlNnUU2LOcLfc,1219
10
10
  isar/apis/schedule/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- isar/apis/schedule/scheduling_controller.py,sha256=S93DNyOWqVYAe3EnBnWuoCHLkeVFFjkR7ayBRw9J7f4,10603
11
+ isar/apis/schedule/scheduling_controller.py,sha256=xpKlxxxBQuHZ37WP1OU8SR198YIIrr2NdWWJeaZpuEc,9366
12
12
  isar/apis/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  isar/apis/security/authentication.py,sha256=Se2puhe2TUBmfio2RLma52-VSLRhqvWgu0Cd1bhdwMo,2000
14
14
  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=f_mLLz5RSa0kZkdpi1m0iMdwwDc4RQp12mnT6gu2exE,1303
17
17
  isar/config/logging.conf,sha256=a7ZBvZkrMDaPU3eRGAjL_eZz6hZsa6BaRJOfx8mbnnM,629
18
- isar/config/open_telemetry.py,sha256=965IlPi7urVTL0Yy4uYu4e1P2Ne6HC_RXizM2vCX9kY,2371
19
- isar/config/settings.py,sha256=LTY_1ReDOaIpCH_B3s3Jzz7CniZBE7upYUOKkW5gd3g,13325
18
+ isar/config/open_telemetry.py,sha256=Lgu0lbRQA-zz6ZDoBKKk0whQex5w18jl1wjqWzHUGdg,3634
19
+ isar/config/settings.py,sha256=fUEsKeCwxWg1kMb3rlOgmIyw0V_ia9o-sqfXq2KMovA,14040
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
@@ -35,17 +35,17 @@ isar/config/predefined_mission_definition/default_turtlebot.json,sha256=20ee7q1E
35
35
  isar/config/predefined_missions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  isar/config/predefined_missions/default.json,sha256=NWo9y5noPmpjlNUxLnZK95Sz7DIEaUR-ISYlw3MP8i0,1251
37
37
  isar/config/predefined_missions/default_turtlebot.json,sha256=8Vk1_0P0BBsG0vwh4vwIYINiiWioErHZ0Ppjq3ctaPM,2143
38
- isar/eventhandlers/eventhandler.py,sha256=POriVZzl97igY9Ny4_hILKf-PWFSsegxuqkXpOsdMIw,2771
38
+ isar/eventhandlers/eventhandler.py,sha256=Wu4IsJA-k0I1F41q7qDT_QJl_OaUHNeGgzPufv8q5wo,3507
39
39
  isar/mission_planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  isar/mission_planner/local_planner.py,sha256=Mkg3vvUBF1jImfQnaFvXLNpKVadR21X4mwDd_wHqJ2w,2520
41
41
  isar/mission_planner/mission_planner_interface.py,sha256=UgpPIM4FbrWOD7fGY3Ul64k3uYb8wo0FwSWGewYoVbc,485
42
42
  isar/mission_planner/sequential_task_selector.py,sha256=66agRPHuJnEa1vArPyty4muTasAZ50XPjjrSaTdY_Cc,643
43
43
  isar/mission_planner/task_selector_interface.py,sha256=pnLeaGPIuyXThcflZ_A7YL2b2xQjFT88hAZidkMomxU,707
44
44
  isar/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- isar/models/events.py,sha256=Q9YaHSsjI6gS-mZ16HLEXpbSBuEFcgHMxG_MeEEfdBo,3870
45
+ isar/models/events.py,sha256=M-0p4krtLpCfBMbClQvBFvfFB4NWBm55AlO1ngzVM_g,5024
46
46
  isar/robot/robot.py,sha256=keqsYmfRlyIC4CWkMG0erDt_4uIC0IPvyG2ni4MemyI,5350
47
47
  isar/robot/robot_start_mission.py,sha256=RPYH9VtXDFdPqhOpt6kSbT17RHkJQPKkQ6d4784_pFE,3210
48
- isar/robot/robot_status.py,sha256=NMZZOV1DHOVrJwMsSjKbDSaSiWYnrfAW1cQHtc6heKk,1903
48
+ isar/robot/robot_status.py,sha256=OXx18Qj0bvb2sKzn5-yKXWGdZ9GYyCOIgiTaGof-0Wc,2055
49
49
  isar/robot/robot_stop_mission.py,sha256=4GZyhLU0hB6ZK0ArCVhFS9Sf3ZbqFI9DvPNfvD889Ps,2270
50
50
  isar/robot/robot_task_status.py,sha256=jefIDfrbly7vWZztWA2zLmK5Yz1NSEytw2YUmprccNA,3161
51
51
  isar/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -59,55 +59,56 @@ isar/services/service_connections/mqtt/robot_heartbeat_publisher.py,sha256=_bUOG
59
59
  isar/services/service_connections/mqtt/robot_info_publisher.py,sha256=AxokGk51hRPTxxD2r0P9braPJCMrf1InaCxrUBKkF4g,1402
60
60
  isar/services/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  isar/services/utilities/robot_utilities.py,sha256=4zCigsLXfqDC8POHchktSq81zr1_pTaRve_LQsVr6Mk,514
62
- isar/services/utilities/scheduling_utilities.py,sha256=jxwvVahRJeuoYDtOcVyLwm1BTFKKq92icjR-bA_R0bg,11674
62
+ isar/services/utilities/scheduling_utilities.py,sha256=3vFU7t7oEZTFQNJdAxfhaADScRJIxznWhDbagHyLKOQ,13605
63
63
  isar/services/utilities/threaded_request.py,sha256=py4G-_RjnIdHljmKFAcQ6ddqMmp-ZYV39Ece-dqRqjs,1874
64
64
  isar/state_machine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- isar/state_machine/state_machine.py,sha256=vrsQfDyUUHOh20nEZ0qZaMUmSb2KkMx1fnWHyfHdRWc,16670
66
- isar/state_machine/states_enum.py,sha256=4XZ6dGGjXVZ8PwQCnAIH3MMNbMP2h3bmmPHFk6m_RlY,481
65
+ isar/state_machine/state_machine.py,sha256=6P88wFxvkHaYWK_WBCzTVdNkn7wqbwJVR0So-en2u_w,18038
66
+ isar/state_machine/states_enum.py,sha256=4Kysag9JPi2JSyC2me2B1sLH3Sfo7qGJonc-Q_IiUug,511
67
67
  isar/state_machine/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- isar/state_machine/states/await_next_mission.py,sha256=VfsJFHh_G371bUVkJgh_5o7d0DLNeMexV35Bw6Jsj7M,1879
68
+ isar/state_machine/states/await_next_mission.py,sha256=yg0aH4eukcnE1xRKiPVafRxqHt3WdvqD08EATzdEojk,1961
69
69
  isar/state_machine/states/blocked_protective_stop.py,sha256=GEOvxnHXjpCsrh3aa8Idtn1zMYv5HLQzj9qQAq8HvaU,1180
70
- isar/state_machine/states/home.py,sha256=tbwWoxQdrZb4zkqgXpDjzTZD-IqKTgHoC_MmFdTEjKQ,1868
70
+ isar/state_machine/states/home.py,sha256=TYv7WF5yX31Zw6Cn5MY2GHebUfypL5w510I92BEi_vE,1950
71
71
  isar/state_machine/states/intervention_needed.py,sha256=A0QYz1vD1tDKAealihXDuoGuMLtXrRfn_AwFoaUhT_Q,1640
72
- isar/state_machine/states/monitor.py,sha256=366CZSEf1HRVqpm0RkFjIDGnc_9fjeer7qwu1fvbcKQ,3670
72
+ isar/state_machine/states/monitor.py,sha256=GiNGyPcskrv3QDxMfsOmHUe_MRCaNA-pYuk9p6kcKp0,4623
73
73
  isar/state_machine/states/offline.py,sha256=5wdNzC1wG0cWrpuT_r_mk8UNFHA4QSyg8ejXUTAg4Io,1137
74
74
  isar/state_machine/states/paused.py,sha256=osmLZhm0-2jcZmNRauveeidCBYayDZvLy-1TNYv6CgQ,1091
75
- isar/state_machine/states/returning_home.py,sha256=xs6iWrscar3rWiLejJUy3kTfE-w2ak52gDHLMYX8k30,3527
76
- isar/state_machine/states/robot_standing_still.py,sha256=78W465FlVBCTUpmjQHzO5MT7fI6_M8Rh9gS-M8Y9irs,1903
77
- isar/state_machine/states/stopping.py,sha256=fMXXvcXtzML-Q5A-uRD_gXePy51fnt9jhOTVFN-3qqA,2420
75
+ isar/state_machine/states/recharging.py,sha256=ni5WqFU0VDhdGC3ZfHcabSICm_5kwaS72wc3ecAB_os,1651
76
+ isar/state_machine/states/returning_home.py,sha256=mPwsOFxMTO6On5PzeYKW8Roy6TaQIXsoWCsbtzcV7M8,4267
77
+ isar/state_machine/states/robot_standing_still.py,sha256=EWG2_IPbxK6HFERHcmMFlWdN5PnXJXjwEfNlpsJnPkQ,1985
78
+ isar/state_machine/states/stopping.py,sha256=ROKbQcJFS4A_U0Pd8lAViG7Dz8JqfBaR3vHmpvKC2oc,3848
78
79
  isar/state_machine/states/unknown_status.py,sha256=Y-g9cgme5zriyZ6YUzFRYhOvv9ZylCSwfaY8MJ7xEJ0,1791
79
- isar/state_machine/transitions/mission.py,sha256=mUOtEyK2UX_kdK-_L4wq5a60882H2KnlxImO72YMtuo,5557
80
- isar/state_machine/transitions/return_home.py,sha256=AAkpCBMlnHolwtlz-GQQcB9_DzzJqVKTD9UR1-uzZgI,4237
81
- isar/state_machine/transitions/robot_status.py,sha256=c1ceyWRGCtx-KTDtxHXRD7oPbt8TQ2ej24A0wyim8vc,2720
80
+ isar/state_machine/transitions/mission.py,sha256=oJiANT1lHd6YhEA_mQscDPDyfwMxwfosq7UcP0gfTNk,5456
81
+ isar/state_machine/transitions/return_home.py,sha256=EIR14rnukV_mEYkwtz0J_D1Dp51oVna0wV71HSbqtuw,4630
82
+ isar/state_machine/transitions/robot_status.py,sha256=sALt9BwZUnIFmVe35N1ptC-PyhfdHiTGu1R0GzpAQXk,3056
82
83
  isar/state_machine/transitions/functions/fail_mission.py,sha256=jHHXhfQVYQEzCXgTEhv5e6uEK9p6iDPFFXqS9bzs_-A,720
83
84
  isar/state_machine/transitions/functions/finish_mission.py,sha256=TRQrk7HdllmAkwsp25HRZAFAk46Y1hLx3jmkIAKrHDI,1442
84
- isar/state_machine/transitions/functions/pause.py,sha256=gWr-s76gL0-otrZxCBNmTxUicrAVsdNWDQmHSAOvs6E,1977
85
- isar/state_machine/transitions/functions/resume.py,sha256=ji4GjQvQQCr_jYRUGYHSYt-vePtO2z7VAUeKF-hyLBw,2106
85
+ isar/state_machine/transitions/functions/pause.py,sha256=Wa9XlhXVRNzxoYSsHc0w87ht4nQ5dGh50fjfA9lrAmI,1987
86
+ isar/state_machine/transitions/functions/resume.py,sha256=SAu4hWomPlrvO0lnpc6uM3rj79Bwq01acnaTEvNbO9U,2116
86
87
  isar/state_machine/transitions/functions/return_home.py,sha256=5WPO40MtuRKm9-NtyrS6m0IVEit14MXfMKjgZ2sCXRU,1666
87
88
  isar/state_machine/transitions/functions/robot_status.py,sha256=P1Cu8xVysbiKRKL4E8mSyoL2-72HfxrLvvOcdnBOlvw,889
88
- isar/state_machine/transitions/functions/start_mission.py,sha256=PcD9ANNN3Hxyq6hzvpISMiR94-y1BPNupU-wlRysqT8,2581
89
- isar/state_machine/transitions/functions/stop.py,sha256=ZG33TK3VuJwT-LAQ0a3thgt714yCIu42_bo-u1-V1J0,2956
89
+ isar/state_machine/transitions/functions/start_mission.py,sha256=tIpZzYXCoeC6ZWj18UB4DiZuICpxfzFUK23wfunad7Q,2864
90
+ isar/state_machine/transitions/functions/stop.py,sha256=4idsNh7v6CRJivD36oKnVmdKlP7mSugTLCh9n12R1-U,2114
90
91
  isar/state_machine/transitions/functions/utils.py,sha256=Wa72Ocq4QT1E6qkpEJZQ3h5o33pGvx7Tlkt2JZ2Grbk,314
91
- isar/state_machine/utils/common_event_handlers.py,sha256=hyzOvj5EA4Ob9DjbtbnPKge_t6Umd0_Cc-b6wfy8CP8,5777
92
+ isar/state_machine/utils/common_event_handlers.py,sha256=yFZzTmTLVWzHU4RNW3q9gc6NU9eajNn50L-vt6geH38,6318
92
93
  isar/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
94
  isar/storage/blob_storage.py,sha256=QueyHzCJfUUyOLxBeYwK0Ot7w_CYakBEhtTtITelKAo,3026
94
95
  isar/storage/local_storage.py,sha256=-9Bz2WmniLKwKMeAdrgoMzkj781AOLIUsfaqQERqpUk,1985
95
96
  isar/storage/storage_interface.py,sha256=DRIiy0mRZL3KMZysG0R2Cque6hoqd5haZBw11WM53Vc,840
96
97
  isar/storage/uploader.py,sha256=uD1DzvJ2yYtNAwQGa7UD7kNOxZfKxJ1cCdi7sfOVZ10,9443
97
98
  isar/storage/utilities.py,sha256=oLH0Rp7UtrQQdilfITnmXO1Z0ExdeDhBImYHid55vBA,3449
98
- isar-1.32.3.dist-info/licenses/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
99
+ isar-1.33.1.dist-info/licenses/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
99
100
  robot_interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- robot_interface/robot_interface.py,sha256=-jCAKkZ2eiyzUyHVQmOzw4hMgLWR7pE8MHj-WZo85ZY,7978
101
+ robot_interface/robot_interface.py,sha256=A6t19lcNU_6AfkYKY5DaF0sheym_SZEAawbfaj36Kjk,8997
101
102
  robot_interface/test_robot_interface.py,sha256=FV1urn7SbsMyWBIcTKjsBwAG4IsXeZ6pLHE0mA9EGGs,692
102
103
  robot_interface/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
104
  robot_interface/models/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
105
  robot_interface/models/exceptions/robot_exceptions.py,sha256=VrsWPf4g0qN5sJRKhc3ER_Wt5drK0MZRuECU-csIlDA,10026
105
106
  robot_interface/models/initialize/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
107
  robot_interface/models/inspection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
- robot_interface/models/inspection/inspection.py,sha256=2T8czQcNt9J1M96tKGQA6P3s5CikdZ7-0RevXQ4-CfA,2520
108
+ robot_interface/models/inspection/inspection.py,sha256=cjAvekL8r82s7bgukWeXpYylHvJG_oRSCJNISPVCvZg,2238
108
109
  robot_interface/models/mission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
110
  robot_interface/models/mission/mission.py,sha256=MQ9p5cuclLXexaZu9bkDh5-aN99eunvYC0vP-Z_kUwI,960
110
- robot_interface/models/mission/status.py,sha256=rlgU9Xpsk-rOHF-z6ziIMCYpOAqtu7lOMIUY1e0yZCY,786
111
+ robot_interface/models/mission/status.py,sha256=KC-79HBjM1-6xA0WmwAtZl8QC0pZu6u4wbYWb0IjGd8,816
111
112
  robot_interface/models/mission/task.py,sha256=YzaqJ_KIIm-3S2Y2-BG4Pdkc8sjFMzMx5jj8FtXSmFg,4744
112
113
  robot_interface/models/robots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
114
  robot_interface/models/robots/battery_state.py,sha256=ktOtJ8ltdK0k_i7BoqYfhc5dbOzIG6Oo-uWC67fCWio,98
@@ -115,12 +116,12 @@ robot_interface/models/robots/media.py,sha256=8A-CuuubfngzPprs6zWB9hSaqe3jzgsE8r
115
116
  robot_interface/models/robots/robot_model.py,sha256=-0jNKWPcEgtF_2klb1It3u0SCoAR0hSW9nce58Zq0Co,417
116
117
  robot_interface/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
118
  robot_interface/telemetry/mqtt_client.py,sha256=ueXdtIFNCwciTj4spvdJj9emd-IOmUuJjpsXQSSWZPY,2987
118
- robot_interface/telemetry/payloads.py,sha256=Fqkfv77_T2Ttk5EjWRU5HH0XAxFhIuz7k-LMftuXk2k,2927
119
+ robot_interface/telemetry/payloads.py,sha256=T7EK-b0bVhADDTKMIAHmcPVtPxuR16csmZoOJQl9P4c,3103
119
120
  robot_interface/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
121
  robot_interface/utilities/json_service.py,sha256=qkzVkb60Gi_pto-b5n1vNzCrQze2yqgIJqSLNLYj1Fg,1034
121
122
  robot_interface/utilities/uuid_string_factory.py,sha256=_NQIbBQ56w0qqO0MUDP6aPpHbxW7ATRhK8HnQiBSLkc,76
122
- isar-1.32.3.dist-info/METADATA,sha256=M8uIww8u8xCTsjqhdGmJjsF0a7Jrh5CcKx7RBhyDgQc,31217
123
- isar-1.32.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
124
- isar-1.32.3.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
125
- isar-1.32.3.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
126
- isar-1.32.3.dist-info/RECORD,,
123
+ isar-1.33.1.dist-info/METADATA,sha256=DA8JyLIr7mtdSeQwJP_9WV5phTA4QlDj8YQd0lE7ppE,31217
124
+ isar-1.33.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
125
+ isar-1.33.1.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
126
+ isar-1.33.1.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
127
+ isar-1.33.1.dist-info/RECORD,,