Codieren mit dem AI Vision Sensor in VEXcode V5 Python

Stellen Sie sicher, dass Sie Farbsignaturen und Farbcodes mit Ihrem AI Vision Sensor konfiguriert haben, damit sie mit Ihren Blöcken verwendet werden können. Weitere Informationen zur Konfiguration finden Sie in den folgenden Artikeln:

Der AI Vision Sensor kann auch AI-Klassifizierungen und AprilTags erkennen. Um zu erfahren, wie Sie diese Erkennungsmodi aktivieren, klicken Sie hier:

Weitere Einzelheiten zu diesen einzelnen Befehlen und ihrer Verwendung in VEXcode finden Sie auf der API-Site.


Erhalten Sie visuelle Daten mit dem AI Vision Sensor

Jeder AI Vision Sensor-Befehl beginnt mit dem Namen des konfigurierten AI Vision Sensors. Für alle Beispiele in diesem Artikel lautet der Name des verwendeten AI Vision Sensors ai_vision_1.

Schnappschuss machen

Die Methode take_snapshot macht ein Bild von dem, was der AI Vision Sensor aktuell sieht und extrahiert Daten aus diesem Snapshot, die dann in einem Projekt verwendet werden können. Wenn ein Schnappschuss gemacht wird, müssen Sie angeben, von welchem Objekttyp der AI Vision Sensor Daten erfassen soll:

  • AFarbsignatur oderFarbcode
    • Diese visuellen Signaturen beginnen mit dem Namen des AI Vision Sensors, einem doppelten Unterstrich und dann dem Namen der visuellen Signatur, zum Beispiel: ai_vision_1__Blue.
  • KI-Klassifikationen - AiVision.ALL_AIOBJS
  • AprilTags- AiVision.ALL_TAGS

Durch das Erstellen eines Schnappschusses wird ein Tupel aller erkannten Objekte erstellt, die Sie angegeben haben. Wenn Sie beispielsweise eine „Blaue“ Farbsignaturerkennen möchten und der AI Vision Sensor drei verschiedene blaue Objekte erkennt, werden die Daten von allen dreien in das Tupel eingefügt.

In diesem Beispiel speichert die Variable vision_objects ein Tupel, das die erkannten „violetten“Farbsignaturen vom AI Vision Sensor mit dem Namen ai_vision_1enthält. Es zeigt die Anzahl der erkannten Objekte an und erstellt alle 0,5 Sekunden einen neuen Schnappschuss.

while True: 
# Erstellen Sie einen Schnappschuss aller violetten Farbsignaturen und speichern Sie ihn in vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)

# Überprüfen Sie, ob im Schnappschuss ein Objekt erkannt wurde, bevor Sie Daten abrufen.
if vision_objects[0].exists == True

brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)

brain.screen.print("Object count:", len(vision_objects))
wait(0.5, SECONDS)

Objekteigenschaften

Jedes Objekt aus einem Snapshot hat unterschiedliche Eigenschaften, die zum Melden von Informationen zu diesem Objekt verwendet werden können. Die verfügbaren Eigenschaften sind wie folgt:

  • Ausweis
  • centerX und centerY
  • originX und originY
  • Breite
  • Höhe
  • Winkel
  • Punktzahl
  • existiert

Um auf die Eigenschaft eines Objekts zuzugreifen, verwenden Sie den Variablennamen, in dem das Tupel gespeichert ist, gefolgt vom Objektindex.

Der Objektindex gibt an, welche spezifische Objekteigenschaft Sie abrufen möchten. Nach der Aufnahme eines Schnappschusses sortiert der AI Vision Sensor Objekte automatisch nach Größe. Dem größten Objekt wird der Index 0 zugewiesen, kleinere Objekte erhalten höhere Indexnummern.

Beispielsweise würde der Aufruf der Breite des größten Objekts innerhalb der Variablen vision_objects lauten: vision_objects[0].width.

Ausweis

Die Eigenschaft id ist nur für AprilTags und AI-Klassifikationen verfügbar.

Drei quadratische Identifikationsmarkierungen mit den IDs 0, 9 und 3, jeweils mit den entsprechenden Koordinaten und Größenangaben in weißer Schrift. ID 0 steht links, ID 9 rechts und ID 3 unten in der Mitte. Jeder Marker hat ein einzigartiges schwarz-weißes Muster innerhalb eines Quadrats.

Bei einemAprilTagstellt die id -Eigenschaft die erkannteAprilTag(s) ID-Nummer

dar. Die Identifizierung spezifischer AprilTags ermöglicht eine selektive Navigation. Sie können Ihren Roboter so programmieren, dass er sich auf bestimmte Markierungen zubewegt und andere ignoriert, und diese so effektiv als Wegweiser für die automatische Navigation nutzt.

Im Bild sind zwei Bälle und zwei Ringe zu erkennen, deren Position, Größe und Punktzahl durch Beschriftungen angegeben sind. Die rote Kugel ist links, die blaue Kugel ist rechts, der grüne Ring ist unten links und der rote Ring ist unten rechts. Jedes Objekt ist mit einem weißen Kästchen umrandet und Details wie X-, Y-Koordinaten, Breite, Höhe und eine Punktzahl von 99 % werden in weißem Text angezeigt.

BeiKI-Klassifizierungenstellt die Eigenschaft id den spezifischen Typ der erkannten KI-Klassifizierung dar.

Durch das Identifizieren spezifischer KI-Klassifizierungenkann sich der Roboter nur auf bestimmte Objekte konzentrieren, z. B. indem er nur auf einen roten Buckyball zusteuern möchte, nicht auf einen blauen.

In diesen Artikeln erhalten Sie weitere Informationen zu den AI-Klassifikationen AprilTags und und wie Sie deren Erkennung im AI Vision Utility aktivieren.

MitteX und MitteY

Dies sind die Mittelpunktskoordinaten des erkannten Objekts in Pixeln.

Ein blauer Buckyball, der von einem Computer-Vision-System verfolgt wird. Das Objekt ist mit einem weißen Quadrat umrandet und innerhalb der Umrandung befindet sich ein kleineres rotes Quadrat, das ein weißes Kreuz in der Mitte umgibt. In der oberen linken Ecke des Bildes zeigt eine Beschriftung an, dass das Objekt blau ist, mit den Koordinaten X:176, Y:117 und den Abmessungen B:80, H:78.

Die Koordinaten CenterX und CenterY helfen bei der Navigation und Positionierung. Der AI Vision Sensor hat eine Auflösung von 320 x 240 Pixeln.

Zwei blaue kubische Objekte, die von einem Sichtsystem verfolgt werden. Das obere Objekt ist mit den Koordinaten X:215, Y:70 und den Abmessungen B:73, H:84 sowie einer weißen Umrandung und einem zentrierten weißen Kreuz beschriftet. Das untere Objekt ist mit den Koordinaten X:188, Y:184 und den Abmessungen B:144, H:113 gekennzeichnet und ebenfalls weiß umrandet mit einem weißen Kreuz in der Mitte.

Sie können sehen, dass ein Objekt, das näher am AI Vision Sensor ist, eine niedrigere CenterY-Koordinate hat als ein weiter entferntes Objekt.

Da in diesem Beispiel der Mittelpunkt der Ansicht des AI Vision Sensors (160, 120) ist, dreht sich der Roboter nach rechts, bis die Mitte-X-Koordinate eines erkannten Objekts größer als 150 Pixel, aber kleiner als 170 Pixel ist.

while True:
# Machen Sie einen Schnappschuss aller blauen Farbsignaturen und speichern Sie ihn in vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Überprüfen Sie, ob im Schnappschuss ein Objekt erkannt wurde, bevor Sie Daten abrufen.
if vision_objects[0].exists == True

# Überprüfen Sie, ob sich das Objekt nicht in der Mitte des Blickfelds des AI Vision Sensors befindet.
if vision_objects[0].centerX > 150 und 170 > vision_objects[0].centerX:

# Drehen Sie sich weiter nach rechts, bis sich das Objekt in der Mitte des Blickfelds befindet.
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(5, MSEC)

UrsprungX und UrsprungY

OriginX und OriginY sind die Koordinate an der oberen linken Ecke des erkannten Objekts in Pixeln.

Ein blauer Buckyball, der von einem Sichtsystem verfolgt wird. Ein weißer Umriss umgibt das Objekt, mit einem zentrierten weißen Kreuz innerhalb des Umrisses. Das Etikett oben links gibt die Farbe des Objekts als Blau an, zusammen mit den Koordinaten X:176, Y:117 und den Abmessungen B:80, H:78. Ein kleines rotes Quadrat hebt die obere linke Ecke des Objekts hervor.

OriginX- und OriginY-Koordinaten helfen bei der Navigation und Positionierung. Durch Kombinieren dieser Koordinate mit der Breite und Höhe des Objekts können Sie die Größe des Begrenzungsrahmens des Objekts bestimmen. Dies kann beim Verfolgen bewegter Objekte oder beim Navigieren zwischen Objekten hilfreich sein.

Breite und Höhe

Dies ist die Breite oder Höhe des erkannten Objekts in Pixeln.

Das Bild zeigt einen blauen Buckyball mit einem weißen quadratischen Umriss, der ihn verfolgt. In der oberen linken Ecke befindet sich eine Beschriftung, die darauf hinweist, dass es sich um ein blaues Objekt mit den Koordinaten X:176, Y:117 und den Abmessungen B:80, H:78 handelt. Rote Pfeile markieren die Breite und Höhe des Objekts.

Die Breiten- und Höhenangaben helfen dabei, unterschiedliche Objekte zu identifizieren. Beispielsweise ist ein Buckyball höher als ein Ring.

Zwei blaue kubische Objekte werden von einem visuellen Erkennungssystem verfolgt. Der obere Würfel hat einen weißen Umriss mit einer Beschriftung, die seine Position als X:215, Y:70 und die Abmessungen B:73, H:84 angibt. Der untere Würfel hat einen ähnlichen weißen Umriss mit der Beschriftung X:188, Y:184 und den Abmessungen B:144, H:113. Jeder Würfel hat in der Mitte ein weißes Kreuz, das wahrscheinlich den Brennpunkt für die Verfolgung anzeigt. Die Beschriftungen heben die Messungen und Trackingdaten für jedes Objekt hervor.

Breite und Höhe geben auch die Entfernung eines Objekts vom AI Vision Sensor an. Kleinere Messungen bedeuten normalerweise, dass das Objekt weiter entfernt ist, während größere Messungen vermuten lassen, dass es näher ist.

In diesem Beispiel wird die Breite des Objekts zur Navigation verwendet. Der Roboter nähert sich dem Objekt, bis die Breite eine bestimmte Größe erreicht hat, und stoppt dann.

while True:
# Erstellen Sie einen Schnappschuss aller blauen Farbsignaturen und speichern Sie ihn in vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)

# Überprüfen Sie, ob im Schnappschuss ein Objekt erkannt wurde, bevor Sie Daten abrufen.
if vision_objects[0].exists == True

# Überprüfen Sie, ob sich das größte Objekt in der Nähe des AI Vision Sensors befindet, indem Sie seine Breite messen.
if vision_objects[0].width < 250:

# Fahren Sie näher an das Objekt heran, bis es breiter als 250 Pixel ist.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()

wait(5, MSEC)

Winkel

Ein rotierendes GIF, das rote und grüne Blöcke zeigt. Wenn die Blöcke von Rot nach Grün perfekt horizontal angeordnet sind, wird ein Winkel von 0 Grad angezeigt. Wenn der rote Block vertikal über dem grünen Block liegt, ist der Winkel 90 Grad. Wenn die Blöcke horizontal von grün nach rot verlaufen, sind es 180 Grad. Wenn der grüne Block vertikal über dem roten Block liegt, beträgt der Winkel 20 Grad.

Die Eigenschaft Winkel ist nur fürFarbcodes undAprilTagsverfügbar.

Dies stellt dar, ob der erkannte Farbcodeoder AprilTag anders ausgerichtet ist.

Ein Stapel aus zwei Würfeln, einer grün oben und einer blau unten, die von einem Sichtsystem verfolgt werden. Beide Würfel sind von einer weißen Umrandung umgeben, in der Mitte des grünen Würfels befindet sich ein weißes Kreuz. Die Beschriftung unten im Bild zeigt Grün_Blau A:87° und gibt damit die erkannten Farben und eine Winkelmessung an. Darunter sind die Koordinaten X:117, Y:186 mit den Abmessungen B:137, H:172 aufgeführt, die die Position und Größe der gestapelten Würfel im Rahmen darstellen.

Sie können erkennen, ob der Roboter in Bezug auf denFarbcode oderAprilTag anders ausgerichtet ist und entsprechend Navigationsentscheidungen treffen.

Zwei Würfel, einer grün und einer blau, werden nebeneinander platziert und von einem Sichtsystem verfolgt. Ein weißer Umriss umgibt beide Würfel mit einem weißen Kreuz in der Mitte. Die Beschriftung oben links zeigt Grün_Blau A:0° und verweist auf die erkannten Farben und eine Winkelmessung. Darunter werden die Koordinaten X:150, Y:102 mit den Abmessungen B:179, H:109 angezeigt, die die Position und Größe der Würfel innerhalb des Rahmens darstellen.

Wenn beispielsweise einFarbcode nicht im richtigen Winkel erkannt wird, kann es sein, dass der Roboter das entsprechende Objekt nicht richtig aufnehmen kann.

Punktzahl

Die Eigenschaft Score wird verwendet, wennAI-Klassifizierungen mit dem AI Vision Sensor erkannt werden.

Das Bild zeigt vier Objekte, die von einem Sichtsystem verfolgt werden: zwei Bälle und zwei Ringe. Der rote Ball ist mit den Koordinaten X:122, Y:84, W:67, H:66 und einer Punktzahl von 99 % gekennzeichnet. Der blaue Ball hat X:228, Y:86, W:70, H:68 und eine Punktzahl von 99 %. Der grüne Ring hat die Koordinaten X:109, Y:186, W:98, H:92 und eine Punktzahl von 99 %. Der rote Ring ist mit X:259, Y:187, W:89, H:91 beschriftet und hat eine Punktzahl von 99 %. Jedes Objekt ist weiß umrandet, was die Tracking-Genauigkeit anzeigt.

Der Vertrauenswert gibt an, wie sicher sich der AI Vision Sensor bei seiner Erkennung ist. In diesem Bild ist die Identifizierung der KI-Klassifizierungen dieser vier Objekte zu 99 % sicher. Mit diesem Score können Sie sicherstellen, dass sich Ihr Roboter nur auf Erkennungen mit hoher Sicherheit konzentriert.

existiert

Die Eigenschaft existiert wird verwendet, um zu erkennen, ob im zuletzt aufgenommenen Schnappschuss eine angegebene visuelle Signatur erkannt wurde.

Auf diese Weise können Sie überprüfen, ob im vorherigen Snapshot erkannte Objekte erkannt wurden. Diese Eigenschaft gibt „True“ zurück, wenn ein Objekt existiert, und „False“, wenn das Objekt nicht existiert.

 

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: