Перец не реагирует на 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")код компилируется, но не реагирует на событие, даже если он запускается с помощью прилагаемого программного обеспечения для монитора.

Заранее спасибо за помощь:)

0 ответов

Другие вопросы по тегам