How does a box work?
Starting state: Objects OO and box B are at L. Goal: Objects OO are at M. Plan: for (O in OO) putin(O,B); move(B,L,M); repeat{choose(OX|removable(OX,B)), takeout(OX,B)} until(empty(B)).
STRIPS representation Action: putin(O,B,L) Preconditions: at(O,L), at(B,L), box(B) Effects: in(O,B), ~at(O,L) Action: move(B,L,M) Preconditions: at(B,L) Effects: at(B,M), ~at(B,L) Action: takeout(O,B,L) Preconditions: in(O,B), at(B,L) Effects: at(O,L), ~in(O,B)
Limitations of STRIPS representation No geometry. Discrete atomic actions. Does not generalize or share knowledge with similar situations.
Scientific Computing Equations: Newton’s laws, impact model. Boundary conditions: Shapes of objects External forces on manipulators. Solve (numerically) for trajectories.
Scientific Computing: Limitations Requires exact specifications for shape and action. Cannot handle incomplete knowledge or generalization. Unstable. Answer is not reliable. Generates lots of useless intermediate states Only supports prediction, not other types of reasoning: postdiction, diagnosis, design.
Knowledge-based qualitative physical reasoning Representation for partial specifications of shape and action: 3D shape, continuous time Rules to characterize dynamics of domain sufficient to support commonsense inferences Effective reasoning strategies for different tasks.
Variants Objects can be carried on a tray but greater care is needed. Large objects can be carried in a milkcrate, but small objects will fall through. A box with a lid is safe against objects fallling out in transit. etc. Share knowledge.
Sample rule [holds(S,openBox(B,INTERIOR,TOP)) ^ forall(O in OO) [holds(S,in(place(O),INTERIOR)) ^ value(S,zeroVelocity(O))] ^ long([S,S1]) ^ throughout([S,S1], isolated(OO,B)) ^ throughout([S,S1], motionless(B))] => holds(S1,stable(OO U {B})) ^ forall(O in OO) holds(S1,in(place(O),INTERIOR))
And when we’ve finished boxes How do pails and dippers work?