• Stars
    star
    119
  • Rank 287,958 (Top 6 %)
  • Language
    MATLAB
  • License
    Other
  • Created about 10 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Iterative Regional Inflation by SDP

Introduction

This package contains the IRIS algorithm for iterative convex regional inflation by semidefinite programming, implemented in C++ with bindings for Python. It is designed to take an environment containing many (convex) obstacles and a start point, and to compute a large convex obstacle-free region. This region can then be used to define linear constraints for some other objective function which the user might want to optimize over the obstacle-free space. The algorithm is described in:

R. L. H. Deits and R. Tedrake, “Computing large convex regions of obstacle-free space through semidefinite programming,” Workshop on the Algorithmic Fundamentals of Robotics, Istanbul, Aug. 2014. [Online]. Available: http://groups.csail.mit.edu/robotics-center/public_papers/Deits14.pdf

Build Status

MATLAB Support

A pure-MATLAB implementation of IRIS is also included in src/matlab. This will be slower and less flexible than the Python and C++ versions, but may be useful for legacy code.

Requirements

Ubuntu (with apt-get):

pkg-config
cmake
libgmp-dev

Mac OSX (with homebrew):

pkg-config
cmake
gmp

You'll also need some python packages to build and use the python bindings. You can install them on ubuntu with these apt-get packages:

python-numpy
python-scipy
python-matplotlib
python-nose
cython

Or you can install the liblapack-dev, libblas-dev, and gfortran packages from apt-get, and then install the python modules with pip:

pip install -r python_requirements.txt

You'll also need a license for the Mosek optimization toolbox https://www.mosek.com/ (this package includes a downloader for the Mosek code, but you have to get your own license). Mosek has free licenses available for academic use.

Installation

This project is configured as a standard CMake project, so the general build process is:

mkdir build
cd build
cmake ..
make

Installation without externals

By default, IRIS will build its external dependencies as part of the build process. If you want to turn any or all of them off, you can set the WITH_EIGEN, WITH_CDD, and WITH_MOSEK options to OFF using cmake. The easiest way to do that is to run:

cd build
ccmake .

which will launch a terminal-based GUI to let you change those options.

If you're using IRIS as part of another project with cmake, you can just set the CMAKE_CACHE_ARGS to include -DIRIS_WITH_EIGEN:BOOL=OFF etc. For more information, see: http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html.

Example Usage

Python wrapper

python -m irispy.test.test_iris_2d

C++ library

See iris/src/iris_demo.cpp for a basic usage example.

Examples

Here are some animations of the algorithm running in various environments:

2-dimensional space, 30 obstacles:

2-dimensional space, 50 obstacles:

2-dimensional space, 50 obstacles:

2-dimensional space, 1000 obstacles:

3-dimensional space:

3-dimensional space:

3-dimensional configuration space of a rod-shaped robot translating and yawing:

3-dimensional slice of a 4-dimensional region among 4D obstacles:

Example Application

This is a demonstration of path-planning for a simple UAV model around obstacles. Rather than constraining that the UAV be outside the obstacles, we seed several IRIS regions and require that the UAV be inside one of those regions at each time step. This turns a non-convex problem into a mixed-integer convex problem, which we can solve to its global optimum. You can try this out by running iris.test.test_uav_demo(); or iris.test.test_uav_demo('4d');

More Repositories

1

MeshCat.jl

WebGL-based 3D visualizer in Julia
Julia
220
star
2

meshcat-python

WebGL-based 3D visualizer for Python
Python
212
star
3

meshcat

Remotely-controllable 3D viewer, built on top of three.js
HTML
178
star
4

swig-eigen-numpy

A demonstration of a SWIG wrapper for a C++ library containing Eigen matrix types for use with Python and NumPy
C
53
star
5

CommonSubexpressions.jl

Naïve combined subexpression elimination in Julia
Julia
35
star
6

cryptics

Cryptic crossword solver
HTML
35
star
7

ConditionalJuMP.jl

Automatic transformation of implications and complementarity into mixed-integer models in Julia
Julia
29
star
8

AdaptiveDistanceFields.jl

Adaptively sampled distance fields in Julia
Jupyter Notebook
28
star
9

DynamicWalking2018.jl

Julia Robotics tutorial presented at Dynamic Walking 2018
Jupyter Notebook
28
star
10

NNLS.jl

Non-Negative Least Squares and Quadratic Program solver in Julia
Julia
26
star
11

ScratchHolograms

A set of tools to make abrasion (scratch) holography easier to do by hand
Ruby
25
star
12

StrandbeestRobot.jl

Simulation of a 12-legged parallel walking mechanism in Julia, inspired by Theo Jansen's Strandbeest
Jupyter Notebook
19
star
13

DrakeVisualizer.jl

Interface to the RobotLocomotion Drake Visualizer tool from Julia
Julia
18
star
14

ConcreteInterfaces.jl

Julia
15
star
15

RigidBodyTreeInspector.jl

Simple visualization for the RigidBodyDynamics.jl library
Julia
13
star
16

DetroitTechWatch2020.jl

Jupyter Notebook
11
star
17

Flatten.jl

Flatten Julia types to tuples or vectors, and un-flatten them later
Julia
11
star
18

LoewnerJohnEllipsoids.jl

Loewner-John inner and outer ellipsoids
Julia
10
star
19

Ev3dev.jl

Julia bindings for ev3dev
Jupyter Notebook
9
star
20

SublimeLinter-contrib-mlint

A SublimeLinter3 interface to MATLAB mlint
Python
9
star
21

WPepub

Convert a wordpress blog into an epub book
Python
9
star
22

CrypticCrosswords.jl

Cryptic crossword clue solver written in Julia
Julia
8
star
23

phd-thesis-defense

Slides from my PhD thesis defense at MIT CSAIL, October 2018
Shell
8
star
24

Mayday.jl

Sums-of-Squares optimization in Julia, powered by JuMP
Julia
7
star
25

LocalScopeBenchmarks.jl

A slightly friendlier interface to BenchmarkTools.jl
Julia
6
star
26

MatlabOptimizationTools

Some helpful scripts for running optimizations in Matlab
MATLAB
6
star
27

LVIS-dev

Experimental implementation of LVIS in Julia
Shell
6
star
28

CouenneNL.jl

Julia
5
star
29

ChartParsers.jl

Basic top-down and bottom-up chart parsing for context-free grammars in Julia
Julia
5
star
30

PyLCM.jl

Julia bindings for LCM, the Lightweight Communications and Marshalling library, via PyCall
Python
5
star
31

PyAnalogInt

Analog integers in python
Python
4
star
32

quadruped-walking-exploration

MATLAB
4
star
33

LCPSim.jl

Julia
4
star
34

pydrake-julia

Use Drake from Julia by way of Python
Jupyter Notebook
4
star
35

EdgeCameras.jl

Julia implementation of Bouman et al.'s edge camera algorithm
Jupyter Notebook
4
star
36

drake-mpc

Jupyter Notebook
3
star
37

en

fork of https://www.nodebox.net/code/index.php/Linguistics
Python
3
star
38

BeatTrack

Predictive beat tracking, eventually to be used with Bemis100
Python
3
star
39

juliet

More powerful package installation for Julia
Julia
3
star
40

StateMachineIterators.jl

Iterable finite state machines in Julia
Julia
3
star
41

Collective.jl

Your enigmatological distinctiveness will be added to our own
Julia
3
star
42

CrypticServer.jl

Julia
2
star
43

StaticPolynomials.jl

Jupyter Notebook
2
star
44

Trivia.jl

OpenTDB trivia interface in Julia
Julia
2
star
45

oscilloscope-music

Decoding oscilloscope music in Julia
Jupyter Notebook
2
star
46

convex-segmentation

Find convex regions in a binary image
MATLAB
2
star
47

SpatialFields.jl

Scalar and vector fields, including Hermite Radial Basis Function fields
Jupyter Notebook
2
star
48

DygraphsOverviewMode

An overview mode for dygraphs that makes it easy to navigate through a dataset
JavaScript
2
star
49

interval-inverse-kinematics

Jupyter Notebook
2
star
50

rdeits-vim

An ongoing attempt to turn vim into a nice editing environment for myself.
Vim Script
2
star
51

julia-ev3-report

TeX
2
star
52

Identify-Polygons

Identify 2D polygons from a point cloud using a genetic algorithm
Python
2
star
53

adaptive-PIV

An FPGA implementation of Particle Image Velocimetry for 6.375 at MIT
MATLAB
2
star
54

FluxExtensions.jl

Julia
1
star
55

swigmake

Helpful swig interface files
C
1
star
56

threshold-qp

1
star
57

julia-matlab-fortran-fem-benchmark

Julia, Matlab, and Fortan Finite Element FEM benchmark and direct comparison
Fortran
1
star
58

Puzzle-Anagrams

Anagram tools for an MIT puzzle
Python
1
star
59

gaited-footstep-planner-exploration

MATLAB
1
star
60

sublime-config

Sublime Text 2 Configuration
1
star
61

6.438-formula-sheet

1
star
62

Noticer.jl

Julia
1
star
63

LearningMPC.jl

Julia
1
star
64

ImplicitSkinning.jl

Implementation of implicit surface reconstruction with HRBF by Vaillant et al.
Jupyter Notebook
1
star
65

julia-metaprogramming

Jupyter Notebook
1
star
66

dotfiles

My various *nix configuration files`
Vim Script
1
star
67

crazytags

Python
1
star
68

coasters

Cedar Point roller coaster analysis
Python
1
star
69

SCOWL-mirror

Mirror of SCOWL from https://sourceforge.net/projects/wordlist/files/SCOWL/2018.04.16/
Shell
1
star
70

MultiprecisionLP.jl

Julia
1
star
71

action-sequence

Convert a set of images into a multiple-exposure action sequence
Python
1
star
72

pypolyhedron

Mirror of PyPolyhedron by Pearu Peterson from http://cens.ioc.ee/projects/polyhedron/
C
1
star
73

juggling

MATLAB
1
star
74

rrt-explorations

Playing around with Rapidly Expanding Random Trees
1
star
75

rdeits.github.com

HTML
1
star
76

Behaviors.jl

Finite-state-machine behaviors
Julia
1
star
77

TiddlyWiki-Project-Journal

A modification of Jeremy Ruston's TiddlyWiki for my own project and research tracking.
1
star
78

iris

IRIS algorithm for finding large convex volumes of free space
MATLAB
1
star
79

icra-2019-lvis

Slides for my talk at ICRA 2019
Shell
1
star