-
Notifications
You must be signed in to change notification settings - Fork 115
Description
Hello,
I'm trying to solve a TAMP problem where a robot r is in an office-like map in a starting position s, and it has to traverse n doors {d0, d1, ..., dn}, initially closed, to reach a final destination g. Walls of the map are fixed obstacles, while doors are movable obstacles.
I have two actions: open and move. The move action moves the robot between two locations while avoiding obstacles (the doors and the walls) - I have a stream that tries to compute a collision-free path via RRT and an ad-hoc collision checker. open allows the robot to open a door when positioned in front of it, like pushing a button (b0 for d0 , b1 for d1, ..., bn for dn). Once the button is pushed, the door configuration changes instantaneously from closed to open.
The incremental algorithm (with FastDownward) can find a valid plan. For example, if n=2:
move(r, s, b0, d0, c0, d1, c1) # move r from s to button b0 with d0 and d1 closed
open(d0, c0, o1) # open d0
move(r, b0, b1, d0, o0, d1, c1) # move r from button b0 to button b1 with d0 open and d1 closed
open(d1, c1, o1) # open d1
move(r, b1, g, d0, o0, d1, o1) # move from button b1 to g with all doors open
All other algorithms (focused, binding, adaptive - with FastDownward), instead, are unable to solve the problem even if the number of doors is small. For example, with n=2, the focused algorithm exits with
Stream plan (inf, 0, inf): False
Action plan (inf, inf): False
Summary: {complexity: 2, cost: inf, evaluations: 31, iterations: 10, length: inf, run_time: 36.669, sample_time: 35.535, search_time: 1.134, skeletons: 0, solutions: 0, solved: False, timeout: False}
Precisely, the status is INFEASIBLE because exhausted=True when calling iterative_plan_streams() of refinement.py.
Is this behavior reasonable? Could you please help me solving this issue?