Pepper:暂时禁用事件

时间:2017-09-15 10:23:01

标签: pepper choregraphe

我正在与Choregraphe编写Pepper应用程序进行对话。此对话具有一些不同的排序状态:

  1. 您好(谈话开始)
  2. 询问信息
  3. 指定信息
  4. 再见(谈话结束)
  5. 要开始对话,人们必须靠近机器人,机器人必须检测到一张脸。

    问题在于,如果我在对话的中间并且机器人检测到另一张脸,它会在开始时开始对话。因此,当机器人正在进行对话时,我需要暂时禁用事件。有办法吗?

    这些是Choregraphe的事件输出:

    These are the events output of Choregraphe

3 个答案:

答案 0 :(得分:2)

在您的位置,我会将其编程为有限状态机:您可以通过简单的方式决定检测以及从一种状态切换到另一种状态的方式。更改状态时,将停止对一个状态的每个处理。

您可以在此处下载一个简单的状态机:http://protolab.aldebaran.com/public/the_3_templates.zip

答案 1 :(得分:1)

你不能在那种格式上禁用它们,但是如果你使用"订阅事件"框中,有开始/停止输入,您可以使用它来启用/禁用该框,即订阅/取消订阅事件。

答案 2 :(得分:0)

最后,我访问了此part of documentation并查看了参与模式

  

为了允许更广泛的行为,ALBasicAwareness提供了3种参与模式,用于指定机器人对受雇者的“聚焦”程度。

     

“Unengaged” :(默认模式)当机器人与用户交互时,它可能被任何刺激分散注意力,并与其他人交往。

     

“FullyEngaged”:一旦机器人与某人接触,它就会停止听刺激并与同一个人保持联系。如果它失去了被约会的人,它将再次听取刺激,并可能与另一个人交往。

     

“SemiEngaged”:当机器人与一个人交往时,它会一直聆听刺激,如果它受到刺激,它会朝着它的方向看,但它会一直回归对于与之交往的人。如果它失去了这个人,它会再次听到刺激,并可能与另一个人交往。

我使用了FullyEngaged,机器人只专注于第一个进入机器人 Zone 1 的人。

这样做是这样的:

basic_awareness = ALProxy("ALBasicAwareness", ip_robot, port_robot)
basic_awareness.setEngagementMode("FullyEngaged")
basic_awareness.startAwareness()