Control: Difference between revisions
No edit summary |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
De positiebepaling van de drone gebeurt door middel van verschillende perspectieven. <br> | De positiebepaling van de drone gebeurt door middel van verschillende perspectieven. <br> | ||
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. <br> | 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. <br> | ||
Hierbij zal de topcam zich vooral focussen op de volgende dingen: <br> | Hierbij zal de topcam zich vooral focussen op de volgende dingen: <br> | ||
* Uitbaldetectie<br> | * Uitbaldetectie<br> | ||
Line 15: | Line 15: | ||
=== Situatie 1 === | === 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>(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> | 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 style="font-size:18px">(x_{db},y_{db},d_{db})</math>. De <math style="font-size:18px">x_{db}</math> en <math style="font-size:18px">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 style="font-size:18px">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, en vice versa. 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_situatie3.png]] <br> | [[File:Positie_bepaling_situatie3.png]] <br> | ||
=== Situatie 2 === | === Situatie 2 === | ||
In deze situatie kan de drone zelf de bal niet | In deze situatie kan de drone zelf de bal niet detecteren. Dit kan voorkomen als de bal sneller wegrolt dan de drone kan vliegen. Dan wordt overgeschakeld naar data vanuit de topcam. Via de topcam worden de drone en de bal waargenomen en voor elk object de positie bepaald. Het signaal dat naar de drone gestuurd wordt, zijn de coördinaten voor de bal <math style="font-size:18px">(x_b,y_b)</math> en voor de drone <math style="font-size:18px">(x_d,y_d)</math>. Door het verschil van deze twee posities kan wederom een richtingsvector worden opgesteld: <math style="font-size:18px">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. <br> | ||
[[File:Positie_bepaling_situatie1.png]] <br> | [[File:Positie_bepaling_situatie1.png]] <br> | ||
<br> | <br> | ||
Om een goed vliegende drone te hebben moeten de bovenstaande situaties 1 en 2 goed worden onderscheiden | Om een goed vliegende drone te hebben moeten de bovenstaande situaties 1 en 2 goed worden onderscheiden. Allereerst moet de drone een vaste hoogt proberen aan te houden. Deze is gesteld op 1.5 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 input data handelt en de binnenkomende informatie van de vaste camera negeert. Zodra de drone de bal niet meer waarneemt zal deze reageren op de informatie van de vaste camera, totdat de drone zelf de bal weer kan zien en overschakelt op eigen input. <br> | ||
<br> | |||
=== | === Veiligheid en nauwkeurigheid === | ||
Rondom een veld zitten allemaal supporters, teamleden en andere toeschouwers. Om de veiligheid te garanderen zal de drone, als deze dicht bij de lijn in de buurt komt, <br> | |||
een korte negatieve versnelling genereren om van de lijn af te bewegen. Hierdoor zal de drone boven het veld blijven. Dit heeft geen zwaar gevolg op de richting van de drone. <br> | |||
Deze draait namelijk zo om de bal om deze weer in het midden van zijn beeld te krijgen. | |||
De nauwkeurigheid van de drone zit verpakt in de snelheid. Om zo stabiel mogelijk de bal in het centrum van het beeld te krijgen, maar er wel snel naartoe te bewegen, <br> | |||
is er een kwadratische functie geïmplementeerd. Met andere woorden, Hoe verder de drone zich van de gewenste positie bevindt, des te sneller hij beweegt. | |||
=== [[Testlog drone]] === | === [[Testlog drone]] === | ||
Line 35: | Line 37: | ||
== Matlab == | == Matlab == | ||
In eerste instantie is geprobeerd om de drone te besturen met JavaScript en Node.js. Deze besturing lukte goed, maar het | In eerste instantie is geprobeerd om de drone te besturen met JavaScript en Node.js. Deze besturing lukte goed, maar het is makkelijker om de drone te kunnen besturen met Matlab. Dat is succesvol. Een voordeel aan het matlabscript is dat de drone manueel te besturen is, zodat er gemakkelijk getest kan worden. Een tweede groot voordeel, is dat het een prima omgeving is om in te coderen en meerdere functies aan elkaar te linken. Zo is de topcam en de videotracking software in Matlab. Daarbij helpt het dat op de TU veel in Matlab gedaan is. | ||
Alles is uiteindelijk geanalyseerd in Matlab, waarbij de scripts voor beide situaties geschreven zijn: | Alles is uiteindelijk geanalyseerd in Matlab, waarbij de scripts voor beide situaties geschreven zijn: |
Latest revision as of 14:46, 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, en vice versa. 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.
Situatie 2
In deze situatie kan de drone zelf de bal niet detecteren. Dit kan voorkomen als de bal sneller wegrolt dan de drone kan vliegen. Dan wordt overgeschakeld naar data vanuit de topcam. Via de topcam worden de drone en de bal waargenomen en voor elk object de positie bepaald. Het signaal dat naar de drone gestuurd wordt, zijn de coördinaten 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 wederom 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.
Om een goed vliegende drone te hebben moeten de bovenstaande situaties 1 en 2 goed worden onderscheiden. Allereerst moet de drone een vaste hoogt proberen aan te houden. Deze is gesteld op 1.5 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 input data handelt en de binnenkomende informatie van de vaste camera negeert. Zodra de drone de bal niet meer waarneemt zal deze reageren op de informatie van de vaste camera, totdat de drone zelf de bal weer kan zien en overschakelt op eigen input.
Veiligheid en nauwkeurigheid
Rondom een veld zitten allemaal supporters, teamleden en andere toeschouwers. Om de veiligheid te garanderen zal de drone, als deze dicht bij de lijn in de buurt komt,
een korte negatieve versnelling genereren om van de lijn af te bewegen. Hierdoor zal de drone boven het veld blijven. Dit heeft geen zwaar gevolg op de richting van de drone.
Deze draait namelijk zo om de bal om deze weer in het midden van zijn beeld te krijgen.
De nauwkeurigheid van de drone zit verpakt in de snelheid. Om zo stabiel mogelijk de bal in het centrum van het beeld te krijgen, maar er wel snel naartoe te bewegen,
is er een kwadratische functie geïmplementeerd. Met andere woorden, Hoe verder de drone zich van de gewenste positie bevindt, des te sneller hij beweegt.
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 is makkelijker om de drone te kunnen besturen met Matlab. Dat is succesvol. Een voordeel aan het matlabscript is dat de drone manueel te besturen is, zodat er gemakkelijk getest kan worden. Een tweede groot voordeel, is dat het een prima omgeving is om in te coderen en meerdere functies aan elkaar te linken. Zo is de topcam en de videotracking software in Matlab. Daarbij helpt het dat op de TU veel in Matlab gedaan is.
Alles is uiteindelijk geanalyseerd in Matlab, waarbij de scripts voor beide situaties geschreven zijn:
- Situatie 1 (Matlabscript DroneCamera)
- Situatie 2 (Matlabscript TopCamera)
Terug naar: PRE2015_2_Groep2