2017-09-15 77 views
1

我正在用Choregraphe编写Pepper应用程序进行对话。这种对话有一些不同的排序状态:胡椒:暂时禁用事件

  1. 你好(谈话的开始)
  2. 索取资料
  3. 指定信息
  4. 再见(谈话结束)

启动谈话中,人们必须靠近机器人,机器人必须检测到一张脸。

问题是,如果我处于对话的中间并且机器人检测到另一张脸,它会在开始时开始对话。所以我需要暂时禁用事件,而机器人正在进行对话。有没有办法做到这一点?

这些输出的事件Choregraphe的:

These are the events output of Choregraphe

回答

0

最后我参观这个part of documentation看着接合方式

为了实现更广泛的行为,ALBasicAwareness提供了3种参与模式,指定机器人如何“聚焦”自己的人。

“Unengaged”:(默认模式)当机器人与使用者接触时,它可以被任何刺激分散注意力,并与其他人交流。

“FullyEngaged”:只要机器人与人接触,它就会停止听刺激并与同一个人保持联系。如果它失去了订婚的人,它会再次听取刺激,并可能与另一个人进行交往。

“SemiEngaged”:当机器人与一个人交往时,它会一直听到刺激,如果它得到刺激,它会朝它的方向看,但它总是会回到那个人身上正在参与。如果失去这个人,它会再次听取刺激,并可能与另一个人进行交流。

我已经使用FullyEngaged和机器人只侧重于进入机器人区1的第一人。

这是这样完成的:

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

您不能禁用它们对格式,但如果您使用“订阅事件”中,也有启动/停止输入,你可以用于启用/禁用该框,即订阅/取消订阅事件。

+0

我可以订阅喜欢'fromTabletResponse'事件,但像''PersonEnteredZone1'or事件PersonMovedAway'用实际行动自动触发,而不是订阅的事件,所以它不能帮助 – albert

+0

事件被触发,但你不必听他们。你在哪里订阅这些内容? – JLS

+0

我在Web代码(JS)中订阅了'fromTabletResponse'来使用html DOM事件发送数据,例如按钮中的点击。但是在choregraphe中,当您在左上角创建事件(问题图像)时,它会自动订阅以监听事件 – albert

2

在你的地方,我会将它编程为一个有限状态机:你以一种简单的方式决定你的检测和从一种状态切换到另一种状态的方式。当您更改状态时,每个状态的处理都会停止。

你可以下载一个简单的状态机在这里:http://protolab.aldebaran.com/public/the_3_templates.zip

+0

它可以在一个循环内部,但是当一个事件被触发时,它将执行与该事件相关的代码。 – albert