首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用触发句启动Choregraphe应用程序和以不同的方式启动Choregraphe应用程序有什么区别?

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

Stack Overflow用户
提问于 2017-11-11 21:19:23
回答 2查看 942关注 0票数 1

我有多种应用程序可以通过以下三种方式之一启动:

  1. 当用户单击图标时,我使用runBehaviourstartBehaviour
  2. 从对话框中触发事件或启动行为
  3. 带有触发语句

当应用程序运行时,我希望机器人保持专注直到它结束。这就是为什么我会停止像ALBasicAwarnessALSpeechRecognition这样的模块。然而,如果有人碰触机器人的头部,基本频道的dialog_touch就会被触发,Pepper开始倾听和回答问题,尽管他还没有离开应用程序。如果应用程序是以一种方式(1)或(2)启动的,那么Т就会发生,但是如果它是以一种方式(3) (带有触发器语句)启动的,那么机器人将始终保持专注。

我想知道从触发语句开始和其他方式的区别是什么,以及如何运行应用程序,这样机器人就不会专注于。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-13 22:57:35

而不是runBehaviorstartBehavior,您应该利用机器人的生命周期(参见文档)。代之以调用ALAutonomousLife.switchFocus,这样机器人就能百分之百地专注于你的应用程序(所有其他的都会被停止)。

当机器人启动时,自主生活就在“孤独”中运行(没有专注的行为)。它为安装在机器人上的所有应用程序注册和监听发射触发条件。当行为想要启动(即其触发条件为真)时,“自主生命”将自动调用switchFocus

然后取决于行为类型

  • 如果行为是“交互的”,那么自主生命也将取消启动触发条件的注册(即交互行为不能被其他行为所阻止)。
  • 如果行为是“孤立的”,那么只有交互行为的触发条件仍然是活跃的(也就是说,如果需要启动交互行为,就可以停止单独的行为)。

在您的申请结束,然后机器人回到“孤独”状态,并继续观察触发条件。

如果您的机器人上有“对话框”,那么您的交互行为将自动启动(触发条件为“用户在区域1"),并运行所有”协作对话框“。在对话框中,您可以使用^switchFocus要求autonomousLife启动一个应用程序,并停止它正在做的任何其他事情。

票数 4
EN

Stack Overflow用户

发布于 2017-11-13 11:22:52

我不能详细告诉您系统是如何工作的,但我猜对话框和触发器语句都使用ALBehaviorManager.startBehavior作为后台。如果您想确保应用程序没有中断,则必须将应用程序的状态(即行为)设置为“交互式”。只有一种行为可以作为交互运行。

关于状态的详细信息:management.html?#states

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47242888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档