重复访问 NAO 机器人上 ALMemory 中的数据 - 未找到数据
Repeated Access to Data in ALMemory on NAO Robot - Data not found
我在 windows 10.
上使用带有 Choregraphe 2.1.4 的 nao 机器人
在我的流程图中有几个框使用相同的数据。当我第一次使用数据时,它将随后插入到内存中:
self.memory = ALProxy("ALMemory") ... self.memory.insertData("dataKey", self.value)
在两个位置我需要访问数据,所以我使用:
self.memory = ALProxy("ALMemory") ... self.value = self.memory.getData("dataKey")
当我运行这个程序时(程序甚至没有启动),我立即得到以下错误:
[ERROR] behavior.box :_safeCallOfUserMethod:281 _Behavior__lastUploadedChoregrapheBehaviorbehavior_1172060400__root__unknownProgramName_6__redMarkedBox_2: Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/naoqi.py", line 271, in _safeCallOfUserMethod
func()
File "<string>", line 12, in onLoad
File "/usr/lib/python2.7/site-packages/naoqi.py", line 301, in __call__
return self.__wrapped__.method_missing(self.__method__, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/naoqi.py", line 371, in method_missing
raise e
RuntimeError: ALMemory::getData
ALMemory::getData
Data not found dataKey
在我的流程图中,第二个框被标记为红色。
我的问题是:如何从内存中第二次获取数据?
我也试过第二次往内存中插入数据,但是没有任何改变。最近我向受影响的盒子添加了输出和输入,以将所需的数据发送到盒子。但是我的程序越来越混乱。
几种可能性:
- 在行为开始的某个地方使用 ALMemory.declareEvent,在其余部分之前(或插入一个好的默认值,这可以很好地确保您始终从头开始)
- 用 try/except RuntimeError 语句包装你对 ALMemory.getData 的使用,这样你就可以处理数据尚未插入的情况
您还应该注意在您的盒子里您进行这些调用的地方;加载图表时调用框的 .onLoad(),然后再触发任何输入,因此如果您尝试读取 ALMemory 的代码在其中,但写入它的位置在 .onStart() 中,那么您得到也就不足为奇了这个错误。
我在 windows 10.
上使用带有 Choregraphe 2.1.4 的 nao 机器人在我的流程图中有几个框使用相同的数据。当我第一次使用数据时,它将随后插入到内存中:
self.memory = ALProxy("ALMemory") ... self.memory.insertData("dataKey", self.value)
在两个位置我需要访问数据,所以我使用:
self.memory = ALProxy("ALMemory") ... self.value = self.memory.getData("dataKey")
当我运行这个程序时(程序甚至没有启动),我立即得到以下错误:
[ERROR] behavior.box :_safeCallOfUserMethod:281 _Behavior__lastUploadedChoregrapheBehaviorbehavior_1172060400__root__unknownProgramName_6__redMarkedBox_2: Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/naoqi.py", line 271, in _safeCallOfUserMethod
func()
File "<string>", line 12, in onLoad
File "/usr/lib/python2.7/site-packages/naoqi.py", line 301, in __call__
return self.__wrapped__.method_missing(self.__method__, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/naoqi.py", line 371, in method_missing
raise e
RuntimeError: ALMemory::getData
ALMemory::getData
Data not found dataKey
在我的流程图中,第二个框被标记为红色。
我的问题是:如何从内存中第二次获取数据?
我也试过第二次往内存中插入数据,但是没有任何改变。最近我向受影响的盒子添加了输出和输入,以将所需的数据发送到盒子。但是我的程序越来越混乱。
几种可能性:
- 在行为开始的某个地方使用 ALMemory.declareEvent,在其余部分之前(或插入一个好的默认值,这可以很好地确保您始终从头开始)
- 用 try/except RuntimeError 语句包装你对 ALMemory.getData 的使用,这样你就可以处理数据尚未插入的情况
您还应该注意在您的盒子里您进行这些调用的地方;加载图表时调用框的 .onLoad(),然后再触发任何输入,因此如果您尝试读取 ALMemory 的代码在其中,但写入它的位置在 .onStart() 中,那么您得到也就不足为奇了这个错误。