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 command 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-robot is a default implementation of such a robot.
For installation of isar-robot to use with ISAR, please follow the robot integration installation guide.
After installing isar-robot, it can be used through ISAR.
For local development, create a fork of the repository and clone the fork to your machine:
git clone https://github.com/<your-username>/isar-robot
cd isar-robot
It is recommended to create a virtual environment, see a guide for this here: https://docs.python.org/3/library/venv.html.
Then install the requirements and the package:
pip install -r requirements.txt -e .[dev]
Specific mission and step behaviours can be configured as enviorment variables. These are optional and do not have to be set. These allow for always failing normal missions, always failing normal steps, always failing localization missions, always failing localization steps, setting custom step durations, and setting custom mission durations. In this case "normal" means non-localization tasks.
The variable names and types are as follows:
STEP_DURATION_IN_SECONDS: float
MISSION_DURATION_IN_SECONDS: float
SHOULD_FAIL_NORMAL_MISSION: bool
SHOULD_FAIL_LOCALIZATION_MISSION: bool
SHOULD_FAIL_NORMAL_STEP: bool
SHOULD_FAIL_LOCALIZATION_STEP: bool
Every configuration variable is defined in settings.py, and they may all be overwritten by specifying the variables in a custom envoronment file in ISAR. This is done by creating a new ".env" file and adding the desired configuration variables. Note that the configuration variable must be prefixed with ROBOT_ when specified in the environment.
The dependencies used for this package are listed in pyproject.toml
and pinned in requirements.txt
. This ensures our builds are predictable and deterministic. This project uses pip-compile
(from pip-tools
) for this:
pip-compile --output-file=requirements.txt pyproject.toml
To update the requirements to the latest versions, run the same command with the --upgrade
flag:
pip-compile --output-file=requirements.txt pyproject.toml --upgrade
We welcome all kinds of contributions, including code, bug reports, issues, feature requests, and documentation. The preferred way of submitting a contribution is to either make an issue on github or by forking the project on github and making a pull request.