isar 1.25.6__tar.gz → 1.25.8__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 (204) hide show
  1. {isar-1.25.6 → isar-1.25.8}/PKG-INFO +1 -1
  2. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/api.py +8 -38
  3. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/models/start_mission_definition.py +0 -20
  4. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/robot_control/robot_controller.py +8 -1
  5. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/schedule/scheduling_controller.py +0 -55
  6. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/monitor.py +1 -1
  7. {isar-1.25.6 → isar-1.25.8}/src/isar.egg-info/PKG-INFO +1 -1
  8. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/mission/mission.py +0 -2
  9. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/mission/task.py +0 -22
  10. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -28
  11. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/security/test_authentication.py +0 -6
  12. {isar-1.25.6 → isar-1.25.8}/.dockerignore +0 -0
  13. {isar-1.25.6 → isar-1.25.8}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  14. {isar-1.25.6 → isar-1.25.8}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  15. {isar-1.25.6 → isar-1.25.8}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  16. {isar-1.25.6 → isar-1.25.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {isar-1.25.6 → isar-1.25.8}/.github/release.yml +0 -0
  18. {isar-1.25.6 → isar-1.25.8}/.github/workflows/compile_requirements.yml +0 -0
  19. {isar-1.25.6 → isar-1.25.8}/.github/workflows/project_automations.yml +0 -0
  20. {isar-1.25.6 → isar-1.25.8}/.github/workflows/publish_isar_base_image.yml +0 -0
  21. {isar-1.25.6 → isar-1.25.8}/.github/workflows/pythonpackage.yml +0 -0
  22. {isar-1.25.6 → isar-1.25.8}/.github/workflows/pythonpublish.yml +0 -0
  23. {isar-1.25.6 → isar-1.25.8}/.github/workflows/stale.yml +0 -0
  24. {isar-1.25.6 → isar-1.25.8}/.gitignore +0 -0
  25. {isar-1.25.6 → isar-1.25.8}/.pre-commit-config.yaml +0 -0
  26. {isar-1.25.6 → isar-1.25.8}/Dockerfile +0 -0
  27. {isar-1.25.6 → isar-1.25.8}/LICENSE +0 -0
  28. {isar-1.25.6 → isar-1.25.8}/README.md +0 -0
  29. {isar-1.25.6 → isar-1.25.8}/SECURITY.md +0 -0
  30. {isar-1.25.6 → isar-1.25.8}/docker-compose-turtlebot.yml +0 -0
  31. {isar-1.25.6 → isar-1.25.8}/docker-compose.yml +0 -0
  32. {isar-1.25.6 → isar-1.25.8}/docs/Makefile +0 -0
  33. {isar-1.25.6 → isar-1.25.8}/docs/make.bat +0 -0
  34. {isar-1.25.6 → isar-1.25.8}/docs/rst_processing.py +0 -0
  35. {isar-1.25.6 → isar-1.25.8}/docs/source/conf.py +0 -0
  36. {isar-1.25.6 → isar-1.25.8}/docs/source/index.rst +0 -0
  37. {isar-1.25.6 → isar-1.25.8}/docs/source/readme_link.md +0 -0
  38. {isar-1.25.6 → isar-1.25.8}/docs/state_machine_diagram.png +0 -0
  39. {isar-1.25.6 → isar-1.25.8}/main.py +0 -0
  40. {isar-1.25.6 → isar-1.25.8}/pyproject.toml +0 -0
  41. {isar-1.25.6 → isar-1.25.8}/radixconfig.yml +0 -0
  42. {isar-1.25.6 → isar-1.25.8}/requirements.txt +0 -0
  43. {isar-1.25.6 → isar-1.25.8}/setup.cfg +0 -0
  44. {isar-1.25.6 → isar-1.25.8}/src/isar/__init__.py +0 -0
  45. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/__init__.py +0 -0
  46. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/models/__init__.py +0 -0
  47. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/models/models.py +0 -0
  48. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/schedule/__init__.py +0 -0
  49. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/security/__init__.py +0 -0
  50. {isar-1.25.6 → isar-1.25.8}/src/isar/apis/security/authentication.py +0 -0
  51. {isar-1.25.6 → isar-1.25.8}/src/isar/config/__init__.py +0 -0
  52. {isar-1.25.6 → isar-1.25.8}/src/isar/config/certs/ca-cert.pem +0 -0
  53. {isar-1.25.6 → isar-1.25.8}/src/isar/config/configuration_error.py +0 -0
  54. {isar-1.25.6 → isar-1.25.8}/src/isar/config/keyvault/__init__.py +0 -0
  55. {isar-1.25.6 → isar-1.25.8}/src/isar/config/keyvault/keyvault_error.py +0 -0
  56. {isar-1.25.6 → isar-1.25.8}/src/isar/config/keyvault/keyvault_service.py +0 -0
  57. {isar-1.25.6 → isar-1.25.8}/src/isar/config/log.py +0 -0
  58. {isar-1.25.6 → isar-1.25.8}/src/isar/config/logging.conf +0 -0
  59. {isar-1.25.6 → isar-1.25.8}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  60. {isar-1.25.6 → isar-1.25.8}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  61. {isar-1.25.6 → isar-1.25.8}/src/isar/config/maps/default_map.json +0 -0
  62. {isar-1.25.6 → isar-1.25.8}/src/isar/config/maps/klab_b.json +0 -0
  63. {isar-1.25.6 → isar-1.25.8}/src/isar/config/maps/klab_compressor.json +0 -0
  64. {isar-1.25.6 → isar-1.25.8}/src/isar/config/maps/klab_turtlebot.json +0 -0
  65. {isar-1.25.6 → isar-1.25.8}/src/isar/config/maps/turtleworld.json +0 -0
  66. {isar-1.25.6 → isar-1.25.8}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
  67. {isar-1.25.6 → isar-1.25.8}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
  68. {isar-1.25.6 → isar-1.25.8}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
  69. {isar-1.25.6 → isar-1.25.8}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
  70. {isar-1.25.6 → isar-1.25.8}/src/isar/config/predefined_missions/__init__.py +0 -0
  71. {isar-1.25.6 → isar-1.25.8}/src/isar/config/predefined_missions/default.json +0 -0
  72. {isar-1.25.6 → isar-1.25.8}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
  73. {isar-1.25.6 → isar-1.25.8}/src/isar/config/settings.env +0 -0
  74. {isar-1.25.6 → isar-1.25.8}/src/isar/config/settings.py +0 -0
  75. {isar-1.25.6 → isar-1.25.8}/src/isar/mission_planner/__init__.py +0 -0
  76. {isar-1.25.6 → isar-1.25.8}/src/isar/mission_planner/local_planner.py +0 -0
  77. {isar-1.25.6 → isar-1.25.8}/src/isar/mission_planner/mission_planner_interface.py +0 -0
  78. {isar-1.25.6 → isar-1.25.8}/src/isar/mission_planner/sequential_task_selector.py +0 -0
  79. {isar-1.25.6 → isar-1.25.8}/src/isar/mission_planner/task_selector_interface.py +0 -0
  80. {isar-1.25.6 → isar-1.25.8}/src/isar/models/__init__.py +0 -0
  81. {isar-1.25.6 → isar-1.25.8}/src/isar/models/communication/__init__.py +0 -0
  82. {isar-1.25.6 → isar-1.25.8}/src/isar/models/communication/message.py +0 -0
  83. {isar-1.25.6 → isar-1.25.8}/src/isar/models/communication/queues/__init__.py +0 -0
  84. {isar-1.25.6 → isar-1.25.8}/src/isar/models/communication/queues/queue_io.py +0 -0
  85. {isar-1.25.6 → isar-1.25.8}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
  86. {isar-1.25.6 → isar-1.25.8}/src/isar/models/communication/queues/queues.py +0 -0
  87. {isar-1.25.6 → isar-1.25.8}/src/isar/models/communication/queues/status_queue.py +0 -0
  88. {isar-1.25.6 → isar-1.25.8}/src/isar/models/mission_metadata/__init__.py +0 -0
  89. {isar-1.25.6 → isar-1.25.8}/src/isar/modules.py +0 -0
  90. {isar-1.25.6 → isar-1.25.8}/src/isar/script.py +0 -0
  91. {isar-1.25.6 → isar-1.25.8}/src/isar/services/__init__.py +0 -0
  92. {isar-1.25.6 → isar-1.25.8}/src/isar/services/auth/__init__.py +0 -0
  93. {isar-1.25.6 → isar-1.25.8}/src/isar/services/auth/azure_credentials.py +0 -0
  94. {isar-1.25.6 → isar-1.25.8}/src/isar/services/service_connections/__init__.py +0 -0
  95. {isar-1.25.6 → isar-1.25.8}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
  96. {isar-1.25.6 → isar-1.25.8}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
  97. {isar-1.25.6 → isar-1.25.8}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
  98. {isar-1.25.6 → isar-1.25.8}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
  99. {isar-1.25.6 → isar-1.25.8}/src/isar/services/service_connections/request_handler.py +0 -0
  100. {isar-1.25.6 → isar-1.25.8}/src/isar/services/service_connections/stid/__init__.py +0 -0
  101. {isar-1.25.6 → isar-1.25.8}/src/isar/services/utilities/__init__.py +0 -0
  102. {isar-1.25.6 → isar-1.25.8}/src/isar/services/utilities/queue_utilities.py +0 -0
  103. {isar-1.25.6 → isar-1.25.8}/src/isar/services/utilities/robot_utilities.py +0 -0
  104. {isar-1.25.6 → isar-1.25.8}/src/isar/services/utilities/scheduling_utilities.py +0 -0
  105. {isar-1.25.6 → isar-1.25.8}/src/isar/services/utilities/threaded_request.py +0 -0
  106. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/__init__.py +0 -0
  107. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/state_machine.py +0 -0
  108. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/__init__.py +0 -0
  109. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/blocked_protective_stop.py +0 -0
  110. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/idle.py +0 -0
  111. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/initialize.py +0 -0
  112. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/initiate.py +0 -0
  113. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/off.py +0 -0
  114. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/offline.py +0 -0
  115. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/paused.py +0 -0
  116. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states/stop.py +0 -0
  117. {isar-1.25.6 → isar-1.25.8}/src/isar/state_machine/states_enum.py +0 -0
  118. {isar-1.25.6 → isar-1.25.8}/src/isar/storage/__init__.py +0 -0
  119. {isar-1.25.6 → isar-1.25.8}/src/isar/storage/blob_storage.py +0 -0
  120. {isar-1.25.6 → isar-1.25.8}/src/isar/storage/local_storage.py +0 -0
  121. {isar-1.25.6 → isar-1.25.8}/src/isar/storage/slimm_storage.py +0 -0
  122. {isar-1.25.6 → isar-1.25.8}/src/isar/storage/storage_interface.py +0 -0
  123. {isar-1.25.6 → isar-1.25.8}/src/isar/storage/uploader.py +0 -0
  124. {isar-1.25.6 → isar-1.25.8}/src/isar/storage/utilities.py +0 -0
  125. {isar-1.25.6 → isar-1.25.8}/src/isar.egg-info/SOURCES.txt +0 -0
  126. {isar-1.25.6 → isar-1.25.8}/src/isar.egg-info/dependency_links.txt +0 -0
  127. {isar-1.25.6 → isar-1.25.8}/src/isar.egg-info/entry_points.txt +0 -0
  128. {isar-1.25.6 → isar-1.25.8}/src/isar.egg-info/requires.txt +0 -0
  129. {isar-1.25.6 → isar-1.25.8}/src/isar.egg-info/top_level.txt +0 -0
  130. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/__init__.py +0 -0
  131. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/__init__.py +0 -0
  132. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/exceptions/__init__.py +0 -0
  133. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
  134. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/initialize/__init__.py +0 -0
  135. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/initialize/initialize_params.py +0 -0
  136. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/inspection/__init__.py +0 -0
  137. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/inspection/inspection.py +0 -0
  138. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/mission/__init__.py +0 -0
  139. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/mission/status.py +0 -0
  140. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/robots/__init__.py +0 -0
  141. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/robots/battery_state.py +0 -0
  142. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/robots/media.py +0 -0
  143. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/models/robots/robot_model.py +0 -0
  144. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/robot_interface.py +0 -0
  145. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/telemetry/__init__.py +0 -0
  146. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/telemetry/mqtt_client.py +0 -0
  147. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/telemetry/payloads.py +0 -0
  148. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/test_robot_interface.py +0 -0
  149. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/utilities/__init__.py +0 -0
  150. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/utilities/json_service.py +0 -0
  151. {isar-1.25.6 → isar-1.25.8}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
  152. {isar-1.25.6 → isar-1.25.8}/tests/__init__.py +0 -0
  153. {isar-1.25.6 → isar-1.25.8}/tests/conftest.py +0 -0
  154. {isar-1.25.6 → isar-1.25.8}/tests/integration/__init__.py +0 -0
  155. {isar-1.25.6 → isar-1.25.8}/tests/integration/turtlebot/__init__.py +0 -0
  156. {isar-1.25.6 → isar-1.25.8}/tests/integration/turtlebot/config/__init__.py +0 -0
  157. {isar-1.25.6 → isar-1.25.8}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
  158. {isar-1.25.6 → isar-1.25.8}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
  159. {isar-1.25.6 → isar-1.25.8}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
  160. {isar-1.25.6 → isar-1.25.8}/tests/integration/turtlebot/config/missions/default.json +0 -0
  161. {isar-1.25.6 → isar-1.25.8}/tests/integration/turtlebot/test_successful_mission.py +0 -0
  162. {isar-1.25.6 → isar-1.25.8}/tests/isar/__init__.py +0 -0
  163. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/__init__.py +0 -0
  164. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/models/__init__.py +0 -0
  165. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/models/example_mission_definition.json +0 -0
  166. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/models/test_start_mission_definition.py +0 -0
  167. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/scheduler/__init__.py +0 -0
  168. {isar-1.25.6 → isar-1.25.8}/tests/isar/apis/security/__init__.py +0 -0
  169. {isar-1.25.6 → isar-1.25.8}/tests/isar/mission/__init__.py +0 -0
  170. {isar-1.25.6 → isar-1.25.8}/tests/isar/mission/test_mission.py +0 -0
  171. {isar-1.25.6 → isar-1.25.8}/tests/isar/models/__init__.py +0 -0
  172. {isar-1.25.6 → isar-1.25.8}/tests/isar/models/communication/__init__.py +0 -0
  173. {isar-1.25.6 → isar-1.25.8}/tests/isar/models/communication/test_queues.py +0 -0
  174. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/__init__.py +0 -0
  175. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/readers/__init__.py +0 -0
  176. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/readers/test_mission_reader.py +0 -0
  177. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/service_connections/__init__.py +0 -0
  178. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/service_connections/echo/__init__.py +0 -0
  179. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  180. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/utilities/__init__.py +0 -0
  181. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
  182. {isar-1.25.6 → isar-1.25.8}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
  183. {isar-1.25.6 → isar-1.25.8}/tests/isar/state_machine/__init__.py +0 -0
  184. {isar-1.25.6 → isar-1.25.8}/tests/isar/state_machine/states/__init__.py +0 -0
  185. {isar-1.25.6 → isar-1.25.8}/tests/isar/state_machine/states/test_monitor.py +0 -0
  186. {isar-1.25.6 → isar-1.25.8}/tests/isar/state_machine/test_state_machine.py +0 -0
  187. {isar-1.25.6 → isar-1.25.8}/tests/isar/storage/test_blob_storage.py +0 -0
  188. {isar-1.25.6 → isar-1.25.8}/tests/isar/storage/test_uploader.py +0 -0
  189. {isar-1.25.6 → isar-1.25.8}/tests/mocks/__init__.py +0 -0
  190. {isar-1.25.6 → isar-1.25.8}/tests/mocks/blob_storage.py +0 -0
  191. {isar-1.25.6 → isar-1.25.8}/tests/mocks/mission_definition.py +0 -0
  192. {isar-1.25.6 → isar-1.25.8}/tests/mocks/mqtt_client.py +0 -0
  193. {isar-1.25.6 → isar-1.25.8}/tests/mocks/pose.py +0 -0
  194. {isar-1.25.6 → isar-1.25.8}/tests/mocks/request.py +0 -0
  195. {isar-1.25.6 → isar-1.25.8}/tests/mocks/robot_interface.py +0 -0
  196. {isar-1.25.6 → isar-1.25.8}/tests/mocks/status.py +0 -0
  197. {isar-1.25.6 → isar-1.25.8}/tests/mocks/task.py +0 -0
  198. {isar-1.25.6 → isar-1.25.8}/tests/mocks/token.py +0 -0
  199. {isar-1.25.6 → isar-1.25.8}/tests/test_data/test_map_config/test_map_config.json +0 -0
  200. {isar-1.25.6 → isar-1.25.8}/tests/test_data/test_mission_not_working.json +0 -0
  201. {isar-1.25.6 → isar-1.25.8}/tests/test_data/test_mission_working.json +0 -0
  202. {isar-1.25.6 → isar-1.25.8}/tests/test_data/test_mission_working_no_tasks.json +0 -0
  203. {isar-1.25.6 → isar-1.25.8}/tests/test_data/test_thermal_image_mission.json +0 -0
  204. {isar-1.25.6 → isar-1.25.8}/tests/test_modules.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: isar
3
- Version: 1.25.6
3
+ Version: 1.25.8
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
@@ -212,44 +212,6 @@ class API:
212
212
  },
213
213
  },
214
214
  )
215
- router.add_api_route(
216
- path="/schedule/drive-to",
217
- endpoint=self.scheduling_controller.drive_to,
218
- methods=["POST"],
219
- dependencies=[authentication_dependency],
220
- summary="Drive to the provided pose",
221
- deprecated=True,
222
- responses={
223
- HTTPStatus.OK.value: {
224
- "description": "Drive to succesfully started",
225
- },
226
- HTTPStatus.CONFLICT.value: {
227
- "description": "Conflict - Invalid command in the current state",
228
- },
229
- HTTPStatus.INTERNAL_SERVER_ERROR.value: {
230
- "description": "Internal Server Error - Current state of state machine unknown",
231
- },
232
- },
233
- )
234
- router.add_api_route(
235
- path="/schedule/start-localization-mission",
236
- endpoint=self.scheduling_controller.start_localization_mission,
237
- methods=["POST"],
238
- dependencies=[authentication_dependency],
239
- summary="Localize at the provided pose",
240
- deprecated=True,
241
- responses={
242
- HTTPStatus.OK.value: {
243
- "description": "Localization succesfully started",
244
- },
245
- HTTPStatus.CONFLICT.value: {
246
- "description": "Conflict - Invalid command in the current state",
247
- },
248
- HTTPStatus.INTERNAL_SERVER_ERROR.value: {
249
- "description": "Internal Server Error - Current state of state machine unknown",
250
- },
251
- },
252
- )
253
215
  router.add_api_route(
254
216
  path="/schedule/move_arm/{arm_pose_literal}",
255
217
  endpoint=self.scheduling_controller.start_move_arm_mission,
@@ -301,6 +263,14 @@ class API:
301
263
  methods=["GET"],
302
264
  dependencies=[authentication_dependency],
303
265
  summary="Generates a media stream connection config",
266
+ responses={
267
+ HTTPStatus.OK.value: {
268
+ "description": "Media stream was successfully generated",
269
+ },
270
+ HTTPStatus.NO_CONTENT.value: {
271
+ "description": "Robot has no media config",
272
+ },
273
+ },
304
274
  )
305
275
 
306
276
  return router
@@ -10,8 +10,6 @@ from isar.mission_planner.mission_planner_interface import MissionPlannerError
10
10
  from robot_interface.models.mission.mission import Mission
11
11
  from robot_interface.models.mission.task import (
12
12
  TASKS,
13
- DockingProcedure,
14
- Localize,
15
13
  RecordAudio,
16
14
  ReturnToHome,
17
15
  TakeImage,
@@ -34,9 +32,7 @@ class InspectionTypes(str, Enum):
34
32
 
35
33
  class TaskType(str, Enum):
36
34
  Inspection = "inspection"
37
- Localization = "localization"
38
35
  ReturnToHome = "return_to_home"
39
- Dock = "dock"
40
36
 
41
37
 
42
38
  class StartMissionInspectionDefinition(BaseModel):
@@ -60,8 +56,6 @@ class StartMissionDefinition(BaseModel):
60
56
  tasks: List[StartMissionTaskDefinition]
61
57
  name: Optional[str] = None
62
58
  start_pose: Optional[InputPose] = None
63
- dock: Optional[bool] = Field(default=False)
64
- undock: Optional[bool] = Field(default=False)
65
59
 
66
60
 
67
61
  def to_isar_mission(
@@ -94,20 +88,14 @@ def to_isar_mission(
94
88
  tasks=isar_tasks,
95
89
  name=isar_mission_name,
96
90
  start_pose=start_pose,
97
- dock=start_mission_definition.dock,
98
- undock=start_mission_definition.undock,
99
91
  )
100
92
 
101
93
 
102
94
  def to_isar_task(task_definition: StartMissionTaskDefinition) -> TASKS:
103
95
  if task_definition.type == TaskType.Inspection:
104
96
  return to_inspection_task(task_definition)
105
- elif task_definition.type == TaskType.Localization:
106
- return to_localization_task(task_definition)
107
97
  elif task_definition.type == TaskType.ReturnToHome:
108
98
  return create_return_to_home_task(task_definition)
109
- elif task_definition.type == TaskType.Dock:
110
- return create_dock_task()
111
99
  else:
112
100
  raise MissionPlannerError(
113
101
  f"Failed to create task: '{task_definition.type}' is not a valid"
@@ -231,19 +219,11 @@ def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
231
219
  )
232
220
 
233
221
 
234
- def to_localization_task(task_definition: StartMissionTaskDefinition) -> Localize:
235
- return Localize(localization_pose=task_definition.pose.to_alitra_pose())
236
-
237
-
238
222
  def create_return_to_home_task(
239
223
  task_definition: StartMissionTaskDefinition,
240
224
  ) -> ReturnToHome:
241
225
  return ReturnToHome(pose=task_definition.pose.to_alitra_pose())
242
226
 
243
227
 
244
- def create_dock_task() -> DockingProcedure:
245
- return DockingProcedure(behavior="dock")
246
-
247
-
248
228
  def _build_mission_name() -> str:
249
229
  return f"{settings.PLANT_SHORT_NAME}{settings.ROBOT_NAME}{int(time.time())}"
@@ -5,6 +5,7 @@ from injector import inject
5
5
  from isar.apis.models.models import RobotInfoResponse
6
6
  from isar.config.settings import robot_settings, settings
7
7
  from isar.services.utilities.robot_utilities import RobotUtilities
8
+ from fastapi import HTTPException
8
9
 
9
10
 
10
11
  class RobotController:
@@ -17,7 +18,13 @@ class RobotController:
17
18
  self.logger = logging.getLogger("api")
18
19
 
19
20
  def generate_media_config(self):
20
- return self.robot_utilities.generate_media_config()
21
+ media_config = self.robot_utilities.generate_media_config()
22
+ if media_config is None:
23
+ raise HTTPException(
24
+ status_code=204,
25
+ detail="Robot has no media config",
26
+ )
27
+ return media_config
21
28
 
22
29
  def get_info(self):
23
30
  return RobotInfoResponse(
@@ -24,7 +24,6 @@ from robot_interface.models.mission.mission import Mission
24
24
  from robot_interface.models.mission.task import (
25
25
  TASKS,
26
26
  InspectionTask,
27
- Localize,
28
27
  MoveArm,
29
28
  ReturnToHome,
30
29
  )
@@ -203,60 +202,6 @@ class SchedulingController:
203
202
  )
204
203
  return stop_mission_response
205
204
 
206
- def drive_to(
207
- self,
208
- target_pose: InputPose = Body(
209
- default=None,
210
- title="Target Pose",
211
- description="The target pose for the drive_to task",
212
- ),
213
- ) -> StartMissionResponse:
214
- self.logger.info("Received request to start new drive-to mission")
215
-
216
- state: States = self.scheduling_utilities.get_state()
217
-
218
- self.scheduling_utilities.verify_state_machine_ready_to_receive_mission(state)
219
-
220
- pose: Pose = target_pose.to_alitra_pose()
221
- mission: Mission = Mission(
222
- name="Drive to pose", tasks=[ReturnToHome(pose=pose)]
223
- )
224
-
225
- self.logger.info(
226
- f"Starting drive to mission with ISAR Mission ID: '{mission.id}'"
227
- )
228
- self.scheduling_utilities.start_mission(mission=mission, initial_pose=None)
229
- return self._api_response(mission)
230
-
231
- def start_localization_mission(
232
- self,
233
- localization_pose: InputPose = Body(
234
- default=None,
235
- embed=True,
236
- title="Localization Pose",
237
- description="The current position of the robot",
238
- ),
239
- ) -> StartMissionResponse:
240
- self.logger.info("Received request to start new localization mission")
241
-
242
- state: States = self.scheduling_utilities.get_state()
243
-
244
- self.scheduling_utilities.verify_state_machine_ready_to_receive_mission(state)
245
-
246
- pose: Pose = localization_pose.to_alitra_pose()
247
- mission: Mission = Mission(
248
- name="Localization mission", tasks=[Localize(localization_pose=pose)]
249
- )
250
-
251
- self.logger.info(
252
- f"Starting localization mission with ISAR Mission ID: '{mission.id}'"
253
- )
254
- self.scheduling_utilities.start_mission(
255
- mission=mission,
256
- initial_pose=None,
257
- )
258
- return self._api_response(mission)
259
-
260
205
  def start_move_arm_mission(
261
206
  self,
262
207
  arm_pose_literal: str = Path(
@@ -69,6 +69,7 @@ class Monitor(State):
69
69
  )
70
70
  try:
71
71
  status: TaskStatus = self.task_status_thread.get_output()
72
+ self.request_status_failure_counter = 0
72
73
  except ThreadedRequestNotFinishedError:
73
74
  time.sleep(self.state_machine.sleep_time)
74
75
  continue
@@ -196,7 +197,6 @@ class Monitor(State):
196
197
  )
197
198
 
198
199
  def _report_task_status(self, task: Task) -> None:
199
- self.request_status_failure_counter = 0
200
200
  if task.status == TaskStatus.Failed:
201
201
  self.logger.warning(
202
202
  f"Task: {str(task.id)[:8]} was reported as failed by the robot"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: isar
3
- Version: 1.25.6
3
+ Version: 1.25.8
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
@@ -14,7 +14,5 @@ class Mission(BaseModel):
14
14
  tasks: List[TASKS] = Field(default_factory=list, frozen=True)
15
15
  name: str = Field(frozen=True)
16
16
  start_pose: Optional[Pose] = Field(default=None, frozen=True)
17
- dock: bool = Field(default=False, frozen=True)
18
- undock: bool = Field(default=False, frozen=True)
19
17
  status: MissionStatus = MissionStatus.NotStarted
20
18
  error_message: Optional[ErrorMessage] = Field(default=None)
@@ -20,7 +20,6 @@ from robot_interface.utilities.uuid_string_factory import uuid4_string
20
20
 
21
21
  class TaskTypes(str, Enum):
22
22
  ReturnToHome = "return_to_home"
23
- Localize = "localize"
24
23
  MoveArm = "move_arm"
25
24
  TakeImage = "take_image"
26
25
  TakeThermalImage = "take_thermal_image"
@@ -28,7 +27,6 @@ class TaskTypes(str, Enum):
28
27
  TakeThermalVideo = "take_thermal_video"
29
28
  TakeGasMeasurement = "take_gas_measurement"
30
29
  RecordAudio = "record_audio"
31
- DockingProcedure = "docking_procedure"
32
30
 
33
31
 
34
32
  class ZoomDescription(BaseModel):
@@ -71,15 +69,6 @@ class InspectionTask(Task):
71
69
  return Inspection
72
70
 
73
71
 
74
- class DockingProcedure(Task):
75
- """
76
- Task which causes the robot to dock or undock
77
- """
78
-
79
- behavior: Literal["dock", "undock"] = Field(default=None)
80
- type: Literal[TaskTypes.DockingProcedure] = TaskTypes.DockingProcedure
81
-
82
-
83
72
  class ReturnToHome(Task):
84
73
  """
85
74
  Task which cases the robot to return home
@@ -89,15 +78,6 @@ class ReturnToHome(Task):
89
78
  type: Literal[TaskTypes.ReturnToHome] = TaskTypes.ReturnToHome
90
79
 
91
80
 
92
- class Localize(Task):
93
- """
94
- Task which causes the robot to localize
95
- """
96
-
97
- localization_pose: Pose = Field(default=None)
98
- type: Literal[TaskTypes.Localize] = TaskTypes.Localize
99
-
100
-
101
81
  class MoveArm(Task):
102
82
  """
103
83
  Task which causes the robot to move its arm
@@ -197,7 +177,6 @@ class TakeGasMeasurement(InspectionTask):
197
177
 
198
178
  TASKS = Union[
199
179
  ReturnToHome,
200
- Localize,
201
180
  MoveArm,
202
181
  TakeImage,
203
182
  TakeThermalImage,
@@ -205,5 +184,4 @@ TASKS = Union[
205
184
  TakeThermalVideo,
206
185
  TakeGasMeasurement,
207
186
  RecordAudio,
208
- DockingProcedure,
209
187
  ]
@@ -1,4 +1,3 @@
1
- import json
2
1
  import re
3
2
  from http import HTTPStatus
4
3
  from unittest import mock
@@ -242,33 +241,6 @@ class TestStopMission:
242
241
  assert response.status_code == HTTPStatus.INTERNAL_SERVER_ERROR
243
242
 
244
243
 
245
- class TestDriveTo:
246
- schedule_drive_to_path = "/schedule/drive-to"
247
- mock_target_pose = MockMissionDefinition.mock_input_pose
248
- mock_data: str = json.dumps(jsonable_encoder(mock_target_pose))
249
-
250
- @mock.patch.object(SchedulingUtilities, "get_state", mock_return_idle)
251
- @mock.patch.object(SchedulingUtilities, "_send_command", mock_void)
252
- def test_drive_to(self, client: TestClient):
253
- response = client.post(url=self.schedule_drive_to_path, data=self.mock_data)
254
- assert response.status_code == HTTPStatus.OK
255
-
256
- @mock.patch.object(SchedulingUtilities, "get_state", mock_return_idle)
257
- @mock.patch.object(SchedulingUtilities, "_send_command", mock_queue_timeout_error)
258
- def test_drive_to_timeout(self, client: TestClient):
259
- response = client.post(url=self.schedule_drive_to_path, data=self.mock_data)
260
- assert response.status_code == HTTPStatus.INTERNAL_SERVER_ERROR
261
- assert response.json() == {
262
- "detail": "Internal Server Error - Failed to start mission in ISAR"
263
- }
264
-
265
- @mock.patch.object(SchedulingUtilities, "get_state", mock_return_monitor)
266
- @mock.patch.object(SchedulingUtilities, "_send_command", mock_void)
267
- def test_state_machine_in_conflicting_state(self, client: TestClient):
268
- response = client.post(url=self.schedule_drive_to_path, data=self.mock_data)
269
- assert response.status_code == HTTPStatus.CONFLICT
270
-
271
-
272
244
  class TestInfoRobotSettings:
273
245
  def test_info_robot_settings(self, client: TestClient):
274
246
  response = client.get(url="/info/robot-settings")
@@ -33,12 +33,6 @@ class TestAuthentication:
33
33
  {"detail": "Unable to verify token, no signing keys found"},
34
34
  HTTPStatus.UNAUTHORIZED,
35
35
  ),
36
- (
37
- "drive-to?x-value=1&y-value=2&z-value=3&quaternion=0&quaternion=0&quaternion=0&quaternion=1", # noqa: E501
38
- mock_access_token(),
39
- {"detail": "Unable to verify token, no signing keys found"},
40
- HTTPStatus.UNAUTHORIZED,
41
- ),
42
36
  ],
43
37
  )
44
38
  def test_authentication(
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes