我想知道NAO行为框的输出函数通常定义在哪里。
我在API中找不到任何相关文档。确实可以找到一些,但不能用于输出功能。
以Speech Reco框为例,我可以找到函数的定义" WordRecognized"在线API,但不是" wordRecognized" (区分大小写)和" onNothing"。直觉是他们在框的脚本中将它们定义为帮助器(可以通过双击框来获得),但我只是在脚本中找不到任何相关的实现。
之前有人有这个并知道解决方案吗?我非常感谢任何反馈,因为我想检查它们是如何定义的。
Speech Reco的代码如下所示,对于其他一些盒子也会出现这种情况:
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self, False)
try:
self.asr = ALProxy("ALSpeechRecognition")
except Exception as e:
self.asr = None
self.logger.error(e)
self.memory = ALProxy("ALMemory")
def onLoad(self):
from threading import Lock
self.bIsRunning = False
self.mutex = Lock()
self.hasPushed = False
self.hasSubscribed = False
self.BIND_PYTHON(self.getName(), "onWordRecognized")
def onUnload(self):
from threading import Lock
self.mutex.acquire()
try:
if (self.bIsRunning):
if (self.hasSubscribed):
self.memory.unsubscribeToEvent("WordRecognized", self.getName())
if (self.hasPushed and self.asr):
self.asr.popContexts()
except RuntimeError, e:
self.mutex.release()
raise e
self.bIsRunning = False;
self.mutex.release()
def onInput_onStart(self):
from threading import Lock
self.mutex.acquire()
if(self.bIsRunning):
self.mutex.release()
return
self.bIsRunning = True
try:
if self.asr:
self.asr.setVisualExpression(self.getParameter("Visual expression"))
self.asr.pushContexts()
self.hasPushed = True
if self.asr:
self.asr.setVocabulary( self.getParameter("Word list").split(';'), self.getParameter("Enable word spotting") )
self.memory.subscribeToEvent("WordRecognized", self.getName(), "onWordRecognized")
self.hasSubscribed = True
except RuntimeError, e:
self.mutex.release()
self.onUnload()
raise e
self.mutex.release()
def onInput_onStop(self):
if( self.bIsRunning ):
self.onUnload()
self.onStopped()
def onWordRecognized(self, key, value, message):
if(len(value) > 1 and value[1] >= self.getParameter("Confidence threshold (%)")/100.):
self.wordRecognized(value[0]) #~ activate output of the box
else:
self.onNothing()
答案 0 :(得分:0)
在创建或编辑框输入或输出时定义了这些方法:
如果您为输入命名为“onMyTruc”,则在触发输入时将调用onInput_onMyTruc(self)方法。
如果将名称“output_value”赋予某个输出,它将创建一个可调用的方法名称:“self.output_value()”
在您的示例中,wordRecognized和onNothing是SpeechReco框输出的名称。