Я использую планировщик RRTstar от OMPL.
Для ее решения я использую:
ompl::base::PlannerStatus solved = setup.solve(time);
solve()
принимает двойное значение времени, чтобы указать запрошенное время работы алгоритма. Как я могу запросить остановку алгоритма сразу после того, как найдено первое правильное решение?
Экземпляр класса ompl::base::PlannerTerminationCondition
можно передать solve()
также, но я не уверен, как использовать это и будет ли это использоваться в этом случае.
Хорошо, Марк Молл ответил на этот вопрос по электронной почте мне.
Большинство планировщиков в OMPL останавливаются после того, как найдено первое решение. Но асимптотически оптимальные планировщики, такие как RRT *, стараются оптимизировать путь, если позволяет время. Это поведение можно изменить, вызвав setCostThreshold
с большим значением цели оптимизации (по умолчанию длина пути минимизирована).
Других решений пока нет …