ISAR - Integration and Supervisory control of Autonomous Robots - is a tool for integrating robot applications into Equinor systems. Through the ISAR API you can send commands to a robot to do missions and collect results from the missions.
Running the full ISAR system requires an installation of a robot which satisfies the required interface. isar-anymal is an implementation for the ANYmal robot.
take_video and take_thermal_video record normal-camera and thermal-camera video,
respectively. Both tasks require a robot pose, target position, and a finite, positive
duration in seconds. Optional zoom dimensions control the target size.
The integration generates visual_inspection_video_recording objects and executes
visual_inspection_video_recording_behavior_plugins::Inspect, which must be available
on the robot. Audio recording is disabled. Results are retrieved through data-navigator
and returned as ISAR Video or ThermalVideo inspections with the actual recorded
duration and the task's tag, description, and analysis types.
- Python 3.14+
- uv
uv sync --extra dev
This installs the registry version of ISAR from uv.lock; a sibling checkout is not required.
To work on ISAR and this integration together, clone the isar
repository as a sibling directory (../isar/). After syncing, replace the registry package with
an editable installation:
uv sync --locked --extra dev
uv pip install --python .venv/bin/python --no-deps --editable ../isar
uv run --no-sync pytest
Use uv run --no-sync for all commands while using the local checkout (including the lint commands
below). A normal uv run or uv sync can replace the editable installation with the locked registry
version; repeat the editable install after syncing. --frozen alone does not prevent syncing.
The --no-deps option keeps the integration's locked dependencies installed. Use an ISAR checkout
compatible with those dependencies; if its requirements change, reconcile them before continuing.
uv pip check --python .venv/bin/python can detect missing or incompatible installed dependencies.
Python source edits in the sibling checkout are picked up without reinstalling, but metadata or
dependency changes may require reinstalling and adjusting the environment. These local installs do not change
pyproject.toml or uv.lock.
To return to the locked registry version:
uv sync --locked --extra dev
uv run pytest
Some tests require proprietary test data stored in Azure Blob Storage. These tests are marked with @pytest.mark.requires_private_test_data and will be automatically skipped unless the AZURE_TEST_DATA_SAS_URL environment variable is set.
The test data is stored in the flotillatestsstorage storage account in the isar-anymal container. To run the full test suite, generate a SAS URL for this container and set it as an environment variable or include it in your .env file.
uv run pytest
uv run black --check .
uv run ruff check .
uv run mypy .
The dependencies used for this package are listed in pyproject.toml and locked in uv.lock. This ensures our builds
are predictable and deterministic. This project uses uv for dependency management:
uv lock
To update all dependencies to the latest versions:
uv lock --upgrade
The committed configuration and lockfile use registry packages, so --no-sources is not needed.
Keep local editable installations in the development environment rather than committing a sibling
path in tool.uv.sources: Dependabot and standalone checkouts cannot retrieve that external directory.