Uitbal detectie: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
Om de regels van het voetbalspel te handhaven moet er door het systeem gedetecteerd worden wanneer een bal uit het veld is of in de goal gaat. Dit wordt gedaan met behulp van de [[topcam]]. <br>
Om de regels van het voetbalspel te handhaven moet er door het systeem gedetecteerd worden wanneer een bal uit het veld is of in de goal gaat. Dit wordt gedaan met behulp van de [[topcam]]. <br>
<br>
<br>
Om uitballen te detecteren wordt met behulp van [[videotracking]] de bal in het veld gedetecteerd. Omdat de topcam op een vaste positie boven het veld hangt kan een uitbal gemakkelijk gedetecteerd worden. De lijnen van het veld worden namelijk gedefinieerd door een bepaalde vaste <math>(x,y)</math>-waarde op het scherm. Wanneer de detectie van de bal buiten de lijnen wordt waargenomen wordt een signaal afgegeven. Waarschijnlijk hangt de camera niet precies goed boven het veld, en daarom moet vooraf aan een wedstrijd de camera worden gekalibreerd. Dit hebben wij ook gedaan met de topcam op het 'Tech United' veld in gemini. Dit is in de matlab-code van de bal-detectie verwerkt en wordt hieronder weergegeven. <br>
Om uitballen te detecteren wordt met behulp van [[videotracking]] de bal in het veld gedetecteerd. Omdat de topcam op een vaste positie boven het veld hangt kan een uitbal gemakkelijk gedetecteerd worden. Om dit te realiseren moeten de lijnen van het veld gedetecteerd worden
<br>
  %Coordinates of field corners
  bottom_left=[168, 1049]; %[x, y]
  bottom_right=[1699, 1008]; %[x, y]
  upper_left=[155, 5]; %[x,y]
  upper_right=[1685, 5]; %[x,y]
 
%Creating a formula for y, dependent on x
  xdiff_down=bottom_right(1)-bottom_left(1);
  ydiff_up=bottom_left(2)-bottom_right(2);
  xdiff_left=bottom_left(1)-upper_left(1);
  ydiff_left=bottom_left(2)-upper_left(2);
  xdiff_right=upper_right(1)-bottom_right(1);
  ydiff_right=upper_right(2)-bottom_right(2);
 
  %Loading in sound file
  my_sound = audioread('whistle.wav');
  my_player = audioplayer(my_sound, 44100);
 
%% Line Detection
  %IF loop (if the ball is out of the field, do ...
  down_line=(bottom_left(2)+(ydiff_up/xdiff_down)*bottom_left(1))-(ydiff_up/xdiff_down)*centr_ball(1);
  left_line=(upper_left(1)+(xdiff_left/ydiff_left)*upper_left(2))+(xdiff_left/ydiff_left)*centr_ball(2);
  right_right=(bottom_right(1)+(xdiff_right/ydiff_right)*bottom_right(2))+(xdiff_right/ydiff_right)*centr_ball(2); <br>
  if centr_ball(2)>=down_line
      if ~isplaying(my_player)
          play(my_player);
      end
  end
  if centr_ball(1)<=left_line
      if ~isplaying(my_player)
          play(my_player);
      end
  elseif centre_ball(1)==0
      [];
  end 
  if centr_ball(1)>=right_line
      if ~isplaying(my_player)
          play(my_player);
      end
  elseif centre_ball(1)==0
  [];
  end


'''Lijndetectie'''
De lijnen van het veld worden gedefinieerd door een bepaalde vaste <math>(x,y)</math>-waarde op het scherm.  Waarschijnlijk hangt de camera niet precies goed boven het veld, en daarom moet vooraf aan een wedstrijd de camera worden gekalibreerd. Dit is ook gedaan met de [[topcam]] boven het 'Tech United' veld in gemini. In de volgende afbeelding is te zien hoe de lijnen zijn gedefinieerd in het MatLab script.
[[File:Line_detection.jpg]]


'''Uitballen en Goals'''
Wanneer de detectie van de bal buiten de lijnen wordt waargenomen wordt een signaal afgegeven. Dit signaal verschilt, afhankelijk van de locatie van waar de bal over de lijn rolt. In het MatLab script wordt het veld opgebouwd in zes lijnstukken, twee zijlijnen, vier achterlijnstukken (twee per zijde) en twee doellijnen. Op deze manier kan er een ander signaal worden afgegeven wanneer er de bal over de doellijn rolt.
----
----


Terug naar: [[PRE2015_2_Groep2]]
Terug naar: [[PRE2015_2_Groep2]]

Revision as of 11:15, 8 January 2016

Om de regels van het voetbalspel te handhaven moet er door het systeem gedetecteerd worden wanneer een bal uit het veld is of in de goal gaat. Dit wordt gedaan met behulp van de topcam.

Om uitballen te detecteren wordt met behulp van videotracking de bal in het veld gedetecteerd. Omdat de topcam op een vaste positie boven het veld hangt kan een uitbal gemakkelijk gedetecteerd worden. Om dit te realiseren moeten de lijnen van het veld gedetecteerd worden

Lijndetectie De lijnen van het veld worden gedefinieerd door een bepaalde vaste [math]\displaystyle{ (x,y) }[/math]-waarde op het scherm. Waarschijnlijk hangt de camera niet precies goed boven het veld, en daarom moet vooraf aan een wedstrijd de camera worden gekalibreerd. Dit is ook gedaan met de topcam boven het 'Tech United' veld in gemini. In de volgende afbeelding is te zien hoe de lijnen zijn gedefinieerd in het MatLab script. File:Line detection.jpg

Uitballen en Goals Wanneer de detectie van de bal buiten de lijnen wordt waargenomen wordt een signaal afgegeven. Dit signaal verschilt, afhankelijk van de locatie van waar de bal over de lijn rolt. In het MatLab script wordt het veld opgebouwd in zes lijnstukken, twee zijlijnen, vier achterlijnstukken (twee per zijde) en twee doellijnen. Op deze manier kan er een ander signaal worden afgegeven wanneer er de bal over de doellijn rolt.


Terug naar: PRE2015_2_Groep2