gpt4 book ai didi

c++ - 使用 OMPL Planner 区分超时和阈值匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:04:18 25 4
gpt4 key购买 nike

看着这个OMPL optimization tutorial ,有一行:

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

那么,如何区分超时解决方案和阈值匹配解决方案?

最佳答案

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
};

关于c++ - 使用 OMPL Planner 区分超时和阈值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com