isar 1.25.0__tar.gz → 1.25.2__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 (202) hide show
  1. {isar-1.25.0 → isar-1.25.2}/PKG-INFO +1 -1
  2. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/models/start_mission_definition.py +92 -38
  3. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/robot_control/robot_controller.py +0 -3
  4. {isar-1.25.0 → isar-1.25.2}/src/isar/config/settings.py +1 -17
  5. {isar-1.25.0 → isar-1.25.2}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -1
  6. {isar-1.25.0 → isar-1.25.2}/src/isar.egg-info/PKG-INFO +1 -1
  7. {isar-1.25.0 → isar-1.25.2}/src/isar.egg-info/SOURCES.txt +1 -0
  8. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/mission/task.py +2 -2
  9. isar-1.25.2/src/robot_interface/models/robots/battery_state.py +6 -0
  10. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/telemetry/payloads.py +3 -9
  11. {isar-1.25.0 → isar-1.25.2}/.dockerignore +0 -0
  12. {isar-1.25.0 → isar-1.25.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  13. {isar-1.25.0 → isar-1.25.2}/.github/ISSUE_TEMPLATE/feature.md +0 -0
  14. {isar-1.25.0 → isar-1.25.2}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
  15. {isar-1.25.0 → isar-1.25.2}/.github/release.yml +0 -0
  16. {isar-1.25.0 → isar-1.25.2}/.github/workflows/compile_requirements.yml +0 -0
  17. {isar-1.25.0 → isar-1.25.2}/.github/workflows/project_automations.yml +0 -0
  18. {isar-1.25.0 → isar-1.25.2}/.github/workflows/publish_isar_base_image.yml +0 -0
  19. {isar-1.25.0 → isar-1.25.2}/.github/workflows/pythonpackage.yml +0 -0
  20. {isar-1.25.0 → isar-1.25.2}/.github/workflows/pythonpublish.yml +0 -0
  21. {isar-1.25.0 → isar-1.25.2}/.github/workflows/stale.yml +0 -0
  22. {isar-1.25.0 → isar-1.25.2}/.gitignore +0 -0
  23. {isar-1.25.0 → isar-1.25.2}/.pre-commit-config.yaml +0 -0
  24. {isar-1.25.0 → isar-1.25.2}/Dockerfile +0 -0
  25. {isar-1.25.0 → isar-1.25.2}/LICENSE +0 -0
  26. {isar-1.25.0 → isar-1.25.2}/README.md +0 -0
  27. {isar-1.25.0 → isar-1.25.2}/SECURITY.md +0 -0
  28. {isar-1.25.0 → isar-1.25.2}/docker-compose-turtlebot.yml +0 -0
  29. {isar-1.25.0 → isar-1.25.2}/docker-compose.yml +0 -0
  30. {isar-1.25.0 → isar-1.25.2}/docs/Makefile +0 -0
  31. {isar-1.25.0 → isar-1.25.2}/docs/make.bat +0 -0
  32. {isar-1.25.0 → isar-1.25.2}/docs/rst_processing.py +0 -0
  33. {isar-1.25.0 → isar-1.25.2}/docs/source/conf.py +0 -0
  34. {isar-1.25.0 → isar-1.25.2}/docs/source/index.rst +0 -0
  35. {isar-1.25.0 → isar-1.25.2}/docs/source/readme_link.md +0 -0
  36. {isar-1.25.0 → isar-1.25.2}/docs/state_machine_diagram.png +0 -0
  37. {isar-1.25.0 → isar-1.25.2}/main.py +0 -0
  38. {isar-1.25.0 → isar-1.25.2}/pyproject.toml +0 -0
  39. {isar-1.25.0 → isar-1.25.2}/radixconfig.yml +0 -0
  40. {isar-1.25.0 → isar-1.25.2}/requirements.txt +0 -0
  41. {isar-1.25.0 → isar-1.25.2}/setup.cfg +0 -0
  42. {isar-1.25.0 → isar-1.25.2}/src/isar/__init__.py +0 -0
  43. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/__init__.py +0 -0
  44. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/api.py +0 -0
  45. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/models/__init__.py +0 -0
  46. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/models/models.py +0 -0
  47. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/schedule/__init__.py +0 -0
  48. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/schedule/scheduling_controller.py +0 -0
  49. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/security/__init__.py +0 -0
  50. {isar-1.25.0 → isar-1.25.2}/src/isar/apis/security/authentication.py +0 -0
  51. {isar-1.25.0 → isar-1.25.2}/src/isar/config/__init__.py +0 -0
  52. {isar-1.25.0 → isar-1.25.2}/src/isar/config/certs/ca-cert.pem +0 -0
  53. {isar-1.25.0 → isar-1.25.2}/src/isar/config/configuration_error.py +0 -0
  54. {isar-1.25.0 → isar-1.25.2}/src/isar/config/keyvault/__init__.py +0 -0
  55. {isar-1.25.0 → isar-1.25.2}/src/isar/config/keyvault/keyvault_error.py +0 -0
  56. {isar-1.25.0 → isar-1.25.2}/src/isar/config/keyvault/keyvault_service.py +0 -0
  57. {isar-1.25.0 → isar-1.25.2}/src/isar/config/log.py +0 -0
  58. {isar-1.25.0 → isar-1.25.2}/src/isar/config/logging.conf +0 -0
  59. {isar-1.25.0 → isar-1.25.2}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
  60. {isar-1.25.0 → isar-1.25.2}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
  61. {isar-1.25.0 → isar-1.25.2}/src/isar/config/maps/default_map.json +0 -0
  62. {isar-1.25.0 → isar-1.25.2}/src/isar/config/maps/klab_b.json +0 -0
  63. {isar-1.25.0 → isar-1.25.2}/src/isar/config/maps/klab_compressor.json +0 -0
  64. {isar-1.25.0 → isar-1.25.2}/src/isar/config/maps/klab_turtlebot.json +0 -0
  65. {isar-1.25.0 → isar-1.25.2}/src/isar/config/maps/turtleworld.json +0 -0
  66. {isar-1.25.0 → isar-1.25.2}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
  67. {isar-1.25.0 → isar-1.25.2}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
  68. {isar-1.25.0 → isar-1.25.2}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
  69. {isar-1.25.0 → isar-1.25.2}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
  70. {isar-1.25.0 → isar-1.25.2}/src/isar/config/predefined_missions/__init__.py +0 -0
  71. {isar-1.25.0 → isar-1.25.2}/src/isar/config/predefined_missions/default.json +0 -0
  72. {isar-1.25.0 → isar-1.25.2}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
  73. {isar-1.25.0 → isar-1.25.2}/src/isar/config/settings.env +0 -0
  74. {isar-1.25.0 → isar-1.25.2}/src/isar/mission_planner/__init__.py +0 -0
  75. {isar-1.25.0 → isar-1.25.2}/src/isar/mission_planner/local_planner.py +0 -0
  76. {isar-1.25.0 → isar-1.25.2}/src/isar/mission_planner/mission_planner_interface.py +0 -0
  77. {isar-1.25.0 → isar-1.25.2}/src/isar/mission_planner/sequential_task_selector.py +0 -0
  78. {isar-1.25.0 → isar-1.25.2}/src/isar/mission_planner/task_selector_interface.py +0 -0
  79. {isar-1.25.0 → isar-1.25.2}/src/isar/models/__init__.py +0 -0
  80. {isar-1.25.0 → isar-1.25.2}/src/isar/models/communication/__init__.py +0 -0
  81. {isar-1.25.0 → isar-1.25.2}/src/isar/models/communication/message.py +0 -0
  82. {isar-1.25.0 → isar-1.25.2}/src/isar/models/communication/queues/__init__.py +0 -0
  83. {isar-1.25.0 → isar-1.25.2}/src/isar/models/communication/queues/queue_io.py +0 -0
  84. {isar-1.25.0 → isar-1.25.2}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
  85. {isar-1.25.0 → isar-1.25.2}/src/isar/models/communication/queues/queues.py +0 -0
  86. {isar-1.25.0 → isar-1.25.2}/src/isar/models/communication/queues/status_queue.py +0 -0
  87. {isar-1.25.0 → isar-1.25.2}/src/isar/models/mission_metadata/__init__.py +0 -0
  88. {isar-1.25.0 → isar-1.25.2}/src/isar/modules.py +0 -0
  89. {isar-1.25.0 → isar-1.25.2}/src/isar/script.py +0 -0
  90. {isar-1.25.0 → isar-1.25.2}/src/isar/services/__init__.py +0 -0
  91. {isar-1.25.0 → isar-1.25.2}/src/isar/services/auth/__init__.py +0 -0
  92. {isar-1.25.0 → isar-1.25.2}/src/isar/services/auth/azure_credentials.py +0 -0
  93. {isar-1.25.0 → isar-1.25.2}/src/isar/services/service_connections/__init__.py +0 -0
  94. {isar-1.25.0 → isar-1.25.2}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
  95. {isar-1.25.0 → isar-1.25.2}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
  96. {isar-1.25.0 → isar-1.25.2}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
  97. {isar-1.25.0 → isar-1.25.2}/src/isar/services/service_connections/request_handler.py +0 -0
  98. {isar-1.25.0 → isar-1.25.2}/src/isar/services/service_connections/stid/__init__.py +0 -0
  99. {isar-1.25.0 → isar-1.25.2}/src/isar/services/utilities/__init__.py +0 -0
  100. {isar-1.25.0 → isar-1.25.2}/src/isar/services/utilities/queue_utilities.py +0 -0
  101. {isar-1.25.0 → isar-1.25.2}/src/isar/services/utilities/robot_utilities.py +0 -0
  102. {isar-1.25.0 → isar-1.25.2}/src/isar/services/utilities/scheduling_utilities.py +0 -0
  103. {isar-1.25.0 → isar-1.25.2}/src/isar/services/utilities/threaded_request.py +0 -0
  104. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/__init__.py +0 -0
  105. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/state_machine.py +0 -0
  106. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/__init__.py +0 -0
  107. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/idle.py +0 -0
  108. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/initialize.py +0 -0
  109. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/initiate.py +0 -0
  110. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/monitor.py +0 -0
  111. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/off.py +0 -0
  112. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/offline.py +0 -0
  113. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/paused.py +0 -0
  114. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states/stop.py +0 -0
  115. {isar-1.25.0 → isar-1.25.2}/src/isar/state_machine/states_enum.py +0 -0
  116. {isar-1.25.0 → isar-1.25.2}/src/isar/storage/__init__.py +0 -0
  117. {isar-1.25.0 → isar-1.25.2}/src/isar/storage/blob_storage.py +0 -0
  118. {isar-1.25.0 → isar-1.25.2}/src/isar/storage/local_storage.py +0 -0
  119. {isar-1.25.0 → isar-1.25.2}/src/isar/storage/slimm_storage.py +0 -0
  120. {isar-1.25.0 → isar-1.25.2}/src/isar/storage/storage_interface.py +0 -0
  121. {isar-1.25.0 → isar-1.25.2}/src/isar/storage/uploader.py +0 -0
  122. {isar-1.25.0 → isar-1.25.2}/src/isar/storage/utilities.py +0 -0
  123. {isar-1.25.0 → isar-1.25.2}/src/isar.egg-info/dependency_links.txt +0 -0
  124. {isar-1.25.0 → isar-1.25.2}/src/isar.egg-info/entry_points.txt +0 -0
  125. {isar-1.25.0 → isar-1.25.2}/src/isar.egg-info/requires.txt +0 -0
  126. {isar-1.25.0 → isar-1.25.2}/src/isar.egg-info/top_level.txt +0 -0
  127. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/__init__.py +0 -0
  128. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/__init__.py +0 -0
  129. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/exceptions/__init__.py +0 -0
  130. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
  131. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/initialize/__init__.py +0 -0
  132. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/initialize/initialize_params.py +0 -0
  133. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/inspection/__init__.py +0 -0
  134. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/inspection/inspection.py +0 -0
  135. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/mission/__init__.py +0 -0
  136. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/mission/mission.py +0 -0
  137. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/mission/status.py +0 -0
  138. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/robots/__init__.py +0 -0
  139. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/robots/media.py +0 -0
  140. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/models/robots/robot_model.py +0 -0
  141. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/robot_interface.py +0 -0
  142. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/telemetry/__init__.py +0 -0
  143. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/telemetry/mqtt_client.py +0 -0
  144. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/test_robot_interface.py +0 -0
  145. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/utilities/__init__.py +0 -0
  146. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/utilities/json_service.py +0 -0
  147. {isar-1.25.0 → isar-1.25.2}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
  148. {isar-1.25.0 → isar-1.25.2}/tests/__init__.py +0 -0
  149. {isar-1.25.0 → isar-1.25.2}/tests/conftest.py +0 -0
  150. {isar-1.25.0 → isar-1.25.2}/tests/integration/__init__.py +0 -0
  151. {isar-1.25.0 → isar-1.25.2}/tests/integration/turtlebot/__init__.py +0 -0
  152. {isar-1.25.0 → isar-1.25.2}/tests/integration/turtlebot/config/__init__.py +0 -0
  153. {isar-1.25.0 → isar-1.25.2}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
  154. {isar-1.25.0 → isar-1.25.2}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
  155. {isar-1.25.0 → isar-1.25.2}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
  156. {isar-1.25.0 → isar-1.25.2}/tests/integration/turtlebot/config/missions/default.json +0 -0
  157. {isar-1.25.0 → isar-1.25.2}/tests/integration/turtlebot/test_successful_mission.py +0 -0
  158. {isar-1.25.0 → isar-1.25.2}/tests/isar/__init__.py +0 -0
  159. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/__init__.py +0 -0
  160. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/models/__init__.py +0 -0
  161. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/models/example_mission_definition.json +0 -0
  162. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/models/test_start_mission_definition.py +0 -0
  163. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/scheduler/__init__.py +0 -0
  164. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
  165. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/security/__init__.py +0 -0
  166. {isar-1.25.0 → isar-1.25.2}/tests/isar/apis/security/test_authentication.py +0 -0
  167. {isar-1.25.0 → isar-1.25.2}/tests/isar/mission/__init__.py +0 -0
  168. {isar-1.25.0 → isar-1.25.2}/tests/isar/mission/test_mission.py +0 -0
  169. {isar-1.25.0 → isar-1.25.2}/tests/isar/models/__init__.py +0 -0
  170. {isar-1.25.0 → isar-1.25.2}/tests/isar/models/communication/__init__.py +0 -0
  171. {isar-1.25.0 → isar-1.25.2}/tests/isar/models/communication/test_queues.py +0 -0
  172. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/__init__.py +0 -0
  173. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/readers/__init__.py +0 -0
  174. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/readers/test_mission_reader.py +0 -0
  175. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/service_connections/__init__.py +0 -0
  176. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/service_connections/echo/__init__.py +0 -0
  177. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
  178. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/utilities/__init__.py +0 -0
  179. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
  180. {isar-1.25.0 → isar-1.25.2}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
  181. {isar-1.25.0 → isar-1.25.2}/tests/isar/state_machine/__init__.py +0 -0
  182. {isar-1.25.0 → isar-1.25.2}/tests/isar/state_machine/states/__init__.py +0 -0
  183. {isar-1.25.0 → isar-1.25.2}/tests/isar/state_machine/states/test_monitor.py +0 -0
  184. {isar-1.25.0 → isar-1.25.2}/tests/isar/state_machine/test_state_machine.py +0 -0
  185. {isar-1.25.0 → isar-1.25.2}/tests/isar/storage/test_blob_storage.py +0 -0
  186. {isar-1.25.0 → isar-1.25.2}/tests/isar/storage/test_uploader.py +0 -0
  187. {isar-1.25.0 → isar-1.25.2}/tests/mocks/__init__.py +0 -0
  188. {isar-1.25.0 → isar-1.25.2}/tests/mocks/blob_storage.py +0 -0
  189. {isar-1.25.0 → isar-1.25.2}/tests/mocks/mission_definition.py +0 -0
  190. {isar-1.25.0 → isar-1.25.2}/tests/mocks/mqtt_client.py +0 -0
  191. {isar-1.25.0 → isar-1.25.2}/tests/mocks/pose.py +0 -0
  192. {isar-1.25.0 → isar-1.25.2}/tests/mocks/request.py +0 -0
  193. {isar-1.25.0 → isar-1.25.2}/tests/mocks/robot_interface.py +0 -0
  194. {isar-1.25.0 → isar-1.25.2}/tests/mocks/status.py +0 -0
  195. {isar-1.25.0 → isar-1.25.2}/tests/mocks/task.py +0 -0
  196. {isar-1.25.0 → isar-1.25.2}/tests/mocks/token.py +0 -0
  197. {isar-1.25.0 → isar-1.25.2}/tests/test_data/test_map_config/test_map_config.json +0 -0
  198. {isar-1.25.0 → isar-1.25.2}/tests/test_data/test_mission_not_working.json +0 -0
  199. {isar-1.25.0 → isar-1.25.2}/tests/test_data/test_mission_working.json +0 -0
  200. {isar-1.25.0 → isar-1.25.2}/tests/test_data/test_mission_working_no_tasks.json +0 -0
  201. {isar-1.25.0 → isar-1.25.2}/tests/test_data/test_thermal_image_mission.json +0 -0
  202. {isar-1.25.0 → isar-1.25.2}/tests/test_modules.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.25.0
3
+ Version: 1.25.2
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Author-email: Equinor ASA <fg_robots_dev@equinor.com>
6
6
  License: Eclipse Public License version 2.0
@@ -46,6 +46,7 @@ class StartMissionInspectionDefinition(BaseModel):
46
46
 
47
47
 
48
48
  class StartMissionTaskDefinition(BaseModel):
49
+ id: Optional[str] = None
49
50
  type: TaskType = Field(default=TaskType.Inspection)
50
51
  pose: InputPose
51
52
  inspection: Optional[StartMissionInspectionDefinition] = None
@@ -115,48 +116,101 @@ def to_inspection_task(task_definition: StartMissionTaskDefinition) -> TASKS:
115
116
  inspection_definition = task_definition.inspection
116
117
 
117
118
  if inspection_definition.type == InspectionTypes.image:
118
- return TakeImage(
119
- robot_pose=task_definition.pose.to_alitra_pose(),
120
- tag_id=task_definition.tag,
121
- target=task_definition.inspection.inspection_target.to_alitra_position(),
122
- metadata=task_definition.inspection.metadata,
123
- zoom=task_definition.zoom,
124
- )
119
+ if task_definition.id:
120
+ return TakeImage(
121
+ id=task_definition.id,
122
+ robot_pose=task_definition.pose.to_alitra_pose(),
123
+ tag_id=task_definition.tag,
124
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
125
+ metadata=task_definition.inspection.metadata,
126
+ zoom=task_definition.zoom,
127
+ )
128
+ else:
129
+ return TakeImage(
130
+ robot_pose=task_definition.pose.to_alitra_pose(),
131
+ tag_id=task_definition.tag,
132
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
133
+ metadata=task_definition.inspection.metadata,
134
+ zoom=task_definition.zoom,
135
+ )
125
136
  elif inspection_definition.type == InspectionTypes.video:
126
- return TakeVideo(
127
- robot_pose=task_definition.pose.to_alitra_pose(),
128
- tag_id=task_definition.tag,
129
- target=task_definition.inspection.inspection_target.to_alitra_position(),
130
- duration=inspection_definition.duration,
131
- metadata=task_definition.inspection.metadata,
132
- zoom=task_definition.zoom,
133
- )
137
+ if task_definition.id:
138
+ return TakeVideo(
139
+ id=task_definition.id,
140
+ robot_pose=task_definition.pose.to_alitra_pose(),
141
+ tag_id=task_definition.tag,
142
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
143
+ duration=inspection_definition.duration,
144
+ metadata=task_definition.inspection.metadata,
145
+ zoom=task_definition.zoom,
146
+ )
147
+ else:
148
+ return TakeVideo(
149
+ robot_pose=task_definition.pose.to_alitra_pose(),
150
+ tag_id=task_definition.tag,
151
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
152
+ duration=inspection_definition.duration,
153
+ metadata=task_definition.inspection.metadata,
154
+ zoom=task_definition.zoom,
155
+ )
134
156
  elif inspection_definition.type == InspectionTypes.thermal_image:
135
- return TakeThermalImage(
136
- robot_pose=task_definition.pose.to_alitra_pose(),
137
- tag_id=task_definition.tag,
138
- target=task_definition.inspection.inspection_target.to_alitra_position(),
139
- metadata=task_definition.inspection.metadata,
140
- zoom=task_definition.zoom,
141
- )
157
+ if task_definition.id:
158
+ return TakeThermalImage(
159
+ id=task_definition.id,
160
+ robot_pose=task_definition.pose.to_alitra_pose(),
161
+ tag_id=task_definition.tag,
162
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
163
+ metadata=task_definition.inspection.metadata,
164
+ zoom=task_definition.zoom,
165
+ )
166
+ else:
167
+ return TakeThermalImage(
168
+ robot_pose=task_definition.pose.to_alitra_pose(),
169
+ tag_id=task_definition.tag,
170
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
171
+ metadata=task_definition.inspection.metadata,
172
+ zoom=task_definition.zoom,
173
+ )
142
174
  elif inspection_definition.type == InspectionTypes.thermal_video:
143
- return TakeThermalVideo(
144
- robot_pose=task_definition.pose.to_alitra_pose(),
145
- tag_id=task_definition.tag,
146
- target=task_definition.inspection.inspection_target.to_alitra_position(),
147
- duration=inspection_definition.duration,
148
- metadata=task_definition.inspection.metadata,
149
- zoom=task_definition.zoom,
150
- )
175
+ if task_definition.id:
176
+ return TakeThermalVideo(
177
+ id=task_definition.id,
178
+ robot_pose=task_definition.pose.to_alitra_pose(),
179
+ tag_id=task_definition.tag,
180
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
181
+ duration=inspection_definition.duration,
182
+ metadata=task_definition.inspection.metadata,
183
+ zoom=task_definition.zoom,
184
+ )
185
+ else:
186
+ return TakeThermalVideo(
187
+ robot_pose=task_definition.pose.to_alitra_pose(),
188
+ tag_id=task_definition.tag,
189
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
190
+ duration=inspection_definition.duration,
191
+ metadata=task_definition.inspection.metadata,
192
+ zoom=task_definition.zoom,
193
+ )
151
194
  elif inspection_definition.type == InspectionTypes.audio:
152
- return RecordAudio(
153
- robot_pose=task_definition.pose.to_alitra_pose(),
154
- tag_id=task_definition.tag,
155
- target=task_definition.inspection.inspection_target.to_alitra_position(),
156
- duration=inspection_definition.duration,
157
- metadata=task_definition.inspection.metadata,
158
- zoom=task_definition.zoom,
159
- )
195
+ if task_definition.id:
196
+ return RecordAudio(
197
+ id=task_definition.id,
198
+ robot_pose=task_definition.pose.to_alitra_pose(),
199
+ tag_id=task_definition.tag,
200
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
201
+ duration=inspection_definition.duration,
202
+ metadata=task_definition.inspection.metadata,
203
+ zoom=task_definition.zoom,
204
+ )
205
+ else:
206
+ return RecordAudio(
207
+ robot_pose=task_definition.pose.to_alitra_pose(),
208
+ tag_id=task_definition.tag,
209
+ target=task_definition.inspection.inspection_target.to_alitra_position(),
210
+ duration=inspection_definition.duration,
211
+ metadata=task_definition.inspection.metadata,
212
+ zoom=task_definition.zoom,
213
+ )
160
214
  else:
161
215
  raise ValueError(
162
216
  f"Inspection type '{inspection_definition.type}' not supported"
@@ -1,15 +1,12 @@
1
1
  import logging
2
- from typing import List
3
2
 
4
3
  from injector import inject
5
4
 
6
5
  from isar.apis.models.models import (
7
6
  RobotInfoResponse,
8
- TaskResponse,
9
7
  )
10
8
  from isar.config.settings import robot_settings, settings
11
9
  from isar.services.utilities.robot_utilities import RobotUtilities
12
- from robot_interface.models.mission.task import Task
13
10
 
14
11
 
15
12
  class RobotController:
@@ -8,7 +8,7 @@ from pydantic_settings import BaseSettings, SettingsConfigDict
8
8
 
9
9
  from isar.config import predefined_missions
10
10
  from robot_interface.models.robots.robot_model import RobotModel
11
- from robot_interface.telemetry.payloads import DocumentInfo, VideoStream
11
+ from robot_interface.telemetry.payloads import DocumentInfo
12
12
 
13
13
 
14
14
  class Settings(BaseSettings):
@@ -194,22 +194,6 @@ class Settings(BaseSettings):
194
194
  # Info about robot documentation
195
195
  DOCUMENTATION: List[DocumentInfo] = Field(default=[])
196
196
 
197
- # Endpoints to reach video streams for the robot
198
- VIDEO_STREAMS: List[VideoStream] = Field(
199
- default=[
200
- VideoStream(
201
- name="Front camera",
202
- url="http://localhost:5000/videostream/front",
203
- type="turtlebot",
204
- ),
205
- VideoStream(
206
- name="Rear camera",
207
- url="http://localhost:5000/videostream/rear",
208
- type="turtlebot",
209
- ),
210
- ]
211
- )
212
-
213
197
  # Data scheme the robot should adhere to
214
198
  # Options [DS0001]
215
199
  DATA_SCHEME: str = Field(default="DS0001")
@@ -22,7 +22,6 @@ class RobotInfoPublisher:
22
22
  robot_serial_number=settings.SERIAL_NUMBER,
23
23
  robot_asset=settings.PLANT_SHORT_NAME,
24
24
  documentation=settings.DOCUMENTATION,
25
- video_streams=settings.VIDEO_STREAMS,
26
25
  host=settings.API_HOST_VIEWED_EXTERNALLY,
27
26
  port=settings.API_PORT,
28
27
  capabilities=robot_settings.CAPABILITIES,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: isar
3
- Version: 1.25.0
3
+ Version: 1.25.2
4
4
  Summary: Integration and Supervisory control of Autonomous Robots
5
5
  Author-email: Equinor ASA <fg_robots_dev@equinor.com>
6
6
  License: Eclipse Public License version 2.0
@@ -134,6 +134,7 @@ src/robot_interface/models/mission/mission.py
134
134
  src/robot_interface/models/mission/status.py
135
135
  src/robot_interface/models/mission/task.py
136
136
  src/robot_interface/models/robots/__init__.py
137
+ src/robot_interface/models/robots/battery_state.py
137
138
  src/robot_interface/models/robots/media.py
138
139
  src/robot_interface/models/robots/robot_model.py
139
140
  src/robot_interface/telemetry/__init__.py
@@ -38,7 +38,7 @@ class Task(BaseModel):
38
38
  status: TaskStatus = Field(default=TaskStatus.NotStarted)
39
39
  error_message: Optional[ErrorMessage] = Field(default=None)
40
40
  tag_id: Optional[str] = Field(default=None)
41
- id: str = Field(default_factory=uuid4_string)
41
+ id: str = Field(default_factory=uuid4_string, frozen=True)
42
42
 
43
43
  def is_finished(self) -> bool:
44
44
  if (
@@ -59,7 +59,7 @@ class InspectionTask(Task):
59
59
  Base class for all inspection tasks which produce results to be uploaded.
60
60
  """
61
61
 
62
- inspection_id: str = Field(default_factory=uuid4_string)
62
+ inspection_id: str = Field(default_factory=uuid4_string, frozen=True)
63
63
  robot_pose: Pose = Field(default=None, init=True)
64
64
  metadata: Optional[dict] = Field(default_factory=dict)
65
65
  zoom: Optional[ZoomDescription] = Field(default=None)
@@ -0,0 +1,6 @@
1
+ from enum import Enum
2
+
3
+
4
+ class BatteryState(Enum):
5
+ Normal: str = "Normal"
6
+ Charging: str = "Charging"
@@ -1,11 +1,12 @@
1
1
  from dataclasses import dataclass
2
2
  from datetime import datetime
3
- from typing import List
3
+ from typing import List, Optional
4
4
 
5
5
  from alitra import Pose
6
6
  from transitions import State
7
7
 
8
8
  from robot_interface.models.mission.status import RobotStatus
9
+ from robot_interface.models.robots.battery_state import BatteryState
9
10
 
10
11
 
11
12
  @dataclass
@@ -30,6 +31,7 @@ class TelemetryPosePayload(TelemetryPayload):
30
31
  @dataclass
31
32
  class TelemetryBatteryPayload(TelemetryPayload):
32
33
  battery_level: float
34
+ battery_state: Optional[BatteryState] = None
33
35
 
34
36
 
35
37
  @dataclass
@@ -48,13 +50,6 @@ class DocumentInfo:
48
50
  url: str
49
51
 
50
52
 
51
- @dataclass
52
- class VideoStream:
53
- name: str
54
- url: str
55
- type: str
56
-
57
-
58
53
  @dataclass
59
54
  class RobotStatusPayload:
60
55
  isar_id: str
@@ -76,7 +71,6 @@ class RobotInfoPayload:
76
71
  robot_serial_number: str
77
72
  robot_asset: str
78
73
  documentation: List[DocumentInfo]
79
- video_streams: List[VideoStream]
80
74
  host: str
81
75
  port: int
82
76
  capabilities: List[str]
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