Перец не реагирует на justArrived: тип объекта преобразования ALValue:: не обработан
Поэтому я программирую Pepper и пытаюсь заставить его реагировать на человека, появляющегося в его видении, используя событие JustArrived ALPeoplePerception. Но каждый раз, когда я запускаю код, я получаю ошибку ALValue::conversion
object type not handled
и я не могу решить это.
Полный код:
from naoqi import *
from time import sleep
from threading import Lock
ROBOT_IP = '192.168.1.101'
ROBOT_PORT = 9559
class MyFaceRec(ALModule):
"""A Module to recognize persons"""
def __init__(self, name):
ALModule.__init__(self,name)
self.mutex = Lock()
try:
self.faceProxy = ALProxy("ALPeoplePerception")
except Exception, fpError:
raise fpError
try:
self.memProxy = ALProxy("ALMemory")
except Exception, memError:
raise memError
def onLoad(self):
try:
self.faceProxy.subscribe("faceRec")
except Exception, sErr:
print "Couldnt subscribe to 'faceRec'"
raise sErr
self.BIND_PYTHON(self.getName(), "onJustArrived")
self.faceProxy.setGraphicalDisplayEnabled(True)
self.faceProxy.setMovementDetectionEnabled(True)
self.faceProxy.setTimeBeforePersonDisappears(5)
self.faceProxy.setMaximumDetectionRange(0.5)
def onInput_onStart(self):
self.mutex.acquire()
try:
#self.memProxy.subscribeToEvent("PeoplePerception/JustArrived", self.getName(), "onJustArrived")
self.subscriber = self.memProxy.subscriber("JustArrived")
self.subscriber.signal.connect(self.onJustArrived)
print "I'm starting to look for people"
except Exception, subscrErr:
self.mutex.release()
print "Error with subscribing to JustArrived"
print subscrErr
self.onUnload()
raise subscrErr
self.mutex.release()
def onUnload(self):
self.mutex.acquire()
try:
self.memProxy.unsubscribeToEvent("JustArrived", self.getName())
except Exception, unsubErr:
self.mutex.release()
print "Error with unsubscribing to JustArrived"
print unsubErr
exit(1)
raise unsubErr
print "I'm done"
try:
self.faceProxy.unsubscribe("faceRec")
except Exception, usErr:
self.mutex.release()
print "Error with unsubscribing from 'faceRec"
exit(1)
raise usErr
self.mutex.release()
def onJustArrived(self, value):
print "I've seen somebody!"
global broker
broker = ALBroker("pythonBroker", "0.0.0.0", 0, ROBOT_IP, ROBOT_PORT)
global pythonPeopleModule
pythonPeopleModule = MyFaceRec('pythonFaceRec')
pythonPeopleModule.onLoad()
pythonPeopleModule.onInput_onStart()
sleep(10)
pythonPeopleModule.onUnload()
Когда я использую закомментированную строку self.memProxy.subscribeToEvent("PeoplePerception/JustArrived", self.getName(), "onJustArrived")
код компилируется, но не реагирует на событие, даже если он запускается с помощью прилагаемого программного обеспечения для монитора.
Заранее спасибо за помощь:)