Различение времени ожидания и порогового совпадения с помощью OMPL Planner - PullRequest
0 голосов
/ 22 ноября 2018

В этом руководстве по оптимизации OMPL есть строка:

ob::PlannerStatus solved = planner->solve(1.4/*seconds timeout*/);

С этим PlannerStatus определением.

ОднакоЯ использую алгоритм RRT # с определенным порогом стоимости, скажем, 10.0 ради аргумента.Если я установлю слишком низкое значение, алгоритм по умолчанию прерывается через 1,4 секунды с наилучшим найденным значением и выводит сообщение:

Info: ... Final solution cost 17.071
Info: Solution found in 1.418528 seconds

И возвращает ob::PlannerStatus::EXACT_SOLUTION - я полагаю, у меня есть точное, но, возможно, не оптимальное решение.

Если я запускаю с другим набором данных, я вижу что-то вроде:

Info: ... Final solution cost 9.543
Info: Solution found in 0.003216 seconds

Это также, однако, возвращает ob::PlannerStatus::EXACT_SOLUTION.

Итак, как я могу провести различие между решением с тайм-аутом и решением с сопоставлением пороговых значений?

1 Ответ

0 голосов
/ 11 июня 2019

EXACT_SOLUTION означает, что планировщик уже нашел правильный путь между начальной и конечной конфигурациями, независимо от его стоимости.APPROXIMATE_SOLUTION - это когда время планирования заканчивается, и планировщик не может найти какое-либо решение, чтобы он возвращал путь, ближайший к конфигурации цели.

Для вашей проблемы есть два решения:

Первое решение - проверить стоимость пути и время планирования.Если оба параметра ниже установленных вами значений;следовательно, это решение, которое вы ищете.

Второй - изменить код планировщика, чтобы он возвращал статус различных решений, который можно редактировать с помощью перечислений StatusType.

Как только вы измените код планировщика, вам нужно перейти в каталог сборки OMPL (..build / Release) и запустить «make install» в терминале.

Вы можете добавить свои перечисленияompl :: base :: PlannerStatus

        /// The possible values of the status returned by a planner
        enum StatusType
        {
            /// Uninitialized status
            UNKNOWN = 0,
            /// Invalid start state or no start state specified
            INVALID_START,
            /// Invalid goal state
            INVALID_GOAL,
            /// The goal is of a type that a planner does not recognize
            UNRECOGNIZED_GOAL_TYPE,
            /// The planner failed to find a solution
            TIMEOUT,
            /// The planner found an approximate solution
            APPROXIMATE_SOLUTION,
            /// The planner found an exact solution
            EXACT_SOLUTION,
            /// The planner crashed
            CRASH,
            /// The planner did not find a solution for some other reason
            ABORT,
            /// The number of possible status values
            TYPE_COUNT
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...