From 9b400c0a62b8519caf236f54517ce4a9db83e4e7 Mon Sep 17 00:00:00 2001 From: Pavel Lutskov Date: Sat, 30 Jun 2018 15:22:57 +0200 Subject: [PATCH] Even better video capture --- pykick/__main__.py | 95 +++++++++++++++++++++--------------------- pykick/imagereaders.py | 1 - pykick/striker.py | 8 ++-- 3 files changed, 51 insertions(+), 53 deletions(-) diff --git a/pykick/__main__.py b/pykick/__main__.py index 850d225..28deee4 100644 --- a/pykick/__main__.py +++ b/pykick/__main__.py @@ -7,54 +7,6 @@ from .striker import Striker from .utils import read_config, InterruptDelayed - -# ____________________ STRIKER __________________________ -# -# +----> Ball tracking (see below) <-------------+ -# | | -# | | | -# | | | -# | v | -# | Ball in lower cam? | -# | / \ | -# lost | yes / \ cannot do | -# ball | v v | -# +-- Goal align Ball is only in top camera --+ -# | Move closer. -# | -# successful | -# v -# Kick it! (Fancy or simple) -# -# _______________________________________________________ - -# ____________________ TRACKING _________________________ -# -# yes -# check if ball visible ---> rotate head to the ball -# ^ | | -# | | no | -# | v | -# +--- ball scan rotation | -# | | -# | no V -# | +---------- already rotating body? -# | | | -# | v | yes -# | head angle too big? v -# | / \ head angle -# | yes / \ no is below threshold? -# | v v | | -# | stop successful | no | yes -# | moving exit | v -# +----- and start | stop rotating body -# | rotating body | | -# | | | -# +---------------------------------+---------+ -# -# _______________________________________________________ - - if __name__ == '__main__': try: # Hit Ctrl-C to stop, cleanup and exit @@ -213,3 +165,50 @@ if __name__ == '__main__': finally: striker.close() striker.mover.rest() + + +# ____________________ STRIKER __________________________ +# +# +----> Ball tracking (see below) <-------------+ +# | | +# | | | +# | | | +# | v | +# | Ball in lower cam? | +# | / \ | +# lost | yes / \ cannot do | +# ball | v v | +# +-- Goal align Ball is only in top camera --+ +# | Move closer. +# | +# successful | +# v +# Kick it! (Fancy or simple) +# +# _______________________________________________________ + +# ____________________ TRACKING _________________________ +# +# yes +# check if ball visible ---> rotate head to the ball +# ^ | | +# | | no | +# | v | +# +--- ball scan rotation | +# | | +# | no V +# | +---------- already rotating body? +# | | | +# | v | yes +# | head angle too big? v +# | / \ head angle +# | yes / \ no is below threshold? +# | v v | | +# | stop successful | no | yes +# | moving exit | v +# +----- and start | stop rotating body +# | rotating body | | +# | | | +# +---------------------------------+---------+ +# +# _______________________________________________________ diff --git a/pykick/imagereaders.py b/pykick/imagereaders.py index 5d91de3..25e26d5 100644 --- a/pykick/imagereaders.py +++ b/pykick/imagereaders.py @@ -65,7 +65,6 @@ class NaoImageReader(object): self.fps, (self.res[1], self.res[0])) for frame in self.recording: - print('.') vf.write(frame) vf.release() diff --git a/pykick/striker.py b/pykick/striker.py index 8596f62..22ec683 100644 --- a/pykick/striker.py +++ b/pykick/striker.py @@ -26,20 +26,20 @@ class Striker(object): # Sight self.upper_camera = NaoImageReader( - nao_ip, port=nao_port, res=res, fps=30, cam_id=0, + nao_ip, port=nao_port, res=res, fps=10, cam_id=0, ) self.lower_camera = NaoImageReader( - nao_ip, port=nao_port, res=res, fps=30, cam_id=1, + nao_ip, port=nao_port, res=res, fps=10, cam_id=1, ) # POV self.upper_pov = NaoImageReader( - nao_ip, port=nao_port, res=0, fps=15, cam_id=0, + nao_ip, port=nao_port, res=1, fps=15, cam_id=0, video_file='./cam0_' + self.run_id + '.avi' ) self.lower_pov = NaoImageReader( - nao_ip, port=nao_port, res=0, fps=15, cam_id=1, + nao_ip, port=nao_port, res=1, fps=15, cam_id=1, video_file='./cam1_' + self.run_id + '.avi' ) self.pov_thread = Thread(target=self._pov)