pddlstream
pddlstream copied to clipboard
Does PDDLStream support multi agent planning?
In the example figure below, the goal is to put block B in red region. First, I want r0 to move block B closer towards r1. Then r1 takes block B towards the red region.
If it supports multi agent planning, where do I specify that?
I'm not the author, but I would think you could have parameterized actions assuming it's a homogeneous multi-agent problem (that is, all agents have the same capabilities).
In a single-agent world, suppose your actions are:
move(?p_start ?p_goal)
pick(?obj)
place(?obj ?p)
If you expanded this to accept a "robot" type object, then your action space would become
move(?robot ?p_start ?p_goal)
pick(?robot ?obj)
place(?robot ?obj ?p)
Where ?robot
could now have the values r0
or r1
.
Now, this wouldn't give you any parallelism in the planning (for example, do simultaneous actions with r0
and r1
). So if you're trying to achieve something in minimum time by doing things with all agents at any given time, that won't help much. You might then need to think about recasting your planner as a resource allocation problem, where you might favor using a particular agent if the other agents are busy. That's where the limit of my TAMP knowledge goes, but maybe you're OK with my first solution?
Hi Sebastian,
I am only seeing this. I tried to workout with this, but didn't succeed, hence I left it for next attempt. But, I totally get the idea, which infact was similar to what I attempted. Regardless, I will try approaching this problem again in the future, and will update on you if I get the result.
Thank you once again.
There are several very experimental examples that demonstrate asynchronous temporal planning:
- https://github.com/caelan/pddlstream/tree/main/examples/temporal
- https://github.com/caelan/pddlstream/tree/main/examples/continuous_tamp/temporal
- https://github.com/caelan/pddlstream/tree/main/examples/pybullet/turtlebots