使用触发语句启动 Choregraphe 应用程序和以不同的方式启动有什么区别?

What is the difference between starting Choregraphe application with a trigger sentence and starting in a different way?

我有多种应用程序可以通过以下三种方式之一启动:
1. 从机器人的平板电脑 - 当用户单击我使用 runBehaviourstartBehaviour
的图标时 2. 从对话框中触发一个事件或开始一个行为
3.带触发句

当应用程序 运行s 时,我希望机器人保持专注,直到它结束。这就是我停止 ALBasicAwarnessALSpeechRecognition 等模块的原因。然而,如果有人触摸机器人的头部,来自基本频道的 dialog_touch 就会被触发,Pepper 开始倾听并回答问题,即使他还没有离开应用程序。如果应用程序以 (1) 或 (2) 方式启动,但如果以 (3) 方式启动(带有触发语句),机器人会始终保持专注。

我想知道以触发语句开始和其他方式有什么区别,以及如何 运行 应用程序使机器人不会注意力不集中。

我无法详细告诉您系统的工作原理,但我猜对话和触发语句都在后台使用 ALBehaviorManager.startBehavior。如果您想确保没有任何东西中断您的应用程序,您必须将应用程序的状态(即行为)设置为 'Interactive'。只有一种行为可以 运行 作为交互。

关于状态的详细信息:http://doc.aldebaran.com/2-5/ref/life/state_machine_management.html?#states

而不是 runBehaviorstartBehavior 您应该利用机器人生命周期(参见 doc)。请改为调用 ALAutonomousLife.switchFocus,以便机器人 100% 专注于您的应用(所有其他应用都将停止)。

当机器人启动时,"solitary" 内的自主生命 运行 秒(无行为集中)。它注册并监听安装在机器人上的所有应用程序的 launch trigger conditions。当一个行为要开始时(即它的触发条件为真),那么"Autonomous Life"会自动调用switchFocus

然后根据behavior type

  • 如果行为是"interactive"那么自主生命也会注销启动触发条件(即一个交互行为不能被另一个行为停止)。
  • 如果行为是"solitary",则只有交互行为的触发条件仍然有效(即如果需要启动交互行为,则可以停止单独的行为)。

在您的应用程序结束时,机器人将返回 "solitary" 状态并继续观察触发条件。

如果你的机器人上有 "The Dialog",那么你的互动行为将自动启动(触发条件 "user is in zone 1")并且 运行 你所有的 "collaborative dialogs" .在对话框中,您可以使用 ^switchFocus 要求 autonomousLife 启动应用程序并停止它正在做的任何其他事情。