为什么 NAO 启动会干扰我的默认行为?

Why is NAOs startup interfering with my default behavior?

我为我的 NAOv6 (nao_main_behavior_V2) 创建了一个应该在启动时执行的主要行为。它将机器人语言设置为德语,激活一些 NAO 的 LED 并等待我触摸他的头部传感器以激活称为 Manual_Mode 的不同行为。

每次我启动 NAO 时,他都会执行主要行为,但一旦我触摸他的头部传感器以激活其他行为,他就会停止。使用 Choreograph 我可以找到此错误消息:

[ERROR] behavior.box :onInput_onStart:16 _Behavior__nao_main_behavior_v28d046fMain2726901504:/Error! Manual_Mode_12: _Behavior__nao_main_behavior_v28d046fMain2726901504:/Manual Mode_29: ALBehaviorManager::runBehavior Box _Behavior__nao_main_behavior_v28d046fManualMode2716269632:/Speech Reco. Ger_1 has failed with error: Traceback (most recent call last): File "/opt/aldebaran/lib/python2.7/site-packages/albehavior.py", line 120, in _safeCallOfUserMethod func() File "", line 55, in onInput_onStart RuntimeError: ALSpeechRecognition::pushContexts AsrHybridNuance::xPushContexts You need to stop or pause the ASR engine to be able to make this call.

Manual_Mode 行为访问语音识别,因此我可以说出命令,但我之前从未访问过任何与语音识别相关的内容。

使用 Choreograph 手动启动(或重新启动)行为工作正常,一切正常,我没有收到任何错误。

我尝试在启动期间使用第三种行为来启动 Main_Behavior,但我得到了相同的结果。

该行为最初是为 NAOv5 编写的,并且没有任何问题。

我认为这与后台的某些自主生命运行有关(取决于您使用的robot/version)。

尝试在开始你的"behavior_v2"时使用api命令停止自主生活,或者改变你的"manual_mode"行为(interactive/solitary)(或行为)。

关于停止自主生命:参考apiALAutonomousLife中的setState或enableAnAbility方法(取决于你的版本)。

关于改变行为的本质,​​例如可以在这个视频中看到:https://youtu.be/xPdNoiuaQag

我找到了解决方法。我为我的行为创建了一个 launch trigger condition

(('Launchpad/LifeTime' ~30 ))

在 NAO 完成启动并经过 30 秒后,我的行为被触发并且正常工作。