Code Monkey home page Code Monkey logo

robotsorcerer / levelsetpy Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 1.0 18.8 MB

A GPU-accelerated toolbox for hyperbolic PDEs in a weaker (viscosity) sense. It leverages the integral to the solution of the conservation of momentum problem (being equivalent to the derivative of Hamilton-Jacobi equations) in one spatial dimension. We resolve such hyperbolic differential equations using wave-front propagating schemes on a spatial-by-spatial dimension in resolving the classical value in dynamic programming (respectively optimal control and differential games) problems.

License: MIT License

Python 2.87% Jupyter Notebook 97.12% Shell 0.01%
hamilton-jacobi hamilton-jacobi-bellman weighted-essentially-nonoscillatory lax-friedrich optimal-control differential-games bellman-equation levelsets dynamic-programming reduced-order-models

levelsetpy's Introduction

LevelSetsPy Library

This codebase implements GPU-accelerated software package for solving initial value hyperbolic partial differential equations, particularly of the evolution form of Cauchy-type Hamilton-Jacobi (HJ) equations. These HJ equations are increasingly attracting attention in the control community for analyzing reachability problems in robotics, transport, biology and other problem domains of late. We focus on safety-critical analysis of automated systems in optimal control and reachability settings. This software package allows easy portability and extensibility to modern libraries for the analyses of safety-critical algorithms for (reinforcement) learning, control, robotics, transport, and flow problems among others.

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

@article{LevPy,
title   = {A GPU-Accelerated Python Software Package for HJ Reachability Analysis and Level Set Evolutions.},
publisher={Molu, Lekan},
author  = {Molu, Lekan},
howpublished = {\url{https://github.com/robotsorcerer/LevelSetPy}},
note = {Accessed March 31, 2023}
year    = {2023},
}

Installation and Prerequisites

Dependencies

  • It's best to create a virtual or conda environment in python 3.7+ (I used Python 3.8/3.9).

  • All the dependencies listed below are installable via: pip install -r requirements.txt

Dependency Dependency Dependency
Numpy Scipy Cupy
Absl-py Scikit-image Matplotlib

Note: The user should elect to install a cupy version that matches the version of their CUDA installation. Cupy is commented out in the requirements.txt file. Please follow the directions on the cupy install page.

Build and Install

Be sure to activate your conda or virtualven environment first e.g. if your environment is named py39:

	conda activate py39

Then install to the activated environment as follows

python setup.py build --build-lib=/path/to/your-desired/build
pip install -e . 

A separate README.md file is left in the respective folders to guide the reader and user on how to use each subpackage.

Citing this work

If you have found this library of routines and packages useful, please cite it:

@article{LevPy,
title   = {LevelSetPy: A GPU-Accelerated Python Software Package for Resolving Hamilton-Jacobi PDEs and Level Set Evolutions},
author  = {Molu, Lekan},
howpublished = {\url{https://github.com/robotsorcerer/LevelSetPy}},
note = {Accessed March 31, 2023}
year    = {2023},
}

levelsetpy's People

Contributors

robotsorcerer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

osarobots

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.