isar 1.20.2__py3-none-any.whl → 1.34.9__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.
- isar/apis/api.py +148 -76
- isar/apis/models/__init__.py +0 -1
- isar/apis/models/models.py +21 -11
- isar/apis/models/start_mission_definition.py +110 -168
- isar/apis/robot_control/robot_controller.py +41 -0
- isar/apis/schedule/scheduling_controller.py +124 -162
- isar/apis/security/authentication.py +5 -5
- isar/config/certs/ca-cert.pem +33 -31
- isar/config/keyvault/keyvault_service.py +1 -1
- isar/config/log.py +45 -40
- isar/config/logging.conf +16 -31
- isar/config/open_telemetry.py +102 -0
- isar/config/predefined_mission_definition/default_exr.json +0 -2
- isar/config/predefined_mission_definition/default_mission.json +1 -5
- isar/config/predefined_mission_definition/default_turtlebot.json +4 -11
- isar/config/predefined_missions/default.json +67 -87
- isar/config/predefined_missions/default_extra_capabilities.json +107 -0
- isar/config/settings.py +76 -111
- isar/eventhandlers/eventhandler.py +123 -0
- isar/mission_planner/local_planner.py +6 -20
- isar/mission_planner/mission_planner_interface.py +1 -1
- isar/models/events.py +184 -0
- isar/models/status.py +18 -0
- isar/modules.py +118 -199
- isar/robot/robot.py +377 -0
- isar/robot/robot_battery.py +60 -0
- isar/robot/robot_monitor_mission.py +357 -0
- isar/robot/robot_pause_mission.py +74 -0
- isar/robot/robot_resume_mission.py +67 -0
- isar/robot/robot_start_mission.py +66 -0
- isar/robot/robot_status.py +61 -0
- isar/robot/robot_stop_mission.py +68 -0
- isar/robot/robot_upload_inspection.py +75 -0
- isar/script.py +57 -40
- isar/services/service_connections/mqtt/mqtt_client.py +47 -11
- isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +5 -2
- isar/services/service_connections/mqtt/robot_info_publisher.py +3 -3
- isar/services/service_connections/persistent_memory.py +69 -0
- isar/services/utilities/mqtt_utilities.py +93 -0
- isar/services/utilities/robot_utilities.py +20 -0
- isar/services/utilities/scheduling_utilities.py +393 -65
- isar/state_machine/state_machine.py +219 -538
- isar/state_machine/states/__init__.py +0 -8
- isar/state_machine/states/await_next_mission.py +114 -0
- isar/state_machine/states/blocked_protective_stop.py +60 -0
- isar/state_machine/states/going_to_lockdown.py +95 -0
- isar/state_machine/states/going_to_recharging.py +92 -0
- isar/state_machine/states/home.py +115 -0
- isar/state_machine/states/intervention_needed.py +77 -0
- isar/state_machine/states/lockdown.py +38 -0
- isar/state_machine/states/maintenance.py +36 -0
- isar/state_machine/states/monitor.py +137 -247
- isar/state_machine/states/offline.py +51 -53
- isar/state_machine/states/paused.py +92 -23
- isar/state_machine/states/pausing.py +48 -0
- isar/state_machine/states/pausing_return_home.py +48 -0
- isar/state_machine/states/recharging.py +80 -0
- isar/state_machine/states/resuming.py +57 -0
- isar/state_machine/states/resuming_return_home.py +64 -0
- isar/state_machine/states/return_home_paused.py +109 -0
- isar/state_machine/states/returning_home.py +217 -0
- isar/state_machine/states/stopping.py +61 -0
- isar/state_machine/states/stopping_due_to_maintenance.py +61 -0
- isar/state_machine/states/stopping_go_to_lockdown.py +60 -0
- isar/state_machine/states/stopping_go_to_recharge.py +51 -0
- isar/state_machine/states/stopping_return_home.py +77 -0
- isar/state_machine/states/unknown_status.py +72 -0
- isar/state_machine/states_enum.py +21 -5
- isar/state_machine/transitions/mission.py +192 -0
- isar/state_machine/transitions/return_home.py +106 -0
- isar/state_machine/transitions/robot_status.py +80 -0
- isar/state_machine/utils/common_event_handlers.py +73 -0
- isar/storage/blob_storage.py +70 -52
- isar/storage/local_storage.py +25 -12
- isar/storage/storage_interface.py +28 -7
- isar/storage/uploader.py +174 -55
- isar/storage/utilities.py +32 -29
- {isar-1.20.2.dist-info → isar-1.34.9.dist-info}/METADATA +73 -110
- isar-1.34.9.dist-info/RECORD +135 -0
- {isar-1.20.2.dist-info → isar-1.34.9.dist-info}/WHEEL +1 -1
- {isar-1.20.2.dist-info → isar-1.34.9.dist-info}/entry_points.txt +1 -0
- robot_interface/models/exceptions/robot_exceptions.py +91 -41
- robot_interface/models/initialize/__init__.py +0 -1
- robot_interface/models/inspection/__init__.py +0 -13
- robot_interface/models/inspection/inspection.py +42 -33
- robot_interface/models/mission/mission.py +14 -15
- robot_interface/models/mission/status.py +20 -26
- robot_interface/models/mission/task.py +154 -121
- robot_interface/models/robots/battery_state.py +6 -0
- robot_interface/models/robots/media.py +13 -0
- robot_interface/models/robots/robot_model.py +7 -7
- robot_interface/robot_interface.py +119 -84
- robot_interface/telemetry/mqtt_client.py +74 -12
- robot_interface/telemetry/payloads.py +91 -13
- robot_interface/utilities/json_service.py +7 -1
- isar/config/predefined_missions/default_turtlebot.json +0 -110
- isar/config/predefined_poses/__init__.py +0 -0
- isar/config/predefined_poses/predefined_poses.py +0 -616
- isar/config/settings.env +0 -25
- isar/mission_planner/sequential_task_selector.py +0 -23
- isar/mission_planner/task_selector_interface.py +0 -31
- isar/models/communication/__init__.py +0 -0
- isar/models/communication/message.py +0 -12
- isar/models/communication/queues/__init__.py +0 -4
- isar/models/communication/queues/queue_io.py +0 -12
- isar/models/communication/queues/queue_timeout_error.py +0 -2
- isar/models/communication/queues/queues.py +0 -19
- isar/models/communication/queues/status_queue.py +0 -20
- isar/models/mission_metadata/__init__.py +0 -0
- isar/services/readers/__init__.py +0 -0
- isar/services/readers/base_reader.py +0 -37
- isar/services/service_connections/stid/__init__.py +0 -0
- isar/services/utilities/queue_utilities.py +0 -39
- isar/state_machine/states/idle.py +0 -85
- isar/state_machine/states/initialize.py +0 -71
- isar/state_machine/states/initiate.py +0 -142
- isar/state_machine/states/off.py +0 -18
- isar/state_machine/states/stop.py +0 -95
- isar/storage/slimm_storage.py +0 -191
- isar-1.20.2.dist-info/RECORD +0 -116
- robot_interface/models/initialize/initialize_params.py +0 -9
- robot_interface/models/mission/step.py +0 -234
- {isar-1.20.2.dist-info → isar-1.34.9.dist-info/licenses}/LICENSE +0 -0
- {isar-1.20.2.dist-info → isar-1.34.9.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: isar
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.34.9
|
|
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
|
|
@@ -91,15 +91,18 @@ Classifier: Intended Audience :: Science/Research
|
|
|
91
91
|
Classifier: License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)
|
|
92
92
|
Classifier: Natural Language :: English
|
|
93
93
|
Classifier: Programming Language :: Python :: 3
|
|
94
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
95
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
94
96
|
Classifier: Programming Language :: Python :: 3.11
|
|
95
97
|
Classifier: Programming Language :: Python :: 3.12
|
|
98
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
96
99
|
Classifier: Topic :: Scientific/Engineering
|
|
97
100
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
98
101
|
Classifier: Topic :: Software Development :: Libraries
|
|
99
|
-
Requires-Python: >=3.
|
|
102
|
+
Requires-Python: >=3.9
|
|
100
103
|
Description-Content-Type: text/markdown
|
|
101
104
|
License-File: LICENSE
|
|
102
|
-
Requires-Dist: alitra
|
|
105
|
+
Requires-Dist: alitra>=1.1.3
|
|
103
106
|
Requires-Dist: azure-identity
|
|
104
107
|
Requires-Dist: azure-keyvault-secrets
|
|
105
108
|
Requires-Dist: azure-storage-blob
|
|
@@ -107,35 +110,43 @@ Requires-Dist: backoff
|
|
|
107
110
|
Requires-Dist: click
|
|
108
111
|
Requires-Dist: dacite
|
|
109
112
|
Requires-Dist: fastapi-azure-auth
|
|
110
|
-
Requires-Dist: fastapi
|
|
111
|
-
Requires-Dist: injector
|
|
113
|
+
Requires-Dist: fastapi>=0.121.0
|
|
114
|
+
Requires-Dist: dependency-injector
|
|
112
115
|
Requires-Dist: numpy
|
|
113
|
-
Requires-Dist: opencensus-ext-azure
|
|
114
|
-
Requires-Dist: opencensus-ext-logging
|
|
115
|
-
Requires-Dist: opencensus-ext-requests
|
|
116
116
|
Requires-Dist: paho-mqtt
|
|
117
|
-
Requires-Dist:
|
|
117
|
+
Requires-Dist: pydantic_settings
|
|
118
118
|
Requires-Dist: pydantic
|
|
119
119
|
Requires-Dist: PyJWT
|
|
120
120
|
Requires-Dist: python-dotenv
|
|
121
121
|
Requires-Dist: PyYAML
|
|
122
122
|
Requires-Dist: requests-toolbelt
|
|
123
123
|
Requires-Dist: requests
|
|
124
|
+
Requires-Dist: starlette>=0.49.1
|
|
124
125
|
Requires-Dist: transitions
|
|
125
126
|
Requires-Dist: uvicorn
|
|
127
|
+
Requires-Dist: opentelemetry-api
|
|
128
|
+
Requires-Dist: opentelemetry-sdk
|
|
129
|
+
Requires-Dist: opentelemetry-exporter-otlp
|
|
130
|
+
Requires-Dist: opentelemetry-instrumentation-fastapi
|
|
131
|
+
Requires-Dist: azure-monitor-opentelemetry
|
|
132
|
+
Requires-Dist: azure-monitor-opentelemetry-exporter>=1.0.0b38
|
|
133
|
+
Requires-Dist: pymysql
|
|
134
|
+
Requires-Dist: sqlalchemy
|
|
135
|
+
Requires-Dist: psycopg2-binary
|
|
126
136
|
Provides-Extra: dev
|
|
127
|
-
Requires-Dist: black
|
|
128
|
-
Requires-Dist:
|
|
129
|
-
Requires-Dist: mypy
|
|
130
|
-
Requires-Dist:
|
|
131
|
-
Requires-Dist:
|
|
132
|
-
Requires-Dist:
|
|
133
|
-
Requires-Dist: pytest-
|
|
134
|
-
Requires-Dist: pytest
|
|
135
|
-
Requires-Dist:
|
|
136
|
-
Requires-Dist:
|
|
137
|
-
Requires-Dist:
|
|
138
|
-
Requires-Dist:
|
|
137
|
+
Requires-Dist: black; extra == "dev"
|
|
138
|
+
Requires-Dist: isort; extra == "dev"
|
|
139
|
+
Requires-Dist: mypy; extra == "dev"
|
|
140
|
+
Requires-Dist: pip-tools; extra == "dev"
|
|
141
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
142
|
+
Requires-Dist: pytest-mock; extra == "dev"
|
|
143
|
+
Requires-Dist: pytest-xdist; extra == "dev"
|
|
144
|
+
Requires-Dist: pytest; extra == "dev"
|
|
145
|
+
Requires-Dist: requests-mock; extra == "dev"
|
|
146
|
+
Requires-Dist: ruff; extra == "dev"
|
|
147
|
+
Requires-Dist: testcontainers[mysql]; extra == "dev"
|
|
148
|
+
Requires-Dist: alembic; extra == "dev"
|
|
149
|
+
Dynamic: license-file
|
|
139
150
|
|
|
140
151
|
# ISAR
|
|
141
152
|
|
|
@@ -228,12 +239,21 @@ ISAR_ROBOT_PACKAGE = isar_turtlebot
|
|
|
228
239
|
ISAR_DEFAULT_MAP = turtleworld
|
|
229
240
|
```
|
|
230
241
|
|
|
242
|
+
### Run with make
|
|
243
|
+
Common commands for the project are in [Makefile](./Makefile).
|
|
244
|
+
This requires the CLI program `make`.
|
|
245
|
+
|
|
246
|
+
Usage:
|
|
247
|
+
```bash
|
|
248
|
+
make <command-in-makefile> # for example: make run
|
|
249
|
+
```
|
|
250
|
+
|
|
231
251
|
### Run ISAR server
|
|
232
252
|
|
|
233
253
|
To run ISAR:
|
|
234
254
|
|
|
235
255
|
```bash
|
|
236
|
-
|
|
256
|
+
isar-start
|
|
237
257
|
```
|
|
238
258
|
|
|
239
259
|
Note, running the full system requires that an implementation of a robot has been installed. See
|
|
@@ -253,21 +273,6 @@ In [this](./src/isar/config/predefined_missions) folder there are predefined def
|
|
|
253
273
|
corresponding to `mission_id=1`. A new mission may be added by adding a new json-file with a mission description. Note,
|
|
254
274
|
the mission IDs must be unique.
|
|
255
275
|
|
|
256
|
-
### Running with docker-compose
|
|
257
|
-
|
|
258
|
-
ISAR may be started with an instance of the [isar-robot](https://github.com/equinor/isar-robot) package by
|
|
259
|
-
|
|
260
|
-
```shell
|
|
261
|
-
docker-compose up --build
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
Provided that the simulator from [isar-turtlebot](https://github.com/equinor/isar-turtlebot) is running ISAR may be
|
|
265
|
-
started with the turtlebot by
|
|
266
|
-
|
|
267
|
-
```shell
|
|
268
|
-
docker-compose -f docker-compose-turtlebot.yml up --build
|
|
269
|
-
```
|
|
270
|
-
|
|
271
276
|
### Configuration
|
|
272
277
|
|
|
273
278
|
The system consists of many configuration variables which may alter the functionality. As an example, it is possible to
|
|
@@ -293,6 +298,20 @@ There are two methods of specifying configuration.
|
|
|
293
298
|
By adding environment variables with the prefix `ISAR_` to the [settings.env](./src/isar/config/settings.env) file
|
|
294
299
|
the configuration variables will be overwritten by the values in this file.
|
|
295
300
|
|
|
301
|
+
### Setup for testing
|
|
302
|
+
To be able to execute the tests you need to set the `ISAR_ENV` environment variable beforehand. Depending on your operating system and the command line you are using you can use one of the following commands:
|
|
303
|
+
|
|
304
|
+
**Bash/Zsh**
|
|
305
|
+
```bash
|
|
306
|
+
export ISAR_ENV=test
|
|
307
|
+
```
|
|
308
|
+
**Windows Command prompt**
|
|
309
|
+
```cmd
|
|
310
|
+
set ISAR_ENV=test
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Remember to set `ISAR_ENV` back to `None` when you want to run `isar-start` afterwards.
|
|
314
|
+
|
|
296
315
|
### Running tests
|
|
297
316
|
|
|
298
317
|
After following the steps in [Development](#install), you can run the tests:
|
|
@@ -343,24 +362,29 @@ The system consists of two main components.
|
|
|
343
362
|
The state machine handles interaction with the robots API and monitors the execution of missions. It also enables
|
|
344
363
|
interacting with the robot before, during and after missions.
|
|
345
364
|
|
|
346
|
-
The state machine is based on the [transitions](https://github.com/pytransitions/transitions) package for Python.
|
|
347
|
-
|
|
365
|
+
The state machine is based on the [transitions](https://github.com/pytransitions/transitions) package for Python. The following are some visualizations of the state machine:
|
|
366
|
+
|
|
367
|
+
Mission behavior without the robot status changed transition that enable the resting states to transition between each other if the robot status changes:
|
|
368
|
+

|
|
369
|
+
|
|
370
|
+
Robot status changed transition:
|
|
371
|
+

|
|
372
|
+
|
|
373
|
+
Full state machine:
|
|
374
|
+

|
|
348
375
|
|
|
349
376
|
In general the states
|
|
350
377
|
|
|
351
378
|
```
|
|
352
|
-
States.
|
|
353
|
-
States.Initialize,
|
|
354
|
-
States.Initiate,
|
|
355
|
-
States.Stop,
|
|
379
|
+
States.Stopping,
|
|
356
380
|
States.Monitor,
|
|
357
381
|
States.Paused,
|
|
358
382
|
```
|
|
359
383
|
|
|
360
|
-
indicates that the state machine is already running. For running a mission the state machine need to be in the
|
|
384
|
+
indicates that the state machine is already running. For running a mission the state machine need to be in the states
|
|
361
385
|
|
|
362
386
|
```
|
|
363
|
-
States.
|
|
387
|
+
States.Home, States.AwaitNextMission or States.ReturningHome
|
|
364
388
|
```
|
|
365
389
|
|
|
366
390
|
### FastAPI
|
|
@@ -382,10 +406,10 @@ overriding the configuration through an environment variable. It accepts a json
|
|
|
382
406
|
in the list to retrieve the corresponding handler. The current options are
|
|
383
407
|
|
|
384
408
|
```
|
|
385
|
-
ISAR_STORAGE = '["local", "blob"
|
|
409
|
+
ISAR_STORAGE = '["local", "blob"]'
|
|
386
410
|
```
|
|
387
411
|
|
|
388
|
-
Note that the `blob`
|
|
412
|
+
Note that the `blob` option requires special configuration to authenticate to these endpoints.
|
|
389
413
|
|
|
390
414
|
### Implement your own storage module
|
|
391
415
|
|
|
@@ -393,68 +417,6 @@ You can create your own storage module by implementing the [storage interface](.
|
|
|
393
417
|
and adding your storage module to the selection [here](./src/isar/modules.py). Note that you must add your module as an
|
|
394
418
|
option in the dictionary.
|
|
395
419
|
|
|
396
|
-
## Task selection
|
|
397
|
-
|
|
398
|
-
The tasks of a mission are selected based on a task selector module, defined by the `TASK_SELECTOR` configuration variable. The default task selector is `sequential`. When using the default module, tasks are executed in sequential order defined by the current input mission.
|
|
399
|
-
|
|
400
|
-
### Implement you own task selector module
|
|
401
|
-
|
|
402
|
-
Custom task selector modules may be added by implementing additional versions of the [task selector interface](./src/isar/mission_planner/task_selector_interface.py).
|
|
403
|
-
|
|
404
|
-
For every custom module, the interface function `next_task()` must be implemented. All interface implementations by default have access to the list of tasks in the current mission through the member `self.tasks`, however additional variables may be supplied by adding arguments to `next_task()`. To comply with the interface definition, the function should return the next task upon every call, and raise the `TaskSelectorStop` exception when all tasks in the current mission have been completed:
|
|
405
|
-
|
|
406
|
-
```python
|
|
407
|
-
class CustomTaskSelector(TaskSelectorInterface):
|
|
408
|
-
...
|
|
409
|
-
def next_task(...) -> Task:
|
|
410
|
-
|
|
411
|
-
# Add code here
|
|
412
|
-
...
|
|
413
|
-
|
|
414
|
-
# Raise `TaskSelectorStop` when all tasks have been completed
|
|
415
|
-
...
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
Optionally, the `initialize()` function may be extended by supplementing the parameter list or function body:
|
|
419
|
-
|
|
420
|
-
```python
|
|
421
|
-
class CustomTaskSelector(TaskSelectorInterface):
|
|
422
|
-
...
|
|
423
|
-
def initialize(self, tasks: List[Task], ...) -> None:
|
|
424
|
-
super.initialize(tasks=tasks)
|
|
425
|
-
|
|
426
|
-
# Add supplementary code here
|
|
427
|
-
...
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
A custom task selector may be made available during [module selection](./src/isar/modules.py) by adding it to the series of options in the dictionary of injector modules. It can then be activated by overriding the task selector configuration variable:
|
|
431
|
-
|
|
432
|
-
```python
|
|
433
|
-
# Add custom task selector module to `modules.py`
|
|
434
|
-
|
|
435
|
-
class CustomTaskSelectorModule(Module):
|
|
436
|
-
@provider
|
|
437
|
-
@singleton
|
|
438
|
-
def provide_task_selector(self) -> TaskSelectorInterface:
|
|
439
|
-
return CustomTaskSelector()
|
|
440
|
-
|
|
441
|
-
...
|
|
442
|
-
|
|
443
|
-
# Make it available to select during injector instantiation
|
|
444
|
-
|
|
445
|
-
modules: dict[str, tuple[Module, Union[str, bool]]] = {
|
|
446
|
-
...
|
|
447
|
-
"task_selector": (
|
|
448
|
-
{
|
|
449
|
-
"sequential": SequentialTaskSelectorModule,
|
|
450
|
-
"custom": CustomTaskSelectorModule
|
|
451
|
-
}
|
|
452
|
-
...
|
|
453
|
-
)
|
|
454
|
-
...
|
|
455
|
-
}
|
|
456
|
-
```
|
|
457
|
-
|
|
458
420
|
## API authentication
|
|
459
421
|
|
|
460
422
|
The API has an option to include user authentication. This can be enabled by setting the environment variable
|
|
@@ -471,6 +433,7 @@ Enabling API authentication also requires the same environment variables. The re
|
|
|
471
433
|
AZURE_CLIENT_ID
|
|
472
434
|
AZURE_TENANT_ID
|
|
473
435
|
AZURE_CLIENT_SECRET
|
|
436
|
+
ISAR_BLOB_STORAGE_ACCOUNT
|
|
474
437
|
```
|
|
475
438
|
|
|
476
439
|
## MQTT communication
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
isar/__init__.py,sha256=cH8p8bVveu3FUL6kBhldcSlLaoHgD82Kd0-SwSNfGXw,87
|
|
2
|
+
isar/modules.py,sha256=2bo4Z4H2n4vl9BVwV5V5twOUevsLIuXsPiRPICjCB3k,4404
|
|
3
|
+
isar/script.py,sha256=mkwdRMEYW2HI9eFLyFy23Ks1_vvrsp17b8VlvkhrNao,5913
|
|
4
|
+
isar/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
isar/apis/api.py,sha256=0s0C1l5qGhko8rzm4D3y27mwibk_S2s2o95eAl7bH3k,16126
|
|
6
|
+
isar/apis/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
isar/apis/models/models.py,sha256=UqIzHiqrvI-ICi6H_xlBFH2HHgYHnMWAKlnqrdqM380,2099
|
|
8
|
+
isar/apis/models/start_mission_definition.py,sha256=v-wt1XDd53Sw7DCdFAkxBBut-xd_uGJa7qMJnE3VI9k,6364
|
|
9
|
+
isar/apis/robot_control/robot_controller.py,sha256=RSVlxbw9D668tHWItVLtyjvAnsJkCs2yUSkU3iqeAcY,1393
|
|
10
|
+
isar/apis/schedule/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
isar/apis/schedule/scheduling_controller.py,sha256=oyUSo0MdKB24cB796GcfdSzw6-pendz9Thtrh9yAlvc,10890
|
|
12
|
+
isar/apis/security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
isar/apis/security/authentication.py,sha256=Se2puhe2TUBmfio2RLma52-VSLRhqvWgu0Cd1bhdwMo,2000
|
|
14
|
+
isar/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
isar/config/configuration_error.py,sha256=rO6WOhafX6xvVib8WxV-eY483Z0PpN-9PxGsq5ATfKc,46
|
|
16
|
+
isar/config/log.py,sha256=16qEMVKWrAc5I9xgE0xZQBpuYpy7wMz9NT19JVBZlf4,2218
|
|
17
|
+
isar/config/logging.conf,sha256=skjTp6AsXQGW6L6DeMxGszD-XvWu1BAVWjDipQ4QHvU,854
|
|
18
|
+
isar/config/open_telemetry.py,sha256=Lgu0lbRQA-zz6ZDoBKKk0whQex5w18jl1wjqWzHUGdg,3634
|
|
19
|
+
isar/config/settings.py,sha256=BmcLwk4_MODG1NVuFsbu2W__t68rlmMozzJFWbI4zkQ,12289
|
|
20
|
+
isar/config/certs/ca-cert.pem,sha256=qoNljfad_qcMxhXJIUMLd7nT-Qwf_d4dYSdoOFEOE8I,2179
|
|
21
|
+
isar/config/keyvault/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
isar/config/keyvault/keyvault_error.py,sha256=zvPCsZLjboxsxthYkxpRERCTFxYV8R5WmACewAUQLwk,41
|
|
23
|
+
isar/config/keyvault/keyvault_service.py,sha256=TEAJv5RlWnYvy-n9keivdATDafdTQDj4QY8Aw3SEKoU,3124
|
|
24
|
+
isar/config/maps/JSP1_intermediate_deck.json,sha256=fdotzN6MVotyLbqpIjRSrbBYM84vogLkdS585NjBnL8,826
|
|
25
|
+
isar/config/maps/JSP1_weather_deck.json,sha256=_dG3cSBI8q4_uHqHMOO5kSYqMXn85JL3_9PaH4uk1yQ,832
|
|
26
|
+
isar/config/maps/default_map.json,sha256=3CdGMr0Qn3PrL4TfUK8I5a-hotMrS_n5DKfaEORJPT4,776
|
|
27
|
+
isar/config/maps/klab_b.json,sha256=qXgWVUYPaTdVuomf6lQL-uRbV3Tsa6CftnzcbT3dY78,842
|
|
28
|
+
isar/config/maps/klab_compressor.json,sha256=1Vrk5u_l4WXjrTtG4YfXlrCPbOoRs4TtYHOm0430u2A,803
|
|
29
|
+
isar/config/maps/klab_turtlebot.json,sha256=HcB79XFEdY0Wm96EssIFO4TMyAWzc2KENoqN7TbTT0k,823
|
|
30
|
+
isar/config/maps/turtleworld.json,sha256=EKLMpSK9Gu2lAN-E9l41XOaO3f9Su5n_I97mA6z7sWY,764
|
|
31
|
+
isar/config/predefined_mission_definition/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
|
+
isar/config/predefined_mission_definition/default_exr.json,sha256=diSi4KMnGQY01ZumYUBZDvrekgl4bgiTk-9YPXVeBCY,1550
|
|
33
|
+
isar/config/predefined_mission_definition/default_mission.json,sha256=NAspX-kTaHh9VygJGrytJGNjebEIPbiTnWHhj7qt9rk,2722
|
|
34
|
+
isar/config/predefined_mission_definition/default_turtlebot.json,sha256=20ee7q1EIx7bIIojMucSwdBafuCG5sewbMQn9gJuPEo,3704
|
|
35
|
+
isar/config/predefined_missions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
isar/config/predefined_missions/default.json,sha256=eBVuHXRoXELpzN0IbSOHdTVjZnhxFqJQf6h67Ez4Iqk,1243
|
|
37
|
+
isar/config/predefined_missions/default_extra_capabilities.json,sha256=ddYx54xvz1w5hSS5i6YrHOj8-4YMmtuolLXVha4kLvE,2157
|
|
38
|
+
isar/eventhandlers/eventhandler.py,sha256=xM5wmrYO3nQtxxsGt-s98ajKhfl3bCMajqtJ29CoGyo,3816
|
|
39
|
+
isar/mission_planner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
isar/mission_planner/local_planner.py,sha256=Mkg3vvUBF1jImfQnaFvXLNpKVadR21X4mwDd_wHqJ2w,2520
|
|
41
|
+
isar/mission_planner/mission_planner_interface.py,sha256=UgpPIM4FbrWOD7fGY3Ul64k3uYb8wo0FwSWGewYoVbc,485
|
|
42
|
+
isar/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
+
isar/models/events.py,sha256=zE2YQoWzfuVTDLX99YdXb4wu6lmc_KZlwWYQAxiNfvA,6262
|
|
44
|
+
isar/models/status.py,sha256=ed_CZH08IFwIKwX0t1U6MQpq5tax2LwWrTe_TjII5mg,506
|
|
45
|
+
isar/robot/robot.py,sha256=gw8MI_mLLY1uEFn7xMEFGcz1uBJO6MWH4JXGxbELm2k,15138
|
|
46
|
+
isar/robot/robot_battery.py,sha256=goLdgmn61QCgE2Ja3YuiwE_sqJzIhCkS3u90sz1kdug,2089
|
|
47
|
+
isar/robot/robot_monitor_mission.py,sha256=Pb0dhnVncNt6VuiidlJDyniEXiqoO1ZArSCdWCqX6IY,13831
|
|
48
|
+
isar/robot/robot_pause_mission.py,sha256=2zVQLh1Qoo-PIgpYUd6IBA39EJ1azIGh_lV1b9BeXqk,2631
|
|
49
|
+
isar/robot/robot_resume_mission.py,sha256=naseBgY3mX1p4lsfW2lW_bocuHO59VHx3fhprxi3Nf0,2417
|
|
50
|
+
isar/robot/robot_start_mission.py,sha256=UFwhSTBbCo-R4FO-BnrCB7bnvOkL1p_0CMDuxnSWi5E,2435
|
|
51
|
+
isar/robot/robot_status.py,sha256=dfAls3s8_Vha7ZMLSYngELqsdpaEpcweAWRHanQj8u8,2361
|
|
52
|
+
isar/robot/robot_stop_mission.py,sha256=CaXLsZjjazHmydU9iR7uOWUHtJ2zvKh4ItUbkWY5sIk,2321
|
|
53
|
+
isar/robot/robot_upload_inspection.py,sha256=uCc9nuH1Am5uxD2Tgnm4ZTOm0tQnud0F6eHs0rSUfvY,2539
|
|
54
|
+
isar/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
+
isar/services/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
isar/services/auth/azure_credentials.py,sha256=9PlwGe5FrPRbW2dp0go7LMp8_l_FRvL8xOXotXwzRDo,364
|
|
57
|
+
isar/services/service_connections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
+
isar/services/service_connections/persistent_memory.py,sha256=duNj5vX4VtL5XCu6oiZ0VPmNMlFbNJMzcLcQL8nNfN8,2188
|
|
59
|
+
isar/services/service_connections/request_handler.py,sha256=0LxC0lu_HXeEf_xmJWjfEsh14oAUI97cpG1IWtBlcs4,4278
|
|
60
|
+
isar/services/service_connections/mqtt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
+
isar/services/service_connections/mqtt/mqtt_client.py,sha256=8Dr65JNwPx5-kRY8UsRtZ_nrQ2gXXSUH6LWFOYlnluo,4482
|
|
62
|
+
isar/services/service_connections/mqtt/robot_heartbeat_publisher.py,sha256=SKPvY2QwBxqnhL9aGuZQDGQ8F_NDqPtQI5bzRBIUxkQ,1203
|
|
63
|
+
isar/services/service_connections/mqtt/robot_info_publisher.py,sha256=AxokGk51hRPTxxD2r0P9braPJCMrf1InaCxrUBKkF4g,1402
|
|
64
|
+
isar/services/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
+
isar/services/utilities/mqtt_utilities.py,sha256=_e-UzWcoXvsBUrvb89rNXQaDN4G3rTsYlZRIhmC9fQc,3101
|
|
66
|
+
isar/services/utilities/robot_utilities.py,sha256=4zCigsLXfqDC8POHchktSq81zr1_pTaRve_LQsVr6Mk,514
|
|
67
|
+
isar/services/utilities/scheduling_utilities.py,sha256=wxLBc7l6Pc6y0aLRP-gOzBMfKUs-xg8BA9QiNdBG7bU,23814
|
|
68
|
+
isar/services/utilities/threaded_request.py,sha256=py4G-_RjnIdHljmKFAcQ6ddqMmp-ZYV39Ece-dqRqjs,1874
|
|
69
|
+
isar/state_machine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
isar/state_machine/state_machine.py,sha256=Kmys0yIpsBuBxPrcqHo3FYDfAfx34haHfczihHYLmEU,13669
|
|
71
|
+
isar/state_machine/states_enum.py,sha256=1jiON-PJCDWIA0VHtI0AUFlWeVtbWbGijShVJyViqwI,1012
|
|
72
|
+
isar/state_machine/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
+
isar/state_machine/states/await_next_mission.py,sha256=IJ79RuPveK6xBnHHkMldZ8LJybLfhMcS812t7-I6-iU,4381
|
|
74
|
+
isar/state_machine/states/blocked_protective_stop.py,sha256=Ya5GIZS81olGoTXqKVjDaUXfl3zR6FxdsUXktPJIU80,2578
|
|
75
|
+
isar/state_machine/states/going_to_lockdown.py,sha256=dmOhTkg3zNLIIdxfC9b5ss0rWu-pHm-yol2ASoOIUqo,3879
|
|
76
|
+
isar/state_machine/states/going_to_recharging.py,sha256=CMtA9hmiW8XmH7Skj3B0_IAtdZcJCNt_qAvUL0Rmqgg,3562
|
|
77
|
+
isar/state_machine/states/home.py,sha256=IfAFi9bDvoqNaJRahAw8tQwRQ2Wg84kI-nAmtzXp75U,4856
|
|
78
|
+
isar/state_machine/states/intervention_needed.py,sha256=DmRm5bQYxUzTRCwYiFN9L4bRXWSdGgDKCBwh-hV6ySo,3156
|
|
79
|
+
isar/state_machine/states/lockdown.py,sha256=ZFw9XMDENECuH3lh89RKeU_3CTzW0ZBvqCKptFJG5xo,1364
|
|
80
|
+
isar/state_machine/states/maintenance.py,sha256=PIlPLtS7zn5uTJZ9kTrpOQGUuJww4j5vD-qaNcoj7aI,1267
|
|
81
|
+
isar/state_machine/states/monitor.py,sha256=WYhCkZAfsGoqO092jvnuSJEspY5gBje__-pf4nuGEDY,6267
|
|
82
|
+
isar/state_machine/states/offline.py,sha256=FbchMo1q2d0aZUiDj9VWuD1IAha7sD1d8e5MqyR_JBc,2564
|
|
83
|
+
isar/state_machine/states/paused.py,sha256=-XRjjMpzKgKQZ7oYmI1bAZXNbtti1KHlH0tt59Cv0eg,4149
|
|
84
|
+
isar/state_machine/states/pausing.py,sha256=Q0yH9iTWA-2yGGsD_atb_bqFJG8cApPfmd_TdcGvRbY,1693
|
|
85
|
+
isar/state_machine/states/pausing_return_home.py,sha256=yEMojzOwn6z2u80S1BF2gVVgs3SOLk90LscO3DIj1R8,1740
|
|
86
|
+
isar/state_machine/states/recharging.py,sha256=9VszfV5zAPOaAcI_k_if6uapu7lO3XDWj6GbvnldnEI,3143
|
|
87
|
+
isar/state_machine/states/resuming.py,sha256=Evh9gxxntKwY8MKM4gn0Sq-H9DpMx6RRJrID57LIv4Y,2071
|
|
88
|
+
isar/state_machine/states/resuming_return_home.py,sha256=YZhHno_WdtR5DkoeKmsN4jALmTXcOdWgOGZ0d8Tz2HQ,2414
|
|
89
|
+
isar/state_machine/states/return_home_paused.py,sha256=598K-hKMxjZZf3iVWDaOOauAETSwJxxDbU1wlHnt9UM,4485
|
|
90
|
+
isar/state_machine/states/returning_home.py,sha256=oXc7Ou7lhzLSm4oZocoiB_4I2vUyxzt2CvJP6wAJhRs,9196
|
|
91
|
+
isar/state_machine/states/stopping.py,sha256=B2tcd4jaSOXEkTrd5BnNfMVrzM9wRkJm5hnmM7gxUc0,2484
|
|
92
|
+
isar/state_machine/states/stopping_due_to_maintenance.py,sha256=Mjbwf6bQIB0ihBKrsTxnCCUzkIe0LNybVHiLGzcXSNA,2561
|
|
93
|
+
isar/state_machine/states/stopping_go_to_lockdown.py,sha256=_w9yL8Uq2E6W97-ccp9NJvbfjV2hv87LEK_skS5Jhqg,2327
|
|
94
|
+
isar/state_machine/states/stopping_go_to_recharge.py,sha256=02i37QI_551o-i_Ejc3Z9_xuI9o0g8e6WKCXcwkW2ac,1923
|
|
95
|
+
isar/state_machine/states/stopping_return_home.py,sha256=sKA0tZASme_XVHEj0mwotfiKjFtCZ-FB-y1IoPaj9q4,3089
|
|
96
|
+
isar/state_machine/states/unknown_status.py,sha256=oL92_66TDBwsIELdfqWvFvZ8NkY4oOLaGYKdZHsxAB4,3171
|
|
97
|
+
isar/state_machine/transitions/mission.py,sha256=coHW4Mo3HdEzjolNg6FIppTcU_g_GCvAkr3gU0ERwXc,7317
|
|
98
|
+
isar/state_machine/transitions/return_home.py,sha256=G9mxFpM7IR5NNq7JC-Cbign7XAMC_d7vOkVxCBFVNGE,3701
|
|
99
|
+
isar/state_machine/transitions/robot_status.py,sha256=60EAb1LwuOfk1TPDCgh8S5FBgcZAPHdC2KtCGDrsQrM,2763
|
|
100
|
+
isar/state_machine/utils/common_event_handlers.py,sha256=lBoreI1EuXrqmMkkPIZiy3yCLBDTShW_EFUxMGrCQVE,2492
|
|
101
|
+
isar/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
102
|
+
isar/storage/blob_storage.py,sha256=d44z3XpZDUbiKwN8Av2gytTJxnefMXrp5VhiGm4PWxU,3703
|
|
103
|
+
isar/storage/local_storage.py,sha256=Rn-iiiz9DI7PzIhevOMshPIaqzJaqBXeVJMQRhVSl2M,2191
|
|
104
|
+
isar/storage/storage_interface.py,sha256=x-imVeQTdL6dCaTaPTHpXwCR6N4e27WxK_Vpumg0x-Y,1230
|
|
105
|
+
isar/storage/uploader.py,sha256=0BBrxyZGGRkNxGeZeoREucegs4yKUow2523oLEie07o,10841
|
|
106
|
+
isar/storage/utilities.py,sha256=oLH0Rp7UtrQQdilfITnmXO1Z0ExdeDhBImYHid55vBA,3449
|
|
107
|
+
isar-1.34.9.dist-info/licenses/LICENSE,sha256=3fc2-ebLwHWwzfQbulGNRdcNob3SBQeCfEVUDYxsuqw,14058
|
|
108
|
+
robot_interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
|
+
robot_interface/robot_interface.py,sha256=s04zOYDpnUu3GxUyDo3DlX1cFf94DmSt-GrwsFPgnYw,9357
|
|
110
|
+
robot_interface/test_robot_interface.py,sha256=FV1urn7SbsMyWBIcTKjsBwAG4IsXeZ6pLHE0mA9EGGs,692
|
|
111
|
+
robot_interface/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
|
+
robot_interface/models/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
|
+
robot_interface/models/exceptions/robot_exceptions.py,sha256=7extsX9NuJsJ00xeTQ0aI7yeVGW-dzjbH-LH8Mc-uEQ,10821
|
|
114
|
+
robot_interface/models/initialize/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
|
+
robot_interface/models/inspection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
|
+
robot_interface/models/inspection/inspection.py,sha256=cjAvekL8r82s7bgukWeXpYylHvJG_oRSCJNISPVCvZg,2238
|
|
117
|
+
robot_interface/models/mission/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
|
+
robot_interface/models/mission/mission.py,sha256=MQ9p5cuclLXexaZu9bkDh5-aN99eunvYC0vP-Z_kUwI,960
|
|
119
|
+
robot_interface/models/mission/status.py,sha256=3KHA02Jer-HSOwFmUhRkE6cr81H1zPgbwB3p4IjchEY,702
|
|
120
|
+
robot_interface/models/mission/task.py,sha256=SEsdR82CIcqTymecMqYjuY3Nijj_LS90YJdxiConJag,4207
|
|
121
|
+
robot_interface/models/robots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
+
robot_interface/models/robots/battery_state.py,sha256=ktOtJ8ltdK0k_i7BoqYfhc5dbOzIG6Oo-uWC67fCWio,98
|
|
123
|
+
robot_interface/models/robots/media.py,sha256=8A-CuuubfngzPprs6zWB9hSaqe3jzgsE8rcCzRX2Uto,227
|
|
124
|
+
robot_interface/models/robots/robot_model.py,sha256=-0jNKWPcEgtF_2klb1It3u0SCoAR0hSW9nce58Zq0Co,417
|
|
125
|
+
robot_interface/telemetry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
|
+
robot_interface/telemetry/mqtt_client.py,sha256=0P1S9mWdJcByGoSOwwn2NPQr9I-OX4b1VPbrIYOU-Zo,4334
|
|
127
|
+
robot_interface/telemetry/payloads.py,sha256=A0SWiG609k6o6-Y3vhDWE6an2-_m7D_ND85ohfW4qWs,3236
|
|
128
|
+
robot_interface/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
129
|
+
robot_interface/utilities/json_service.py,sha256=9N1zijW7K4d3WFR2autpaS8U9o1ibymiOX-6stTKCyk,1243
|
|
130
|
+
robot_interface/utilities/uuid_string_factory.py,sha256=_NQIbBQ56w0qqO0MUDP6aPpHbxW7ATRhK8HnQiBSLkc,76
|
|
131
|
+
isar-1.34.9.dist-info/METADATA,sha256=LmXJhW-UywCqnF6C2sLVOJ_Lr6JVJfa9yq7ESgZL7L4,29271
|
|
132
|
+
isar-1.34.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
133
|
+
isar-1.34.9.dist-info/entry_points.txt,sha256=RdnGYFhaBdMGEsOVJAAZxHCflEptjSisHqZ-Rgc4t7Q,98
|
|
134
|
+
isar-1.34.9.dist-info/top_level.txt,sha256=UwIML2RtuQKCyJJkatcSnyp6-ldDjboB9k9JgKipO-U,21
|
|
135
|
+
isar-1.34.9.dist-info/RECORD,,
|
|
@@ -4,23 +4,27 @@ from typing import Optional
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class ErrorReason(str, Enum):
|
|
7
|
-
RobotCommunicationException
|
|
8
|
-
RobotCommunicationTimeoutException
|
|
9
|
-
|
|
10
|
-
RobotInfeasibleMissionException
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
RobotRetrieveDataException
|
|
17
|
-
RobotRetrieveInspectionException
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
7
|
+
RobotCommunicationException = "robot_communication_exception"
|
|
8
|
+
RobotCommunicationTimeoutException = "robot_communication_timeout_exception"
|
|
9
|
+
RobotInfeasibleTaskException = "robot_infeasible_task_exception"
|
|
10
|
+
RobotInfeasibleMissionException = "robot_infeasible_mission_exception"
|
|
11
|
+
RobotUnreliableDockingStatusException = "robot_unreliable_docking_status_exception"
|
|
12
|
+
RobotMissionStatusException = "robot_mission_status_exception"
|
|
13
|
+
RobotTaskStatusException = "robot_task_status_exception"
|
|
14
|
+
RobotAPIException = "robot_api_exception"
|
|
15
|
+
RobotActionException = "robot_action_exception"
|
|
16
|
+
RobotRetrieveDataException = "robot_retrieve_data_exception"
|
|
17
|
+
RobotRetrieveInspectionException = "robot_retrieve_inspection_exception"
|
|
18
|
+
RobotStillStartingMissionException = "robot_still_starting_mission_exception"
|
|
19
|
+
RobotTelemetryException = "robot_telemetry_exception"
|
|
20
|
+
RobotTelemetryNoUpdateException = "robot_telemetry_no_update_exception"
|
|
21
|
+
RobotTelemetryPoseException = "robot_telemetry_pose_exception"
|
|
22
|
+
RobotMapException = "robot_map_exception"
|
|
23
|
+
RobotTransformException = "robot_transform_exception"
|
|
24
|
+
RobotUnknownErrorException = "robot_unknown_error_exception"
|
|
25
|
+
RobotDisconnectedException = "robot_disconnected_exception"
|
|
26
|
+
RobotNoMissionRunningException = "robot_no_mission_running_exception"
|
|
27
|
+
RobotAlreadyHomeException = "robot_already_home_exception"
|
|
24
28
|
|
|
25
29
|
|
|
26
30
|
@dataclass
|
|
@@ -39,7 +43,7 @@ class RobotException(Exception):
|
|
|
39
43
|
|
|
40
44
|
|
|
41
45
|
# An exception which should be thrown by the robot package if it is unable to
|
|
42
|
-
# communicate with the robot API.
|
|
46
|
+
# communicate with the robot API. ISAR will retry the request.
|
|
43
47
|
class RobotCommunicationException(RobotException):
|
|
44
48
|
def __init__(self, error_description: str) -> None:
|
|
45
49
|
super().__init__(
|
|
@@ -50,6 +54,18 @@ class RobotCommunicationException(RobotException):
|
|
|
50
54
|
pass
|
|
51
55
|
|
|
52
56
|
|
|
57
|
+
# An exception which should be thrown by the robot package if it is unable to
|
|
58
|
+
# complete a request as there is no ongoing mission.
|
|
59
|
+
class RobotNoMissionRunningException(RobotException):
|
|
60
|
+
def __init__(self, error_description: str) -> None:
|
|
61
|
+
super().__init__(
|
|
62
|
+
error_reason=ErrorReason.RobotNoMissionRunningException,
|
|
63
|
+
error_description=error_description,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
pass
|
|
67
|
+
|
|
68
|
+
|
|
53
69
|
# An exception which should be thrown by the robot package if the communication has timed
|
|
54
70
|
# out and ISAR should retry the request.
|
|
55
71
|
class RobotCommunicationTimeoutException(RobotException):
|
|
@@ -63,11 +79,11 @@ class RobotCommunicationTimeoutException(RobotException):
|
|
|
63
79
|
|
|
64
80
|
|
|
65
81
|
# An exception which should be thrown by the robot package if it is unable to start the
|
|
66
|
-
# current
|
|
67
|
-
class
|
|
82
|
+
# current task.
|
|
83
|
+
class RobotInfeasibleTaskException(RobotException):
|
|
68
84
|
def __init__(self, error_description: str) -> None:
|
|
69
85
|
super().__init__(
|
|
70
|
-
error_reason=ErrorReason.
|
|
86
|
+
error_reason=ErrorReason.RobotInfeasibleTaskException,
|
|
71
87
|
error_description=error_description,
|
|
72
88
|
)
|
|
73
89
|
|
|
@@ -86,6 +102,16 @@ class RobotInfeasibleMissionException(RobotException):
|
|
|
86
102
|
pass
|
|
87
103
|
|
|
88
104
|
|
|
105
|
+
class RobotUnreliableDockingStatusException(RobotException):
|
|
106
|
+
def __init__(self, error_description: str) -> None:
|
|
107
|
+
super().__init__(
|
|
108
|
+
error_reason=ErrorReason.RobotUnreliableDockingStatusException,
|
|
109
|
+
error_description=error_description,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
pass
|
|
113
|
+
|
|
114
|
+
|
|
89
115
|
# An exception which should be thrown by the robot package if it is unable to collect
|
|
90
116
|
# the status of the current mission.
|
|
91
117
|
class RobotMissionStatusException(RobotException):
|
|
@@ -99,11 +125,11 @@ class RobotMissionStatusException(RobotException):
|
|
|
99
125
|
|
|
100
126
|
|
|
101
127
|
# An exception which should be thrown by the robot package if it is unable to collect
|
|
102
|
-
# the status of the current
|
|
103
|
-
class
|
|
128
|
+
# the status of the current task.
|
|
129
|
+
class RobotTaskStatusException(RobotException):
|
|
104
130
|
def __init__(self, error_description: str) -> None:
|
|
105
131
|
super().__init__(
|
|
106
|
-
error_reason=ErrorReason.
|
|
132
|
+
error_reason=ErrorReason.RobotTaskStatusException,
|
|
107
133
|
error_description=error_description,
|
|
108
134
|
)
|
|
109
135
|
|
|
@@ -135,19 +161,6 @@ class RobotActionException(RobotException):
|
|
|
135
161
|
pass
|
|
136
162
|
|
|
137
163
|
|
|
138
|
-
# An exception which should be thrown by the robot package if something is wrong during
|
|
139
|
-
# the initialization of the robot. This exception will cause the mission to fail as
|
|
140
|
-
# initialization is performed prior to starting the mission.
|
|
141
|
-
class RobotInitializeException(RobotException):
|
|
142
|
-
def __init__(self, error_description: str) -> None:
|
|
143
|
-
super().__init__(
|
|
144
|
-
error_reason=ErrorReason.RobotInitializeException,
|
|
145
|
-
error_description=error_description,
|
|
146
|
-
)
|
|
147
|
-
|
|
148
|
-
pass
|
|
149
|
-
|
|
150
|
-
|
|
151
164
|
# An exception which should be thrown by the robot package if it is unable to retrieve
|
|
152
165
|
# data from the API like currently executing missions, status of the current mission
|
|
153
166
|
# and similar.
|
|
@@ -162,7 +175,7 @@ class RobotRetrieveDataException(RobotException):
|
|
|
162
175
|
|
|
163
176
|
|
|
164
177
|
# An exception which should be thrown by the robot package if it is unable to collect
|
|
165
|
-
# the inspections that were generated for the currently executing
|
|
178
|
+
# the inspections that were generated for the currently executing task or mission.
|
|
166
179
|
class RobotRetrieveInspectionException(RobotException):
|
|
167
180
|
def __init__(self, error_description: str) -> None:
|
|
168
181
|
super().__init__(
|
|
@@ -173,6 +186,19 @@ class RobotRetrieveInspectionException(RobotException):
|
|
|
173
186
|
pass
|
|
174
187
|
|
|
175
188
|
|
|
189
|
+
# An exception which should be thrown by the robot package if it is still starting the
|
|
190
|
+
# mission when another action is requested. An example of this can be trying to stop
|
|
191
|
+
# the robot while it is still starting the mission.
|
|
192
|
+
class RobotStillStartingMissionException(RobotException):
|
|
193
|
+
def __init__(self, error_description: str) -> None:
|
|
194
|
+
super().__init__(
|
|
195
|
+
error_reason=ErrorReason.RobotStillStartingMissionException,
|
|
196
|
+
error_description=error_description,
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
pass
|
|
200
|
+
|
|
201
|
+
|
|
176
202
|
# An exception which should be thrown by the robot package if it is unable to retrieve
|
|
177
203
|
# telemetry data. It should be used exclusively by the telemetry publishers and their
|
|
178
204
|
# functions.
|
|
@@ -186,6 +212,29 @@ class RobotTelemetryException(RobotException):
|
|
|
186
212
|
pass
|
|
187
213
|
|
|
188
214
|
|
|
215
|
+
# An exception which should be thrown by the robot package if it is unable to retrieve
|
|
216
|
+
# telemetry pose data. It should be used exclusively by the telemetry pose publisher.
|
|
217
|
+
class RobotTelemetryPoseException(RobotException):
|
|
218
|
+
def __init__(self, error_description: str) -> None:
|
|
219
|
+
super().__init__(
|
|
220
|
+
error_reason=ErrorReason.RobotTelemetryPoseException,
|
|
221
|
+
error_description=error_description,
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
pass
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
# An exception which should be thrown by the robot package if there is no new telemetry update.
|
|
228
|
+
class RobotTelemetryNoUpdateException(RobotException):
|
|
229
|
+
def __init__(self, error_description: str) -> None:
|
|
230
|
+
super().__init__(
|
|
231
|
+
error_reason=ErrorReason.RobotTelemetryNoUpdateException,
|
|
232
|
+
error_description=error_description,
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
pass
|
|
236
|
+
|
|
237
|
+
|
|
189
238
|
# An exception which should be thrown by the robot package if it is unable to load the
|
|
190
239
|
# configuration for maps and transformations. This could be caused by faulty
|
|
191
240
|
# configuration and this exception will cause ISAR to crash as further execution is not
|
|
@@ -235,11 +284,12 @@ class RobotDisconnectedException(RobotException):
|
|
|
235
284
|
pass
|
|
236
285
|
|
|
237
286
|
|
|
238
|
-
# An exception which should be thrown by the robot package if the robot
|
|
239
|
-
|
|
287
|
+
# An exception which should be thrown by the robot package if the robot receives a command
|
|
288
|
+
# to go home and decide to ignore this request as it is already at home.
|
|
289
|
+
class RobotAlreadyHomeException(RobotException):
|
|
240
290
|
def __init__(self, error_description: str) -> None:
|
|
241
291
|
super().__init__(
|
|
242
|
-
error_reason=ErrorReason.
|
|
292
|
+
error_reason=ErrorReason.RobotAlreadyHomeException,
|
|
243
293
|
error_description=error_description,
|
|
244
294
|
)
|
|
245
295
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from .initialize_params import InitializeParams
|