FireRS Situation Assessment and Observation Planning
FireRS Situation Assessment and Observation Planning (SAOP) is composed of several python modules:
- geodata: geographic and environmental data manipulation
- firemodel: wildfire propagation
- planning: high-level interface for UAV planning
and a C++ library (libsaop) with python interfaces:
- uav_planning: UAV planning core algorithms
- neptus: Communication with Neptus command and control infrastructure
- firemapping: Wildfire mapping algorithms
A GNU/Linux operating system with:
- a C++11 compiler (at least)
- python 3.5
- The following python packages:
docker/Dockerfile contains all the steps require to retrieve all dependencies on an Ubuntu 16.04 distribution.
pybind11 is present as a submodule of the current repository. To retrieve it:
git submodule init git submodule update
On your system
In detail, targets for the Makefile are:
build: compile the project (default target)
build-debug: compile libsaop with debugging symbols
build-testing: compile including libsaop tests with debugging symbols in the build
autobuild: recompile the project each time a source file is changed (requires "when-changed")
benchmark: Create a random fire scenario and benchmark observation plan search.
doc: generate libsaop python interface html documentation
clean: remove the build folder and python artifacts
test-python: run all python unit tests
test-cpp: run unittests specific to the C++ module only
test-python-cpp: run test interfacing the python and C++ codes.
docker: starts a shell in the docker container.
docker_build_container: Build/rebuild the docker image.
Additionally, SAOP cmake build can be configured manually with:
mkdir build/ cd build cmake .. make
This process will:
- build a C++ backend with python bindings
- build the Cython modules in
- ensure that the produced artifacts are located in the
python/source directory so that the python scripts can be invoke in straightforward manner.
A Dockerfile is provided to set up an environment with windninja and all python dependencies.
To build the container:
To start a shell in the container with the the code repository and the data repository mounted: