Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add custom planner #122

Merged
merged 6 commits into from
Jan 17, 2024
Merged

Add custom planner #122

merged 6 commits into from
Jan 17, 2024

Conversation

trey0
Copy link
Contributor

@trey0 trey0 commented Jan 11, 2024

Adding a custom planner that is able to produce a high-quality plan specifically for our single example problem. You can verify plan quality for yourself looking at the plot in sample_output_plan.png. I can't vouch yet for the planner's robustness to problem variations. Here are some likely improvements needed:

  • Recognizing completed tasks in problem input: Currently, the custom planner assumes none of the listed goals have been completed, instead of searching for completed goals in the input problem state. This is an easy fix.
  • Generalized inter-robot ordering constraints: Currently, the user is expected to impose a total ordering on each robot's goals (basically as a hint to the planner, which may not be capable of finding a good ordering). But the user has almost no ability to specify ordering constraints between the goals of different robots. The let-other-robot-reach action is a very specific hack that starts to get at this capability (but is not yet supported by the custom planner). I have an idea for how to replace the hack with generalized inter-robot ordering constraints and want to add this capability both to the planning model and the custom planner.
  • Intermediate motion goals: Currently, the user can only specify a robot motion goal as the final state after the plan completes, or implicitly (in order to set the robot up for executing another action that requires it to be in a specific place). In some scenarios, the user may need the ability to move the robot to a specified place at a specified step partway through the plan (to get it out of the other robot's way). This would be a fairly easy feature to add to the model.
  • Proactive collision avoidance: Currently, the custom planner could theoretically crash in a collision avoidance deadlock situation where the robots are trying to get past each other and both of them are basically saying, "No, after you. No, after you." An obvious escape mechanism would be to designate one robot as having higher priority in these situations such that the other robot will proactively get out of the way.
  • Audit model compatibility: We should double-check that the custom planner model matches the PDDL model. A likely place to look for differences is in the invalid_reason() methods. A known deficiency, not causing a problem yet in practice, is that a move action should be considered invalid if its to location is not real (per the location-real predicate).

My next steps will be to start ticketing the above issues and discuss which ones to prioritize.

@trey0 trey0 requested review from Bckempa and bcoltin January 11, 2024 20:44
@trey0 trey0 merged commit ebc170e into nasa:develop Jan 17, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants