【问题标题】:PDDL Planning for Humanoid - Plan not able to include humanoid respond and conditional outcome人形机器人的 PDDL 规划 - 计划无法包括人形机器人响应和条件结果
【发布时间】:2021-03-16 16:51:10
【问题描述】:

我是 PDDL 和 AI 规划领域的新手。我实际上是在为一个人形机器人在场景中与人类交互创建一个计划。场景如下

  1. 人类进入房间(房间里有机器人和一些物体)
  2. 机器人检测到人
  3. 检测后问候人类
  4. 然后人类要一个杯子
  5. 机器人假设人类想喝咖啡,并在人类服用药物的时间做出反应(药物和咖啡之间应该有 1 小时的间隔)
  6. 人类响应时间
  7. 如果时间与 1 小时间隔匹配,机器人会响应它会找到杯子
  8. 机器人检测到桌上的杯子
  9. 机器人响应人类的杯子在桌子上
  10. 人类拿起杯子
  11. 机器人在检测到人拿着杯子后向人打招呼

我的PDDL域文件逻辑如下:

(define (domain sp)
 (:requirements :typing :strips :adl)


 (:types    location agent item - object 
            robot human speak - agent 
            room - location
            fruit cup table - item
            clear polite listenatt - speak)

(:predicates    
        (at ?o - object ?l - location)
        (detected_human ?p - human  ?l - room)
        (greeted ?r - robot ?p - human)
        (detected_cup ?c - cup  ?l - room)
        (holded ?c - cup ?p - human)
        (medichecked ?r - robot ?p - human)
        (human_asked ?p - human)
        (robot_responded ?r - robot ?cl - clear ?pl - polite)
)


    (:action detect_human
        :parameters (?p - human ?r - robot ?l - location)
        :precondition (at ?r ?l)
        :effect (detected_human ?p ?l)
    )

    (:action detect_cup
        :parameters (?p - human ?c - cup ?r - robot ?l - location )
        :precondition (and (detected_human ?p ?l) 
                           (human_asked ?p) 
                           (medichecked ?r ?p) 
                           )
        :effect (detected_cup ?c ?l) 
    )

    (:action greet
        :parameters (?r - robot ?p - human ?l - location ?pl - polite ?cl - clear)
        :precondition (and (at ?r ?l) (detected_human ?p ?l)) 
        :effect (and (greeted ?r ?p) (robot_responded ?r ?cl ?pl))
    )

    (:action hold
        :parameters (?c - cup ?p - human ?l - location ?r - robot ?cl - clear ?pl - polite)
        :precondition (and (detected_human ?p ?l) 
                           (detected_cup ?c ?l) 
                           (robot_responded ?r ?cl ?pl) 
                           (medichecked ?r ?p) 

                           ) 
        :effect (holded ?c ?p)
    )    
    
    (:action check_medi
        :parameters (?p - human ?l - location ?r - robot)
        :precondition (human_asked ?p) 
        :effect (medichecked ?r ?p)
    )  
    
    (:action human_ask
        :parameters (?p - human ?l - location ?r - robot)
        :precondition (and (detected_human ?p ?l) (greeted ?r ?p))
        :effect (human_asked ?p)
    )  
    
    (:action robot_respond
        :parameters (?p - human ?l - location ?r - robot ?cl - clear ?pl - polite ?c -cup)
        :precondition (and (at ?r ?l) (detected_human ?p ?l)) 
        :effect (and (when (human_asked ?p) (robot_responded ?r ?cl ?pl))
                     (when (detected_cup ?c ?l) (robot_responded ?r ?cl ?pl)))
    )  
)

我的PDDL问题文件如下:

(define (problem test12)
(:domain sp)

(:objects person0 - Human 
          pepper0 - Robot 
          apple - Fruit
          cup0 - Cup
          table0 - Table
          room0 - Room
          clear0 - Clear
          polite0 - Polite)

(:init
(at pepper0 room0)


)
(:goal (holded cup0 person0)
)

目前它生成以下计划:


plan-found
(detect_human person0 pepper0 room0)
(greet pepper0 person0 room0 polite0 clear0)
(human_ask person0 room0 pepper0)
(check_medi person0 room0 pepper0)
(detect_cup person0 cup0 pepper0 room0)
(hold cup0 person0 room0 pepper0 clear0 polite0)

我希望预期的计划是这样的:


plan-found
(detect_human person0 pepper0 room0)
(greet pepper0 person0 room0 polite0 clear0)
(human_ask person0 room0 pepper0)
(robot_respond person0 polite0 clear0 room0)
(check_medi person0 room0 pepper0)
(robot_respond person0 polite0 clear0 room0)
(detect_cup person0 cup0 pepper0 room0)
(robot_respond person0 polite0 clear0 room0)
(hold cup0 person0 room0 pepper0 clear0 polite0)

我不知道为什么robot_respond 行动从未出现在计划中,即使它在效果和前提条件中给出。

如果对这个问题有任何指导,我将不胜感激。一个多星期以来,我一直在努力使逻辑正确。

【问题讨论】:

  • 我不太确定您希望如何对问题进行建模。无论如何,我的理解是机器人应该在某些动作后做出响应,而人应该等待响应?您可以通过将robot_responded ... 添加到人类行为的前提条件并添加(not (robot_responded ... )) 作为效果来使用robot_responded ... 变量来实现此目的。您可能还需要在操作greet 的前提条件中添加 (not (greeded ...)。
  • @David Speck,您对我的问题的理解是准确的。我已经根据您的 cmets 进行了修改,它完全符合我的要求。我开发这种方式的原因是它(机器人)必须遵循某些社会实践规范,例如与人类礼貌地交谈、说话和聆听时的手势等。这将与人与人之间的互动密切匹配。

标签: artificial-intelligence planning pddl


【解决方案1】:

“机器人响应”动作是必不可少的吗?我的意思是,您似乎没有在动作“机器人响应”中设置任何效果作为其他人的条件,或者可能在动作“问候”中可以满足相同的谓词“(机器人响应)”?

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 2021-04-09
    • 2021-12-20
    相关资源
    最近更新 更多