isar 1.14.5__tar.gz → 1.15.0__tar.gz

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 (203) hide show
  1. {isar-1.14.5 → isar-1.15.0}/PKG-INFO +2 -2
  2. {isar-1.14.5 → isar-1.15.0}/README.md +1 -1
  3. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/schedule/scheduling_controller.py +9 -19
  4. {isar-1.14.5 → isar-1.15.0}/src/isar/models/communication/message.py +0 -2
  5. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +1 -0
  6. {isar-1.14.5 → isar-1.15.0}/src/isar/services/utilities/scheduling_utilities.py +0 -3
  7. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/state_machine.py +1 -6
  8. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/idle.py +0 -1
  9. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/monitor.py +4 -7
  10. {isar-1.14.5 → isar-1.15.0}/src/isar/storage/blob_storage.py +4 -4
  11. {isar-1.14.5 → isar-1.15.0}/src/isar/storage/local_storage.py +4 -4
  12. {isar-1.14.5 → isar-1.15.0}/src/isar/storage/slimm_storage.py +28 -28
  13. {isar-1.14.5 → isar-1.15.0}/src/isar/storage/storage_interface.py +4 -4
  14. {isar-1.14.5 → isar-1.15.0}/src/isar/storage/uploader.py +6 -6
  15. {isar-1.14.5 → isar-1.15.0}/src/isar/storage/utilities.py +21 -20
  16. {isar-1.14.5 → isar-1.15.0}/src/isar.egg-info/PKG-INFO +2 -2
  17. {isar-1.14.5 → isar-1.15.0}/src/isar.egg-info/SOURCES.txt +0 -1
  18. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/telemetry/mqtt_client.py +2 -4
  19. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/telemetry/payloads.py +1 -0
  20. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/readers/test_mission_reader.py +0 -6
  21. {isar-1.14.5 → isar-1.15.0}/tests/isar/state_machine/test_state_machine.py +12 -43
  22. {isar-1.14.5 → isar-1.15.0}/tests/isar/storage/test_uploader.py +7 -11
  23. {isar-1.14.5 → isar-1.15.0}/tests/mocks/blob_storage.py +2 -2
  24. isar-1.14.5/src/isar/models/mission_metadata/mission_metadata.py +0 -27
  25. {isar-1.14.5 → isar-1.15.0}/.dockerignore +0 -0
  26. {isar-1.14.5 → isar-1.15.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  27. {isar-1.14.5 → isar-1.15.0}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  28. {isar-1.14.5 → isar-1.15.0}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  29. {isar-1.14.5 → isar-1.15.0}/.github/release.yml +0 -0
  30. {isar-1.14.5 → isar-1.15.0}/.github/workflows/project_automations.yml +0 -0
  31. {isar-1.14.5 → isar-1.15.0}/.github/workflows/publish_isar_base_image.yml +0 -0
  32. {isar-1.14.5 → isar-1.15.0}/.github/workflows/pythonpackage.yml +0 -0
  33. {isar-1.14.5 → isar-1.15.0}/.github/workflows/pythonpublish.yml +0 -0
  34. {isar-1.14.5 → isar-1.15.0}/.github/workflows/repository_dispatch_on_merge.yml +0 -0
  35. {isar-1.14.5 → isar-1.15.0}/.github/workflows/stale.yml +0 -0
  36. {isar-1.14.5 → isar-1.15.0}/.gitignore +0 -0
  37. {isar-1.14.5 → isar-1.15.0}/.pre-commit-config.yaml +0 -0
  38. {isar-1.14.5 → isar-1.15.0}/Dockerfile +0 -0
  39. {isar-1.14.5 → isar-1.15.0}/LICENSE +0 -0
  40. {isar-1.14.5 → isar-1.15.0}/docker-compose-turtlebot.yml +0 -0
  41. {isar-1.14.5 → isar-1.15.0}/docker-compose.yml +0 -0
  42. {isar-1.14.5 → isar-1.15.0}/docs/Makefile +0 -0
  43. {isar-1.14.5 → isar-1.15.0}/docs/make.bat +0 -0
  44. {isar-1.14.5 → isar-1.15.0}/docs/rst_processing.py +0 -0
  45. {isar-1.14.5 → isar-1.15.0}/docs/source/conf.py +0 -0
  46. {isar-1.14.5 → isar-1.15.0}/docs/source/index.rst +0 -0
  47. {isar-1.14.5 → isar-1.15.0}/docs/source/readme_link.md +0 -0
  48. {isar-1.14.5 → isar-1.15.0}/docs/state_machine_diagram.png +0 -0
  49. {isar-1.14.5 → isar-1.15.0}/main.py +0 -0
  50. {isar-1.14.5 → isar-1.15.0}/pyproject.toml +0 -0
  51. {isar-1.14.5 → isar-1.15.0}/radixconfig.yml +0 -0
  52. {isar-1.14.5 → isar-1.15.0}/setup.cfg +0 -0
  53. {isar-1.14.5 → isar-1.15.0}/setup.py +0 -0
  54. {isar-1.14.5 → isar-1.15.0}/src/isar/__init__.py +0 -0
  55. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/__init__.py +0 -0
  56. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/api.py +0 -0
  57. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/models/__init__.py +0 -0
  58. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/models/models.py +0 -0
  59. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/models/start_mission_definition.py +0 -0
  60. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/schedule/__init__.py +0 -0
  61. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/security/__init__.py +0 -0
  62. {isar-1.14.5 → isar-1.15.0}/src/isar/apis/security/authentication.py +0 -0
  63. {isar-1.14.5 → isar-1.15.0}/src/isar/config/__init__.py +0 -0
  64. {isar-1.14.5 → isar-1.15.0}/src/isar/config/certs/ca-cert.pem +0 -0
  65. {isar-1.14.5 → isar-1.15.0}/src/isar/config/configuration_error.py +0 -0
  66. {isar-1.14.5 → isar-1.15.0}/src/isar/config/keyvault/__init__.py +0 -0
  67. {isar-1.14.5 → isar-1.15.0}/src/isar/config/keyvault/keyvault_error.py +0 -0
  68. {isar-1.14.5 → isar-1.15.0}/src/isar/config/keyvault/keyvault_service.py +0 -0
  69. {isar-1.14.5 → isar-1.15.0}/src/isar/config/log.py +0 -0
  70. {isar-1.14.5 → isar-1.15.0}/src/isar/config/logging.conf +0 -0
  71. {isar-1.14.5 → isar-1.15.0}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  72. {isar-1.14.5 → isar-1.15.0}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  73. {isar-1.14.5 → isar-1.15.0}/src/isar/config/maps/default_map.json +0 -0
  74. {isar-1.14.5 → isar-1.15.0}/src/isar/config/maps/klab_b.json +0 -0
  75. {isar-1.14.5 → isar-1.15.0}/src/isar/config/maps/klab_compressor.json +0 -0
  76. {isar-1.14.5 → isar-1.15.0}/src/isar/config/maps/klab_turtlebot.json +0 -0
  77. {isar-1.14.5 → isar-1.15.0}/src/isar/config/maps/turtleworld.json +0 -0
  78. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
  79. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
  80. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
  81. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_missions/__init__.py +0 -0
  82. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_missions/default.json +0 -0
  83. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
  84. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_poses/__init__.py +0 -0
  85. {isar-1.14.5 → isar-1.15.0}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
  86. {isar-1.14.5 → isar-1.15.0}/src/isar/config/settings.env +0 -0
  87. {isar-1.14.5 → isar-1.15.0}/src/isar/config/settings.py +0 -0
  88. {isar-1.14.5 → isar-1.15.0}/src/isar/mission_planner/__init__.py +0 -0
  89. {isar-1.14.5 → isar-1.15.0}/src/isar/mission_planner/local_planner.py +0 -0
  90. {isar-1.14.5 → isar-1.15.0}/src/isar/mission_planner/mission_planner_interface.py +0 -0
  91. {isar-1.14.5 → isar-1.15.0}/src/isar/mission_planner/sequential_task_selector.py +0 -0
  92. {isar-1.14.5 → isar-1.15.0}/src/isar/mission_planner/task_selector_interface.py +0 -0
  93. {isar-1.14.5 → isar-1.15.0}/src/isar/models/__init__.py +0 -0
  94. {isar-1.14.5 → isar-1.15.0}/src/isar/models/communication/__init__.py +0 -0
  95. {isar-1.14.5 → isar-1.15.0}/src/isar/models/communication/queues/__init__.py +0 -0
  96. {isar-1.14.5 → isar-1.15.0}/src/isar/models/communication/queues/queue_io.py +0 -0
  97. {isar-1.14.5 → isar-1.15.0}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
  98. {isar-1.14.5 → isar-1.15.0}/src/isar/models/communication/queues/queues.py +0 -0
  99. {isar-1.14.5 → isar-1.15.0}/src/isar/models/communication/queues/status_queue.py +0 -0
  100. {isar-1.14.5 → isar-1.15.0}/src/isar/models/mission_metadata/__init__.py +0 -0
  101. {isar-1.14.5 → isar-1.15.0}/src/isar/modules.py +0 -0
  102. {isar-1.14.5 → isar-1.15.0}/src/isar/services/__init__.py +0 -0
  103. {isar-1.14.5 → isar-1.15.0}/src/isar/services/auth/__init__.py +0 -0
  104. {isar-1.14.5 → isar-1.15.0}/src/isar/services/auth/azure_credentials.py +0 -0
  105. {isar-1.14.5 → isar-1.15.0}/src/isar/services/readers/__init__.py +0 -0
  106. {isar-1.14.5 → isar-1.15.0}/src/isar/services/readers/base_reader.py +0 -0
  107. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/__init__.py +0 -0
  108. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
  109. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
  110. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/mqtt/robot_status_publisher.py +0 -0
  111. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/request_handler.py +0 -0
  112. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/stid/__init__.py +0 -0
  113. {isar-1.14.5 → isar-1.15.0}/src/isar/services/service_connections/stid/stid_service.py +0 -0
  114. {isar-1.14.5 → isar-1.15.0}/src/isar/services/utilities/__init__.py +0 -0
  115. {isar-1.14.5 → isar-1.15.0}/src/isar/services/utilities/queue_utilities.py +0 -0
  116. {isar-1.14.5 → isar-1.15.0}/src/isar/services/utilities/threaded_request.py +0 -0
  117. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/__init__.py +0 -0
  118. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/__init__.py +0 -0
  119. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/initialize.py +0 -0
  120. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/initiate.py +0 -0
  121. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/off.py +0 -0
  122. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/paused.py +0 -0
  123. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states/stop.py +0 -0
  124. {isar-1.14.5 → isar-1.15.0}/src/isar/state_machine/states_enum.py +0 -0
  125. {isar-1.14.5 → isar-1.15.0}/src/isar/storage/__init__.py +0 -0
  126. {isar-1.14.5 → isar-1.15.0}/src/isar.egg-info/dependency_links.txt +0 -0
  127. {isar-1.14.5 → isar-1.15.0}/src/isar.egg-info/requires.txt +0 -0
  128. {isar-1.14.5 → isar-1.15.0}/src/isar.egg-info/top_level.txt +0 -0
  129. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/__init__.py +0 -0
  130. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/__init__.py +0 -0
  131. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/exceptions/__init__.py +0 -0
  132. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
  133. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/initialize/__init__.py +0 -0
  134. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/initialize/initialize_params.py +0 -0
  135. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/inspection/__init__.py +0 -0
  136. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/inspection/inspection.py +0 -0
  137. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/mission/__init__.py +0 -0
  138. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/mission/mission.py +0 -0
  139. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/mission/status.py +0 -0
  140. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/mission/step.py +0 -0
  141. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/mission/task.py +0 -0
  142. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/robots/__init__.py +0 -0
  143. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/models/robots/robot_model.py +0 -0
  144. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/robot_interface.py +0 -0
  145. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/telemetry/__init__.py +0 -0
  146. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/test_robot_interface.py +0 -0
  147. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/utilities/__init__.py +0 -0
  148. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/utilities/json_service.py +0 -0
  149. {isar-1.14.5 → isar-1.15.0}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
  150. {isar-1.14.5 → isar-1.15.0}/tests/__init__.py +0 -0
  151. {isar-1.14.5 → isar-1.15.0}/tests/conftest.py +0 -0
  152. {isar-1.14.5 → isar-1.15.0}/tests/integration/__init__.py +0 -0
  153. {isar-1.14.5 → isar-1.15.0}/tests/integration/turtlebot/__init__.py +0 -0
  154. {isar-1.14.5 → isar-1.15.0}/tests/integration/turtlebot/config/__init__.py +0 -0
  155. {isar-1.14.5 → isar-1.15.0}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
  156. {isar-1.14.5 → isar-1.15.0}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
  157. {isar-1.14.5 → isar-1.15.0}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
  158. {isar-1.14.5 → isar-1.15.0}/tests/integration/turtlebot/config/missions/default.json +0 -0
  159. {isar-1.14.5 → isar-1.15.0}/tests/integration/turtlebot/test_successful_mission.py +0 -0
  160. {isar-1.14.5 → isar-1.15.0}/tests/isar/__init__.py +0 -0
  161. {isar-1.14.5 → isar-1.15.0}/tests/isar/apis/__init__.py +0 -0
  162. {isar-1.14.5 → isar-1.15.0}/tests/isar/apis/scheduler/__init__.py +0 -0
  163. {isar-1.14.5 → isar-1.15.0}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
  164. {isar-1.14.5 → isar-1.15.0}/tests/isar/apis/security/__init__.py +0 -0
  165. {isar-1.14.5 → isar-1.15.0}/tests/isar/apis/security/test_authentication.py +0 -0
  166. {isar-1.14.5 → isar-1.15.0}/tests/isar/mission/__init__.py +0 -0
  167. {isar-1.14.5 → isar-1.15.0}/tests/isar/mission/test_mission.py +0 -0
  168. {isar-1.14.5 → isar-1.15.0}/tests/isar/models/__init__.py +0 -0
  169. {isar-1.14.5 → isar-1.15.0}/tests/isar/models/communication/__init__.py +0 -0
  170. {isar-1.14.5 → isar-1.15.0}/tests/isar/models/communication/test_queues.py +0 -0
  171. {isar-1.14.5 → isar-1.15.0}/tests/isar/models/test_start_mission_definition.py +0 -0
  172. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/__init__.py +0 -0
  173. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/readers/__init__.py +0 -0
  174. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/readers/test_base_reader.py +0 -0
  175. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/service_connections/__init__.py +0 -0
  176. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/service_connections/echo/__init__.py +0 -0
  177. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/service_connections/stid/__init__.py +0 -0
  178. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/service_connections/stid/test_stid_service.py +0 -0
  179. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  180. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/utilities/__init__.py +0 -0
  181. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
  182. {isar-1.14.5 → isar-1.15.0}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
  183. {isar-1.14.5 → isar-1.15.0}/tests/isar/state_machine/__init__.py +0 -0
  184. {isar-1.14.5 → isar-1.15.0}/tests/isar/state_machine/states/__init__.py +0 -0
  185. {isar-1.14.5 → isar-1.15.0}/tests/isar/state_machine/states/test_monitor.py +0 -0
  186. {isar-1.14.5 → isar-1.15.0}/tests/isar/storage/test_blob_storage.py +0 -0
  187. {isar-1.14.5 → isar-1.15.0}/tests/mocks/__init__.py +0 -0
  188. {isar-1.14.5 → isar-1.15.0}/tests/mocks/mission_definition.py +0 -0
  189. {isar-1.14.5 → isar-1.15.0}/tests/mocks/mqtt_client.py +0 -0
  190. {isar-1.14.5 → isar-1.15.0}/tests/mocks/pose.py +0 -0
  191. {isar-1.14.5 → isar-1.15.0}/tests/mocks/request.py +0 -0
  192. {isar-1.14.5 → isar-1.15.0}/tests/mocks/robot_interface.py +0 -0
  193. {isar-1.14.5 → isar-1.15.0}/tests/mocks/status.py +0 -0
  194. {isar-1.14.5 → isar-1.15.0}/tests/mocks/step.py +0 -0
  195. {isar-1.14.5 → isar-1.15.0}/tests/mocks/task.py +0 -0
  196. {isar-1.14.5 → isar-1.15.0}/tests/mocks/token.py +0 -0
  197. {isar-1.14.5 → isar-1.15.0}/tests/test_data/test_json_file.json +0 -0
  198. {isar-1.14.5 → isar-1.15.0}/tests/test_data/test_map_config/test_map_config.json +0 -0
  199. {isar-1.14.5 → isar-1.15.0}/tests/test_data/test_mission_not_working.json +0 -0
  200. {isar-1.14.5 → isar-1.15.0}/tests/test_data/test_mission_working.json +0 -0
  201. {isar-1.14.5 → isar-1.15.0}/tests/test_data/test_mission_working_no_tasks.json +0 -0
  202. {isar-1.14.5 → isar-1.15.0}/tests/test_data/test_thermal_image_mission.json +0 -0
  203. {isar-1.14.5 → isar-1.15.0}/tests/test_modules.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.14.5
3
+ Version: 1.15.0
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Home-page: https://github.com/equinor/isar
6
6
  Author: Equinor ASA
@@ -41,7 +41,7 @@ Steps:
41
41
  For local development, please fork the repository. Then, clone and install in the repository root folder:
42
42
 
43
43
  ```
44
- git clone https://github.com/equinor/isar
44
+ git clone https://github.com/<path_to_parent>/isar
45
45
  cd isar
46
46
  pip install -e .[dev]
47
47
  ```
@@ -22,7 +22,7 @@ Steps:
22
22
  For local development, please fork the repository. Then, clone and install in the repository root folder:
23
23
 
24
24
  ```
25
- git clone https://github.com/equinor/isar
25
+ git clone https://github.com/<path_to_parent>/isar
26
26
  cd isar
27
27
  pip install -e .[dev]
28
28
  ```
@@ -18,7 +18,6 @@ from isar.apis.models.start_mission_definition import (
18
18
  )
19
19
  from isar.config.settings import robot_settings, settings
20
20
  from isar.mission_planner.mission_planner_interface import MissionPlannerError
21
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
22
21
  from isar.services.utilities.scheduling_utilities import SchedulingUtilities
23
22
  from isar.state_machine.states_enum import States
24
23
  from robot_interface.models.mission.mission import Mission
@@ -76,12 +75,11 @@ class SchedulingController:
76
75
  )
77
76
 
78
77
  self.logger.info(f"Starting mission with ISAR Mission ID: '{mission.id}'")
79
- metadata: MissionMetadata = MissionMetadata(
80
- mission_id=mission.id, mission_name=mission.name
81
- )
78
+
82
79
  self.scheduling_utilities.start_mission(
83
- mission=mission, initial_pose=initial_pose_alitra, mission_metadata=metadata
80
+ mission=mission, initial_pose=initial_pose_alitra
84
81
  )
82
+
85
83
  return self._api_response(mission)
86
84
 
87
85
  def start_mission(
@@ -141,12 +139,9 @@ class SchedulingController:
141
139
  initial_pose.to_alitra_pose() if initial_pose else None
142
140
  )
143
141
 
144
- metadata: MissionMetadata = MissionMetadata(
145
- mission_id=mission.id, mission_name=mission.name
146
- )
147
142
  self.logger.info(f"Starting mission: {mission.id}")
148
143
  self.scheduling_utilities.start_mission(
149
- mission=mission, mission_metadata=metadata, initial_pose=initial_pose_alitra
144
+ mission=mission, initial_pose=initial_pose_alitra
150
145
  )
151
146
  return self._api_response(mission)
152
147
 
@@ -224,15 +219,11 @@ class SchedulingController:
224
219
  pose: Pose = target_pose.to_alitra_pose()
225
220
  step: DriveToPose = DriveToPose(pose=pose)
226
221
  mission: Mission = Mission(tasks=[Task(steps=[step])])
227
- metadata: MissionMetadata = MissionMetadata(
228
- mission_id=mission.id, mission_name=mission.name
229
- )
222
+
230
223
  self.logger.info(
231
224
  f"Starting drive to mission with ISAR Mission ID: '{mission.id}'"
232
225
  )
233
- self.scheduling_utilities.start_mission(
234
- mission=mission, initial_pose=None, mission_metadata=metadata
235
- )
226
+ self.scheduling_utilities.start_mission(mission=mission, initial_pose=None)
236
227
  return self._api_response(mission)
237
228
 
238
229
  def start_localization_mission(
@@ -253,14 +244,13 @@ class SchedulingController:
253
244
  pose: Pose = localization_pose.to_alitra_pose()
254
245
  step: Localize = Localize(localization_pose=pose)
255
246
  mission: Mission = Mission(tasks=[Task(steps=[step])])
256
- metadata: MissionMetadata = MissionMetadata(
257
- mission_id=mission.id, mission_name=mission.name
258
- )
247
+
259
248
  self.logger.info(
260
249
  f"Starting localization mission with ISAR Mission ID: '{mission.id}'"
261
250
  )
262
251
  self.scheduling_utilities.start_mission(
263
- mission=mission, initial_pose=None, mission_metadata=metadata
252
+ mission=mission,
253
+ initial_pose=None,
264
254
  )
265
255
  return self._api_response(mission)
266
256
 
@@ -3,12 +3,10 @@ from typing import Optional
3
3
 
4
4
  from alitra import Pose
5
5
 
6
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
7
6
  from robot_interface.models.mission.mission import Mission
8
7
 
9
8
 
10
9
  @dataclass
11
10
  class StartMissionMessage:
12
11
  mission: Mission
13
- mission_metadata: MissionMetadata
14
12
  initial_pose: Optional[Pose]
@@ -20,6 +20,7 @@ class RobotInfoPublisher:
20
20
  robot_name=settings.ROBOT_NAME,
21
21
  robot_model=robot_settings.ROBOT_MODEL, # type: ignore
22
22
  robot_serial_number=settings.SERIAL_NUMBER,
23
+ robot_asset=settings.PLANT_SHORT_NAME,
23
24
  video_streams=settings.VIDEO_STREAMS,
24
25
  host=settings.API_HOST_VIEWED_EXTERNALLY,
25
26
  port=settings.API_PORT,
@@ -18,7 +18,6 @@ from isar.mission_planner.mission_planner_interface import (
18
18
  )
19
19
  from isar.models.communication.message import StartMissionMessage
20
20
  from isar.models.communication.queues import QueueIO, Queues, QueueTimeoutError
21
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
22
21
  from isar.services.utilities.queue_utilities import QueueUtilities
23
22
  from isar.state_machine.states_enum import States
24
23
  from robot_interface.models.mission.mission import Mission
@@ -139,7 +138,6 @@ class SchedulingUtilities:
139
138
  def start_mission(
140
139
  self,
141
140
  mission: Mission,
142
- mission_metadata: MissionMetadata,
143
141
  initial_pose: Optional[Pose],
144
142
  ) -> None:
145
143
  """Start mission
@@ -153,7 +151,6 @@ class SchedulingUtilities:
153
151
  self._send_command(
154
152
  StartMissionMessage(
155
153
  mission=deepcopy(mission),
156
- mission_metadata=deepcopy(mission_metadata),
157
154
  initial_pose=initial_pose,
158
155
  ),
159
156
  self.queues.start_mission,
@@ -19,7 +19,6 @@ from isar.mission_planner.task_selector_interface import (
19
19
  )
20
20
  from isar.models.communication.message import StartMissionMessage
21
21
  from isar.models.communication.queues.queues import Queues
22
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
23
22
  from isar.state_machine.states import (
24
23
  Idle,
25
24
  Initialize,
@@ -203,7 +202,6 @@ class StateMachine(object):
203
202
 
204
203
  self.stopped: bool = False
205
204
  self.current_mission: Optional[Mission] = None
206
- self.current_mission_metadata: Optional[MissionMetadata] = None
207
205
  self.current_task: Optional[Task] = None
208
206
  self.current_step: Optional[Step] = None
209
207
  self.initial_pose: Optional[Pose] = None
@@ -436,12 +434,9 @@ class StateMachine(object):
436
434
  self.current_mission = None
437
435
  self.initial_pose = None
438
436
 
439
- def start_mission(
440
- self, mission: Mission, mission_metadata: MissionMetadata, initial_pose: Pose
441
- ):
437
+ def start_mission(self, mission: Mission, initial_pose: Pose):
442
438
  """Starts a scheduled mission."""
443
439
  self.current_mission = mission
444
- self.current_mission_metadata = mission_metadata
445
440
  self.initial_pose = initial_pose
446
441
 
447
442
  self.task_selector.initialize(tasks=self.current_mission.tasks)
@@ -31,7 +31,6 @@ class Idle(State):
31
31
  if start_mission:
32
32
  self.state_machine.start_mission(
33
33
  mission=start_mission.mission,
34
- mission_metadata=start_mission.mission_metadata,
35
34
  initial_pose=start_mission.initial_pose,
36
35
  )
37
36
  transition = self.state_machine.mission_started # type: ignore
@@ -6,7 +6,6 @@ from typing import Callable, Optional, Sequence, TYPE_CHECKING, Tuple, Union
6
6
  from injector import inject
7
7
  from transitions import State
8
8
 
9
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
10
9
  from isar.services.utilities.threaded_request import (
11
10
  ThreadedRequest,
12
11
  ThreadedRequestNotFinishedError,
@@ -129,18 +128,16 @@ class Monitor(State):
129
128
  f"No inspection data retrieved for step {str(current_step.id)[:8]}"
130
129
  )
131
130
 
132
- # A deepcopy is made to freeze the metadata before passing it to another thread
131
+ # A deepcopy is made to freeze the mission before passing it to another thread
133
132
  # through the queue
134
- mission_metadata: MissionMetadata = deepcopy(
135
- self.state_machine.current_mission_metadata
136
- )
133
+ mission: Mission = deepcopy(self.state_machine.current_mission)
137
134
 
138
135
  for inspection in inspections:
139
136
  inspection.metadata.tag_id = current_step.tag_id
140
137
 
141
- message: Tuple[Inspection, MissionMetadata] = (
138
+ message: Tuple[Inspection, Mission] = (
142
139
  inspection,
143
- mission_metadata,
140
+ mission,
144
141
  )
145
142
  self.state_machine.queues.upload_queue.put(message)
146
143
  self.logger.info(f"Inspection: {str(inspection.id)[:8]} queued for upload")
@@ -7,7 +7,7 @@ from injector import inject
7
7
 
8
8
  from isar.config.keyvault.keyvault_service import Keyvault
9
9
  from isar.config.settings import settings
10
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
10
+ from robot_interface.models.mission.mission import Mission
11
11
  from isar.storage.storage_interface import StorageException, StorageInterface
12
12
  from isar.storage.utilities import construct_metadata_file, construct_paths
13
13
  from robot_interface.models.inspection.inspection import Inspection
@@ -31,13 +31,13 @@ class BlobStorage(StorageInterface):
31
31
 
32
32
  self.logger = logging.getLogger("uploader")
33
33
 
34
- def store(self, inspection: Inspection, metadata: MissionMetadata) -> str:
34
+ def store(self, inspection: Inspection, mission: Mission) -> str:
35
35
  data_path, metadata_path = construct_paths(
36
- inspection=inspection, metadata=metadata
36
+ inspection=inspection, mission=mission
37
37
  )
38
38
 
39
39
  metadata_bytes: bytes = construct_metadata_file(
40
- inspection=inspection, metadata=metadata, filename=data_path.name
40
+ inspection=inspection, mission=mission, filename=data_path.name
41
41
  )
42
42
 
43
43
  self._upload_file(path=metadata_path, data=metadata_bytes)
@@ -2,7 +2,7 @@ import logging
2
2
  from pathlib import Path
3
3
 
4
4
  from isar.config.settings import settings
5
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
5
+ from robot_interface.models.mission.mission import Mission
6
6
  from isar.storage.storage_interface import StorageException, StorageInterface
7
7
  from isar.storage.utilities import construct_metadata_file, construct_paths
8
8
  from robot_interface.models.inspection.inspection import Inspection
@@ -13,9 +13,9 @@ class LocalStorage(StorageInterface):
13
13
  self.root_folder: Path = Path(settings.LOCAL_STORAGE_PATH)
14
14
  self.logger = logging.getLogger("uploader")
15
15
 
16
- def store(self, inspection: Inspection, metadata: MissionMetadata) -> str:
16
+ def store(self, inspection: Inspection, mission: Mission) -> str:
17
17
  local_path, local_metadata_path = construct_paths(
18
- inspection=inspection, metadata=metadata
18
+ inspection=inspection, mission=mission
19
19
  )
20
20
 
21
21
  absolute_path: Path = self.root_folder.joinpath(local_path)
@@ -24,7 +24,7 @@ class LocalStorage(StorageInterface):
24
24
  absolute_path.parent.mkdir(parents=True, exist_ok=True)
25
25
 
26
26
  metadata_bytes: bytes = construct_metadata_file(
27
- inspection=inspection, metadata=metadata, filename=local_path.name
27
+ inspection=inspection, mission=mission, filename=local_path.name
28
28
  )
29
29
  try:
30
30
  with open(absolute_path, "wb") as file, open(
@@ -7,7 +7,7 @@ from requests import HTTPError, RequestException
7
7
  from requests_toolbelt import MultipartEncoder
8
8
 
9
9
  from isar.config.settings import settings
10
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
10
+ from robot_interface.models.mission.mission import Mission
11
11
  from isar.services.auth.azure_credentials import AzureCredentials
12
12
  from isar.services.service_connections.request_handler import RequestHandler
13
13
  from isar.storage.storage_interface import StorageException, StorageInterface
@@ -31,22 +31,22 @@ class SlimmStorage(StorageInterface):
31
31
 
32
32
  self.url: str = settings.SLIMM_API_URL
33
33
 
34
- def store(self, inspection: Inspection, metadata: MissionMetadata) -> str:
34
+ def store(self, inspection: Inspection, mission: Mission) -> str:
35
35
  filename: str = get_filename(
36
36
  inspection=inspection,
37
37
  )
38
38
  filename = f"{filename}.{inspection.metadata.file_type}"
39
39
  if type(inspection) in [Video, ThermalVideo]:
40
- inspection_path = self._store_video(filename, inspection, metadata)
40
+ inspection_path = self._store_video(filename, inspection, mission)
41
41
  else:
42
- inspection_path = self._store_image(filename, inspection, metadata)
42
+ inspection_path = self._store_image(filename, inspection, mission)
43
43
  return inspection_path
44
44
 
45
45
  def _store_image(
46
- self, filename: str, inspection: Inspection, metadata: MissionMetadata
46
+ self, filename: str, inspection: Inspection, mission: Mission
47
47
  ) -> str:
48
48
  multiform_body: MultipartEncoder = self._construct_multiform_request_image(
49
- filename=filename, inspection=inspection, metadata=metadata
49
+ filename=filename, inspection=inspection, mission=mission
50
50
  )
51
51
  request_url: str = f"{self.url}/UploadSingleImage"
52
52
  inspection_path = self._ingest(
@@ -57,10 +57,10 @@ class SlimmStorage(StorageInterface):
57
57
  return inspection_path
58
58
 
59
59
  def _store_video(
60
- self, filename: str, inspection: Inspection, metadata: MissionMetadata
60
+ self, filename: str, inspection: Inspection, mission: Mission
61
61
  ) -> str:
62
62
  multiform_body: MultipartEncoder = self._construct_multiform_request_video(
63
- filename=filename, inspection=inspection, metadata=metadata
63
+ filename=filename, inspection=inspection, mission=mission
64
64
  )
65
65
  request_url = f"{self.url}/UploadSingleVideo"
66
66
  inspection_path = self._ingest(
@@ -96,23 +96,23 @@ class SlimmStorage(StorageInterface):
96
96
 
97
97
  @staticmethod
98
98
  def _construct_multiform_request_image(
99
- filename: str, inspection: Inspection, metadata: MissionMetadata
99
+ filename: str, inspection: Inspection, mission: Mission
100
100
  ):
101
101
  array_of_orientation = (
102
102
  inspection.metadata.pose.orientation.to_quat_array().tolist()
103
103
  )
104
104
  multiform_body: MultipartEncoder = MultipartEncoder(
105
105
  fields={
106
- "PlantFacilitySAPCode": metadata.plant_code,
107
- "InstCode": metadata.plant_short_name,
108
- "InternalClassification": metadata.data_classification,
106
+ "PlantFacilitySAPCode": settings.PLANT_CODE,
107
+ "InstCode": settings.PLANT_SHORT_NAME,
108
+ "InternalClassification": settings.DATA_CLASSIFICATION,
109
109
  "IsoCountryCode": "NO",
110
- "Geodetic.CoordinateReferenceSystemCode": metadata.coordinate_reference_system, # noqa: E501
111
- "Geodetic.VerticalCoordinateReferenceSystemCode": metadata.vertical_reference_system, # noqa: E501
112
- "Geodetic.OrientationReferenceSystem": metadata.media_orientation_reference_system, # noqa: E501
113
- "SensorCarrier.SensorCarrierId": metadata.isar_id,
114
- "SensorCarrier.ModelName": metadata.robot_model,
115
- "Mission.MissionId": metadata.mission_id,
110
+ "Geodetic.CoordinateReferenceSystemCode": settings.COORDINATE_REFERENCE_SYSTEM, # noqa: E501
111
+ "Geodetic.VerticalCoordinateReferenceSystemCode": settings.VERTICAL_REFERENCE_SYSTEM, # noqa: E501
112
+ "Geodetic.OrientationReferenceSystem": settings.MEDIA_ORIENTATION_REFERENCE_SYSTEM, # noqa: E501
113
+ "SensorCarrier.SensorCarrierId": settings.ISAR_ID,
114
+ "SensorCarrier.ModelName": settings.ROBOT_TYPE,
115
+ "Mission.MissionId": mission.id,
116
116
  "Mission.Client": "Equinor",
117
117
  "ImageMetadata.Timestamp": inspection.metadata.start_time.isoformat(), # noqa: E501
118
118
  "ImageMetadata.X": str(inspection.metadata.pose.position.x),
@@ -139,23 +139,23 @@ class SlimmStorage(StorageInterface):
139
139
  def _construct_multiform_request_video(
140
140
  filename: str,
141
141
  inspection: Inspection,
142
- metadata: MissionMetadata,
142
+ mission: Mission,
143
143
  ):
144
144
  array_of_orientation = (
145
145
  inspection.metadata.pose.orientation.to_quat_array().tolist()
146
146
  )
147
147
  multiform_body: MultipartEncoder = MultipartEncoder(
148
148
  fields={
149
- "PlantFacilitySAPCode": metadata.plant_code,
150
- "InstCode": metadata.plant_short_name,
151
- "InternalClassification": metadata.data_classification,
149
+ "PlantFacilitySAPCode": settings.PLANT_CODE,
150
+ "InstCode": settings.PLANT_SHORT_NAME,
151
+ "InternalClassification": settings.DATA_CLASSIFICATION,
152
152
  "IsoCountryCode": "NO",
153
- "Geodetic.CoordinateReferenceSystemCode": metadata.coordinate_reference_system, # noqa: E501
154
- "Geodetic.VerticalCoordinateReferenceSystemCode": metadata.vertical_reference_system, # noqa: E501
155
- "Geodetic.OrientationReferenceSystem": metadata.media_orientation_reference_system, # noqa: E501
156
- "SensorCarrier.SensorCarrierId": metadata.isar_id,
157
- "SensorCarrier.ModelName": metadata.robot_model,
158
- "Mission.MissionId": metadata.mission_id,
153
+ "Geodetic.CoordinateReferenceSystemCode": settings.COORDINATE_REFERENCE_SYSTEM, # noqa: E501
154
+ "Geodetic.VerticalCoordinateReferenceSystemCode": settings.VERTICAL_REFERENCE_SYSTEM, # noqa: E501
155
+ "Geodetic.OrientationReferenceSystem": settings.MEDIA_ORIENTATION_REFERENCE_SYSTEM, # noqa: E501
156
+ "SensorCarrier.SensorCarrierId": settings.ISAR_ID,
157
+ "SensorCarrier.ModelName": settings.ROBOT_TYPE,
158
+ "Mission.MissionId": mission.id,
159
159
  "Mission.Client": "Equinor",
160
160
  "VideoMetadata.Timestamp": inspection.metadata.start_time.isoformat(), # noqa: E501
161
161
  # Converting to int because SLIMM expects an int, while we use floats in operations.
@@ -1,17 +1,17 @@
1
1
  from abc import ABCMeta, abstractmethod
2
2
 
3
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
3
+ from robot_interface.models.mission.mission import Mission
4
4
  from robot_interface.models.inspection.inspection import Inspection
5
5
 
6
6
 
7
7
  class StorageInterface(metaclass=ABCMeta):
8
8
  @abstractmethod
9
- def store(self, inspection: Inspection, metadata: MissionMetadata) -> str:
9
+ def store(self, inspection: Inspection, mission: Mission) -> str:
10
10
  """
11
11
  Parameters
12
12
  ----------
13
- metadata : MissionMetadata
14
- Metadata for the mission the inspection is a part of.
13
+ mission : Mission
14
+ Mission the inspection is a part of.
15
15
  inspection : Inspection
16
16
  The inspection object to be stored.
17
17
 
@@ -9,7 +9,7 @@ from injector import inject
9
9
 
10
10
  from isar.config.settings import settings
11
11
  from isar.models.communication.queues import Queues
12
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
12
+ from robot_interface.models.mission.mission import Mission
13
13
  from isar.storage.storage_interface import StorageException, StorageInterface
14
14
  from robot_interface.models.inspection.inspection import Inspection
15
15
  from robot_interface.telemetry.mqtt_client import MqttClientInterface
@@ -19,7 +19,7 @@ from robot_interface.utilities.json_service import EnhancedJSONEncoder
19
19
  @dataclass
20
20
  class UploaderQueueItem:
21
21
  inspection: Inspection
22
- mission_metadata: MissionMetadata
22
+ mission: Mission
23
23
  storage_handler: StorageInterface
24
24
  _retry_count: int
25
25
  _next_retry_time: datetime = datetime.utcnow()
@@ -78,17 +78,17 @@ class Uploader:
78
78
  self.logger.info("Started uploader")
79
79
  while True:
80
80
  inspection: Inspection
81
- mission_metadata: MissionMetadata
81
+ mission: Mission
82
82
  try:
83
83
  if self._internal_upload_queue:
84
84
  self._process_upload_queue()
85
85
 
86
- inspection, mission_metadata = self.upload_queue.get(timeout=1)
86
+ inspection, mission = self.upload_queue.get(timeout=1)
87
87
 
88
88
  # If new item from thread queue, add one per handler to internal queue:
89
89
  for storage_handler in self.storage_handlers:
90
90
  new_item: UploaderQueueItem = UploaderQueueItem(
91
- inspection, mission_metadata, storage_handler, _retry_count=-1
91
+ inspection, mission, storage_handler, _retry_count=-1
92
92
  )
93
93
  self._internal_upload_queue.append(new_item)
94
94
  except Empty:
@@ -98,7 +98,7 @@ class Uploader:
98
98
  inspection_path = ""
99
99
  try:
100
100
  inspection_path = upload_item.storage_handler.store(
101
- inspection=upload_item.inspection, metadata=upload_item.mission_metadata
101
+ inspection=upload_item.inspection, mission=upload_item.mission
102
102
  )
103
103
  self.logger.info(
104
104
  f"Storage handler: {type(upload_item.storage_handler).__name__} "
@@ -3,15 +3,16 @@ import time
3
3
  from pathlib import Path
4
4
  from typing import Tuple
5
5
 
6
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
6
+ from robot_interface.models.mission.mission import Mission
7
7
  from robot_interface.models.inspection.inspection import Inspection
8
8
  from robot_interface.utilities.json_service import EnhancedJSONEncoder
9
9
 
10
+ from isar.config.settings import settings
11
+ from datetime import date, datetime
10
12
 
11
- def construct_paths(
12
- inspection: Inspection, metadata: MissionMetadata
13
- ) -> Tuple[Path, Path]:
14
- folder: Path = Path(get_foldername(metadata=metadata))
13
+
14
+ def construct_paths(inspection: Inspection, mission: Mission) -> Tuple[Path, Path]:
15
+ folder: Path = Path(get_foldername(mission=mission))
15
16
  filename: str = get_filename(inspection=inspection)
16
17
 
17
18
  inspection_path: Path = folder.joinpath(
@@ -24,26 +25,26 @@ def construct_paths(
24
25
 
25
26
 
26
27
  def construct_metadata_file(
27
- inspection: Inspection, metadata: MissionMetadata, filename: str
28
+ inspection: Inspection, mission: Mission, filename: str
28
29
  ) -> bytes:
29
30
  data: dict = {
30
- "coordinate_reference_system": metadata.coordinate_reference_system,
31
- "vertical_reference_system": metadata.vertical_reference_system,
32
- "data_classification": metadata.data_classification,
31
+ "coordinate_reference_system": settings.COORDINATE_REFERENCE_SYSTEM,
32
+ "vertical_reference_system": settings.VERTICAL_REFERENCE_SYSTEM,
33
+ "data_classification": settings.DATA_CLASSIFICATION,
33
34
  "source_url": None,
34
- "plant_code": metadata.plant_code,
35
- "media_orientation_reference_system": metadata.media_orientation_reference_system, # noqa: E501
35
+ "plant_code": settings.PLANT_CODE,
36
+ "media_orientation_reference_system": settings.MEDIA_ORIENTATION_REFERENCE_SYSTEM, # noqa: E501
36
37
  "additional_meta": {
37
- "mission_id": metadata.mission_id,
38
- "mission_name": metadata.mission_name,
39
- "plant_name": metadata.plant_name,
40
- "mission_date": metadata.mission_date,
41
- "isar_id": metadata.isar_id,
42
- "robot_name": metadata.robot_name,
38
+ "mission_id": mission.id,
39
+ "mission_name": mission.name,
40
+ "plant_name": settings.PLANT_NAME,
41
+ "mission_date": datetime.utcnow().date(),
42
+ "isar_id": settings.ISAR_ID,
43
+ "robot_name": settings.ROBOT_NAME,
43
44
  },
44
45
  "data": [
45
46
  {
46
- "folder": f"/{get_foldername(metadata=metadata)}",
47
+ "folder": f"/{get_foldername(mission=mission)}",
47
48
  "files": [
48
49
  {
49
50
  "file_name": filename,
@@ -73,5 +74,5 @@ def get_filename(
73
74
  return f"{tag}__{inspection_type}__{epoch_time}"
74
75
 
75
76
 
76
- def get_foldername(metadata: MissionMetadata) -> str:
77
- return f"{metadata.mission_date}__{metadata.plant_short_name}__{metadata.mission_name}__{metadata.mission_id}"
77
+ def get_foldername(mission: Mission) -> str:
78
+ return f"{datetime.utcnow().date()}__{settings.PLANT_SHORT_NAME}__{mission.name}__{mission.id}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.14.5
3
+ Version: 1.15.0
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Home-page: https://github.com/equinor/isar
6
6
  Author: Equinor ASA
@@ -41,7 +41,7 @@ Steps:
41
41
  For local development, please fork the repository. Then, clone and install in the repository root folder:
42
42
 
43
43
  ```
44
- git clone https://github.com/equinor/isar
44
+ git clone https://github.com/<path_to_parent>/isar
45
45
  cd isar
46
46
  pip install -e .[dev]
47
47
  ```
@@ -83,7 +83,6 @@ src/isar/models/communication/queues/queue_timeout_error.py
83
83
  src/isar/models/communication/queues/queues.py
84
84
  src/isar/models/communication/queues/status_queue.py
85
85
  src/isar/models/mission_metadata/__init__.py
86
- src/isar/models/mission_metadata/mission_metadata.py
87
86
  src/isar/services/__init__.py
88
87
  src/isar/services/auth/__init__.py
89
88
  src/isar/services/auth/azure_credentials.py
@@ -3,9 +3,7 @@ from abc import ABCMeta, abstractmethod
3
3
  from queue import Queue
4
4
  from typing import Callable, Tuple
5
5
 
6
- from robot_interface.models.exceptions.robot_exceptions import (
7
- RobotInvalidTelemetryException,
8
- )
6
+ from robot_interface.models.exceptions import RobotException
9
7
 
10
8
 
11
9
  class MqttClientInterface(metaclass=ABCMeta):
@@ -66,7 +64,7 @@ class MqttTelemetryPublisher(MqttClientInterface):
66
64
  payload: str = self.telemetry_method(
67
65
  isar_id=isar_id, robot_name=robot_name
68
66
  )
69
- except RobotInvalidTelemetryException:
67
+ except RobotException:
70
68
  continue
71
69
 
72
70
  self.publish(
@@ -55,6 +55,7 @@ class RobotInfoPayload:
55
55
  robot_name: str
56
56
  robot_model: str
57
57
  robot_serial_number: str
58
+ robot_asset: str
58
59
  video_streams: List[VideoStream]
59
60
  host: str
60
61
  port: int
@@ -5,7 +5,6 @@ from alitra import Frame, Orientation, Pose, Position
5
5
 
6
6
  from isar.config.settings import settings
7
7
  from isar.mission_planner.mission_planner_interface import MissionNotFoundError
8
- from isar.models.mission_metadata.mission_metadata import MissionMetadata
9
8
  from robot_interface.models.mission.mission import Mission
10
9
  from robot_interface.models.mission.step import (
11
10
  DriveToPose,
@@ -68,15 +67,10 @@ def test_read_mission_from_file(mission_reader) -> None:
68
67
  task_4: Task = Task(steps=[expected_step_6])
69
68
 
70
69
  expected_tasks = [task_1, task_2, task_3, task_4]
71
- expected_mission: Mission = Mission(tasks=expected_tasks)
72
- expected_metadata: MissionMetadata = MissionMetadata(
73
- expected_mission.id, expected_mission.name
74
- )
75
70
  mission: Mission = mission_reader.read_mission_from_file(
76
71
  Path("./tests/test_data/test_mission_working.json")
77
72
  )
78
73
 
79
- assert expected_metadata.data_classification == MissionMetadata.data_classification
80
74
  for expected_task, task in zip(expected_tasks, mission.tasks):
81
75
  for expected_step, step in zip(expected_task.steps, task.steps):
82
76
  if isinstance(expected_step, DriveToPose) and isinstance(step, DriveToPose):