Zorg ervoor dat u kleurhandtekeningen en kleurcodes hebt geconfigureerd met uw AI Vision Sensor zodat u ze met uw blokken kunt gebruiken. Voor meer informatie over hoe u deze kunt configureren, kunt u de onderstaande artikelen lezen:
- Kleurhandtekeningen configureren met de AI Vision-handtekening in VEXcode EXP
- Kleurcodes configureren met de AI Vision Signature in VEXcode EXP
De AI Vision Sensor kan ook AI-classificaties en AprilTags detecteren. Voor meer informatie over het inschakelen van deze detectiemodi gaat u hierheen:
- AI-classificaties met de AI Vision-sensor in VEXcode EXP
- AprilTags met de AI Vision Sensor in VEXcode EXP
Visuele gegevens verkrijgen met de AI Vision Sensor
Elke AI Vision Sensor-opdracht begint met de naam van de geconfigureerde AI Vision Sensor. Voor alle voorbeelden in dit artikel is de naam van de gebruikte AI Vision Sensor ai_vision_1.
maak_snapshot
Met de methode take_snapshot wordt een foto gemaakt van wat de AI Vision Sensor op dat moment ziet. Vervolgens worden er gegevens uit die momentopname gehaald die vervolgens in een project kunnen worden gebruikt. Wanneer u een momentopname maakt, moet u opgeven van welk type object de AI Vision Sensor gegevens moet verzamelen:
- Eenkleurenhandtekening ofkleurencode
- Deze visuele handtekeningen beginnen met de naam van de AI Vision Sensor, een dubbele onderstrepingsteken en vervolgens de naam van de visuele handtekening, bijvoorbeeld:
ai_vision_1__Blue.
- Deze visuele handtekeningen beginnen met de naam van de AI Vision Sensor, een dubbele onderstrepingsteken en vervolgens de naam van de visuele handtekening, bijvoorbeeld:
-
AI-classificaties -
AiVision.ALL_AIOBJS -
aprilTags-
AiVision.ALL_TAGS
Wanneer u een momentopname maakt, wordt er een tuple gemaakt van alle gedetecteerde objecten die u hebt opgegeven. Als u bijvoorbeeld een 'Blauwe' kleur met een signatuur wilt detecteren, en de AI Vision Sensor detecteert 3 verschillende blauwe objecten, dan worden de gegevens van alle drie in het tuple geplaatst.
In dit voorbeeld slaat de variabele vision_objects een tuple op met de gedetecteerde "paarse"kleursignaturen van de AI Vision Sensor, genaamd ai_vision_1. Het geeft het aantal gedetecteerde objecten weer en maakt elke 0,5 seconde een nieuwe momentopname.
while True:
# Maak een momentopname van alle paarse kleurhandtekeningen en sla deze op in vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# Controleer of er een object is gedetecteerd in de momentopname voordat de gegevens worden opgehaald.
als vision_objects[0].exists == True
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Objectenaantal:", len(vision_objects))
wait(0,5, SECONDEN)
Objecteigenschappen
Elk object in een momentopname heeft verschillende eigenschappen die gebruikt kunnen worden om informatie over dat object te rapporteren. De beschikbare eigenschappen zijn als volgt:
- id
- centerX en centerY
- originX en originY
- breedte
- hoogte
- hoek
- score
- bestaat
Om toegang te krijgen tot de eigenschap van een object, gebruikt u de variabelenaam waarin de tuple is opgeslagen, gevolgd door de objectindex.
De objectindex geeft aan welke specifieke eigenschap van een object u wilt ophalen. Nadat er een momentopname is gemaakt, sorteert de AI Vision Sensor de objecten automatisch op grootte. Aan het grootste object wordt index 0 toegekend, terwijl kleinere objecten hogere indexnummers krijgen.
Het aanroepen van de breedte van het grootste object binnen de variabele vision_objects zou bijvoorbeeld het volgende opleveren: vision_objects[0].width.
id
De eigenschap id is alleen beschikbaar voor aprilTags en AI-classificaties.
Voor eenAprilTagvertegenwoordigt de eigenschap id het gedetecteerdeAprilTag(s) ID
nummer.
Het identificeren van specifieke AprilTags maakt selectieve navigatie mogelijk. U kunt uw robot programmeren om naar bepaalde tags te bewegen en andere te negeren. Zo kunt u de tags gebruiken als wegwijzers voor geautomatiseerde navigatie.
VoorAI-classificatiesvertegenwoordigt de eigenschap id het specifieke type gedetecteerde AI-classificatie.
Door specifieke AI-classificatieste identificeren, kan de robot zich alleen op specifieke objecten concentreren. Hij wil bijvoorbeeld alleen naar een rode Buckyball navigeren en niet naar een blauwe.
Ga naar deze artikelen voor meer informatie over aprilTags en AI-classificaties en hoe u de detectie ervan in de AI Vision Utility kunt inschakelen.
centerX en centerY
Dit zijn de middelpuntcoördinaten van het gedetecteerde object in pixels.
CenterX- en CenterY-coördinaten helpen bij navigatie en positionering. De AI Vision Sensor heeft een resolutie van 320 x 240 pixels.
Zoals u ziet, heeft een object dat zich dichter bij de AI Vision Sensor bevindt een lagere CenterY-coördinaat dan een object dat verder weg is.
In dit voorbeeld draait de robot naar rechts, omdat het middelpunt van het gezichtsveld van de AI Vision Sensor (160, 120) is, totdat de centerX-coördinaat van een gedetecteerd object groter is dan 150 pixels, maar kleiner dan 170 pixels.
while True:
# Maak een momentopname van alle blauwe kleurhandtekeningen en sla deze op in vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Controleer of er een object is gedetecteerd in de momentopname voordat u gegevens ophaalt.
als vision_objects[0].exists == True
# Controleer of het object zich niet in het midden van het zicht van de AI Vision Sensor bevindt.
als vision_objects[0].centerX > 150 en 170 > vision_objects[0].centerX:
# Blijf naar rechts draaien totdat het object in het midden van het zicht staat.
drivetrain.turn(RECHTS)
anders:
drivetrain.stop()
wachten(5, MSEC)
oorsprongX en oorsprongY
OriginX en OriginY zijn de coördinaten in de linkerbovenhoek van het gedetecteerde object in pixels.
OriginX- en OriginY-coördinaten helpen bij navigatie en positionering. Door deze coördinaat te combineren met de breedte en hoogte van het object, kunt u de grootte van het omsluitende kader van het object bepalen. Dit kan helpen bij het volgen van bewegende objecten of bij het navigeren tussen objecten.
breedte en hoogte
Dit is de breedte of hoogte van het gedetecteerde object in pixels.
De breedte- en hoogtematen helpen bij het identificeren van verschillende objecten. Een Buckyball is bijvoorbeeld hoger dan een Ring.
De breedte en hoogte geven ook de afstand van een object tot de AI Vision Sensor aan. Kleinere metingen betekenen meestal dat het object verder weg is, terwijl grotere metingen aangeven dat het dichterbij is.
In dit voorbeeld wordt de breedte van het object gebruikt voor navigatie. De robot nadert het object totdat de breedte een bepaalde grootte heeft bereikt, waarna hij stopt.
while True:
# Maak een momentopname van alle blauwe kleurhandtekeningen en sla deze op in vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Controleer of er een object is gedetecteerd in de momentopname voordat u gegevens ophaalt.
als vision_objects[0].exists == True
# Controleer of het grootste object zich dicht bij de AI Vision Sensor bevindt door de breedte ervan te meten.
als vision_objects[0].width < 250:
# Rijd dichter naar het object totdat het breder is dan 250 pixels.
drivetrain.drive(FORWARD)
anders:
drivetrain.stop()
wacht(5, MSEC)
hoek
De eigenschap hoek is alleen beschikbaar voorkleurcodes enAprilTags.
Dit geeft aan of de gedetecteerde Kleurcodeof AprilTag anders is georiënteerd.
U kunt zien of de robot anders is georiënteerd ten opzichte van dekleurcode ofAprilTag en op basis daarvan navigatiebeslissingen nemen.
Als bijvoorbeeld eenkleurcode niet onder de juiste hoek wordt gedetecteerd, kan het object dat het vertegenwoordigt mogelijk niet goed door de robot worden opgepakt.
score
De eigenschap score wordt gebruikt bij het detecteren vanAI-classificaties met de AI Vision-sensor.
De betrouwbaarheidsscore geeft aan hoe zeker de AI Vision Sensor is van de detectie. In deze afbeelding is 99% zekerheid aanwezig dat de AI-classificaties van deze vier objecten worden geïdentificeerd. Met deze score kunt u ervoor zorgen dat uw robot zich alleen richt op detecties die zeer betrouwbaar zijn.
bestaat
De eigenschap bestaat wordt gebruikt om te detecteren of een opgegeven Visuele handtekening is gedetecteerd in de laatst genomen momentopname.
Hiermee kunt u controleren of er objecten zijn gedetecteerd die ook in de vorige momentopname zijn gedetecteerd. Deze eigenschap retourneert True als een object bestaat en False als het object niet bestaat.