isar 1.24.0__py3-none-any.whl → 1.24.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of isar might be problematic. Click here for more details.

@@ -21,13 +21,7 @@ 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 (
25
- TASKS,
26
- Localize,
27
- MoveArm,
28
- ReturnToHome,
29
- )
30
- from robot_interface.models.mission.task import Task
24
+ from robot_interface.models.mission.task import TASKS, Localize, MoveArm, ReturnToHome
31
25
 
32
26
 
33
27
  class SchedulingController:
@@ -192,7 +186,7 @@ class SchedulingController:
192
186
 
193
187
  state: States = self.scheduling_utilities.get_state()
194
188
 
195
- if state in [States.Off, States.Idle]:
189
+ if state == States.Off:
196
190
  error_message = (
197
191
  f"Conflict - Stop command received in invalid state - State: {state}"
198
192
  )
@@ -1,35 +1,35 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIGGzCCBAOgAwIBAgIUPvXRCWJJPVHgWWm0TR2bOIwBJv0wDQYJKoZIhvcNAQEL
2
+ MIIGGzCCBAOgAwIBAgIUSYiMjuwMgyqwMJ50grQRj92s7tEwDQYJKoZIhvcNAQEL
3
3
  BQAwgZwxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZCZXJnZW4xDzANBgNVBAcMBkJl
4
4
  cmdlbjEUMBIGA1UECgwLRXFfUm9ib3RpY3MxETAPBgNVBAsMCFJvYm90aWNzMRww
5
5
  GgYDVQQDDBNSb2JvdGljc19TZWxmU2lnbmVkMSQwIgYJKoZIhvcNAQkBFhVmZ19y
6
- b2JvdHNAZXF1aW5vci5jb20wHhcNMjQxMDAyMTMxNjA3WhcNMjUxMDAyMTMxNjA3
6
+ b2JvdHNAZXF1aW5vci5jb20wHhcNMjQxMTI5MTIwODA3WhcNMjUxMTI5MTIwODA3
7
7
  WjCBnDELMAkGA1UEBhMCTk8xDzANBgNVBAgMBkJlcmdlbjEPMA0GA1UEBwwGQmVy
8
8
  Z2VuMRQwEgYDVQQKDAtFcV9Sb2JvdGljczERMA8GA1UECwwIUm9ib3RpY3MxHDAa
9
9
  BgNVBAMME1JvYm90aWNzX1NlbGZTaWduZWQxJDAiBgkqhkiG9w0BCQEWFWZnX3Jv
10
10
  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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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
- DgQWBBQ4qAj9zavGZ2EX0JUKeQgh8znRRzAfBgNVHSMEGDAWgBQ4qAj9zavGZ2EX
23
- 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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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
- R4l9UPpFXV30/AP7t3A1PtlqWrJ1yefe20gubJ8gyw==
11
+ AIuxSKWbBEaXku8BPa8vdQ4fZKWXFxX3706vEst8Z+T1IKkYjFDbLEMu0c9HayVf
12
+ 4cCzyQPINgYc/DSxd31QQaEH++LDk9BOSl3YyLl/3ZMUTbOyMp0Kx+mN9LrmcEDF
13
+ G44aC8XTm4szetb5HijbLLu5Lvay7hlYynuQ9D6GkVlEjew3xiAcUhVA8BctjBGm
14
+ ILfkia2LNKqEtGT1gh3Q8+p1yrKRGLHw7boRBAFow4sLx5BMuYc7Kk8405ymntRd
15
+ pRoHIRu5K1D8/9vwIBfz8rEM8aVCq/TqAutQL1t3w/lq6iLzikrc2ke1FNWLVZUI
16
+ vem8gjsmPUaEBZxmvIWZjtNmDwa/Z+PVipKFoC8yS27AwxIuPCWNODnUPP112hrS
17
+ 2Lgad64Tap2S4zB7Wrg+1JvHzTRCgOg96Hf0Nnr2elSjRgfi//ddObAxQEcKZq3u
18
+ 6SBgc0conq+3olbtaIutK7Mn244ynz1+Edadn2lwhf/FQG95pSIb/1PayrtkzPgv
19
+ BDmzaUUWuxJkDry4tDTAu7ruktDXQ3OFaF/3Mko3RKR7hQqSDL4XqArSBgKv8QGs
20
+ nklgBbEa5fkh8Ng5vRLcMaNCTeS1K9n66sR2ZP5JWoWgR/Ldl5mbnwvtqqyhUdx1
21
+ YxLzbRr0nmjDSufF4Gpbvg+3lpY23pQ0BRQH6zAkeygRAgMBAAGjUzBRMB0GA1Ud
22
+ DgQWBBQehtclGXxA16tJAy/VA8EqWgVXyjAfBgNVHSMEGDAWgBQehtclGXxA16tJ
23
+ Ay/VA8EqWgVXyjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCE
24
+ ehrGvVcUrlB7da8zp+QM3PxhiXiAxPwSNlCqS8QjhPLeKIIJg2aFuyb8PFUvXjhd
25
+ Jvv2A4OEzTv+Jj7W2+3cCoR1oZFv6DZzNI9Ybaa4MWw7VxP9cneTx9f0tSPyRh9s
26
+ n7PwPVhCbilix806pmo8lkrFJFusV/ofiFgLYpu1jG7kCQaaPYMlVXre16M7yeJx
27
+ XHyv6qc59hPNkZphgPIjk52g4f5jEphylt1EuG7qhk+uveIjOfWKyk2gx5fSM6Lr
28
+ NOsPO9fvnK7bZYeO4Wl8esGNcTZjg5LuhmwSba7GhLfU/fAOGAVMKig/4GcIvMBE
29
+ uAJ0Bes3jSYOJXHTnog2Y52h1K0mDcnSVKPOZpGCKf8FoWcH0bNRIauF7j7/mTV3
30
+ yo5As4ANS8PQjfrq14MZrlqL8SpObCb6OvnCSdIiYMsNXVNKEobHy8csYP5h/Ifo
31
+ mdSwmDHEyMI/Bu1NmsK5iz3zhCDraspn7JM0UWxtBL92siE5yysTwPBD2ImKsxF2
32
+ 6k0Ad6cWoeZRtfFdq8Ix4EfDXsRFHSRcanUXAhw233WtUBVVqF72f0JubgOmpttz
33
+ 1misnsVPwUg4ID8KdTRQi6fxyigXgfxr3YTzPvCip2kDNjZEtTL7N90Mdh6f9BzN
34
+ J6b5slRz9Zr7E0AG5BfKd0qB1Ho3WDQ4zxTVH+QEHQ==
35
35
  -----END CERTIFICATE-----
@@ -32,11 +32,7 @@ from isar.state_machine.states_enum import States
32
32
  from robot_interface.models.exceptions.robot_exceptions import ErrorMessage
33
33
  from robot_interface.models.initialize.initialize_params import InitializeParams
34
34
  from robot_interface.models.mission.mission import Mission
35
- from robot_interface.models.mission.status import (
36
- MissionStatus,
37
- RobotStatus,
38
- TaskStatus,
39
- )
35
+ from robot_interface.models.mission.status import MissionStatus, RobotStatus, TaskStatus
40
36
  from robot_interface.models.mission.task import TASKS, Task
41
37
  from robot_interface.robot_interface import RobotInterface
42
38
  from robot_interface.telemetry.mqtt_client import MqttClientInterface
@@ -134,7 +130,11 @@ class StateMachine(object):
134
130
  },
135
131
  {
136
132
  "trigger": "stop",
137
- "source": [self.initiate_state, self.monitor_state],
133
+ "source": [
134
+ self.initiate_state,
135
+ self.monitor_state,
136
+ self.idle_state,
137
+ ],
138
138
  "dest": self.stop_state,
139
139
  "before": self._stop,
140
140
  },
@@ -371,6 +371,11 @@ class StateMachine(object):
371
371
  self.iterate_current_task()
372
372
 
373
373
  def _mission_stopped(self) -> None:
374
+ if self.current_mission is None:
375
+ self._queue_empty_response()
376
+ self.reset_state_machine()
377
+ return
378
+
374
379
  self.current_mission.status = MissionStatus.Cancelled
375
380
 
376
381
  for task in self.current_mission.tasks:
@@ -588,6 +593,16 @@ class StateMachine(object):
588
593
  task_status=self.current_task.status,
589
594
  )
590
595
 
596
+ def _queue_empty_response(self):
597
+ self.queues.stop_mission.output.put(
598
+ ControlMissionResponse(
599
+ mission_id="None",
600
+ mission_status="None",
601
+ task_id="None",
602
+ task_status="None",
603
+ )
604
+ )
605
+
591
606
 
592
607
  def main(state_machine: StateMachine):
593
608
  """Starts a state machine instance."""
@@ -36,6 +36,9 @@ class Idle(State):
36
36
 
37
37
  def _run(self) -> None:
38
38
  while True:
39
+ if self.state_machine.should_stop_mission():
40
+ transition = self.state_machine.stop # type: ignore
41
+ break
39
42
  start_mission: Optional[StartMissionMessage] = (
40
43
  self.state_machine.should_start_mission()
41
44
  )
@@ -49,7 +49,6 @@ class Monitor(State):
49
49
  if self.task_status_thread:
50
50
  self.task_status_thread.wait_for_thread()
51
51
  self.task_status_thread = None
52
- self.request_status_failure_counter = 0
53
52
 
54
53
  def _run(self) -> None:
55
54
  transition: Callable
@@ -76,15 +75,19 @@ class Monitor(State):
76
75
  except ThreadedRequestNotFinishedError:
77
76
  time.sleep(self.state_machine.sleep_time)
78
77
  continue
79
-
80
78
  except (
81
79
  RobotCommunicationTimeoutException,
82
80
  RobotCommunicationException,
83
81
  ) as e:
84
- task_failed: bool = self._handle_communication_retry(e)
85
- if task_failed:
82
+ retry_limit_exceeded: bool = self._check_if_exceeded_retry_limit(e)
83
+ if retry_limit_exceeded:
84
+ self.logger.error(
85
+ f"Monitoring task {self.state_machine.current_task.id[:8]} failed "
86
+ f"because: {e.error_description}"
87
+ )
86
88
  status = TaskStatus.Failed
87
89
  else:
90
+ time.sleep(self.state_machine.sleep_time)
88
91
  continue
89
92
 
90
93
  except RobotTaskStatusException as e:
@@ -111,7 +114,7 @@ class Monitor(State):
111
114
  )
112
115
  break
113
116
 
114
- if self.state_machine.current_task == None:
117
+ if self.state_machine.current_task is None:
115
118
  self.state_machine.iterate_current_task()
116
119
 
117
120
  self.state_machine.current_task.status = status
@@ -142,7 +145,7 @@ class Monitor(State):
142
145
  )
143
146
 
144
147
  self.state_machine.iterate_current_task()
145
- if self.state_machine.current_task == None:
148
+ if self.state_machine.current_task is None:
146
149
  transition = self.state_machine.full_mission_finished # type: ignore
147
150
  break
148
151
 
@@ -193,6 +196,7 @@ class Monitor(State):
193
196
  self.logger.info(f"Inspection: {str(inspection.id)[:8]} queued for upload")
194
197
 
195
198
  def _report_task_status(self, task: Task) -> None:
199
+ self.request_status_failure_counter = 0
196
200
  if task.status == TaskStatus.Failed:
197
201
  self.logger.warning(
198
202
  f"Task: {str(task.id)[:8]} was reported as failed by the robot"
@@ -215,7 +219,7 @@ class Monitor(State):
215
219
  )
216
220
  self.state_machine.current_task.error_message = error_message
217
221
 
218
- def _handle_communication_retry(
222
+ def _check_if_exceeded_retry_limit(
219
223
  self, e: Union[RobotCommunicationTimeoutException, RobotCommunicationException]
220
224
  ) -> bool:
221
225
  self.state_machine.current_mission.error_message = ErrorMessage(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.24.0
3
+ Version: 1.24.2
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
@@ -7,7 +7,7 @@ isar/apis/models/__init__.py,sha256=NI1BYyN__Ogr00Qqe0XJ-9gEVPva2brXo2RJsbrS4tM,
7
7
  isar/apis/models/models.py,sha256=6E8VhGBti6EKJefYTDNVERxRu_g_omg4J2MriPUPkaw,1709
8
8
  isar/apis/models/start_mission_definition.py,sha256=oY2CRKNkf4DQys0lbz-WTib1Ppw_OUwHqhBTrBhUJQk,8044
9
9
  isar/apis/schedule/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- isar/apis/schedule/scheduling_controller.py,sha256=GXjvkF4OPRJTWzQEvvxbKc79x2X2uzqbl1ZOv_-9Fpw,11508
10
+ isar/apis/schedule/scheduling_controller.py,sha256=JbVF0kvGACqc0Pgbt5DLsiXkRx4WWPiAZnYlHUrAHz0,11419
11
11
  isar/apis/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  isar/apis/security/authentication.py,sha256=TI8U9Y_L6ihHLMeM50ZONd5EPfuHdw_XMU_Q987W4AY,1975
13
13
  isar/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -16,7 +16,7 @@ isar/config/log.py,sha256=zHFLmGWQRn8TrcsxUS6KHpJt2JE86kYazU7b-bkcN9o,2285
16
16
  isar/config/logging.conf,sha256=mYO1xf27gAopEMHhGzY7-mwyfN16rwRLkPNMvy3zn2g,1127
17
17
  isar/config/settings.env,sha256=hJFfyl4S84nmcyf70Pz8nbGlPf4KTVx0UkgP3uf6T8E,534
18
18
  isar/config/settings.py,sha256=lbpuXAyeSCHFcEuIQvbqwyJIOp23Rtdqpajf_HrUjbU,13491
19
- isar/config/certs/ca-cert.pem,sha256=ijutWtGOAnKx3xPydNLOVoCLip3tGkNKUpr6pTPQfJA,2179
19
+ isar/config/certs/ca-cert.pem,sha256=3X9NO4qzvA55PMXPyOwOCcXw33YVbF7tjPU5cX7vO5I,2179
20
20
  isar/config/keyvault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  isar/config/keyvault/keyvault_error.py,sha256=zvPCsZLjboxsxthYkxpRERCTFxYV8R5WmACewAUQLwk,41
22
22
  isar/config/keyvault/keyvault_service.py,sha256=b2EWNiNQmZ-FUWjZidNg5KXRcVH-U8CsiqcBf1devNw,3124
@@ -67,13 +67,13 @@ isar/services/utilities/queue_utilities.py,sha256=Pw3hehSwkXJNeDv-bDVDfs58VOwtt3
67
67
  isar/services/utilities/scheduling_utilities.py,sha256=UUMxhudY2mQRG6Edjq6BG7oxwlqmcu5h6fMyw4Vhl_o,8376
68
68
  isar/services/utilities/threaded_request.py,sha256=py4G-_RjnIdHljmKFAcQ6ddqMmp-ZYV39Ece-dqRqjs,1874
69
69
  isar/state_machine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- isar/state_machine/state_machine.py,sha256=A7qAaXEnErmPQ7--sM7w9VabceS0qJOProlmwMb9iaU,21299
70
+ isar/state_machine/state_machine.py,sha256=ceH0WiQNVMYIe7mVuH62L7OPPGrj1Qx2FuToIYBRQlk,21820
71
71
  isar/state_machine/states_enum.py,sha256=BlrUcBWkM5K6D_UZXRwTaUgGpAagWmVZH6HhDBGzVU4,278
72
72
  isar/state_machine/states/__init__.py,sha256=kErbKPDTwNfCLijvdyN6_AuOqDwR23nu9F0Qovsnir4,218
73
- isar/state_machine/states/idle.py,sha256=TVUVtoFwe3-InO4tEupa1_MNG3bviLuMxmHV7FX7Js0,3076
73
+ isar/state_machine/states/idle.py,sha256=wKEG3QzmEO3MfFCwbh9vBRZin3sby_cwXhm85Fke9-s,3224
74
74
  isar/state_machine/states/initialize.py,sha256=TVXV5Ps3N4_flM88j9pQiX88kZgLzLwzlJy_6hPbgcA,2359
75
75
  isar/state_machine/states/initiate.py,sha256=j1wvSC3zVODgRkKOVsQROiuWkjihSBtwCs5GsoivLvc,5655
76
- isar/state_machine/states/monitor.py,sha256=4gCSf_FpHcxPiaaAuOJ5Tqhw79kqcaY5e_fg0nmA83I,9578
76
+ isar/state_machine/states/monitor.py,sha256=bcrLKftME7tWUGCwx_wj6myZToD4BBJT3jq9WMbpd0w,9874
77
77
  isar/state_machine/states/off.py,sha256=jjqN_oJMpBtWuY7hP-c9f0w3p2CYCfe-NpmYHHPnmyI,544
78
78
  isar/state_machine/states/offline.py,sha256=IfEZ6-kl6OfJSRT1eKHOey7AU23tKiSHqpwGqclmH_c,2166
79
79
  isar/state_machine/states/paused.py,sha256=TIg1iJvAxGUIfzE_qWp0wrq4Ka0a3zEf3GNwIWLIK0M,1177
@@ -90,7 +90,7 @@ robot_interface/robot_interface.py,sha256=TJjB1FNXxkKxen5zwfXdAUqqlTZ1pAl6St9SuC
90
90
  robot_interface/test_robot_interface.py,sha256=FV1urn7SbsMyWBIcTKjsBwAG4IsXeZ6pLHE0mA9EGGs,692
91
91
  robot_interface/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
92
  robot_interface/models/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
- robot_interface/models/exceptions/robot_exceptions.py,sha256=tL3Pf45Nuh9dc9QDRt43SF4qZT3f2NVaRpYj1POVjsA,10093
93
+ robot_interface/models/exceptions/robot_exceptions.py,sha256=7s9X7GaQVhQiTnXLi-a51qRUX9CU7F4rEUMoRBiWF_I,10548
94
94
  robot_interface/models/initialize/__init__.py,sha256=rz5neEDr59GDbzzI_FF0DId-C-I-50l113P-h-C_QBY,48
95
95
  robot_interface/models/initialize/initialize_params.py,sha256=2eG5Aq5bDKU6tVkaUMAoc46GERBgyaKkqv6yLupdRLc,164
96
96
  robot_interface/models/inspection/__init__.py,sha256=14wfuj4XZazrigKD7fL98khFKz-eckIpEgPcYRj40Kg,227
@@ -103,14 +103,14 @@ robot_interface/models/robots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
103
103
  robot_interface/models/robots/robot_model.py,sha256=pZQsqhn9hh6XE3EjMZhWMzYqg5oJ4CJ4CXeOASKvEf8,452
104
104
  robot_interface/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
105
  robot_interface/telemetry/media_connection_type.py,sha256=Z8Jayi5SjBJh_xEd5KdS__A6bM-nofbSAedc6u41iAY,91
106
- robot_interface/telemetry/mqtt_client.py,sha256=RoXJFQ4YiaSQpHTlZ2LD-ICRPtfUhylEwgyt_3NE4xM,2916
106
+ robot_interface/telemetry/mqtt_client.py,sha256=DkzYZNWFaJkG3AVc0dM4Bj52hZEQj-14Q75zqzQcv9A,2988
107
107
  robot_interface/telemetry/payloads.py,sha256=FafpIwsOvcTNtaBZqyOX7r5EjG7nZ2uLNhyJo2l5GiI,1767
108
108
  robot_interface/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
109
  robot_interface/utilities/json_service.py,sha256=nU2Q_3P9Fq9hs6F_wtUjWtHfl_g1Siy-yDhXXSKwHwg,1018
110
110
  robot_interface/utilities/uuid_string_factory.py,sha256=_NQIbBQ56w0qqO0MUDP6aPpHbxW7ATRhK8HnQiBSLkc,76
111
- isar-1.24.0.dist-info/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
112
- isar-1.24.0.dist-info/METADATA,sha256=qqbu0Z7e1Fs45oQLR1Cj4TokH5F5swLBwUuCfJVQulE,30661
113
- isar-1.24.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
114
- isar-1.24.0.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
115
- isar-1.24.0.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
116
- isar-1.24.0.dist-info/RECORD,,
111
+ isar-1.24.2.dist-info/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
112
+ isar-1.24.2.dist-info/METADATA,sha256=Rh1FBaPlouwNa4sbVMC_qL66uHwrTzkGBrUsbx61WuI,30661
113
+ isar-1.24.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
114
+ isar-1.24.2.dist-info/entry_points.txt,sha256=TFam7uNNw7J0iiDYzsH2gfG0u1eV1wh3JTw_HkhgKLk,49
115
+ isar-1.24.2.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
116
+ isar-1.24.2.dist-info/RECORD,,
@@ -16,6 +16,7 @@ class ErrorReason(str, Enum):
16
16
  RobotRetrieveDataException: str = "robot_retrieve_data_exception"
17
17
  RobotRetrieveInspectionException: str = "robot_retrieve_inspection_exception"
18
18
  RobotTelemetryException: str = "robot_telemetry_exception"
19
+ RobotTelemetryNoUpdateException: str = "robot_telemetry_no_update_exception"
19
20
  RobotTelemetryPoseException: str = "robot_telemetry_pose_exception"
20
21
  RobotMapException: str = "robot_map_exception"
21
22
  RobotTransformException: str = "robot_transform_exception"
@@ -202,6 +203,17 @@ class RobotTelemetryPoseException(RobotException):
202
203
  pass
203
204
 
204
205
 
206
+ # An exception which should be thrown by the robot package if there is no new telemetry update.
207
+ class RobotTelemetryNoUpdateException(RobotException):
208
+ def __init__(self, error_description: str) -> None:
209
+ super().__init__(
210
+ error_reason=ErrorReason.RobotTelemetryNoUpdateException,
211
+ error_description=error_description,
212
+ )
213
+
214
+ pass
215
+
216
+
205
217
  # An exception which should be thrown by the robot package if it is unable to load the
206
218
  # configuration for maps and transformations. This could be caused by faulty
207
219
  # configuration and this exception will cause ISAR to crash as further execution is not
@@ -7,6 +7,7 @@ from typing import Callable, Tuple
7
7
 
8
8
  from robot_interface.models.exceptions.robot_exceptions import (
9
9
  RobotTelemetryException,
10
+ RobotTelemetryNoUpdateException,
10
11
  RobotTelemetryPoseException,
11
12
  )
12
13
  from robot_interface.telemetry.payloads import CloudHealthPayload
@@ -74,7 +75,7 @@ class MqttTelemetryPublisher(MqttClientInterface):
74
75
  try:
75
76
  payload = self.telemetry_method(isar_id=isar_id, robot_name=robot_name)
76
77
  topic = self.topic
77
- except RobotTelemetryPoseException:
78
+ except (RobotTelemetryPoseException, RobotTelemetryNoUpdateException):
78
79
  time.sleep(self.interval)
79
80
  continue
80
81
  except RobotTelemetryException:
File without changes
File without changes