mirror of
https://github.com/RAIRLab/Spectra.git
synced 2024-11-22 00:46:29 -05:00
Merge branch 'master' of github.com:naveensundarg/Spectra
This commit is contained in:
commit
f47ea35b08
2 changed files with 49 additions and 0 deletions
48
README.md
Normal file
48
README.md
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# Spectra
|
||||||
|
|
||||||
|
Spectra is a general purpose planning system. It extends STRIPS-style planning by allowing arbitray first-order formulae for state descriptions and background knowledge rather than just predicates. This allows, for instance, handling domains with infinite or unbounded objects elegantly (among other things).
|
||||||
|
|
||||||
|
[Overview Presentation (pdf)](https://drive.google.com/open?id=1RHulFDgASACBkjvl-8ZEidj50NbGmKPu)
|
||||||
|
|
||||||
|
* Drawbacks of propositional planning (current planning systems):
|
||||||
|
* **Expressivity**: Cannot express arbitrary constraints. *“At every step make sure that no two blocks on the table have same color”*
|
||||||
|
* **Domain Size**: Scaling to large domains of arbitrary sizes poses difficulty.
|
||||||
|
|
||||||
|
## Spectra's Architecture ##
|
||||||
|
|
||||||
|
|
||||||
|
![spectra-arch.png](https://bitbucket.org/repo/Mjq4bX/images/2495888298-spectra-arch.png)
|
||||||
|
|
||||||
|
## Example Input File ##
|
||||||
|
|
||||||
|
![examples.png](https://bitbucket.org/repo/Mjq4bX/images/3136509575-examples.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Scaling Up ##
|
||||||
|
|
||||||
|
Two approaches:
|
||||||
|
|
||||||
|
1. **Procedural Attachments**: Special purpose procedural code that can bypass strict formal reasoning.
|
||||||
|
|
||||||
|
2. *μ*-**methods**: Written in denotational proof language. Preserves soundness by letting us write down commonly used patterns of reasoning (a bit unwieldy integration now than the first approach)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```clojure
|
||||||
|
;; (removeFrom ?x ?y) => "Remove ?x from ?y"
|
||||||
|
;; (placeInside ?x ?y) ==> "Place ?x inside ?y"
|
||||||
|
(define-method planMethod [?b ?c ?d]
|
||||||
|
{:goal [(In ?b ?c) (In ?c ?d)]
|
||||||
|
:while [(In ?b ?d) (Empty ?c)
|
||||||
|
(< (size ?c) (size ?d))
|
||||||
|
(< (size ?b) (size ?c))]
|
||||||
|
:actions [(removeFrom ?b ?d) (placeInside ?b ?c) (placeInside ?c ?d)]})
|
||||||
|
```
|
||||||
|
|
||||||
|
Roughly, a method has conditions that the goal and background + start state should satisfy. If the conditions are satisfied, a plan template is generated (note the variables).
|
||||||
|
The planner then verifies if the plan template works, if so it outputs the plan.
|
||||||
|
|
||||||
|
## Spectra on a Seriated Cup Challenge ##
|
||||||
|
|
||||||
|
![download-3.gif](https://bitbucket.org/repo/Mjq4bX/images/794008054-download-3.gif)
|
1
_config.yml
Normal file
1
_config.yml
Normal file
|
@ -0,0 +1 @@
|
||||||
|
theme: jekyll-theme-cayman
|
Loading…
Reference in a new issue