DSSE

DSSE: An environment for simulation of reinforcement learning-empowered drone swarm maritime search and rescue missions - Published in JOSS (2024)

https://github.com/pfeinsper/drone-swarm-search

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 8 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
    1 of 12 committers (8.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

ai multi-agent-reinforcement-learning multiagent-reinforcement-learning pettingzoo pygame python rl
Last synced: 6 months ago · JSON representation ·

Repository

The Drone Swarm Search project provides an environment for SAR missions built on PettingZoo, where agents, represented by drones, are tasked with locating targets identified as shipwrecked individuals.

Basic Info
Statistics
  • Stars: 50
  • Watchers: 2
  • Forks: 7
  • Open Issues: 0
  • Releases: 9
Topics
ai multi-agent-reinforcement-learning multiagent-reinforcement-learning pettingzoo pygame python rl
Created about 3 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct Citation Codemeta

README.md

Tests Status 🧪 Docs Deployment 📝 PyPI Release 🚀 License: MIT PettingZoo version dependency DOI JOSS DOI GitHub stars Downloads

DSSE Icon Drone Swarm Search Environment (DSSE)

Welcome to the official GitHub repository for the Drone Swarm Search Environment (DSSE). This project offers a comprehensive simulation platform designed for developing, testing, and refining search strategies using drone swarms. Researchers and developers will find a versatile toolset supporting a broad spectrum of simulations, which facilitates the exploration of complex drone behaviors and interactions in dynamic, real-world scenarios.

In this repository, we have implemented two distinct types of environments. The first is a dynamic environment that simulates maritime search and rescue operations for shipwreck survivors. It models the movement of individuals in the sea using a dynamic probability matrix, with the objective for drones being to locate and identify these individuals. The second is a environment utilizing the Lagrangian particle simulation from the open-source Opendrift library, which incorporates real-world ocean and wind data to create a probability matrix for drone SAR tasks. In this scenario, drones are tasked with covering the full search area within the lowest time possible, while prioritizing higher probability areas.

📚 Documentation Links

  • Documentation Site: Access comprehensive documentation including tutorials, and usage examples for the Drone Swarm Search Environment (DSSE). Ideal for users seeking detailed information about the project's capabilities and how to integrate them into their own applications.

  • Algorithm Details: Explore in-depth discussions and source code for the algorithms powering the DSSE. This section is perfect for developers interested in the technical underpinnings and enhancements of the search algorithms.

  • PyPI Repository: Visit the PyPI page for DSSE to download the latest release, view release histories, and read additional installation instructions.

DSSE - Search Environment

🎥 Visual Demonstrations


Above: A simulation showing how drones adjust their search pattern over a grid.

🎯 Outcome

| If target is found | If target is not found | :-------------------------:|:-------------------------: | | |

⚡ Quick Start

⚙️ Installation

Quickly install DSSE using pip: bash pip install DSSE `

🛠️ Basic Env Search Usage

```python from DSSE import DroneSwarmSearch

env = DroneSwarmSearch( gridsize=40, rendermode="human", rendergrid=True, rendergradient=True, vector=(1, 1), timesteplimit=300, personamount=4, dispersioninc=0.05, personinitialposition=(15, 15), droneamount=2, dronespeed=10, probabilityofdetection=0.9, prerender_time=0, )

def randompolicy(obs, agents): actions = {} for agent in agents: actions[agent] = env.actionspace(agent).sample() return actions

opt = { "dronespositions": [(10, 5), (10, 10)], "personpod_multipliers": [0.1, 0.4, 0.5, 1.2], "vector": (0.3, 0.3), } observations, info = env.reset(options=opt)

rewards = 0 done = False while not done: actions = randompolicy(observations, env.getagents()) observations, rewards, terminations, truncations, infos = env.step(actions) done = any(terminations.values()) or any(truncations.values())

```

DSSE - Coverage Environment

🎥 Visual Demonstrations


Above: A simulation showing how drones adjust their search pattern over a grid.

⚡ Quick Start

⚙️ Installation

Install DSSE with coverage support using pip: bash pip install DSSE[coverage] `

🛠️ Basic Coverage Usage

```python from DSSE import CoverageDroneSwarmSearch

env = CoverageDroneSwarmSearch( droneamount=3, rendermode="human", disasterposition=(-24.04, -46.17), # (lat, long) prerender_time=10, # hours to simulate )

opt = { "drones_positions": [(0, 10), (10, 10), (20, 10)], } obs, info = env.reset(options=opt)

step = 0 while env.agents: step += 1 actions = {agent: env.action_space(agent).sample() for agent in env.agents} observations, rewards, terminations, truncations, infos = env.step(actions)

print(infos["drone0"]) ```

🤝 Contributing

We welcome contributions from developers to improve and expand our repository. Here are some ways you can contribute:

  1. Creating Issues: If you encounter any bugs, have suggestions for new features, or have a question, please create an issue on our GitHub repository. This helps us keep track of what needs to be addressed and prioritize improvements.

  2. Submitting Pull Requests (PRs): We encourage you to fork the repository and make your own modifications. Once you have made changes, submit a pull request for review. Ensure your PR includes a clear description of the changes and any relevant information to help us understand the modifications.

Testing Your Contributions

To maintain code stability, we have a suite of tests that must be run before any code is merged. We use Pytest for testing. Before submitting your pull request, make sure to run these tests to ensure that your changes do not introduce any new issues.

To run the tests, use the following command:

bash pytest DSSE/tests/

Our test suite is divided into several parts, each serving a specific purpose:

  • Environment Testing: Found in DSSE/tests/test_env.py and DSSE/tests/test_env_coverage.py, these tests ensure that both the search and coverage environments are set up correctly and function as expected. This includes validating the initialization, state updates, and interaction mechanisms for both environments.

  • Matrix Testing: Contained in DSSE/tests/test_matrix.py, these tests validate the correctness and functionality of the probability matrix.

📖 How to cite this work

If you use this package, please consider citing it with this piece of BibTeX:

@software{Laffranchi_Falcao_DSSE_An_environment_2024, author = { Laffranchi Falcão, Renato and Custódio Campos de Oliveira, Jorás and Britto Aragão Andrade, Pedro Henrique and Ribeiro Rodrigues, Ricardo and Jailson Barth, Fabrício and Basso Brancalion, José Fernando }, doi = {10.5281/zenodo.12659848}, title = {{DSSE: An environment for simulation of reinforcement learning-empowered drone swarm maritime search and rescue missions}}, url = {https://doi.org/10.5281/zenodo.12659848}, version = {0.2.5}, month = jul, year = {2024} }

Owner

  • Name: Projeto Final de Engenharia do Insper
  • Login: pfeinsper
  • Kind: organization
  • Email: pfe@insper.edu.br

Repositórios do Projeto Final de Engengaria

JOSS Publication

DSSE: An environment for simulation of reinforcement learning-empowered drone swarm maritime search and rescue missions
Published
July 11, 2024
Volume 9, Issue 99, Page 6746
Authors
Renato Laffranchi Falcão ORCID
Insper, Brazil
Jorás Custódio Campos de Oliveira ORCID
Insper, Brazil
Pedro Henrique Britto Aragão Andrade ORCID
Insper, Brazil
Ricardo Ribeiro Rodrigues ORCID
Insper, Brazil
Fabrício Jailson Barth ORCID
Insper, Brazil
José Fernando Basso Brancalion ORCID
Embraer, Brazil
Editor
Kanishka B. Narayan ORCID
Tags
PettingZoo reinforcement learning multi-agent drone swarms maritime search and rescue shipwrecked people

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Laffranchi Falcão"
  given-names: "Renato"
  orcid: "https://orcid.org/0009-0001-5943-0481"
- family-names: "Custódio Campos de Oliveira"
  given-names: "Jorás"
  orcid: "https://orcid.org/0009-0005-1883-8703"
- family-names: "Britto Aragão Andrade"
  given-names: "Pedro Henrique"
  orcid: "https://orcid.org/0009-0000-0056-4322"
- family-names: "Ribeiro Rodrigues"
  given-names: "Ricardo"
  orcid: "https://orcid.org/0009-0008-1237-3353"
- family-names: "Jailson Barth"
  given-names: "Fabrício"
  orcid: "https://orcid.org/0000-0001-6263-121X"
- family-names: "Basso Brancalion"
  given-names: "José Fernando"
  orcid: "https://orcid.org/0000-0002-4387-0204"
title: "DSSE: An environment for simulation of reinforcement learning-empowered drone swarm maritime search and rescue missions"
version: 0.2.5
doi: 10.5281/zenodo.12659848
date-released: 2024-07-05
url: "https://doi.org/10.5281/zenodo.12659848"

CodeMeta (codemeta.json)

{
  "@context": "https://raw.githubusercontent.com/codemeta/codemeta/master/codemeta.jsonld",
  "@type": "Code",
  "author": [
    {
      "@id": "http://orcid.org/0009-0000-0056-4322",
      "@type": "Person",
      "email": "pedroa3@al.insper.edu.br",
      "name": "Pedro2712",
      "affiliation": "INSPER"
    },
    {
      "@id": "",
      "@type": "Person",
      "email": "",
      "name": "Luis Filipe Carrete",
      "affiliation": "INSPER"
    },
    {
      "@id": "https://orcid.org/0009-0008-1237-3353",
      "@type": "Person",
      "email": "ricardorr7@al.insper.edu.br",
      "name": "RicardoRibeiroRodrigues",
      "affiliation": "INSPER"
    },
    {
      "@id": "",
      "@type": "Person",
      "email": "",
      "name": "leonardo.malta",
      "affiliation": "INSPER"
    },
    {
      "@id": "",
      "@type": "Person",
      "email": "",
      "name": "Manuel Castanares",
      "affiliation": "INSPER"
    },
    {
      "@id": "https://orcid.org/0009-0001-5943-0481",
      "@type": "Person",
      "email": "renatolf1@al.insper.edu.br",
      "name": "renatex333",
      "affiliation": "INSPER"
    },
    {
      "@id": "",
      "@type": "Person",
      "email": "",
      "name": "Enrico",
      "affiliation": "INSPER"
    },
    {
      "@id": "",
      "@type": "Person",
      "email": "",
      "name": "leonardodma",
      "affiliation": "INSPER"
    },
    {
      "@id": "https://orcid.org/0000-0001-6263-121X",
      "@type": "Person",
      "email": "fabriciojb@insper.edu.br",
      "name": "Fabricio J Barth",
      "affiliation": "INSPER"
    },
    {
      "@id": "https://orcid.org/0009-0005-1883-8703",
      "@type": "Person",
      "email": "jorascco@al.insper.edu.br",
      "name": "Jorás Oliveira",
      "affiliation": "INSPER"
    }
  ],
  "identifier": "",
  "codeRepository": "https://github.com/pfeinsper/drone-swarm-search",
  "datePublished": "2024-04-25",
  "dateModified": "2024-04-25",
  "dateCreated": "2024-04-25",
  "description": "The Drone Swarm Search project provides an environment for SAR missions built on PettingZoo, where agents, represented by drones, are tasked with locating targets identified as shipwrecked individuals.",
  "keywords": "reinforcement learning, AI, multi-agent, marl, pettingzoo",
  "license": "MIT",
  "title": "DSSE",
  "version": "v1.0.3"
}

GitHub Events

Total
  • Issues event: 2
  • Watch event: 28
  • Issue comment event: 14
  • Push event: 1
  • Pull request review comment event: 13
  • Pull request review event: 8
  • Pull request event: 5
  • Fork event: 5
  • Create event: 1
Last Year
  • Issues event: 2
  • Watch event: 28
  • Issue comment event: 14
  • Push event: 1
  • Pull request review comment event: 13
  • Pull request review event: 8
  • Pull request event: 5
  • Fork event: 5
  • Create event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 567
  • Total Committers: 12
  • Avg Commits per committer: 47.25
  • Development Distribution Score (DDS): 0.7
Past Year
  • Commits: 2
  • Committers: 2
  • Avg Commits per committer: 1.0
  • Development Distribution Score (DDS): 0.5
Top Committers
Name Email Commits
Pedro2712 p****2@g****m 170
renatex333 r****2@h****m 103
RicardoRibeiroRodrigues r****r@g****m 88
leonardo.malta l****a@t****r 43
Luis Filipe Carrete l****z@l****m 39
JJ j****o@g****m 38
Manuel Castanares m****4@g****m 36
Enrico e****i@g****m 21
Luis Filipe Carrete l****z@l****m 14
leonardodma l****a@a****r 13
Fabricio J Barth f****h@g****m 1
Leonardo Malta 5****a 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 32
  • Total pull requests: 68
  • Average time to close issues: 12 days
  • Average time to close pull requests: 3 days
  • Total issue authors: 7
  • Total pull request authors: 6
  • Average comments per issue: 0.41
  • Average comments per pull request: 0.07
  • Merged pull requests: 56
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 6
  • Average time to close issues: N/A
  • Average time to close pull requests: 7 days
  • Issue authors: 1
  • Pull request authors: 4
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.33
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • Pedro2712 (39)
  • Manuel-castanares (14)
  • RicardoRibeiroRodrigues (13)
  • draabe (4)
  • JorasOliveira (4)
  • fbarth (3)
  • lfcarrete (3)
  • renatex333 (3)
  • wob86 (1)
  • enricofd (1)
  • tejaDhulipala (1)
Pull Request Authors
  • RicardoRibeiroRodrigues (52)
  • Pedro2712 (45)
  • renatex333 (36)
  • JorasOliveira (12)
  • Manuel-castanares (3)
  • DP-Coder-11 (2)
  • tejaDhulipala (2)
  • fbarth (1)
Top Labels
Issue Labels
documentation (8) good first issue (5) enhancement (4)
Pull Request Labels
good first issue (2) bug (1) documentation (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 181 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 49
  • Total maintainers: 3
pypi.org: dsse

The Drone Swarm Search project provides an environment for SAR missions built on PettingZoo, where agents, represented by drones, are tasked with locating targets identified as shipwrecked individuals.

  • Versions: 49
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 181 Last month
Rankings
Dependent packages count: 7.3%
Average: 29.5%
Forks count: 30.5%
Stargazers count: 39.4%
Dependent repos count: 40.9%
Maintainers (3)
Last synced: 6 months ago

Dependencies

requirements.txt pypi
  • gymnasium >=0.27.1
  • matplotlib >=3.7.0
  • numpy >=1.23.1
  • pettingzoo >=1.22.3
  • pygame >=2.3.0
.github/workflows/env.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
setup.py pypi
  • gymnasium *
  • matplotlib *
  • numpy *
  • pettingzoo *
  • pygame *