辣椒人体检测

时间:2017-09-05 11:57:30

标签: pepper

我想在不依赖人脸检测的情况下发现人。如果光照条件差,或胡椒面临,人们就不会被发现。 记忆事件' PeoplePerception / JustArrived'和' EngagementZones / PersonApproached'似乎依赖于相机可以检测到的面孔。 是否存在由激光/红外/声纳距离变化触发的记忆事件?

我想知道是否有更好的解决方案:

while True:
    floatDist = self.memory.getData('Device/SubDeviceList/Platform/Front/Sonar/Sensor/Value')
    if floatDist < 1.0:
        doSomething() 
    sleep(0.5)

1 个答案:

答案 0 :(得分:1)

您可以使用前置声纳和“FaceDetected”事件进行人体检测。

但是你可以使用PeriodicTask而不是while循环。你每隔0.5秒检查一次事件,你就可以停止它。

我会这样做:

class HumanDetector:
    def __init__(self, ALMemory):
        self.ALMemory = ALMemory

        # subscribe to FaceDetected
        self.subscriber = self.ALMemory.subscriber("FaceDetected")
        self.subscriber.signal.connect(self.on_human_tracked)

        self.task = qi.PeriodicTask()
        self.task.setCallback(self._task)
        self.task.setUsPeriod(50000)
        self.task.start(True)

    def on_human_tracked(self, value):
        print "do something with the face"

    def _stop(self):
        print "_stop..."
        self.task.stop()
        self.face_detection.unsubscribe("FaceDetected")
        print "_stop done"

    def _task(self):
        print "_task..."
        floatDist = self.memory.getData('Device/SubDeviceList/Platform/Front/Sonar/Sensor/Value')
        if floatDist < 1.0:
            print "do something with the object in front of the robot"

        print "_task done"

所以这是一个需要模块ALMemory的python类的例子。 使用模块ALMemory,您将检查声纳以及是否检测到面部。