Skip to content

TehmoorG/drone-route

Repository files navigation

Drone Route Optimisation Project

Overview

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.

Repository Structure

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).
  • 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.

Setting Up the Environment

To set up the environment for this project, follow these steps:

  1. Install Conda: Download and install Conda from the official website.

  2. Clone the repository:

    git clone https://github.com/TehmoorG/drone-route.git
    cd drone-route
  3. Create the environment:

    conda env create -f environment.yml
  4. Activate the environment:

    conda activate drone_env
    

Running the Code

To run the project, use the main.py script, which allows you to interactively select between different functionalities:

    python scripts/main.py

Development Process

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.

Extending the Project

To adapt this project to a new area:

  1. Update the Data: Replace the current data with new geographical and healthcare facility data for the desired area.

  2. Modify the GeoJSON Files: Update or create new no-fly and avoidance zones specific to the new region.

  3. Run the Notebooks: Use the provided notebooks to test and tweak the program for the new region.

  4. Execute the Scripts: Run the provided scripts to generate optimized drone routes for the new area.

License

This project is licensed under the MIT License. See the LICENSE file for more details.

Contributing

Contributions are welcome! Please fork the repository and submit a pull request with your changes.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published