胡椒人体检测
Pepper human detection
我想在不依赖人脸检测的情况下检测人。在光照条件差或 Pepper 背对着的情况下,无法检测到人。
记忆事件 'PeoplePerception/JustArrived' 和 'EngagementZones/PersonApproached' 似乎依赖于相机检测到的面部。
是否存在由 laser/infrared/sonar 距离变化触发的记忆事件?
我想知道是否有比以下更好的解决方案:
while True:
floatDist = self.memory.getData('Device/SubDeviceList/Platform/Front/Sonar/Sensor/Value')
if floatDist < 1.0:
doSomething()
sleep(0.5)
您可以使用前置声纳和事件 "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 Class 的例子。
使用模块 ALMemory,您将检查声纳以及是否检测到面部。
我想在不依赖人脸检测的情况下检测人。在光照条件差或 Pepper 背对着的情况下,无法检测到人。 记忆事件 'PeoplePerception/JustArrived' 和 'EngagementZones/PersonApproached' 似乎依赖于相机检测到的面部。 是否存在由 laser/infrared/sonar 距离变化触发的记忆事件?
我想知道是否有比以下更好的解决方案:
while True:
floatDist = self.memory.getData('Device/SubDeviceList/Platform/Front/Sonar/Sensor/Value')
if floatDist < 1.0:
doSomething()
sleep(0.5)
您可以使用前置声纳和事件 "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 Class 的例子。 使用模块 ALMemory,您将检查声纳以及是否检测到面部。