一份完整的PDDL程序代码是由domain文件和problem文件组成。在详细介绍这两者之前,我们先看一下PDDL代码中常见的数据成员(本文章涉及的数据成员仅为最基础的解决一个简单问题需要,其它待深入学习以后才能了解)
- objects:在规划过程中涉及到的对象
- init: 初始状态
- goal: 目标,也就是我们要到达的目标下各个对象的状态
- predicates:objects的属性的描述,可以为True或者False
- action:对objects的操作,action应该包含三个描述,一个是涉及的对象,一个是进行action之前涉及对象的状态,以及action之后对象的状态
其中,init, goal, objects是problem文件的组成部分,其它是domain文件的组成。
接下来我们通过一个例子来说明
假设有两个房间rooma和roomb,有两个球ball1和ball2都在rooma中,我们有一个机器人robby在romma中
robby有两只手臂left和right,现在我们要让robby把两个球从rooma中移到roomb中去
domain
domain的定义
(define (domain <domain name>)
(:predicates <predicates pddl codes>)
(:action <action name>
:parameters <parameters pddl codes>
:precondition <precondition pddl codes>
:effect <effect pddl codes>
)
)
</

本文介绍了PDDL(Planning Domain Definition Language)的基础知识,包括domain和problem文件的构成,如objects、init、goal、predicates和actions。通过一个机器人搬运球的例子,详细解析了如何定义对象属性和动作,并展示了如何编写problem的init和goal状态。
最低0.47元/天 解锁文章
20





