Botsingsdetectie: Difference between revisions
No edit summary |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
== definitie botsing == | == definitie botsing == | ||
Om over een daadwerkelijke overtreding, in dit geval botsing, te spreken, moet eerst de definitie ervan geformaliseerd worden. <br> | |||
De robots hebben een maximale versnelling. Bij een botsing wordt er een impuls doorgegeven, die zorgt voor een hoge, plotselinge versnelling. <br> | |||
Deze versnelling ligt hoger dan de robot's maximale versnelling. Als dit per frame bij wordt gehouden dan is dit een grote richtlijn.<br> | |||
Wat daar verder bij komt kijken is de manier van contact tussen robots. De meest duidelijke situatie is wanneer een van de robots stilstaat. <br> | |||
Lastiger wordt het als er een botsing plaatsvindt waarin beide partijen een initiële snelheid hebben. | |||
Een lastig punt blijft echter de interpretatie van een botsing en de juiste beslissing nemen. Zelfs voor een getrainde scheids en robotscheids is dit <br> | |||
een lastig karwei. Het is mogelijk een soort AI in te bouwen, en die te laten leren van echte spelmomenten. Natuurlijk vereist dit maanden van verfijning <br> | |||
om de robotscheidsrechter nauwkeurig te laten functioneren. | |||
== Analysemethode == | == Analysemethode == | ||
Er wordt gebruik gemaakt van kleurdetectie op de turtles. Het 'rugnummer' van de robot heeft een bepaalde kleur, zodat deze als robot gezien wordt en in een team ingedeeld kan worden. <br> | Er wordt gebruik gemaakt van kleurdetectie op de turtles. Het 'rugnummer' (nr 5, zie hieronder) van de robot heeft een bepaalde kleur, zodat deze als robot gezien wordt en in een team ingedeeld kan worden. <br> | ||
Verder wordt de huidige en vorige positie per frame berekend, waardoor een richtingsvector opgesteld kan worden. | Verder wordt de huidige en vorige positie per frame berekend, waardoor een richtingsvector opgesteld kan worden. Als deze richting ver afwijkt van de vorige richting, <br> | ||
Als deze richting ver afwijkt van de vorige richting, dan is er een botsing opgetreden. Nogmaals, is deze methode onnauwkeurig en toegankelijk voor fouten. | dan is er een botsing opgetreden. Nogmaals, is deze methode onnauwkeurig en toegankelijk voor fouten. | ||
[[File:turtle.jpg]] | [[File:turtle.jpg]] | ||
Line 18: | Line 27: | ||
Om het juiste eruit te filteren, de bewegende robots, wordt een Kalman-filter gebruikt. De Kalman-filter is een methode om de ruis uit meetgegevens te verwijderen. De Kalman-filter gaat uit van een proces dat wiskundig te modelleren is. De uitkomst van het model voorspelt de te bepalen waarde op elk gewenst moment. De daadwerkelijke meting wordt met de voorspelde waarde verrekend tot een gewogen gemiddelde. Deze uitkomst is de gefilterde waarde en wordt meteen ook gebruikt om het procesmodel aan te passen. | Om het juiste eruit te filteren, de bewegende robots, wordt een Kalman-filter gebruikt. De Kalman-filter is een methode om de ruis uit meetgegevens te verwijderen. De Kalman-filter gaat uit van een proces dat wiskundig te modelleren is. De uitkomst van het model voorspelt de te bepalen waarde op elk gewenst moment. De daadwerkelijke meting wordt met de voorspelde waarde verrekend tot een gewogen gemiddelde. Deze uitkomst is de gefilterde waarde en wordt meteen ook gebruikt om het procesmodel aan te passen. | ||
== | == Botsing == | ||
Om de botsingsdetectie te coderen worden in Matlab een aantal stappen genomen, die in het script zelf (m.b.v. comments) dieper uitgelegd worden. <br> | |||
Om tot een daadwerkelijke oplossing te komen zijn de volgende 'ingredienten' nodig <br> | |||
# Een lege track maken om alle eigenschappen bij te houden. Denk aan ID, 'leeftijd', frames zichtbaar of onzichtbaar. | |||
# Lees het frame | |||
# Detecteer objecten in beeld met behulp van kleur en beweging | |||
# Voorspel de volgende positie van het object | |||
# Geef detectie aan voor de tracks | |||
# Update de gedetecteerde tracks | |||
# Maak nieuwe tracks als er een ongelabeld object in beeld komt | |||
# Geef de tracking resutaten weer | |||
# Sla de vorige locatie op van de objecten | |||
# Check of er een botsing opgetreden is | |||
[[File:collisiondetection.gif]] | Uiteindelijk leidt dit tot het volgende resultaat.<br> | ||
[[File:collisiondetection.gif]] <br> | |||
Het is echter nog niet mogelijk dit met een livestream aan input video te doen. <br> | |||
=== Matlab Script === | === Matlab Script === | ||
Alles is geanalyseerd in Matlab | Alles is geanalyseerd in Matlab. Het script is op de volgende pagina te vinden: [[Matlabscript Botsingsdetectie]] | ||
---- | ---- | ||
Terug naar: [[PRE2015_2_Groep2]] | Terug naar: [[PRE2015_2_Groep2]] |
Latest revision as of 17:54, 13 January 2016
De drone is verantwoordelijk voor het detecteren van de robots, en analyseren of ze een overtreding begaan.
definitie botsing
Om over een daadwerkelijke overtreding, in dit geval botsing, te spreken, moet eerst de definitie ervan geformaliseerd worden.
De robots hebben een maximale versnelling. Bij een botsing wordt er een impuls doorgegeven, die zorgt voor een hoge, plotselinge versnelling.
Deze versnelling ligt hoger dan de robot's maximale versnelling. Als dit per frame bij wordt gehouden dan is dit een grote richtlijn.
Wat daar verder bij komt kijken is de manier van contact tussen robots. De meest duidelijke situatie is wanneer een van de robots stilstaat.
Lastiger wordt het als er een botsing plaatsvindt waarin beide partijen een initiële snelheid hebben.
Een lastig punt blijft echter de interpretatie van een botsing en de juiste beslissing nemen. Zelfs voor een getrainde scheids en robotscheids is dit
een lastig karwei. Het is mogelijk een soort AI in te bouwen, en die te laten leren van echte spelmomenten. Natuurlijk vereist dit maanden van verfijning
om de robotscheidsrechter nauwkeurig te laten functioneren.
Analysemethode
Er wordt gebruik gemaakt van kleurdetectie op de turtles. Het 'rugnummer' (nr 5, zie hieronder) van de robot heeft een bepaalde kleur, zodat deze als robot gezien wordt en in een team ingedeeld kan worden.
Verder wordt de huidige en vorige positie per frame berekend, waardoor een richtingsvector opgesteld kan worden. Als deze richting ver afwijkt van de vorige richting,
dan is er een botsing opgetreden. Nogmaals, is deze methode onnauwkeurig en toegankelijk voor fouten.
Kalman Filter
De bewegende beelden van de camera onder de drone bevatten veel signalen en zodoende veel ruis. Om het juiste eruit te filteren, de bewegende robots, wordt een Kalman-filter gebruikt. De Kalman-filter is een methode om de ruis uit meetgegevens te verwijderen. De Kalman-filter gaat uit van een proces dat wiskundig te modelleren is. De uitkomst van het model voorspelt de te bepalen waarde op elk gewenst moment. De daadwerkelijke meting wordt met de voorspelde waarde verrekend tot een gewogen gemiddelde. Deze uitkomst is de gefilterde waarde en wordt meteen ook gebruikt om het procesmodel aan te passen.
Botsing
Om de botsingsdetectie te coderen worden in Matlab een aantal stappen genomen, die in het script zelf (m.b.v. comments) dieper uitgelegd worden.
Om tot een daadwerkelijke oplossing te komen zijn de volgende 'ingredienten' nodig
- Een lege track maken om alle eigenschappen bij te houden. Denk aan ID, 'leeftijd', frames zichtbaar of onzichtbaar.
- Lees het frame
- Detecteer objecten in beeld met behulp van kleur en beweging
- Voorspel de volgende positie van het object
- Geef detectie aan voor de tracks
- Update de gedetecteerde tracks
- Maak nieuwe tracks als er een ongelabeld object in beeld komt
- Geef de tracking resutaten weer
- Sla de vorige locatie op van de objecten
- Check of er een botsing opgetreden is
Uiteindelijk leidt dit tot het volgende resultaat.
Het is echter nog niet mogelijk dit met een livestream aan input video te doen.
Matlab Script
Alles is geanalyseerd in Matlab. Het script is op de volgende pagina te vinden: Matlabscript Botsingsdetectie
Terug naar: PRE2015_2_Groep2