def setup(self): self.dance_marker = 233511930 self.state = 'breathing' self._seen_faces = deque([], 30) self.breathing = IdleBreathing(self.robot, 1.) self.breathing.start()
class DemoMode(LoopPrimitive): def setup(self): self.dance_marker = 233511930 self.state = 'breathing' self._seen_faces = deque([], 30) self.breathing = IdleBreathing(self.robot, 1.) self.breathing.start() def update(self): self._seen_faces.append(len(self.robot.face_detector.faces) > 0) if self.state == 'breathing': marker = [m for m in self.robot.marker_detector.markers if m.id == self.dance_marker] if marker: self.breathing.stop() self.state = 'dancing' self.robot.dance.start() if sum(self._seen_faces) > .75 * self._seen_faces.maxlen: self.state = 'tracking' self.breathing.stop() self.robot.face_tracking.start() elif self.state == 'dancing': if self.robot.dance.elapsed_time > 10: self.robot.dance.stop() self.state = 'breathing' self._seen_faces.clear() self.breathing.start() elif self.state == 'tracking': if sum(self._seen_faces) < .25 * self._seen_faces.maxlen: self.robot.face_tracking.stop() self._seen_faces.clear() self.state = 'breathing' self.breathing.start() img = self.robot.camera.frame for face in self.robot.face_detector.faces: face.draw(img) cv2.imshow('live', img) cv2.waitKey(10) def teardown(self): self.breathing.stop()