Skip to content

Large robustly controlled backward reach avoid tubes.

Notifications You must be signed in to change notification settings

robotsorcerer/ComplexBRAT

Repository files navigation

ComplexBRAT: Complex Backward Reach Avoid Tubes

Code for the Hamilton-Jacobi-Isaacs Analysis of the murmurations paper: ComplexBRAT: Complex Backward Reach Avoid Tubes.

For the technical details on the theory behind this work, please see this paper:

@article{ComplexBRAT,
title   = {ComplexBRAT: Complex Backward Reach-Avoid Tubes. An Emergent Collective Behavior Framework.},
author  = {Ogunmolu, Olalekan.},
journal = {Algorithm Foundations of Robotics, XV (WAFR).},
year    = {2022},
}

A preprint can be downloaded here: ComplexBRAT: Complex Backward Reach-Avoid Tubes. An Emergent Collective Behavior Framework.

Evolution of BRAT for Different Flocks

Here, we initialized various flocks on a state space to constitute a simple murmuration's trajectory verification. Within each flock are 6 or 7 individual agents, whose trajectories must respect certain safety constraints. We evolve the trajectories over a time horizon -100 <= t <= 0 so that at the end of each integration run, we obtain the robustly controllable backward reach-avoid tube or (RCBRAT) for each flock within the system.

RCBRAT because each agent within each flock must avoid other agents that fall within a circle constructed from a pre-specified radius defined on its body frame; while as a group/murmuration, all agents must evade capture by a (multiple) pursuing attacker (s).

Fast Stitching of 𝜖-BRATs via Voronoi Implicit Interface Methods

The stiching together of the respective BRATs are then carried out using a variation of the Voronoi Implicit Interface Method and the so-called "redistancing" or "reinitialization" method in level set methods.

Under Development

Setup

It's best to create a virtual or conda environment in python 3.6+ (I used Python 3.8/3.9) to reproduce the results in this paper.

Dependencies

  • All the dependencies listed below are installable via: pip install -r requirements.txt
Dependency Dependency Dependency
H5py Numpy Cupy
LevelSetPy Scipy Scikit-image

Running

    python Examples/murmurations.py <options>

Options:

  • --flock_num: Label of a flock within a murmuration to run. This is useful for single agent optimization Defaults to an int type.
  • --save: Save the BRAT at the end of each integration step? Defaults to a bool type.
  • --out_dir: Directory in which to dump the BRATs. Defaults to './data'.
  • --visualize: Visualize the flock's zero-level set? Defaults to a bool type.
  • --flock_payoff: Should we compute the payoff of (a/every) flock? Defaults to a bool type.
  • --resume: Should we resume the optimization from a previously computed BRAT iteration? Defaults to a str type.
  • --mode: What mode are we running the computation in? For individual flocks or stitching together the BRATs of computed flocks? Defaults to a str type.
  • --verify: Whether we want to verify a murmuration's trajectory after the optimization? Defaults to a bool type.
  • --elevation: What elevation angle should we display the BRAT if visualize is set to True? Defaults to float type.
  • --azimuth: What azimuth angle should we display the BRAT if visualize is set to True? Defaults to float type.
  • --pause_time: How many seconds to wait between displaying a zero-level set on pyplot? Defaults to float type.

Further Examples

Note that these do not have anything to do with murmurations or emergent collective behavior.

About

Large robustly controlled backward reach avoid tubes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages