PDDL、Plansys2 错误:减少未命名已知令牌

发布于 2025-01-13 03:23:41 字数 3241 浏览 1 评论 0原文

我正在使用 ROS2 规划系统 (Plansys2) 使用默认规划器 POPF 进行 PDDL 规划。在使用 PDDL flus 规划领域时,PDDL 解析器和/或(不确定!)领域专家节点会导致 PDDL Fluent 的降低效果出现错误 [错误] PDDL 解析:decrease 未命名已知标记。

POPF 规划器正在使用命令 ros2 run popf popf为同一域文件生成预期的规划,没有任何错误。

欢迎有关此问题的任何帮助或建议。先感谢您!

相关详细信息/资源:

ROS2版本-foxy。

Plansys2 存储库 - https://github.com/IntelligentRoboticsLabs/ros2_planning_system

Plansys2 教程 - https://intelligentroboticslab.gsyc.urjc.es/ros2_planning_system.github。 使用io/tutorials/index.html

域 - (此处的代码粘贴为片段,请原谅我)

(define (domain simple)
(:requirements :strips :typing :adl :fluents :durative-actions)
(:types
    robot
    room
)

(:predicates
    (robot_at ?r - robot ?ro - room)
    (connected ?ro1 ?ro2 - room)
    (battery_full ?r - robot)
    (charging_point_at ?ro - room)
)

(:functions
    (battery_level ?r - robot)
)

(:durative-action move
    :parameters (?r - robot ?r1 ?r2 - room)
    :duration ( = ?duration 10)
    :condition (and
        (at start(connected ?r1 ?r2))
        (at start(robot_at ?r ?r1))
        (over all(> (battery_level ?r) 15))
        )
    :effect (and
        (decrease (battery_level ?r) (* #t 0.5))
        (at start(not(robot_at ?r ?r1)))
        (at end(robot_at ?r ?r2))
    )
)

(:durative-action askcharge
    :parameters (?r - robot ?r1 ?r2 - room)
    :duration ( = ?duration 5)
    :condition (and
        (at start(robot_at ?r ?r1))
        (at start(charging_point_at ?r2))
        (over all (> (battery_level ?r) 10))
    )
    :effect (and
        (decrease (battery_level ?r) (* #t 0.5))
        (at start(not(robot_at ?r ?r1)))
        (at end(robot_at ?r ?r2))
    )
)

(:durative-action charge
    :parameters (?r - robot ?ro - room)
    :duration ( = ?duration 20)
    :condition (and
        (at start(robot_at ?r ?ro))
        (at start(charging_point_at ?ro))
        (over all (> (battery_level ?r) 1))
    )
    :effect (and
         (increase (battery_level ?r) (* #t 5.0))
         (at end(battery_full ?r))
    )
)

)

使用的问题 - (此处的代码作为片段粘贴,请原谅我)

(define (problem test) (:domain simple)
(:objects 
    bot - robot
  entrance  - room
  kitchen - room
  bedroom - room
  dinning - room
  bathroom - room
  chargingroom - room
)

(:init
    (connected entrance dinning)
    (connected dinning entrance)
    (connected dinning kitchen)
    (connected kitchen dinning)
    (connected dinning bedroom)
    (connected bedroom dinning)
    (connected bathroom bedroom)
    (connected bedroom bathroom)
    (connected chargingroom kitchen)
    (connected kitchen chargingroom)
    (charging_point_at chargingroom)
    (robot_at bot entrance)
    (= (battery_level bot) 90)
)

(:goal (and
        (robot_at bot bathroom)   
))


)

I was working with ROS2 Planning System (Plansys2) for PDDL planning with the default planner POPF. While planning the domain with PDDL fluents, the PDDL parser and/or (not sure!) domain expert node results in an error for PDDL fluents' decrease effect
[ERROR] PDDL Parsing: decrease does not name a known token.

The POPF planner is producing a expected plan for the same domain file without any error using command ros2 run popf popf <path/to/domain.pddl> <path/to/problem.pddl>.

Any help or suggestions are welcome regarding this issue. Thank you in advance!

Related details/ resources:

ROS2 version - foxy.

Plansys2 repository - https://github.com/IntelligentRoboticsLabs/ros2_planning_system

Plansys2 Tutorials - https://intelligentroboticslab.gsyc.urjc.es/ros2_planning_system.github.io/tutorials/index.html

domain used - (code here pasted as a snippet, pardon me for that)

(define (domain simple)
(:requirements :strips :typing :adl :fluents :durative-actions)
(:types
    robot
    room
)

(:predicates
    (robot_at ?r - robot ?ro - room)
    (connected ?ro1 ?ro2 - room)
    (battery_full ?r - robot)
    (charging_point_at ?ro - room)
)

(:functions
    (battery_level ?r - robot)
)

(:durative-action move
    :parameters (?r - robot ?r1 ?r2 - room)
    :duration ( = ?duration 10)
    :condition (and
        (at start(connected ?r1 ?r2))
        (at start(robot_at ?r ?r1))
        (over all(> (battery_level ?r) 15))
        )
    :effect (and
        (decrease (battery_level ?r) (* #t 0.5))
        (at start(not(robot_at ?r ?r1)))
        (at end(robot_at ?r ?r2))
    )
)

(:durative-action askcharge
    :parameters (?r - robot ?r1 ?r2 - room)
    :duration ( = ?duration 5)
    :condition (and
        (at start(robot_at ?r ?r1))
        (at start(charging_point_at ?r2))
        (over all (> (battery_level ?r) 10))
    )
    :effect (and
        (decrease (battery_level ?r) (* #t 0.5))
        (at start(not(robot_at ?r ?r1)))
        (at end(robot_at ?r ?r2))
    )
)

(:durative-action charge
    :parameters (?r - robot ?ro - room)
    :duration ( = ?duration 20)
    :condition (and
        (at start(robot_at ?r ?ro))
        (at start(charging_point_at ?ro))
        (over all (> (battery_level ?r) 1))
    )
    :effect (and
         (increase (battery_level ?r) (* #t 5.0))
         (at end(battery_full ?r))
    )
)

)

Problem used - (code here pasted as a snippet, pardon me for that)

(define (problem test) (:domain simple)
(:objects 
    bot - robot
  entrance  - room
  kitchen - room
  bedroom - room
  dinning - room
  bathroom - room
  chargingroom - room
)

(:init
    (connected entrance dinning)
    (connected dinning entrance)
    (connected dinning kitchen)
    (connected kitchen dinning)
    (connected dinning bedroom)
    (connected bedroom dinning)
    (connected bathroom bedroom)
    (connected bedroom bathroom)
    (connected chargingroom kitchen)
    (connected kitchen chargingroom)
    (charging_point_at chargingroom)
    (robot_at bot entrance)
    (= (battery_level bot) 90)
)

(:goal (and
        (robot_at bot bathroom)   
))


)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文