mirror of
				https://github.com/RAIRLab/Spectra.git
				synced 2025-10-26 22:51:19 +00: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 ## | ||||
| 
 | ||||
|   | ||||
|  | ||||
| 
 | ||||
| ## Example Input File ## | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 
 | ||||
|   | ||||
| ## 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 ## | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1
									
								
								_config.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								_config.yml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| theme: jekyll-theme-cayman | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue