首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OMPL Planner区分超时和阈值匹配

使用OMPL Planner区分超时和阈值匹配
EN

Stack Overflow用户
提问于 2018-11-22 16:26:17
回答 1查看 126关注 0票数 2

看看这个OMPL optimization tutorial,有一行代码:

代码语言:javascript
复制
ob::PlannerStatus solved = planner->solve(1.4/*seconds timeout*/);

使用此PlannerStatus定义。

但是,为了便于讨论,我使用的是具有一定成本阈值的RRT#算法,假设为10.0。如果我将其设置得太低,算法会在1.4秒后终止,并打印一条消息:

代码语言:javascript
复制
Info: ... Final solution cost 17.071
Info: Solution found in 1.418528 seconds

并返回ob::PlannerStatus::EXACT_SOLUTION -我想我确实有一个精确的,但可能不是最优的解决方案。

如果我使用一组不同的数据运行,我可以看到类似以下内容:

代码语言:javascript
复制
Info: ... Final solution cost 9.543
Info: Solution found in 0.003216 seconds

然而,这也会返回ob::PlannerStatus::EXACT_SOLUTION

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

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 13:12:02

EXACT_SOLUTION意味着计划者已经找到了开始配置和目标配置之间的有效路径,而不考虑其成本。APPROXIMATE_SOLUTION是指计划时间结束,计划程序找不到任何解决方案,因此它返回最接近目标配置的路径。

对于您的问题,有两种解决方案:

第一种解决方案是检查返回的路径成本和规划时间。如果两个参数都低于您设置的值;因此,这就是您要寻找的解决方案。

第二种方法是更改计划器代码以返回不同的解决方案状态,这些状态可以通过StatusType枚举进行编辑。

一旦更改了规划器代码,您需要转到OMPL的build目录(..build/Release),并在终端中运行"make install“。

您可以将枚举添加到ompl::base::PlannerStatus

代码语言:javascript
复制
        /// 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
        };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53426661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档