【问题标题】:PDDL Durative-Action: Flexible durationPDDL 持续动作:灵活的持续时间
【发布时间】:2020-09-11 14:49:05
【问题描述】:

我正在 PDDL2.1 中实现基于函数 (charge_level) 的充电操作。 (charge_level) 的函数值工作并更新 ~10Hz。

我想创建一个名为charge 的操作,该操作一直持续到charge_level 达到阈值。那是

 (:durative-action charge
    :duration ( CONTINUE UNTIL (> (charge_level) HIGH_THRES)))
    :condition (and
        (at start ( < (charge_level) LOW_THRES)))
    :effect (and
    )
 ))

我该如何实现呢?我试图将?duration 变量分配给charge_level 并设置:duration (&gt; ?duration HIGH_THRES),但它不会成功计划。

提前致谢!

【问题讨论】:

    标签: ros planning pddl


    【解决方案1】:

    答案取决于您的解决方案的两个方面:

    • 您正在使用的规划器的功能
    • 您为规划模型和执行/控制选择的抽象级别

    对于第一个方面:如果您的域还对其他动作中的放电效果进行建模,并且如果您的规划器支持连续效果,您可以以类似于 boil 动作的方式对动作进行建模:

    (:durative-action boil-water
        :parameters ()
        :duration (>= ?duration 0)
        :condition (and
            (at start (and
                (not (boiling))
            ))
            (over all (and
                (<= (water-temperature) 100)
            ))
        )
        :effect (and
            (at start (and
                (boiling)
            ))
            (at end (and
                (not (boiling))
            ))
            (increase (water-temperature) (* #t 1.0))
        )
    )
    

    您可以找到full example is here连续效应 (increase (water-temperature) (* #t 1.0)) 定义了温度随时间变化的速度。这样,计划者就可以推断出该行动应该花费多长时间。这就是为什么定义持续时间时没有任何上限:duration (&gt;= ?duration 0)。这是假设在问题的域或目标中有另一个动作,这要求water-temperature 具有特定的数值。否则计划者没有理由将动作添加到计划中。

    另一种方法是使用PDDL+ 中定义的process(和event)。

    关于第二个方面:如果您的域确实不需要推理 charge_level 的值,您应该将其委托给您的计划执行基础架构。在实践中,作为状态推断的一部分,根据规划器外部的条件 (&gt; (charge_level) HIGH_THRES)) 评估布尔谓词 fully_charged 要简单得多。

    【讨论】:

    • 这很有道理,谢谢。我希望有更好的方法来定义反馈(increase (water-temperature) (* #t 1.0)),因为如果这在源/传感接口的其他地方发生了变化,那么它可能会搞砸这个动作。
    • 你当然可以用一个PDDL函数来替换1.0。这仍然只是现实生活的规划模型。只要变化率不随时间变化,这种影响是线性的,几个规划者将能够处理它。它在计划执行期间发生变化的事实并不一定会使计划无效。
    • 此外,如果没有其他动作在改变变化率,并且您的域中的收费率是恒定的(因此数字效应是线性的),您可以直接计算持续时间在(:duration ) 声明中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2019-09-19
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多