This project focuses on optimising drone routes for healthcare logistics in remote and urban areas. The software developed here calculates efficient routes for drones, considering various constraints such as no-fly zones, avoidance areas, battery life, and payload capacity. This system is particularly useful for delivering medical supplies to areas that are difficult to reach by traditional means.
This repository is organised as follows:
-
data/
:- Contains essential data files used in the project, such as healthcare facility locations..
-
map/
:- Stores GeoJSON files that define no-fly zones (
no_fly_zones.geojson
) and avoidance zones (avoidance_zones.geojson
).
- Stores GeoJSON files that define no-fly zones (
-
notebooks/
:- Contains Jupyter notebooks that document the development process, including testing and adaptation of the program for different areas.
advanced_drone_route.ipynb
: Development and testing of advanced drone route generation.create_no_fly_zones.ipynb
: Creation and testing of no-fly zones.drone_route.ipynb
: General testing of drone route calculations.
-
output/
:- Stores the outputs generated by the scripts, including route CSV files and pickled graph data.
-
scripts/
:- Contains the main Python scripts that drive the core functionality of the project.
generate_advanced_route.py
: Script for generating the advanced drone route.generate_simple_route.py
: Script for generating the simple drone route.generate_zones.py
: Script for generating no-fly and avoidance zones.main.py
: The main entry point to the project, allowing users to select various functionalities interactively.
-
src/
:- Contains the core logic and utility functions used throughout the project.
advanced_route_utils.py
: Functions specific to the advanced drone routing algorithm.common_route_utils.py
: General utility functions for routing.simple_route_utils.py
: Functions specific to the simple drone routing algorithm.zone_utils.py
: Functions for creating and managing no-fly and avoidance zones.
To set up the environment for this project, follow these steps:
-
Install Conda: Download and install Conda from the official website.
-
Clone the repository:
git clone https://github.com/TehmoorG/drone-route.git cd drone-route
-
Create the environment:
conda env create -f environment.yml
-
Activate the environment:
conda activate drone_env
To run the project, use the main.py
script, which allows you to interactively select between different functionalities:
python scripts/main.py
The development process is documented in the Jupyter notebooks within the notebooks/
directory. These notebooks provide insights into how the program was developed and tested. They also demonstrate how the system can be adapted to work in different geographical areas beyond Accra.
To adapt this project to a new area:
-
Update the Data: Replace the current data with new geographical and healthcare facility data for the desired area.
-
Modify the GeoJSON Files: Update or create new no-fly and avoidance zones specific to the new region.
-
Run the Notebooks: Use the provided notebooks to test and tweak the program for the new region.
-
Execute the Scripts: Run the provided scripts to generate optimized drone routes for the new area.
This project is licensed under the MIT License. See the LICENSE
file for more details.
Contributions are welcome! Please fork the repository and submit a pull request with your changes.