isar 1.16.9__tar.gz → 1.16.11__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.
- {isar-1.16.9 → isar-1.16.11}/.github/workflows/pythonpackage.yml +1 -1
- {isar-1.16.9 → isar-1.16.11}/Dockerfile +10 -4
- {isar-1.16.9 → isar-1.16.11}/PKG-INFO +8 -8
- {isar-1.16.9 → isar-1.16.11}/README.md +6 -6
- isar-1.16.11/SECURITY.md +18 -0
- {isar-1.16.9 → isar-1.16.11}/setup.py +1 -1
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/models/start_mission_definition.py +75 -39
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/log.py +3 -1
- isar-1.16.11/src/isar/config/predefined_mission_definition/default_exr.json +51 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/mqtt/mqtt_client.py +1 -1
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/mqtt/robot_status_publisher.py +15 -9
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/state_machine.py +9 -9
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/idle.py +3 -3
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/monitor.py +6 -6
- {isar-1.16.9 → isar-1.16.11}/src/isar/storage/slimm_storage.py +22 -18
- {isar-1.16.9 → isar-1.16.11}/src/isar/storage/utilities.py +5 -3
- {isar-1.16.9 → isar-1.16.11}/src/isar.egg-info/PKG-INFO +8 -8
- {isar-1.16.9 → isar-1.16.11}/src/isar.egg-info/SOURCES.txt +2 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/mission/step.py +1 -1
- {isar-1.16.9 → isar-1.16.11}/.dockerignore +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/ISSUE_TEMPLATE/feature.md +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/ISSUE_TEMPLATE/improvement.md +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/release.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/workflows/project_automations.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/workflows/publish_isar_base_image.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/workflows/pythonpublish.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/workflows/repository_dispatch_on_merge.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/.github/workflows/stale.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/.gitignore +0 -0
- {isar-1.16.9 → isar-1.16.11}/.pre-commit-config.yaml +0 -0
- {isar-1.16.9 → isar-1.16.11}/LICENSE +0 -0
- {isar-1.16.9 → isar-1.16.11}/docker-compose-turtlebot.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/docker-compose.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/docs/Makefile +0 -0
- {isar-1.16.9 → isar-1.16.11}/docs/make.bat +0 -0
- {isar-1.16.9 → isar-1.16.11}/docs/rst_processing.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/docs/source/conf.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/docs/source/index.rst +0 -0
- {isar-1.16.9 → isar-1.16.11}/docs/source/readme_link.md +0 -0
- {isar-1.16.9 → isar-1.16.11}/docs/state_machine_diagram.png +0 -0
- {isar-1.16.9 → isar-1.16.11}/main.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/pyproject.toml +0 -0
- {isar-1.16.9 → isar-1.16.11}/radixconfig.yml +0 -0
- {isar-1.16.9 → isar-1.16.11}/setup.cfg +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/api.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/models/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/models/models.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/schedule/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/schedule/scheduling_controller.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/security/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/apis/security/authentication.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/certs/ca-cert.pem +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/configuration_error.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/keyvault/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/keyvault/keyvault_error.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/keyvault/keyvault_service.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/logging.conf +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/maps/JSP1_intermediate_deck.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/maps/JSP1_weather_deck.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/maps/default_map.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/maps/klab_b.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/maps/klab_compressor.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/maps/klab_turtlebot.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/maps/turtleworld.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_mission_definition/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_mission_definition/default_mission.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_mission_definition/default_turtlebot.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_missions/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_missions/default.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_missions/default_turtlebot.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_poses/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/predefined_poses/predefined_poses.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/settings.env +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/config/settings.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/mission_planner/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/mission_planner/local_planner.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/mission_planner/mission_planner_interface.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/mission_planner/sequential_task_selector.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/mission_planner/task_selector_interface.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/communication/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/communication/message.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/communication/queues/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/communication/queues/queue_io.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/communication/queues/queue_timeout_error.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/communication/queues/queues.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/communication/queues/status_queue.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/models/mission_metadata/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/modules.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/auth/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/auth/azure_credentials.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/readers/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/readers/base_reader.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/mqtt/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/mqtt/robot_heartbeat_publisher.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/mqtt/robot_info_publisher.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/request_handler.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/stid/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/utilities/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/utilities/queue_utilities.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/utilities/scheduling_utilities.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/services/utilities/threaded_request.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/initialize.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/initiate.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/off.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/paused.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states/stop.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/state_machine/states_enum.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/storage/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/storage/blob_storage.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/storage/local_storage.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/storage/storage_interface.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar/storage/uploader.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar.egg-info/dependency_links.txt +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar.egg-info/requires.txt +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/isar.egg-info/top_level.txt +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/exceptions/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/exceptions/robot_exceptions.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/initialize/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/initialize/initialize_params.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/inspection/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/inspection/inspection.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/mission/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/mission/mission.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/mission/status.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/mission/task.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/robots/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/models/robots/robot_model.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/robot_interface.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/telemetry/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/telemetry/mqtt_client.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/telemetry/payloads.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/test_robot_interface.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/utilities/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/utilities/json_service.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/src/robot_interface/utilities/uuid_string_factory.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/conftest.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/turtlebot/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/turtlebot/config/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/turtlebot/config/maps/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/turtlebot/config/maps/turtleworld.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/turtlebot/config/missions/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/turtlebot/config/missions/default.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/integration/turtlebot/test_successful_mission.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/apis/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/apis/scheduler/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/apis/scheduler/test_scheduler_router.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/apis/security/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/apis/security/test_authentication.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/mission/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/mission/test_mission.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/models/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/models/communication/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/models/communication/test_queues.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/models/example_mission_definition.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/models/test_start_mission_definition.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/readers/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/readers/test_base_reader.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/readers/test_mission_reader.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/service_connections/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/service_connections/echo/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/service_connections/test_base_request_handler.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/utilities/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/utilities/test_queue_utilities.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/services/utilities/test_scheduling_utilities.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/state_machine/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/state_machine/states/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/state_machine/states/test_monitor.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/state_machine/test_state_machine.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/storage/test_blob_storage.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/isar/storage/test_uploader.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/__init__.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/blob_storage.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/mission_definition.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/mqtt_client.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/pose.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/request.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/robot_interface.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/status.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/step.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/task.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/mocks/token.py +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/test_data/test_json_file.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/test_data/test_map_config/test_map_config.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/test_data/test_mission_not_working.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/test_data/test_mission_working.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/test_data/test_mission_working_no_tasks.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/test_data/test_thermal_image_mission.json +0 -0
- {isar-1.16.9 → isar-1.16.11}/tests/test_modules.py +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
FROM python:3.10-slim
|
|
1
|
+
FROM python:3.10-slim AS builder
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
RUN apt-get update
|
|
4
|
+
RUN apt-get install -y --no-install-recommends build-essential gcc
|
|
5
|
+
RUN python -m pip install --upgrade pip
|
|
4
6
|
|
|
5
7
|
ENV VIRTUAL_ENV=/venv
|
|
6
8
|
RUN python -m venv --copies $VIRTUAL_ENV
|
|
7
9
|
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
8
10
|
|
|
9
|
-
RUN python -m pip install --upgrade pip
|
|
10
|
-
|
|
11
11
|
# Install dependencies before ISAR to cache pip installation
|
|
12
12
|
RUN mkdir -p src
|
|
13
13
|
COPY setup.py README.md ./
|
|
@@ -20,6 +20,12 @@ COPY . .
|
|
|
20
20
|
|
|
21
21
|
RUN pip install .
|
|
22
22
|
|
|
23
|
+
FROM python:3.10-slim
|
|
24
|
+
COPY --from=builder $VIRTUAL_ENV $VIRTUAL_ENV
|
|
25
|
+
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
|
|
26
|
+
|
|
27
|
+
WORKDIR /app
|
|
28
|
+
|
|
23
29
|
EXPOSE 3000
|
|
24
30
|
|
|
25
31
|
# Env variable for ISAR to know it is running in docker
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: isar
|
|
3
|
-
Version: 1.16.
|
|
3
|
+
Version: 1.16.11
|
|
4
4
|
Summary: Integration and Supervisory control of Autonomous Robots
|
|
5
5
|
Home-page: https://github.com/equinor/isar
|
|
6
6
|
Author: Equinor ASA
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python
|
|
|
12
12
|
Classifier: Topic :: Scientific/Engineering
|
|
13
13
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
14
14
|
Classifier: Topic :: Software Development :: Libraries
|
|
15
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Requires-Dist: alitra>=1.1.0
|
|
@@ -246,12 +246,6 @@ make docs
|
|
|
246
246
|
|
|
247
247
|
The documentation can now be viewed at `docs/build/html/index.html`.
|
|
248
248
|
|
|
249
|
-
### Contributing
|
|
250
|
-
|
|
251
|
-
We welcome all kinds of contributions, including code, bug reports, issues, feature requests, and documentation. The
|
|
252
|
-
preferred way of submitting a contribution is to either make an [issue](https://github.com/equinor/isar/issues) on
|
|
253
|
-
GitHub or by forking the project on GitHub and making a pull requests.
|
|
254
|
-
|
|
255
249
|
## Components
|
|
256
250
|
|
|
257
251
|
The system consists of two main components.
|
|
@@ -420,3 +414,9 @@ ISAR_MQTT_PASSWORD
|
|
|
420
414
|
```
|
|
421
415
|
|
|
422
416
|
If not specified the password will default to an empty string.
|
|
417
|
+
|
|
418
|
+
# Contributions
|
|
419
|
+
|
|
420
|
+
Equinor welcomes all kinds of contributions, including code, bug reports, issues, feature requests, and documentation
|
|
421
|
+
Please initiate your contribution by creating an [issue](https://github.com/equinor/isar/issues) or by forking the
|
|
422
|
+
project and making a pull requests. Commit messages shall be written according to [this guide](https://cbea.msgit-commit/).
|
|
@@ -192,12 +192,6 @@ make docs
|
|
|
192
192
|
|
|
193
193
|
The documentation can now be viewed at `docs/build/html/index.html`.
|
|
194
194
|
|
|
195
|
-
### Contributing
|
|
196
|
-
|
|
197
|
-
We welcome all kinds of contributions, including code, bug reports, issues, feature requests, and documentation. The
|
|
198
|
-
preferred way of submitting a contribution is to either make an [issue](https://github.com/equinor/isar/issues) on
|
|
199
|
-
GitHub or by forking the project on GitHub and making a pull requests.
|
|
200
|
-
|
|
201
195
|
## Components
|
|
202
196
|
|
|
203
197
|
The system consists of two main components.
|
|
@@ -366,3 +360,9 @@ ISAR_MQTT_PASSWORD
|
|
|
366
360
|
```
|
|
367
361
|
|
|
368
362
|
If not specified the password will default to an empty string.
|
|
363
|
+
|
|
364
|
+
# Contributions
|
|
365
|
+
|
|
366
|
+
Equinor welcomes all kinds of contributions, including code, bug reports, issues, feature requests, and documentation
|
|
367
|
+
Please initiate your contribution by creating an [issue](https://github.com/equinor/isar/issues) or by forking the
|
|
368
|
+
project and making a pull requests. Commit messages shall be written according to [this guide](https://cbea.msgit-commit/).
|
isar-1.16.11/SECURITY.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
## SECURITY.md template for isar (public repository)
|
|
2
|
+
|
|
3
|
+
If you discover a security vulnerability in this project, please follow these steps to responsibly disclose it:
|
|
4
|
+
|
|
5
|
+
1. **Do not** create a public GitHub issue for the vulnerability.
|
|
6
|
+
2. Follow our guideline for Responsible Disclosure Policy at [https://www.equinor.com/about-us/csirt](https://www.equinor.com/about-us/csirt) to report the issue
|
|
7
|
+
|
|
8
|
+
The following information will help us triage your report more quickly:
|
|
9
|
+
|
|
10
|
+
- Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
|
|
11
|
+
- Full paths of source file(s) related to the manifestation of the issue
|
|
12
|
+
- The location of the affected source code (tag/branch/commit or direct URL)
|
|
13
|
+
- Any special configuration required to reproduce the issue
|
|
14
|
+
- Step-by-step instructions to reproduce the issue
|
|
15
|
+
- Proof-of-concept or exploit code (if possible)
|
|
16
|
+
- Impact of the issue, including how an attacker might exploit the issue
|
|
17
|
+
|
|
18
|
+
We prefer all communications to be in English.
|
|
@@ -10,9 +10,11 @@ from isar.config.settings import settings
|
|
|
10
10
|
from isar.mission_planner.mission_planner_interface import MissionPlannerError
|
|
11
11
|
from robot_interface.models.mission.mission import Mission
|
|
12
12
|
from robot_interface.models.mission.step import (
|
|
13
|
-
|
|
13
|
+
DockingProcedure,
|
|
14
14
|
DriveToPose,
|
|
15
|
+
Localize,
|
|
15
16
|
RecordAudio,
|
|
17
|
+
STEPS,
|
|
16
18
|
TakeImage,
|
|
17
19
|
TakeThermalImage,
|
|
18
20
|
TakeThermalVideo,
|
|
@@ -29,6 +31,13 @@ class InspectionTypes(str, Enum):
|
|
|
29
31
|
audio: str = "Audio"
|
|
30
32
|
|
|
31
33
|
|
|
34
|
+
class TaskType(str, Enum):
|
|
35
|
+
Inspection: str = "inspection"
|
|
36
|
+
DriveTo: str = "drive_to"
|
|
37
|
+
Localization: str = "localization"
|
|
38
|
+
Dock: str = "dock"
|
|
39
|
+
|
|
40
|
+
|
|
32
41
|
class StartMissionInspectionDefinition(BaseModel):
|
|
33
42
|
type: InspectionTypes = Field(default=InspectionTypes.image)
|
|
34
43
|
inspection_target: InputPosition
|
|
@@ -39,6 +48,7 @@ class StartMissionInspectionDefinition(BaseModel):
|
|
|
39
48
|
|
|
40
49
|
|
|
41
50
|
class StartMissionTaskDefinition(BaseModel):
|
|
51
|
+
type: TaskType = Field(default=TaskType.Inspection)
|
|
42
52
|
pose: InputPose
|
|
43
53
|
inspections: List[StartMissionInspectionDefinition]
|
|
44
54
|
tag: Optional[str] = None
|
|
@@ -53,35 +63,13 @@ class StartMissionDefinition(BaseModel):
|
|
|
53
63
|
|
|
54
64
|
def to_isar_mission(mission_definition: StartMissionDefinition) -> Mission:
|
|
55
65
|
isar_tasks: List[Task] = []
|
|
56
|
-
|
|
57
|
-
duplicate_ids: List[str] = []
|
|
66
|
+
all_steps_in_mission: List[STEPS] = []
|
|
58
67
|
|
|
59
68
|
for task in mission_definition.tasks:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
create_inspection_step(
|
|
65
|
-
inspection_type=inspection.type,
|
|
66
|
-
duration=inspection.duration,
|
|
67
|
-
target=inspection.inspection_target.to_alitra_position(),
|
|
68
|
-
tag_id=tag_id,
|
|
69
|
-
metadata=inspection.metadata,
|
|
70
|
-
id=inspection.id,
|
|
71
|
-
)
|
|
72
|
-
for inspection in task.inspections
|
|
73
|
-
]
|
|
74
|
-
except ValueError as e:
|
|
75
|
-
raise MissionPlannerError(f"Failed to create task: {str(e)}")
|
|
76
|
-
|
|
77
|
-
duplicate_ids = get_duplicate_ids(items=inspection_steps)
|
|
78
|
-
if len(duplicate_ids) > 0:
|
|
79
|
-
raise MissionPlannerError(
|
|
80
|
-
f"Failed to create task: Duplicate step IDs are not allowed ({duplicate_ids})"
|
|
81
|
-
)
|
|
82
|
-
all_inspection_steps.extend(inspection_steps)
|
|
83
|
-
|
|
84
|
-
isar_task: Task = Task(steps=[drive_step, *inspection_steps], tag_id=tag_id)
|
|
69
|
+
steps: List[STEPS] = generate_steps(task)
|
|
70
|
+
all_steps_in_mission.extend(steps)
|
|
71
|
+
|
|
72
|
+
isar_task: Task = Task(steps=steps, tag_id=task.tag)
|
|
85
73
|
if task.id:
|
|
86
74
|
isar_task.id = task.id
|
|
87
75
|
isar_tasks.append(isar_task)
|
|
@@ -89,17 +77,8 @@ def to_isar_mission(mission_definition: StartMissionDefinition) -> Mission:
|
|
|
89
77
|
if not isar_tasks:
|
|
90
78
|
raise MissionPlannerError("Mission does not contain any valid tasks")
|
|
91
79
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
raise MissionPlannerError(
|
|
95
|
-
f"Failed to create mission: Duplicate task IDs are not allowed ({duplicate_ids})"
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
duplicate_ids = get_duplicate_ids(items=all_inspection_steps)
|
|
99
|
-
if len(duplicate_ids) > 0:
|
|
100
|
-
raise MissionPlannerError(
|
|
101
|
-
f"Failed to create task: Duplicate step IDs are not allowed ({duplicate_ids})"
|
|
102
|
-
)
|
|
80
|
+
check_for_duplicate_ids(isar_tasks)
|
|
81
|
+
check_for_duplicate_ids(all_steps_in_mission)
|
|
103
82
|
|
|
104
83
|
isar_mission: Mission = Mission(tasks=isar_tasks)
|
|
105
84
|
|
|
@@ -114,6 +93,63 @@ def to_isar_mission(mission_definition: StartMissionDefinition) -> Mission:
|
|
|
114
93
|
return isar_mission
|
|
115
94
|
|
|
116
95
|
|
|
96
|
+
def check_for_duplicate_ids(items: Union[List[Task], List[STEPS]]):
|
|
97
|
+
duplicate_ids = get_duplicate_ids(items=items)
|
|
98
|
+
if len(duplicate_ids) > 0:
|
|
99
|
+
raise MissionPlannerError(
|
|
100
|
+
f"Failed to create as there were duplicate IDs which is not allowed "
|
|
101
|
+
f"({duplicate_ids})"
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def generate_steps(task) -> List[STEPS]:
|
|
106
|
+
steps: List[STEPS] = []
|
|
107
|
+
try:
|
|
108
|
+
match task.type:
|
|
109
|
+
case TaskType.Inspection:
|
|
110
|
+
steps.extend(generate_steps_for_inspection_task(task=task))
|
|
111
|
+
case TaskType.DriveTo:
|
|
112
|
+
steps.append(generate_steps_for_drive_to_task(task=task))
|
|
113
|
+
case TaskType.Localization:
|
|
114
|
+
steps.append(generate_steps_for_localization_task(task=task))
|
|
115
|
+
case TaskType.Dock:
|
|
116
|
+
steps.append(generate_steps_for_dock_task())
|
|
117
|
+
except ValueError as e:
|
|
118
|
+
raise MissionPlannerError(f"Failed to create task: {str(e)}")
|
|
119
|
+
|
|
120
|
+
return steps
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def generate_steps_for_inspection_task(task: StartMissionTaskDefinition) -> List[STEPS]:
|
|
124
|
+
drive_step: DriveToPose = DriveToPose(pose=task.pose.to_alitra_pose())
|
|
125
|
+
|
|
126
|
+
inspection_steps: List[STEPS] = [
|
|
127
|
+
create_inspection_step(
|
|
128
|
+
inspection_type=inspection.type,
|
|
129
|
+
duration=inspection.duration,
|
|
130
|
+
target=inspection.inspection_target.to_alitra_position(),
|
|
131
|
+
tag_id=task.tag,
|
|
132
|
+
metadata=inspection.metadata,
|
|
133
|
+
id=inspection.id,
|
|
134
|
+
)
|
|
135
|
+
for inspection in task.inspections
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
return [drive_step, *inspection_steps]
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def generate_steps_for_drive_to_task(task: StartMissionTaskDefinition) -> DriveToPose:
|
|
142
|
+
return DriveToPose(pose=task.pose.to_alitra_pose())
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
def generate_steps_for_localization_task(task: StartMissionTaskDefinition) -> Localize:
|
|
146
|
+
return Localize(localization_pose=task.pose.to_alitra_pose())
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def generate_steps_for_dock_task() -> DockingProcedure:
|
|
150
|
+
return DockingProcedure(behavior="dock")
|
|
151
|
+
|
|
152
|
+
|
|
117
153
|
def create_inspection_step(
|
|
118
154
|
inspection_type: InspectionTypes,
|
|
119
155
|
duration: float,
|
|
@@ -54,7 +54,9 @@ def configure_azure_handler(log_config: dict, keyvault: Keyvault) -> logging.Han
|
|
|
54
54
|
"application-insights-connection-string"
|
|
55
55
|
).value
|
|
56
56
|
except KeyvaultError:
|
|
57
|
-
message: str =
|
|
57
|
+
message: str = (
|
|
58
|
+
f"CRITICAL ERROR: Missing connection string for Application Insights in key vault '{keyvault.name}'."
|
|
59
|
+
)
|
|
58
60
|
print(f"\n{message} \n")
|
|
59
61
|
raise ConfigurationError(message)
|
|
60
62
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mission_definition": {
|
|
3
|
+
"tasks": [
|
|
4
|
+
{
|
|
5
|
+
"pose": {
|
|
6
|
+
"position": {
|
|
7
|
+
"x": -3.2629,
|
|
8
|
+
"y": 3.0795,
|
|
9
|
+
"z": 0.0055,
|
|
10
|
+
"frame_name": "robot"
|
|
11
|
+
},
|
|
12
|
+
"orientation": {
|
|
13
|
+
"x": 0,
|
|
14
|
+
"y": 0,
|
|
15
|
+
"z": 0,
|
|
16
|
+
"w": 1,
|
|
17
|
+
"frame_name": "robot"
|
|
18
|
+
},
|
|
19
|
+
"frame_name": "robot"
|
|
20
|
+
},
|
|
21
|
+
"tag": "equinor_exR_tag_simulator",
|
|
22
|
+
"inspections": [
|
|
23
|
+
{
|
|
24
|
+
"type": "Image",
|
|
25
|
+
"inspection_target": {
|
|
26
|
+
"x": 6.6550,
|
|
27
|
+
"y": 3.7987,
|
|
28
|
+
"z": 0.6145,
|
|
29
|
+
"frame_name": "robot"
|
|
30
|
+
},
|
|
31
|
+
"analysis_types": "CarSeal, Rust",
|
|
32
|
+
"metadata": {
|
|
33
|
+
"zoom": "2x"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "ThermalVideo",
|
|
38
|
+
"inspection_target": {
|
|
39
|
+
"x": 6.6550,
|
|
40
|
+
"y": 3.7987,
|
|
41
|
+
"z": 0.6145,
|
|
42
|
+
"frame_name": "robot"
|
|
43
|
+
},
|
|
44
|
+
"analysis_types": "GasDetection",
|
|
45
|
+
"duration": 10
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
{isar-1.16.9 → isar-1.16.11}/src/isar/services/service_connections/mqtt/robot_status_publisher.py
RENAMED
|
@@ -72,15 +72,21 @@ class RobotStatusPublisher:
|
|
|
72
72
|
robot_status=combined_status,
|
|
73
73
|
previous_robot_status=previous_robot_status,
|
|
74
74
|
current_isar_state=self.state_machine.current_state,
|
|
75
|
-
current_mission_id=
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
75
|
+
current_mission_id=(
|
|
76
|
+
self.state_machine.current_mission.id
|
|
77
|
+
if self.state_machine.current_mission
|
|
78
|
+
else None
|
|
79
|
+
),
|
|
80
|
+
current_task_id=(
|
|
81
|
+
self.state_machine.current_task.id
|
|
82
|
+
if self.state_machine.current_task
|
|
83
|
+
else None
|
|
84
|
+
),
|
|
85
|
+
current_step_id=(
|
|
86
|
+
self.state_machine.current_step.id
|
|
87
|
+
if self.state_machine.current_step
|
|
88
|
+
else None
|
|
89
|
+
),
|
|
84
90
|
timestamp=datetime.utcnow(),
|
|
85
91
|
)
|
|
86
92
|
|
|
@@ -492,9 +492,9 @@ class StateMachine(object):
|
|
|
492
492
|
"mission_id": self.current_mission.id if self.current_mission else None,
|
|
493
493
|
"status": self.current_mission.status if self.current_mission else None,
|
|
494
494
|
"error_reason": error_message.error_reason if error_message else None,
|
|
495
|
-
"error_description":
|
|
496
|
-
|
|
497
|
-
|
|
495
|
+
"error_description": (
|
|
496
|
+
error_message.error_description if error_message else None
|
|
497
|
+
),
|
|
498
498
|
"timestamp": datetime.utcnow(),
|
|
499
499
|
},
|
|
500
500
|
cls=EnhancedJSONEncoder,
|
|
@@ -524,9 +524,9 @@ class StateMachine(object):
|
|
|
524
524
|
"task_id": task.id if task else None,
|
|
525
525
|
"status": task.status if task else None,
|
|
526
526
|
"error_reason": error_message.error_reason if error_message else None,
|
|
527
|
-
"error_description":
|
|
528
|
-
|
|
529
|
-
|
|
527
|
+
"error_description": (
|
|
528
|
+
error_message.error_description if error_message else None
|
|
529
|
+
),
|
|
530
530
|
"timestamp": datetime.utcnow(),
|
|
531
531
|
},
|
|
532
532
|
cls=EnhancedJSONEncoder,
|
|
@@ -558,9 +558,9 @@ class StateMachine(object):
|
|
|
558
558
|
"step_type": step.__class__.__name__ if step else None,
|
|
559
559
|
"status": step.status if step else None,
|
|
560
560
|
"error_reason": error_message.error_reason if error_message else None,
|
|
561
|
-
"error_description":
|
|
562
|
-
|
|
563
|
-
|
|
561
|
+
"error_description": (
|
|
562
|
+
error_message.error_description if error_message else None
|
|
563
|
+
),
|
|
564
564
|
"timestamp": datetime.utcnow(),
|
|
565
565
|
},
|
|
566
566
|
cls=EnhancedJSONEncoder,
|
|
@@ -25,9 +25,9 @@ class Idle(State):
|
|
|
25
25
|
|
|
26
26
|
def _run(self) -> None:
|
|
27
27
|
while True:
|
|
28
|
-
start_mission: Optional[
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
start_mission: Optional[StartMissionMessage] = (
|
|
29
|
+
self.state_machine.should_start_mission()
|
|
30
|
+
)
|
|
31
31
|
if start_mission:
|
|
32
32
|
self.state_machine.start_mission(
|
|
33
33
|
mission=start_mission.mission,
|
|
@@ -68,9 +68,9 @@ class Monitor(State):
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
try:
|
|
71
|
-
status: Union[
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
status: Union[StepStatus, MissionStatus] = (
|
|
72
|
+
self.step_status_thread.get_output()
|
|
73
|
+
)
|
|
74
74
|
except ThreadedRequestNotFinishedError:
|
|
75
75
|
time.sleep(self.state_machine.sleep_time)
|
|
76
76
|
continue
|
|
@@ -145,9 +145,9 @@ class Monitor(State):
|
|
|
145
145
|
self, mission: Mission, current_step: InspectionStep
|
|
146
146
|
) -> None:
|
|
147
147
|
try:
|
|
148
|
-
inspections: Sequence[
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
inspections: Sequence[Inspection] = (
|
|
149
|
+
self.state_machine.robot.get_inspections(step=current_step)
|
|
150
|
+
)
|
|
151
151
|
|
|
152
152
|
except (RobotRetrieveInspectionException, RobotException) as e:
|
|
153
153
|
self._set_error_message(e)
|
|
@@ -122,16 +122,18 @@ class SlimmStorage(StorageInterface):
|
|
|
122
122
|
"ImageMetadata.CameraOrientation2": str(array_of_orientation[1]),
|
|
123
123
|
"ImageMetadata.CameraOrientation3": str(array_of_orientation[2]),
|
|
124
124
|
"ImageMetadata.CameraOrientation4": str(array_of_orientation[3]),
|
|
125
|
-
"ImageMetadata.AnalysisMethods":
|
|
126
|
-
"analysis_type"
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
"ImageMetadata.AnalysisMethods": (
|
|
126
|
+
inspection.metadata.additional["analysis_type"]
|
|
127
|
+
if inspection.metadata.additional
|
|
128
|
+
and inspection.metadata.additional["analysis_type"]
|
|
129
|
+
else "N/A"
|
|
130
|
+
),
|
|
131
131
|
"ImageMetadata.Description": str(inspection.metadata.additional),
|
|
132
|
-
"ImageMetadata.FunctionalLocation":
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
"ImageMetadata.FunctionalLocation": (
|
|
133
|
+
inspection.metadata.tag_id # noqa: E501
|
|
134
|
+
if inspection.metadata.tag_id
|
|
135
|
+
else "N/A"
|
|
136
|
+
),
|
|
135
137
|
"Filename": filename,
|
|
136
138
|
"AttachedFile": (filename, inspection.data),
|
|
137
139
|
}
|
|
@@ -170,16 +172,18 @@ class SlimmStorage(StorageInterface):
|
|
|
170
172
|
"VideoMetadata.CameraOrientation2": str(array_of_orientation[1]),
|
|
171
173
|
"VideoMetadata.CameraOrientation3": str(array_of_orientation[2]),
|
|
172
174
|
"VideoMetadata.CameraOrientation4": str(array_of_orientation[3]),
|
|
173
|
-
"VideoMetadata.AnalysisMethods":
|
|
174
|
-
"analysis_type"
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
175
|
+
"VideoMetadata.AnalysisMethods": (
|
|
176
|
+
inspection.metadata.additional["analysis_type"]
|
|
177
|
+
if inspection.metadata.additional
|
|
178
|
+
and inspection.metadata.additional["analysis_type"]
|
|
179
|
+
else "N/A"
|
|
180
|
+
),
|
|
179
181
|
"VideoMetadata.Description": str(inspection.metadata.additional),
|
|
180
|
-
"VideoMetadata.FunctionalLocation":
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
"VideoMetadata.FunctionalLocation": (
|
|
183
|
+
inspection.metadata.tag_id # noqa: E501
|
|
184
|
+
if inspection.metadata.tag_id
|
|
185
|
+
else "N/A"
|
|
186
|
+
),
|
|
183
187
|
"Filename": filename,
|
|
184
188
|
"AttachedFile": (filename, inspection.data),
|
|
185
189
|
}
|
|
@@ -40,9 +40,11 @@ def construct_metadata_file(
|
|
|
40
40
|
"mission_date": datetime.utcnow().date(),
|
|
41
41
|
"isar_id": settings.ISAR_ID,
|
|
42
42
|
"robot_name": settings.ROBOT_NAME,
|
|
43
|
-
"analysis_type":
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
"analysis_type": (
|
|
44
|
+
inspection.metadata.additional["analysis_type"]
|
|
45
|
+
if inspection.metadata.additional
|
|
46
|
+
else "N/A"
|
|
47
|
+
),
|
|
46
48
|
},
|
|
47
49
|
"data": [
|
|
48
50
|
{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: isar
|
|
3
|
-
Version: 1.16.
|
|
3
|
+
Version: 1.16.11
|
|
4
4
|
Summary: Integration and Supervisory control of Autonomous Robots
|
|
5
5
|
Home-page: https://github.com/equinor/isar
|
|
6
6
|
Author: Equinor ASA
|
|
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python
|
|
|
12
12
|
Classifier: Topic :: Scientific/Engineering
|
|
13
13
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
14
14
|
Classifier: Topic :: Software Development :: Libraries
|
|
15
|
-
Requires-Python: >=3.
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Requires-Dist: alitra>=1.1.0
|
|
@@ -246,12 +246,6 @@ make docs
|
|
|
246
246
|
|
|
247
247
|
The documentation can now be viewed at `docs/build/html/index.html`.
|
|
248
248
|
|
|
249
|
-
### Contributing
|
|
250
|
-
|
|
251
|
-
We welcome all kinds of contributions, including code, bug reports, issues, feature requests, and documentation. The
|
|
252
|
-
preferred way of submitting a contribution is to either make an [issue](https://github.com/equinor/isar/issues) on
|
|
253
|
-
GitHub or by forking the project on GitHub and making a pull requests.
|
|
254
|
-
|
|
255
249
|
## Components
|
|
256
250
|
|
|
257
251
|
The system consists of two main components.
|
|
@@ -420,3 +414,9 @@ ISAR_MQTT_PASSWORD
|
|
|
420
414
|
```
|
|
421
415
|
|
|
422
416
|
If not specified the password will default to an empty string.
|
|
417
|
+
|
|
418
|
+
# Contributions
|
|
419
|
+
|
|
420
|
+
Equinor welcomes all kinds of contributions, including code, bug reports, issues, feature requests, and documentation
|
|
421
|
+
Please initiate your contribution by creating an [issue](https://github.com/equinor/isar/issues) or by forking the
|
|
422
|
+
project and making a pull requests. Commit messages shall be written according to [this guide](https://cbea.msgit-commit/).
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Dockerfile
|
|
5
5
|
LICENSE
|
|
6
6
|
README.md
|
|
7
|
+
SECURITY.md
|
|
7
8
|
docker-compose-turtlebot.yml
|
|
8
9
|
docker-compose.yml
|
|
9
10
|
main.py
|
|
@@ -62,6 +63,7 @@ src/isar/config/maps/klab_compressor.json
|
|
|
62
63
|
src/isar/config/maps/klab_turtlebot.json
|
|
63
64
|
src/isar/config/maps/turtleworld.json
|
|
64
65
|
src/isar/config/predefined_mission_definition/__init__.py
|
|
66
|
+
src/isar/config/predefined_mission_definition/default_exr.json
|
|
65
67
|
src/isar/config/predefined_mission_definition/default_mission.json
|
|
66
68
|
src/isar/config/predefined_mission_definition/default_turtlebot.json
|
|
67
69
|
src/isar/config/predefined_missions/__init__.py
|
|
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
|