moveit_task_constructor icon indicating copy to clipboard operation
moveit_task_constructor copied to clipboard

Limit number of stage solutions

Open rhaschke opened this issue 4 years ago • 3 comments

In tasks with many connect stages, the amount of solutions combinatorially explodes. To mitigate this problem, it might be meaningful to limit the overall number of solutions per stage/container.

rhaschke avatar Aug 27 '20 14:08 rhaschke

I very much think this is necessary, especially when used with sampling stages that can run infinitely often. We talked about this before and it is not entirely straight-forward to do it correctly. If we simply allow to limit arbitrary stages we will loose planner completeness in the computation graph and the system can easily get stuck in local minima.

Instead, we should also disable/drop solutions if their partial solution fails entirely. Lastly, to avoid getting stuck in local minima we could add an optimizing planner mode that disables the current best solution and all paths with higher costs.

This is quite an advanced project though.

v4hn avatar Mar 22 '21 14:03 v4hn

Is there a way to enforce connection stage planning to be performed last? That way all planning can exit as soon as a complete solution is found for each sub-task and as long as generators sandwich the connect, the external interface should be unaffected.

sebbyjp avatar Feb 21 '22 20:02 sebbyjp

Is there a way to enforce connection stage planning to be performed last?

No.

all planning can exit as soon as a complete solution is found

If you just want to exit as soon as one solution is found, you can do so but providing max_solutions=1 to Task::plan().

rhaschke avatar Feb 22 '22 06:02 rhaschke