PDDL、Plansys2 错误:减少未命名已知令牌
我正在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据规划维基,
减少
由要求numeric-fluids
提供,并且POPF 不支持。According to the Planning Wiki,
decrease
is provided by the requirementnumeric-fluents
, and POPF does not support it.