isar 1.24.1__tar.gz → 1.24.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.
- {isar-1.24.1 → isar-1.24.2}/PKG-INFO +1 -1
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/schedule/scheduling_controller.py +2 -8
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/state_machine.py +21 -6
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/idle.py +3 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/monitor.py +11 -7
- {isar-1.24.1 → isar-1.24.2}/src/isar.egg-info/PKG-INFO +1 -1
- {isar-1.24.1 → isar-1.24.2}/tests/isar/apis/scheduler/test_scheduler_router.py +1 -8
- {isar-1.24.1 → isar-1.24.2}/.dockerignore +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/release.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/workflows/compile_requirements.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/workflows/project_automations.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/workflows/publish_isar_base_image.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/workflows/pythonpackage.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/workflows/pythonpublish.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/.github/workflows/stale.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/.gitignore +0 -0
- {isar-1.24.1 → isar-1.24.2}/.pre-commit-config.yaml +0 -0
- {isar-1.24.1 → isar-1.24.2}/Dockerfile +0 -0
- {isar-1.24.1 → isar-1.24.2}/LICENSE +0 -0
- {isar-1.24.1 → isar-1.24.2}/README.md +0 -0
- {isar-1.24.1 → isar-1.24.2}/SECURITY.md +0 -0
- {isar-1.24.1 → isar-1.24.2}/docker-compose-turtlebot.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/docker-compose.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/docs/Makefile +0 -0
- {isar-1.24.1 → isar-1.24.2}/docs/make.bat +0 -0
- {isar-1.24.1 → isar-1.24.2}/docs/rst_processing.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/docs/source/conf.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/docs/source/index.rst +0 -0
- {isar-1.24.1 → isar-1.24.2}/docs/source/readme_link.md +0 -0
- {isar-1.24.1 → isar-1.24.2}/docs/state_machine_diagram.png +0 -0
- {isar-1.24.1 → isar-1.24.2}/main.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/pyproject.toml +0 -0
- {isar-1.24.1 → isar-1.24.2}/radixconfig.yml +0 -0
- {isar-1.24.1 → isar-1.24.2}/requirements.txt +0 -0
- {isar-1.24.1 → isar-1.24.2}/setup.cfg +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/api.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/models/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/models/models.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/models/start_mission_definition.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/schedule/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/security/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/apis/security/authentication.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/certs/ca-cert.pem +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/configuration_error.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/keyvault/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/keyvault/keyvault_error.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/keyvault/keyvault_service.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/log.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/logging.conf +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/maps/default_map.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/maps/klab_b.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/maps/klab_compressor.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/maps/klab_turtlebot.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/maps/turtleworld.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_mission_definition/default_exr.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_missions/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_missions/default.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_poses/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/settings.env +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/config/settings.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/mission_planner/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/mission_planner/local_planner.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/mission_planner/mission_planner_interface.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/mission_planner/sequential_task_selector.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/mission_planner/task_selector_interface.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/communication/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/communication/message.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/communication/queues/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/communication/queues/queue_io.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/communication/queues/queues.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/communication/queues/status_queue.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/models/mission_metadata/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/modules.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/script.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/auth/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/auth/azure_credentials.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/readers/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/readers/base_reader.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/mqtt/mqtt_client.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/request_handler.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/stid/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/utilities/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/utilities/queue_utilities.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/utilities/scheduling_utilities.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/services/utilities/threaded_request.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/initialize.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/initiate.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/off.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/offline.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/paused.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states/stop.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/state_machine/states_enum.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/storage/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/storage/blob_storage.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/storage/local_storage.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/storage/slimm_storage.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/storage/storage_interface.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/storage/uploader.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar/storage/utilities.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar.egg-info/SOURCES.txt +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar.egg-info/dependency_links.txt +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar.egg-info/entry_points.txt +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar.egg-info/requires.txt +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/isar.egg-info/top_level.txt +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/exceptions/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/initialize/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/initialize/initialize_params.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/inspection/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/inspection/inspection.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/mission/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/mission/mission.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/mission/status.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/mission/task.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/robots/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/models/robots/robot_model.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/robot_interface.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/telemetry/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/telemetry/media_connection_type.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/telemetry/mqtt_client.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/telemetry/payloads.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/test_robot_interface.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/utilities/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/utilities/json_service.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/conftest.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/turtlebot/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/turtlebot/config/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/turtlebot/config/missions/default.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/integration/turtlebot/test_successful_mission.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/apis/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/apis/scheduler/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/apis/security/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/apis/security/test_authentication.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/mission/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/mission/test_mission.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/models/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/models/communication/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/models/communication/test_queues.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/models/example_mission_definition.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/models/test_start_mission_definition.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/readers/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/readers/test_base_reader.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/readers/test_mission_reader.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/service_connections/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/service_connections/echo/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/utilities/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/state_machine/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/state_machine/states/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/state_machine/states/test_monitor.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/state_machine/test_state_machine.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/storage/test_blob_storage.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/isar/storage/test_uploader.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/__init__.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/blob_storage.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/mission_definition.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/mqtt_client.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/pose.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/request.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/robot_interface.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/status.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/task.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/mocks/token.py +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/test_data/test_json_file.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/test_data/test_map_config/test_map_config.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/test_data/test_mission_not_working.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/test_data/test_mission_working.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/test_data/test_mission_working_no_tasks.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/test_data/test_thermal_image_mission.json +0 -0
- {isar-1.24.1 → isar-1.24.2}/tests/test_modules.py +0 -0
|
@@ -21,13 +21,7 @@ from isar.mission_planner.mission_planner_interface import MissionPlannerError
|
|
|
21
21
|
from isar.services.utilities.scheduling_utilities import SchedulingUtilities
|
|
22
22
|
from isar.state_machine.states_enum import States
|
|
23
23
|
from robot_interface.models.mission.mission import Mission
|
|
24
|
-
from robot_interface.models.mission.task import
|
|
25
|
-
TASKS,
|
|
26
|
-
Localize,
|
|
27
|
-
MoveArm,
|
|
28
|
-
ReturnToHome,
|
|
29
|
-
)
|
|
30
|
-
from robot_interface.models.mission.task import Task
|
|
24
|
+
from robot_interface.models.mission.task import TASKS, Localize, MoveArm, ReturnToHome
|
|
31
25
|
|
|
32
26
|
|
|
33
27
|
class SchedulingController:
|
|
@@ -192,7 +186,7 @@ class SchedulingController:
|
|
|
192
186
|
|
|
193
187
|
state: States = self.scheduling_utilities.get_state()
|
|
194
188
|
|
|
195
|
-
if state
|
|
189
|
+
if state == States.Off:
|
|
196
190
|
error_message = (
|
|
197
191
|
f"Conflict - Stop command received in invalid state - State: {state}"
|
|
198
192
|
)
|
|
@@ -32,11 +32,7 @@ from isar.state_machine.states_enum import States
|
|
|
32
32
|
from robot_interface.models.exceptions.robot_exceptions import ErrorMessage
|
|
33
33
|
from robot_interface.models.initialize.initialize_params import InitializeParams
|
|
34
34
|
from robot_interface.models.mission.mission import Mission
|
|
35
|
-
from robot_interface.models.mission.status import
|
|
36
|
-
MissionStatus,
|
|
37
|
-
RobotStatus,
|
|
38
|
-
TaskStatus,
|
|
39
|
-
)
|
|
35
|
+
from robot_interface.models.mission.status import MissionStatus, RobotStatus, TaskStatus
|
|
40
36
|
from robot_interface.models.mission.task import TASKS, Task
|
|
41
37
|
from robot_interface.robot_interface import RobotInterface
|
|
42
38
|
from robot_interface.telemetry.mqtt_client import MqttClientInterface
|
|
@@ -134,7 +130,11 @@ class StateMachine(object):
|
|
|
134
130
|
},
|
|
135
131
|
{
|
|
136
132
|
"trigger": "stop",
|
|
137
|
-
"source": [
|
|
133
|
+
"source": [
|
|
134
|
+
self.initiate_state,
|
|
135
|
+
self.monitor_state,
|
|
136
|
+
self.idle_state,
|
|
137
|
+
],
|
|
138
138
|
"dest": self.stop_state,
|
|
139
139
|
"before": self._stop,
|
|
140
140
|
},
|
|
@@ -371,6 +371,11 @@ class StateMachine(object):
|
|
|
371
371
|
self.iterate_current_task()
|
|
372
372
|
|
|
373
373
|
def _mission_stopped(self) -> None:
|
|
374
|
+
if self.current_mission is None:
|
|
375
|
+
self._queue_empty_response()
|
|
376
|
+
self.reset_state_machine()
|
|
377
|
+
return
|
|
378
|
+
|
|
374
379
|
self.current_mission.status = MissionStatus.Cancelled
|
|
375
380
|
|
|
376
381
|
for task in self.current_mission.tasks:
|
|
@@ -588,6 +593,16 @@ class StateMachine(object):
|
|
|
588
593
|
task_status=self.current_task.status,
|
|
589
594
|
)
|
|
590
595
|
|
|
596
|
+
def _queue_empty_response(self):
|
|
597
|
+
self.queues.stop_mission.output.put(
|
|
598
|
+
ControlMissionResponse(
|
|
599
|
+
mission_id="None",
|
|
600
|
+
mission_status="None",
|
|
601
|
+
task_id="None",
|
|
602
|
+
task_status="None",
|
|
603
|
+
)
|
|
604
|
+
)
|
|
605
|
+
|
|
591
606
|
|
|
592
607
|
def main(state_machine: StateMachine):
|
|
593
608
|
"""Starts a state machine instance."""
|
|
@@ -36,6 +36,9 @@ class Idle(State):
|
|
|
36
36
|
|
|
37
37
|
def _run(self) -> None:
|
|
38
38
|
while True:
|
|
39
|
+
if self.state_machine.should_stop_mission():
|
|
40
|
+
transition = self.state_machine.stop # type: ignore
|
|
41
|
+
break
|
|
39
42
|
start_mission: Optional[StartMissionMessage] = (
|
|
40
43
|
self.state_machine.should_start_mission()
|
|
41
44
|
)
|
|
@@ -49,7 +49,6 @@ class Monitor(State):
|
|
|
49
49
|
if self.task_status_thread:
|
|
50
50
|
self.task_status_thread.wait_for_thread()
|
|
51
51
|
self.task_status_thread = None
|
|
52
|
-
self.request_status_failure_counter = 0
|
|
53
52
|
|
|
54
53
|
def _run(self) -> None:
|
|
55
54
|
transition: Callable
|
|
@@ -76,15 +75,19 @@ class Monitor(State):
|
|
|
76
75
|
except ThreadedRequestNotFinishedError:
|
|
77
76
|
time.sleep(self.state_machine.sleep_time)
|
|
78
77
|
continue
|
|
79
|
-
|
|
80
78
|
except (
|
|
81
79
|
RobotCommunicationTimeoutException,
|
|
82
80
|
RobotCommunicationException,
|
|
83
81
|
) as e:
|
|
84
|
-
|
|
85
|
-
if
|
|
82
|
+
retry_limit_exceeded: bool = self._check_if_exceeded_retry_limit(e)
|
|
83
|
+
if retry_limit_exceeded:
|
|
84
|
+
self.logger.error(
|
|
85
|
+
f"Monitoring task {self.state_machine.current_task.id[:8]} failed "
|
|
86
|
+
f"because: {e.error_description}"
|
|
87
|
+
)
|
|
86
88
|
status = TaskStatus.Failed
|
|
87
89
|
else:
|
|
90
|
+
time.sleep(self.state_machine.sleep_time)
|
|
88
91
|
continue
|
|
89
92
|
|
|
90
93
|
except RobotTaskStatusException as e:
|
|
@@ -111,7 +114,7 @@ class Monitor(State):
|
|
|
111
114
|
)
|
|
112
115
|
break
|
|
113
116
|
|
|
114
|
-
if self.state_machine.current_task
|
|
117
|
+
if self.state_machine.current_task is None:
|
|
115
118
|
self.state_machine.iterate_current_task()
|
|
116
119
|
|
|
117
120
|
self.state_machine.current_task.status = status
|
|
@@ -142,7 +145,7 @@ class Monitor(State):
|
|
|
142
145
|
)
|
|
143
146
|
|
|
144
147
|
self.state_machine.iterate_current_task()
|
|
145
|
-
if self.state_machine.current_task
|
|
148
|
+
if self.state_machine.current_task is None:
|
|
146
149
|
transition = self.state_machine.full_mission_finished # type: ignore
|
|
147
150
|
break
|
|
148
151
|
|
|
@@ -193,6 +196,7 @@ class Monitor(State):
|
|
|
193
196
|
self.logger.info(f"Inspection: {str(inspection.id)[:8]} queued for upload")
|
|
194
197
|
|
|
195
198
|
def _report_task_status(self, task: Task) -> None:
|
|
199
|
+
self.request_status_failure_counter = 0
|
|
196
200
|
if task.status == TaskStatus.Failed:
|
|
197
201
|
self.logger.warning(
|
|
198
202
|
f"Task: {str(task.id)[:8]} was reported as failed by the robot"
|
|
@@ -215,7 +219,7 @@ class Monitor(State):
|
|
|
215
219
|
)
|
|
216
220
|
self.state_machine.current_task.error_message = error_message
|
|
217
221
|
|
|
218
|
-
def
|
|
222
|
+
def _check_if_exceeded_retry_limit(
|
|
219
223
|
self, e: Union[RobotCommunicationTimeoutException, RobotCommunicationException]
|
|
220
224
|
) -> bool:
|
|
221
225
|
self.state_machine.current_mission.error_message = ErrorMessage(
|
|
@@ -269,6 +269,7 @@ class TestStopMission:
|
|
|
269
269
|
valid_states = [
|
|
270
270
|
States.Initiate,
|
|
271
271
|
States.Initialize,
|
|
272
|
+
States.Idle,
|
|
272
273
|
States.Monitor,
|
|
273
274
|
States.Paused,
|
|
274
275
|
States.Stop,
|
|
@@ -286,14 +287,6 @@ class TestStopMission:
|
|
|
286
287
|
assert response.status_code == HTTPStatus.OK
|
|
287
288
|
assert response.json() == jsonable_encoder(mock_control_mission_response)
|
|
288
289
|
|
|
289
|
-
@mock.patch.object(SchedulingUtilities, "get_state", mock_return_idle)
|
|
290
|
-
@mock.patch.object(
|
|
291
|
-
SchedulingUtilities, "stop_mission", mock_control_mission_response
|
|
292
|
-
)
|
|
293
|
-
def test_can_not_stop_mission_in_idle(self, client: TestClient):
|
|
294
|
-
response = client.post(url=self.schedule_stop_mission_path)
|
|
295
|
-
assert response.status_code == HTTPStatus.CONFLICT
|
|
296
|
-
|
|
297
290
|
@mock.patch.object(SchedulingUtilities, "get_state", mock_return_off)
|
|
298
291
|
@mock.patch.object(
|
|
299
292
|
SchedulingUtilities, "stop_mission", mock_control_mission_response
|
|
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
|
|
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
|
{isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_mission_definition/default_mission.json
RENAMED
|
File without changes
|
{isar-1.24.1 → isar-1.24.2}/src/isar/config/predefined_mission_definition/default_turtlebot.json
RENAMED
|
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
|
{isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py
RENAMED
|
File without changes
|
{isar-1.24.1 → isar-1.24.2}/src/isar/services/service_connections/mqtt/robot_info_publisher.py
RENAMED
|
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
|
|
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
|
{isar-1.24.1 → isar-1.24.2}/tests/isar/services/service_connections/test_base_request_handler.py
RENAMED
|
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
|