Académique Documents
Professionnel Documents
Culture Documents
Intelligence
Commercial
reality
Research
frontier
Fast computers
Approximation
• independence,
optimism,
…
observation action
Environment
observation
action
How ‘big’ is the prior? Where does it come from?
Engineers
must
do
for
robots
what
evolution
did
for
us
• Build
in
architectural
constraints
and
fundamental
truths
(e.g.
physical
laws)
observation
state
belief
action
estimation
selection
action
World
model
observation
state
belief
action
estimation
selection
action
model learning
World
model
observation
state
belief
action
estimation
selection
action
observation
state
belief
estimation
action
�
Pr(st+1 | at , ot+1 ) ∝ Pr(ot+1 | st+1 ) Pr(st+1 | st , at ) Pr(st )
st
Gaussian Histogram
Dieter
Fox
Leslie
Pack
Kaelbling,
AAAI2010
A
big
(toy)
world
• One hypothesis
True
Rao-‐Blackwellization:
For
us:
created
dynamically
x2 : logical partition depending
on
observations
x1 : state within
ç
the partition
f(x1 , x2 ) : Am I in room 6? depends
only
on
prior
Be
lazier!
• focus
on
small
set
of
objects
and
properties
relevant
to
current
goal
• dynamically
change
focus
• use
observation
history
to
initialize
new
filters
observation
state
belief
action
action
estimation
selection
goal
x
Joint
work
with
Rob
Platt,
Russ
Tedrake
and
Tomás
Lozano-‐Pérez
Control
in
belief
space:
underactuated
State space:
Planning
objective:
Underactuated
dynamics:
???
Belief
space
dynamics
x
Replanning
Replan
when
new
belief
state
deviates
too
far
from
planned
trajectory
goal
Replanning:
light-‐dark
problem
actual
trajectory
of
mean
x
+
actual
location
Replanning:
light-‐dark
problem
+
x
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
x
+
Replanning:
light-‐dark
problem
actual
trajectory
Optimistic
(re)planning
in
belief
space
Robot
pose:
• 11
DOF
• model
as
fully
observable
Object
pose:
• 3
DOF
• model
as
partially
observable
Execute
a
trajectory:
• stop
moving
arm
if
any
contact
is
felt
• close
each
finger
until
it
makes
contact
• Arm
trajectory
according
to
proprioception
• Arm
trajectory
according
to
proprioception
• 6-‐axis
force-‐torque
sensors
on
fingertips
• Arm
trajectory
according
to
proprioception
• 6-‐axis
force-‐torque
sensors
on
fingertips
Gaussian
density
on
dist
Gaussian
density
on
dist
to
closest
to
closest
a’
that
would
not
have
a’
that
would
have
caused
contact
caused
interpenetration
X
X
Gaussian
density
on
dist
between
Actual
o
Gaussian
density
on
dist
to
closest
a’
Max
value
of
Gaussian
density
that
would
not
have
caused
contact
used
for
nominal
contact
case
no
contact
s
a’
s
a
a
Leslie
Pack
Kaelbling,
AAAI2010
Transition
model:
Pr(st+1 | st , at )
s
WRTs
include:
• target
grasp
• information-‐gain
trajectories
• re-‐orientation
Leslie
Pack
Kaelbling,
AAAI2010
Forward
search
25x
speed
Operator
descriptions:
•
STRIPS-‐like,
with
continuous
values
•
procedures
suggest
values
for
existential
vars
•
geometric
reasoning
Leslie
Pack
Kaelbling,
AAAI2010
Wash
a
block
and
put
it
away
a
storage
washer
Pick[a,
aStart]
remove[d,
sweptVol(path(a,
washer,
storage))]
Place[d, parking]
Pick[d, dStart]
op1 op2
P1 P2 P3
op1 op2
op1 op2
storage
washer
clean(a) clean(a)
in(a, Washer) Wash
Holding() = a in(a, Storage)
clean(a)
clean(a)
Holding() = a in(a, Washer) Holding() = a
Holding() = a
clearX(Swept_aX, (a))
clean(a)
clearX(Swept_aX, (a, d))
Holding() = a
Holding() = a
overlaps(d, Swept_aX) = False
Moore;
Plan
at
the
“knowledge
level”
Petrick,Bacchus
• Traditional
to
plan
in
the
powerset
of
the
state
space
• We
have
infinite
state
space
• Use
explicit
logical
representation
of
knowledge
and
lack
of
knowledge
Plan at level of abstraction supported by current belief state
Plan 2
TigerDead() = True
vacuumed(bedroomB) = True
vacuumed(bedroomA) = True
vacuumed(bedroomC) = True
vacuumed(livingRoom) = True
A0:tidy(livingRoom) A0:vacuum(livingRoom) A0:tidy(bedroomC) A0:vacuum(bedroomC) A0:tidy(bedroomA) A0:vacuum(bedroomA) A0:tidy(bedroomB) A0:vacuum(bedroomB) Replan A0:tidy(bedroomC) A0:vacuum(bedroomC) A0:tidy(bedroomB) A0:vacuum(bedroomB) A0:vacuum(livingRoom) A0:tidy(bedroomA) A0:vacuum(bedroomA)
A0:Look(livingRoom) A1:tidy(livingRoom) A0:Pick(vacuum, ?) A1:vacuum(livingRoom) A0:MoveTo(?, doorBC) A0:Look(bedroomC) A1:tidy(bedroomC) A0:Pick(vacuum, ?) A1:vacuum(bedroomC) A1:tidy(bedroomB) A0:Pick(vacuum, ?) A1:vacuum(bedroomB) A1:vacuum(livingRoom) A1:tidy(bedroomA) A0:Pick(vacuum, ?) A1:vacuum(bedroomA)
vacuumed(bedroomB) = True
tidy(livingRoom) = True vacuumed(bedroomB) = True vacuumed(bedroomB) = True
tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True vacuumed(bedroomB) = True vacuumed(livingRoom) = True
tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True vacuumed(bedroomC) = True vacuumed(livingRoom) = True vacuumed(livingRoom) = True
Look(livingRoom) tidy(livingRoom) = True Look(bedroomC) tidy(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True
Holding() = vacuum RobotIn(doorBC) = True tidy(bedroomC) = True vacuumed(bedroomC) = True tidy(bedroomB) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True
Holding() = vacuum tidy(bedroomB) = True vacuumed(bedroomB) = True vacuumed(livingRoom) = True tidy(bedroomA) = True
Holding() = vacuum tidy(bedroomA) = True vacuumed(bedroomA) = True
Holding() = vacuum
A0:Place(j1j, closet) A0:Place(j0j, closet) A0:Find(vacuum, bedroomA) A1:Pick(vacuum, bedroomA) A1:MoveTo(bedroomA, bedroomB) A1:MoveTo(bedroomB, doorBC) A0:Place(j2j, closet) A0:Find(vacuum, cleaningCloset) A1:Pick(vacuum, cleaningCloset) A0:MoveTo(?, bedroomC) A2:vacuum(bedroomC) A0:Place(j4j, closet) A1:Pick(vacuum, bedroomC) A0:MoveTo(?, bedroomB) A2:vacuum(bedroomB) A0:MoveTo(?, livingRoom) A2:vacuum(livingRoom) A0:Place(j3j, closet) A1:Pick(vacuum, livingRoom) A0:MoveTo(?, bedroomA) A2:vacuum(bedroomA)
vacuumed(bedroomB) = True
tidy(livingRoom) = True vacuumed(bedroomB) = True vacuumed(bedroomB) = True vacuumed(bedroomB) = True
tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True vacuumed(livingRoom) = True
KV(Contents(livingRoom)) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True Holding() = vacuum tidy(livingRoom) = True vacuumed(livingRoom) = True vacuumed(livingRoom) = True
KV(Contents(livingRoom)) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(bedroomC) = True tidy(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True Holding() = vacuum
in(j1j, closet) = True Holding() = nothing KV(Contents(bedroomC)) = True tidy(bedroomC) = True VacuumPrim vacuumed(bedroomC) = True VacuumPrim Holding() = vacuum VacuumPrim vacuumed(bedroomC) = True vacuumed(bedroomC) = True VacuumPrim
in(j1j, closet) = True RobotIn(bedroomB) = True RobotIn(doorBC) = True Holding() = nothing Holding() = vacuum KV(Contents(bedroomB)) = True tidy(bedroomB) = True vacuumed(bedroomC) = True
in(j0j, closet) = True KV(RoomOf(vacuum, bedroomA)) = True in(j2j, closet) = True Holding() = vacuum tidy(bedroomB) = True vacuumed(bedroomC) = True KV(Contents(bedroomA)) = True tidy(bedroomA) = True
KV(RoomOf(vacuum, cleaningCloset)) = True RobotIn(bedroomC) = True in(j4j, closet) = True Holding() = vacuum tidy(bedroomA) = True
RobotIn(bedroomB) = True RobotIn(livingRoom) = True in(j3j, closet) = True Holding() = vacuum
RobotIn(bedroomA) = True
A1:Pick(j1j, livingRoom) A0:MoveTo(?, closet) A0:Look(closet) A1:Place(j1j, closet) A1:Pick(j0j, livingRoom) A0:MoveTo(?, closet) A1:Place(j0j, closet) A0:MoveTo(?, doorAB) A0:Look(bedroomA) A0:Look(bedroomB) A2:MoveTo(doorAB, bedroomB) A2:MoveTo(bedroomB, doorBC) A1:Pick(j2j, bedroomC) A0:MoveTo(?, closet) A1:Place(j2j, closet) A0:MoveTo(?, doorLClean) A0:Look(cleaningCloset) A0:MoveTo(?, cleaningCloset) A2:Pick(vacuum, cleaningCloset) A1:MoveTo(cleaningCloset, livingRoom) A1:MoveTo(livingRoom, bedroomC) A0:Ungrasp() A1:Pick(j4j, bedroomB) A0:MoveTo(?, closet) A1:Place(j4j, closet) A0:MoveTo(?, bedroomC) A2:Pick(vacuum, bedroomC) A1:MoveTo(bedroomC, bedroomB) A1:MoveTo(bedroomB, bedroomA) A1:MoveTo(bedroomA, livingRoom) A0:Ungrasp() A1:Pick(j3j, bedroomA) A0:MoveTo(?, closet) A1:Place(j3j, closet) A0:MoveTo(?, livingRoom) A2:Pick(vacuum, livingRoom) A1:MoveTo(livingRoom, bedroomA)
A1:Pick(j1j, livingRoom) A1:MoveTo(livingRoom, closet) A2:Place(j1j, closet) A1:Pick(j0j, livingRoom) A2:Place(j0j, closet) A1:MoveTo(closet, livingRoom) A1:MoveTo(livingRoom, bedroomA) A1:MoveTo(bedroomA, doorAB) A3:MoveTo(bedroomA, bedroomB) A3:MoveTo(bedroomB, doorBC) A1:Pick(j2j, bedroomC) A1:MoveTo(bedroomC, livingRoom) A1:MoveTo(livingRoom, closet) A2:Place(j2j, closet) A1:MoveTo(closet, livingRoom) A1:MoveTo(livingRoom, doorLClean) A1:MoveTo(livingRoom, cleaningCloset) A3:Pick(vacuum, cleaningCloset) A2:MoveTo(cleaningCloset, livingRoom) A2:MoveTo(livingRoom, bedroomC) A1:Pick(j4j, bedroomB) A1:MoveTo(bedroomB, bedroomA) A1:MoveTo(bedroomA, livingRoom) A1:MoveTo(livingRoom, closet) A2:Place(j4j, closet) A1:MoveTo(closet, livingRoom) A1:MoveTo(livingRoom, bedroomC) A3:Pick(vacuum, bedroomC) A2:MoveTo(bedroomC, bedroomB) A2:MoveTo(bedroomB, bedroomA) A2:MoveTo(bedroomA, livingRoom) A1:Pick(j3j, bedroomA) A1:MoveTo(bedroomA, livingRoom) A1:MoveTo(livingRoom, closet) A2:Place(j3j, closet) A1:MoveTo(closet, livingRoom) A3:Pick(vacuum, livingRoom) A2:MoveTo(livingRoom, bedroomA)
A2:Pick(j1j, livingRoom) A2:MoveTo(livingRoom, doorLClos) A0:Look(closet) A2:MoveTo(doorLClos, closet) A0:MoveTo(?, livingRoom) A2:Pick(j0j, livingRoom) A2:MoveTo(closet, livingRoom) A2:MoveTo(livingRoom, doorAL) A0:Look(bedroomA) A2:MoveTo(doorAL, bedroomA) A2:MoveTo(bedroomA, doorAB) A0:MoveTo(?, bedroomC) A2:Pick(j2j, bedroomC) A2:MoveTo(bedroomC, livingRoom) A2:MoveTo(livingRoom, closet) A2:MoveTo(closet, livingRoom) A2:MoveTo(livingRoom, doorLClean) A2:MoveTo(livingRoom, cleaningCloset) A3:MoveTo(cleaningCloset, livingRoom) A3:MoveTo(livingRoom, bedroomC) A0:MoveTo(?, bedroomB) A2:Pick(j4j, bedroomB) A2:MoveTo(bedroomB, bedroomA) A2:MoveTo(livingRoom, closet) A2:MoveTo(closet, livingRoom) A2:MoveTo(livingRoom, bedroomC) A3:MoveTo(bedroomC, bedroomB) A3:MoveTo(bedroomB, bedroomA) A3:MoveTo(bedroomA, livingRoom) A0:MoveTo(?, bedroomA) A2:Pick(j3j, bedroomA) A2:MoveTo(bedroomA, livingRoom) A2:MoveTo(livingRoom, closet) A2:MoveTo(closet, livingRoom) A3:MoveTo(livingRoom, bedroomA)
KV(Contents(closet)) = True
KV(Contents(closet)) = True KV(Contents(closet)) = True KV(Contents(closet)) = True tidy(bedroomA) = True
KV(Contents(livingRoom)) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True vacuumed(bedroomB) = True vacuumed(bedroomB) = True
tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True vacuumed(bedroomB) = True vacuumed(bedroomB) = True RoomOf(vacuum, livingRoom) = True
KV(Contents(livingRoom)) = True RoomOf(j0j, livingRoom) = True KV(Contents(livingRoom)) = True tidy(livingRoom) = True KV(Contents(closet)) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True KV(Contents(bedroomB)) = True KV(Contents(bedroomB)) = True Holding() = nothing Holding() = nothing vacuumed(livingRoom) = True vacuumed(livingRoom) = True
KV(Contents(livingRoom)) = True tidy(livingRoom) = True tidy(livingRoom) = True tidy(livingRoom) = True Holding() = j2j Holding() = j2j RoomOf(vacuum, cleaningCloset) = True vacuumed(bedroomC) = True KV(Contents(bedroomB)) = True vacuumed(livingRoom) = True vacuumed(livingRoom) = True vacuumed(bedroomB) = True
KV(Contents(livingRoom)) = True Holding() = j1j Holding() = nothing in(j1j, closet) = True KV(Contents(doorAL)) = True Holding() = nothing KV(Contents(bedroomC)) = True tidy(bedroomC) = True tidy(bedroomC) = True Holding() = j4j Holding() = j4j RoomOf(vacuum, bedroomC) = True RoomOf(vacuum, bedroomC) = True RoomOf(j3j, bedroomA) = True vacuumed(bedroomC) = True
Look(closet) Holding() = j1j Holding() = nothing Look(bedroomA) Holding() = nothing Holding() = nothing KV(Contents(bedroomC)) = True KV(Contents(bedroomC)) = True tidy(bedroomC) = True MoveRobotTo(Object:livingRoom) MoveRobotTo(Object:bedroomC) Holding() = nothing vacuumed(bedroomC) = True MoveRobotTo(Object:bedroomB) MoveRobotTo(Object:bedroomA) MoveRobotTo(Object:livingRoom) Holding() = j3j Holding() = j3j vacuumed(livingRoom) = True MoveRobotTo(Object:bedroomA)
Holding() = j1j KV(Contents(doorLClos)) = True in(j1j, closet) = True KV(Contents(closet)) = True Holding() = nothing KV(Contents(bedroomC)) = True KV(Contents(closet)) = True Holding() = nothing Holding() = nothing vacuumed(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True KV(Contents(closet)) = True
RobotIn(closet) = True RobotIn(livingRoom) = True RobotIn(bedroomA) = True RobotIn(doorAB) = True KV(Contents(closet)) = True KV(Contents(closet)) = True Holding() = nothing RoomOf(j4j, bedroomB) = True KV(Contents(closet)) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True vacuumed(bedroomC) = True
RobotIn(doorLClos) = True KV(Contents(closet)) = True Holding() = j0j RobotIn(doorAL) = True RoomOf(j2j, bedroomC) = True Holding() = j2j RobotIn(livingRoom) = True RobotIn(doorLClean) = True KV(Contents(closet)) = True KV(Contents(closet)) = True tidy(bedroomB) = True tidy(bedroomB) = True Holding() = nothing KV(Contents(bedroomA)) = True
RobotIn(livingRoom) = True RobotIn(closet) = True RobotIn(cleaningCloset) = True KV(Contents(bedroomB)) = True Holding() = j4j KV(Contents(bedroomA)) = True KV(Contents(bedroomA)) = True Holding() = nothing
RobotIn(livingRoom) = True RobotIn(bedroomC) = True RobotIn(bedroomA) = True RobotIn(closet) = True RobotIn(livingRoom) = True RobotIn(bedroomC) = True KV(Contents(bedroomA)) = True Holding() = j3j
RobotIn(bedroomB) = True RobotIn(livingRoom) = True RobotIn(closet) = True RobotIn(livingRoom) = True
RobotIn(bedroomA) = True
A3:Pick(j1j, livingRoom) A3:MoveTo(livingRoom, doorLClos) A3:MoveTo(livingRoom, closet) A1:MoveTo(closet, livingRoom) A3:Pick(j0j, livingRoom) A3:MoveTo(closet, livingRoom) A3:MoveTo(livingRoom, doorAL) A3:MoveTo(livingRoom, bedroomA) A3:MoveTo(bedroomA, doorAB) A1:MoveTo(bedroomB, bedroomC) A3:Pick(j2j, bedroomC) A3:MoveTo(bedroomC, livingRoom) A3:MoveTo(livingRoom, closet) A3:MoveTo(closet, livingRoom) A3:MoveTo(livingRoom, doorLClean) A3:MoveTo(livingRoom, cleaningCloset) A1:MoveTo(bedroomC, bedroomB) A3:Pick(j4j, bedroomB) A3:MoveTo(bedroomB, bedroomA) A3:MoveTo(livingRoom, closet) A3:MoveTo(closet, livingRoom) A3:MoveTo(livingRoom, bedroomC) A1:MoveTo(livingRoom, bedroomA) A3:Pick(j3j, bedroomA) A3:MoveTo(bedroomA, livingRoom) A3:MoveTo(livingRoom, closet) A3:MoveTo(closet, livingRoom)
KV(Contents(closet)) = True
KV(Contents(closet)) = True
KV(Contents(livingRoom)) = True tidy(livingRoom) = True vacuumed(bedroomB) = True
tidy(livingRoom) = True
RoomOf(j0j, livingRoom) = True Holding() = nothing vacuumed(livingRoom) = True
vacuumed(bedroomC) = True
Holding() = nothing RoomOf(j2j, bedroomC) = True RoomOf(j3j, bedroomA) = True
PickUp(j1j, livingRoom) MoveRobotTo(Object:doorLClos) MoveRobotTo(Object:closet) PickUp(j0j, livingRoom) MoveRobotTo(Object:livingRoom) MoveRobotTo(Object:doorAL) MoveRobotTo(Object:bedroomA) MoveRobotTo(Object:doorAB) PickUp(j2j, bedroomC) MoveRobotTo(Object:livingRoom) MoveRobotTo(Object:closet) MoveRobotTo(Object:livingRoom) MoveRobotTo(Object:doorLClean) MoveRobotTo(Object:cleaningCloset) Holding() = nothing PickUp(j4j, bedroomB) MoveRobotTo(Object:bedroomA) MoveRobotTo(Object:closet) MoveRobotTo(Object:livingRoom) MoveRobotTo(Object:bedroomC) PickUp(j3j, bedroomA) MoveRobotTo(Object:livingRoom) MoveRobotTo(Object:closet) MoveRobotTo(Object:livingRoom)
in(j1j, closet) = True KV(Contents(closet)) = True vacuumed(bedroomC) = True
RoomOf(j4j, bedroomB) = True
KV(Contents(closet)) = True KV(Contents(bedroomC)) = True Holding() = nothing
KV(Contents(bedroomB)) = True
RobotIn(livingRoom) = True RobotIn(bedroomC) = True KV(Contents(bedroomA)) = True
RobotIn(bedroomB) = True
RobotIn(bedroomA) = True
KV(Contents(closet)) = True
KV(Contents(closet)) = True
KV(Contents(livingRoom)) = True tidy(livingRoom) = True vacuumed(bedroomB) = True
tidy(livingRoom) = True
RoomOf(j0j, livingRoom) = True Holding() = nothing vacuumed(livingRoom) = True
vacuumed(bedroomC) = True
Holding() = nothing RoomOf(j2j, bedroomC) = True RoomOf(j3j, bedroomA) = True
Holding() = nothing
in(j1j, closet) = True KV(Contents(closet)) = True vacuumed(bedroomC) = True
RoomOf(j4j, bedroomB) = True
KV(Contents(closet)) = True KV(Contents(bedroomC)) = True Holding() = nothing
KV(Contents(bedroomB)) = True
RobotIn(livingRoom) = True RobotIn(bedroomC) = True KV(Contents(bedroomA)) = True
RobotIn(bedroomB) = True
RobotIn(bedroomA) = True
B(S0 )
∃r.B(in(Joe, r))
B(loc(Joe), loc(friend(Joe)) | O0:t )
model learning
World
model
observation
state
belief
action
estimation
selection
action
Pr(st | st−1 , a)
Representation
should:
• allow
effective
generalization
• be
useful
for
planning
• be
efficiently
learnable
Combine
logic
and
probability
to
model
effects
of
actions
in
complex,
uncertain
domains
p5(X,Y) :- p3(X) ∧ p4(X,Y) X
is
on
the
top
of
the
stack
containing
Y
picking up middle-
sized blocks usually
works
pickup(X):
clear(X), inhand-nil, ¬size(X)<7
0.906 : no change
it’s impossible to
pick up very big
blocks
if a tiny block is on
another block that is on
the table, and we try to
pick up the tiny block,
we’ll often pick up the
other block as well, or
fail
16
14
Total Reward
no concepts
12
human performance
10
6
250 375 500 625 750 875 1000
Number of Training Examples
Planning
with
learned
rules
16
14
Total Reward
learned concepts
12 no noise outcome
no concepts
human performance
10
6
250 375 500 625 750 875 1000
Number of Training Examples
compact
representation
explicit
uncertainty
modeling
approximation