Home

Awesome

stripstream

DEPRECATED: superseded by pddlstream

STRIPStream is a Python library containing languages for modeling planning problems in infinite domains and algorithms for solving these problems.

STRIPStream includes two representation languages: the STRIPStream language and the Factored Transition System (FTS) Language. The STRIPStream language is a programmatic extension of PDDL (Planning Domain Definition Language). STRIPStream problem formluations are in scripts/.

The FTS Language is a way of describing transition systems factorable into state and control variables as well as constrains on these variabes. FTS problem formluations are in fts_scripts/. FTS problems are automatically compiled into STRIPStream problem instances and solved using the same set of algorithms. I recommend using STRIPStream over FTS when modeling problems as it is more flexible.

STRIPStream is still in development. Additional documentation and examples will be added shortly. In particular, several robotics examples using OpenRAVE and an in-house, standalone Python robotics simulator are on the way.

Documentation

https://caelan.github.io/stripstream/

http://web.mit.edu/caelan/www/research/stripstream/

Virtual Machine

I've provided a VMWare virtual machine (VM) that has STRIPStream, FastDownward, NumPy, Tkinter, and OpenRAVE installed on it. Remember to periodically pull STRIPStream and the other libraries to obtain the lastest version. The VM username is ss-or, and the password is also ss-or.

https://www.dropbox.com/sh/g7dbz3sdiv8zknn/AAD705L2YbB0ortsKPNY7WiZa?dl=0

Search Subroutines

STRIPStream optionally supports using arbitrary PDDL planners to implement the search subroutine. The following planners are currently supported. Additional planners will be added in the future. Contact me if you are interested in supporting a new planner. The default search subroutine implementation uses a slow Python Breadth-First Search (BFS), so installing one of these planners is highly recommended.

FastDownward

Follow these instructions to install FastDownward:

http://www.fast-downward.org/ObtainingAndRunningFastDownward

Once installed, set the environment variable FD_PATH to be the build of the FastDownward installation. It should look similar to .../FastDownward/builds/release32/ depending on directory and chosen release.

FastForward

FastForward is available here:

https://fai.cs.uni-saarland.de/hoffmann/ff.html

I use FF-v2.3 and FF-X (supports derived predicates). Once installed, set the environment variable FF_PATH to be the root of the FastForward installation. It should look similar to .../FF-v2.3/ or .../FF-X/.

Tutorial

The following tutorial implements a countable task and motion planning (TAMP) problem:

https://caelan.github.io/stripstream/tutorial.html

You can run this tutorial using the following command:

python -m scripts.run_tutorial

Pure Python Examples

The following scripts contain example STRIPStream formulations that soley use Python:

STRIPStream

python -m scripts.run_tutorial
python -m scripts.run_pddl_tutorial
python -m scripts.run_blocksworld
python -m scripts.run_countable_tamp [--search SEARCH]  [-focus] [-viewer] [-display]
python -m scripts.run_continuous_tamp [-fd] [-focus] [-viewer] [-display]

FTS

python -m fts_scripts.run_tutorial
python -m fts_scripts.run_prm

PyR2 Examples

Install the following repositories and add them to your PYTHONPATH environment variable.

https://github.com/caelan/PyR2 https://github.com/caelan/motion-planners

python -m scripts.run_pyr2_fixed_base

OpenRAVE Examples

The following scripts contain example STRIPStream formulations using OpenRAVE:

STRIPStream

python -m scripts.run_openrave_tamp_fixed_base [-viewer]

FTS

python -m fts_scripts.run_openrave_tamp_fixed_base [-viewer]

OpenRAVE Installation

OpenRAVE can be difficult to install. OpenRAVE only reliably supports Ubuntu. See the following blog posts for Ubuntu intallation instructions. I recommend building from master in order to take advantage of the latest improvements.

Installing OpenRAVE on Ubuntu 14.04 - https://scaron.info/teaching/installing-openrave-on-ubuntu-14.04.html

Installing OpenRAVE on Ubuntu 16.04 - https://scaron.info/teaching/installing-openrave-on-ubuntu-16.04.html

Installing OpenRAVE in Ubuntu 14.04 (Trusty) - http://fsuarez6.github.io/blog/openrave-trusty/

Testing

The following command executes tests that do not require FastDownward:

python -m unittest tests.test_countable_bfs

The following command executes tests that require FastDownward:

python -m unittest tests.test_countable_fd

The following command executes all tests:

python -m unittest discover -s tests

Additional tests will be added in the future.

Publications

STRIPS Planning in Infinite Domains - https://arxiv.org/abs/1701.00287

Sample-Based Methods for Factored Task and Motion Planning - http://web.mit.edu/caelan/www/publications/rss2017.pdf

Citations

Caelan R. Garrett, Tomás Lozano-Pérez, Leslie P. Kaelbling. STRIPS Planning in Infinite Domains, ICAPS Workshop on Planning and Robotics (PlanRob), 2017.

Caelan R. Garrett, Tomás Lozano-Pérez, Leslie P. Kaelbling. Sample-Based Methods for Factored Task and Motion Planning, Robotics: Science and Systems (RSS), 2017.