Control: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
No edit summary
Line 15: Line 15:


=== Situatie 1 ===
=== Situatie 1 ===
Dit is de situatie waarbij de camera van de drone zelf de bal kan waarnemen. Het camerabeeld van de drone heeft een assenstelsel <math>(x_{db},y_{db})</math> met (0,0) in het midden van het beeld. Door middel van videotracking kan de bal worden waargenomen door de camera met een bepaalde positie. Deze positie heeft een <math>(x,y)</math> waarde ten opzichte van middelpunt. Door deze te vergelijken kan een richtingsvector worden opgesteld: <math>r_{d1}^T=[x,y]</math>. Door de drone nu een bepaalde snelheid v in deze richting te geven zal de drone de bal volgen. <br>
Dit is de situatie waarbij de camera van de drone zelf de bal kan waarnemen. De camera staat onder een hoek van 45 graden. Zo heeft de drone goed zicht over het veld. Dit geeft een voordeel ten opzichte van de camera die naar beneden kijkt, omdat situaties van andere hoeken bekeken kan worden. De drone kan namelijk 360 graden om de bal heen draaien. Vanuit de camera komen verschillende waarden binnen, namelijk <math>(x_{db},y_{db},d_{db})</math>. De <math>x_{db}</math> en <math>y_{db}</math> staan voor de positie ten opzichte van het middelpunt van het camerabeeld. Hiermee kan dus de draairichting van de drone worden bepaald. De <math>d_{db}</math> is de diameter van de bal in het beeld. Deze wordt gedefinieerd als een aantal pixels in het scherm. Met deze informatie kan de afstand tot de bal worden berekent als de camera goed gekalibreerd is. Als de diameter kleiner wordt zou de drone dus naar voren moeten vliegen, omdat de bal wegrolt. Een ander voordeel van deze camerahoek is dat het zijaanzicht van de turtles op het veld goed te waarnemen is. Dat kan gebruikt worden bij het nemen van de juiste beslissing in het geval van botsen.<br>
[[File:Positie_bepaling_situatie2.png]] <br>
[[File:Positie_bepaling_situatie3.png]] <br>


=== Situatie 2 ===
=== Situatie 2 ===
Line 29: Line 29:


=== Situatie 3 ===
=== Situatie 3 ===
Bij deze situatie zal de drone de bal zien in de richting van de horizon. Dit geeft een voordeel ten opzichte van de camera die naar beneden kijkt, omdat situaties van andere hoeken bekeken kan worden. De drone kan namelijk 360 graden om de bal heen draaien. Vanuit de camera komen weer verschillende variabelen voor. Nu namelijk <math>(x_{db},y_{db},d_{db})</math>. De <math>x_{db}</math> en <math>y_{db}</math> staan voor de positie ten opzichte van het middelpunt van het camerabeeld. Hiermee kan dus de draairichting van de drone worden bepaald. De <math>d_{db}</math> is de diameter van de bal in het beeld. Deze wordt gedefinieerd als een aantal pixels in het scherm. Met deze informatie kan de afstand tot de bal worden berekent als de camera goed gekalibreerd is. Als de diameter kleiner wordt zou de drone dus naar voren moeten vliegen, omdat de bal wegrolt. <br>
 
[[File:Positie_bepaling_situatie3.png]] <br>


=== [[Testlog drone]] ===
=== [[Testlog drone]] ===

Revision as of 12:21, 13 January 2016

De robotscheidsrechter krijgt zijn fysieke voorstelling in de vorm van een drone. Deze zal autonoom het spel in de gaten houden en beslissingen nemen gebaseerd op eigen waarnemingen en camera's.

Positiebepaling

De positiebepaling van de drone gebeurt door middel van verschillende perspectieven.
Allereerst is er de lokale camera die op de drone gemonteerd zit. Daarnaast is er ook een topcam die het gehele veld van boven overziet.
Hierbij zal de topcam zich vooral focussen op de volgende dingen:

  • Uitbaldetectie
  • Doelpuntdetectie
  • De positie van de bal
  • De positie van de drone

In onderstaand stuk wordt vooral gefocussed op op de positiebepaling van de bal en de drone.
Er zijn twee situaties te onderscheiden.

Situatie 1

Dit is de situatie waarbij de camera van de drone zelf de bal kan waarnemen. De camera staat onder een hoek van 45 graden. Zo heeft de drone goed zicht over het veld. Dit geeft een voordeel ten opzichte van de camera die naar beneden kijkt, omdat situaties van andere hoeken bekeken kan worden. De drone kan namelijk 360 graden om de bal heen draaien. Vanuit de camera komen verschillende waarden binnen, namelijk [math]\displaystyle{ (x_{db},y_{db},d_{db}) }[/math]. De [math]\displaystyle{ x_{db} }[/math] en [math]\displaystyle{ y_{db} }[/math] staan voor de positie ten opzichte van het middelpunt van het camerabeeld. Hiermee kan dus de draairichting van de drone worden bepaald. De [math]\displaystyle{ d_{db} }[/math] is de diameter van de bal in het beeld. Deze wordt gedefinieerd als een aantal pixels in het scherm. Met deze informatie kan de afstand tot de bal worden berekent als de camera goed gekalibreerd is. Als de diameter kleiner wordt zou de drone dus naar voren moeten vliegen, omdat de bal wegrolt. Een ander voordeel van deze camerahoek is dat het zijaanzicht van de turtles op het veld goed te waarnemen is. Dat kan gebruikt worden bij het nemen van de juiste beslissing in het geval van botsen.
Positie bepaling situatie3.png

Situatie 2

In deze situatie kan de drone zelf de bal niet 'zien'. Dit kan voorkomen als de bal sneller wegrolt dan de drone kan vliegen. Hier worden de drone en de bal door middel van de camera's boven het veld waargenomen met een positie voor de bal [math]\displaystyle{ (x_b,y_b) }[/math] en voor de drone [math]\displaystyle{ (x_d,y_d) }[/math]. Door het verschil van deze twee posities kan weer een richtingsvector worden opgesteld: [math]\displaystyle{ r_{d2}^T=[(x_d-x_b),(y_d-y_b)] }[/math]. De drone zal weer met een bepaalde snelheid in deze richting gaan vliegen.
Positie bepaling situatie1.png


Om een goed vliegende drone te hebben moeten de bovenstaande situaties 1 en 2 goed worden onderscheiden. Zo zijn er enkele voorwaarden waar het vliegen aan moet voldoen. Allereerst moet de drone een vaste hoogt proberen aan te houden. Deze is gesteld op 2 meter zodat de drone de spelers niet in de weg loopt en hoog genoeg is om niet geraakt te worden door hoog vliegende ballen. De volgende voorwaarde is dat als de drone de bal kan zien dat deze op eigen informatie handelt en de binnenkomende informatie van de vaste camera's negeert. Zodra de drone de bal niet meer waarneemt zal deze reageren op de informatie van de vaste camera's, totdat de drone zelf de bal weer kan zien en overschakelt op eigen informatie.

De camera van de drone kan echter meer toevoegen aan het systeem als deze de situatie van de een ander perspectief dan boven bekijkt, omdat de vaste camera's boven het veld hetzelfde kunnen zien. Daarom wordt er eerst geëxperimenteerd met een camera op de drone aan de voorkant. Op deze manier kan de drone overtredingen en dergelijke vanuit een ander perspectief zien en zo mogelijk een beter besluit nemen over een overtreding. Dit leidt tot een nieuwe situatie '3'. Deze situatie gaat nog steeds vóór situatie 2 waar de positie door de top-camera wordt bepaald. De drone zal eerst reageren op situatie 3 en dan op situatie 2. Situatie 1 wordt hier genegeerd, omdat deze vrij weinig toevoegt. Mocht het voor ons niet lukken om de camera aan de voorkant werkend te krijgen, zullen we terug gaan naar de camera op de drone die omlaag kijkt.

Situatie 3

Testlog drone

Er is een testlog van de drone bijgehouden waarop de vooruitgang in stappen te zien is

Matlab

In eerste instantie is geprobeerd om de drone te besturen met JavaScript en Node.js. Deze besturing lukte goed, maar het zou makkelijker zijn om de drone te kunnen besturen met matlab. Op 26/11/15 is het gelukt om de drone te besturen met behulp van een matlab script. Door het script uit te voeren start de connectie van de computer met de drone. Met behulp van toetsen op het toetsenbord kon de drone bestuurd worden. De verbinding van matlab met de drone maakt het proces gemakkelijker, omdat er geen link hoeft te worden gelegd tussen verschillende programma's. Dit is omdat het videotracking wordt gedaan met behulp van matlab. Omdat de besturing met matlab gedaan kan worden, wordt er een script geschreven zodat de robot autonoom zal gaan vliegen aan de hand van de balpositie.

Alles is uiteindelijk geanalyseerd in Matlab, waarbij de scripts voor beide situaties geschreven zijn:


Terug naar: PRE2015_2_Groep2