- Notifications
You must be signed in to change notification settings - Fork3
Planning to monitor wildfires with a fleet of UAVs
License
laas/fire-rs-saop
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
FireRS Situation Assessment and Observation Planning (SAOP) is a software for planning, execution and supervision of wildfire monitoring missions with fleets of UAVs.
FireRS SAOP is composed of several python packages:
fire_rs.geodata
: geographic and environmental data manipulationfire_rs.firemodel
: wildfire propagationfire_rs.planning
: high-level interface for UAV planningfire_rs.monitoring
: high-level functionalities of the wildfire monitoring missionfire_rs.simulation
: create and control a synthetic wildfire in the Morse robotic simulatorThose can be found in the
python
directory.
A C++ library (libsaop) implementing:
A VNS-based observation planning algorithm for wildfire monitoring.
The communication withNeptus andDune software for the operation of unmanned vehicles.
A trivial wildfire mapping algorithm.
The functionality provided bylibsaop is also exposed trough three python interfaces:
- uav_planning: Core planning algorithm
- neptus: Communication with Neptus and Dune
- firemapping: mapping algorithms
And a ROS package (supersaop) for real time execution of SAOP with real or simulated UAVs in a real or synthetic wildfire scenario.
The easiest way to start with SAOP is using docker.
To build the container:
./docker/run.bash build
The filedocker/Dockerfile
contains all the steps to build a SAOP-ready Ubuntu 18.04 image.
To start a shell in the container with the the code repository and the data repository mounted:
./docker/run.bash start
The/docker/run.bash
is the recommended way to build and run the SAOP docker container as it sets up some X11 bindings from the host.
(If you are using docker, skip this section and continue withGeographic data)
The core functions of FireRS SAOP require running a GNU/Linux operating system (Ubuntu 18.04 and Fedora 29 tested) with:
- cmake
- a C++11 compiler
- Boost
- python 3.5
- Cython
- OpenCV
- pybind11
- gdal
- windninja
- The following python packages:
- affine
- cv2
- GDAL
- joblib
- matplotlib
- numpy
- pandas
- pybind11
- pytz
- scikit-image
- scipy
- six
Using Ubuntu, run asroot:
apt install g++ cmake python3 cython3 python3-gdal python3-setuptools\python3-pip python3-affine python3-tz python3-pandas python3-numpy\python3-matplotlib libboost-all-dev libgdal-dev libopencv-shape\python3-opencvpip3 install pybind11 joblib scikit-image scipy
pybind11 is present as a submodule of the current repository. To retrieve it:
git submodule initgit submodule update
Optionally, for the real time execution:
On top of the software requierements, some geographic data are needed in order to propagate a fire in the area of your choice.You should set an environment variableFIRERS_DATA
containing the path to a folder with 3 folders inside following this structure:
firers_data/
dem/
landcover/
wind/
Some sample files can be found in:https://github.com/laas/fire-rs-data.For using SAOP in other regions you have to acquire the corresponding DEM and lancover maps for the area.(A good source for Europe are the European Digital Elevation Model (EU-DEM) and Corine Land Cover (CLC) 2006)
Additionally, an environment variableWINDNINJA_CLI_PATH
should be set to the path where the windninja executable can be found.windninja_sWindninja will be creating files in thewind
folder as needed with the local wind for the DEMs in thedem
folder.
Just domake build
.
In detail, targets for the Makefile are:
build
: compile the project (default target)build-debug
: compilelibsaop with debugging symbolsbuild-testing
: compile includinglibsaop tests with debugging symbols in the buildautobuild
: 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
: generatelibsaop python interface html documentation (needssphinx)clean
: remove the build folder and python artifactstest-python
: run all python unit teststest-cpp
: run unittests specific to the C++ module onlytest-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 buildcmake ..make
This process will:
- build a C++ backend with python bindings
- build the Cython modules in
python/
- ensure that the produced artifacts are located in the
python/
source directory so that the python scripts can be invoke in straightforward manner.
Copyright (c) 2017-2019, CNRS-LAASAll rights reserved.Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met:* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THEIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AREDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLEFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIALDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ORSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVERCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USEOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
If you use fire-rs-saop in a scientific publication, we would appreciate citations to:
- Rafael Bailon-Ruiz, Arthur Bit-Monnot, Simon Lacroix.Planning to Monitor Wildfires with a Fleet of UAVs,2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Oct 2018, Madrid, Spain. DOI:10.1109/IROS.2018.8593859
About
Planning to monitor wildfires with a fleet of UAVs