Vision#

Einführung#

Die VEX AIR Drohne verfügt über zwei Bildsensoren, die AprilTag-IDs erkennen und verfolgen. Dadurch kann die Drohne ihre Umgebung analysieren, Objekten folgen und auf Basis der erfassten Bilddaten reagieren.

Nachfolgend finden Sie eine Liste aller verfügbaren Blöcke:

Aktionen – Bilddatenstrom steuern und Objektdaten erfassen.

Einstellungen – Legen Sie fest, auf welche erkannten Objekte zugegriffen wird.

Werte – Objektpräsenz, Klassifizierung und Eigenschaften abrufen.

Aktionen#

Objektdaten abrufen#

Der Objektdaten abrufen-Stackblock filtert Daten aus dem Frame des Vision-Sensors. Die Vision-Sensoren können AprilTag-IDs erkennen.

Der Datensatz speichert Objekte, sortiert nach ihrer Breite von groß nach klein, beginnend mit Index 0. Auf die Eigenschaften jedes Objekts kann über den Block Vision-Objekteigenschaft zugegriffen werden. Wird kein passendes Objekt gefunden, wird ein leerer Datensatz gemeldet.

Der Stapelblock „Objektdaten abrufen“.#
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera

Parameter

Beschreibung

Unterschrift

Filtert den Datensatz so, dass er nur Daten mit der angegebenen Signatur enthält. Die verfügbare Signatur umfasst alle AprilTags.

Kamera

Der Bildsensor dient zum Abrufen von Daten, entweder nach vorne oder nach unten.

Beispiel

wenn gestartet
[Climb upward when an AprilTag ID is detected.]
starte auf [300] [mm v] ▶
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
wenn <Vision Objekt vorhanden?> dann
steige [hoch v] für [200] [mm v] ▶

Einstellungen#

Vision-Objektelement festlegen#

Der set Vision object item-Stackblock legt fest, welches Element im Datensatz verwendet werden soll.

Der Set AI Vision Objekt-Elementstapelblock.#
setze Vision Objektelement auf [1]

Parameter

Beschreibung

Artikel

Die Nummer des zu verwendenden Elements im Datensatz.

Beispiel

wenn gestartet
[Display the smallest-appearing AprilTag ID.]
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
Konsole löschen
wenn <Vision Objekt vorhanden?> dann
setze Vision Objektelement auf (Vision Objektanzahl)
drucke (Vision Objekt [id v]) in Konsole ▶

Werte#

Vision-Objekt existiert#

Der boolesche Block Vision-Objekt existiert gibt an, ob der angegebene Vision-Sensor aktuell Objekte erkennt.

  • Wahr — Der angegebene Bildsensor erkennt ein Objekt.

  • Falsch — Der angegebene Bildsensor erkennt kein Objekt.

Der Stackblock „KI-Vision-Dashboard ein- oder ausblenden“.#
<Vision Objekt vorhanden?>

Parameter

Beschreibung

Dieser Block hat keine Parameter.

Beispiel

wenn gestartet
[Climb upward when an AprilTag ID is detected.]
starte auf [300] [mm v] ▶
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
wenn <Vision Objekt vorhanden?> dann
steige [hoch v] für [200] [mm v] ▶

Das Vision-Objekt ist die AprilTag-ID.#

Der boolesche Block Vision object is AprilTag ID gibt an, ob es sich bei der AprilTag ID um eine bestimmte ID-Nummer handelt.

  • Wahr — Die AprilTag-ID ist die Nummer.

  • Falsch — Die AprilTag-ID ist nicht die Nummer.

Die KI-Vision erkannte, dass die AprilTag-ID ein Boolescher Block ist.#
<Vision object is AprilTag ID [1]>

Parameter

Beschreibung

AprilTag-ID-Nummer

Die Zahl, die mit der ermittelten AprilTag-ID-Nummer von 0 bis 37 verglichen werden soll.

Beispiel

wenn gestartet
[Display when the target AprilTag ID is detected.]
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
Konsole löschen
wenn <Vision Objekt vorhanden?> dann
wenn <Vision object is AprilTag ID [21]> dann
drucke [Target found!] in Konsole ▶
Ende

Anzahl der Vision-Objekte#

Der Vision Objektzählungsblock gibt die Anzahl der erkannten Objekte im Datensatz als ganze Zahl aus.

Der Set AI Vision Objekt-Elementstapelblock.#
(Vision Objektanzahl)

Parameter

Beschreibung

Dieser Block hat keine Parameter.

Beispiel

wenn gestartet
[Display how many AprilTag IDs are detected.]
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
Konsole löschen
drucke (Vision Objektanzahl) in Konsole ▶
warte [0.2] Sekunden

Eigenschaften des Vision-Objekts#

Es gibt mehrere Eigenschaften, die zu jedem Objekt (siehe unten) hinzugefügt werden, das nach der Verwendung des Blocks get object data gespeichert wird.

Der AI Vision Objekt-Eigenschaftsberichtsblock.#
(Vision Objekt [Breite v])

Alle Eigenschaftswerte außer id beschreiben Position, Größe, Ausrichtung oder Richtung des erkannten Objekts zum Zeitpunkt der Verwendung des Blocks Objektdaten abrufen. Diese Werte werden in Pixeln oder Grad gemessen. Jeder Bildsensor hat eine andere Auflösung.

  • Frontansicht: 640 x 480 Pixel

  • Nach unten gerichtet: 640 x 400 Pixel

Parameter

Beschreibung

Eigentum

Welche Eigenschaft des erkannten Objekts soll verwendet werden?

Breite#

Die width-Eigenschaft gibt die Breite des erkannten Objekts in Pixeln als ganze Zahl von 1 bis 640 an.

Der AI Vision-Objekt-Eigenschaftenstapelblock, dessen Parameter auf Breite eingestellt ist.#
(Vision Objekt [Breite v])

Beispiel

wenn gestartet
[Show if the AprilTag ID appears large or small.]
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
Konsole löschen
wenn <Vision Objekt vorhanden?> dann
wenn <(Vision Objekt [Breite v]) [math_greater_than v] [100]> dann
drucke [Large] in Konsole ▶
sonst
drucke [Small] in Konsole ▶
Ende
Ende
warte [0.2] Sekunden

Höhe#

Die height-Eigenschaft gibt die Höhe des erkannten Objekts in Pixeln als ganze Zahl von 1 bis 480 an.

Der AI Vision-Objekt-Eigenschaftsstapelblock, dessen Parameter auf Höhe eingestellt ist.#
(Vision Objekt [Höhe v])

Beispiel

wenn gestartet
[Show if the AprilTag ID appears large or small.]
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
Konsole löschen
wenn <Vision Objekt vorhanden?> dann
wenn <(Vision Objekt [Höhe v]) [math_greater_than v] [100]> dann
drucke [Large] in Konsole ▶
sonst
drucke [Small] in Konsole ▶
Ende
Ende
warte [0.2] Sekunden

centerX#

Die centerX-Eigenschaft gibt die x-Koordinate des Mittelpunkts des erkannten Objekts in Pixeln als ganze Zahl von 1 bis 640 an.

Der AI Vision-Objekt-Eigenschaftenstapelblock mit dem auf centerX eingestellten Parameter.#
(Vision Objekt [centerX v])

Beispiel

wenn gestartet
[Show if an AprilTag ID is to the left or the right of the camera.]
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
Konsole löschen
wenn <Vision Objekt vorhanden?> dann
wenn <(Vision Objekt [centerX v]) [math_less_than v] [320]> dann
drucke [To the left] in Konsole ▶
sonst
drucke [To the right] in Konsole ▶
Ende
Ende
warte [0.2] Sekunden

ZentrumY#

Die centerY-Eigenschaft gibt die y-Koordinate des Mittelpunkts des erkannten Objekts in Pixeln als ganze Zahl von 1 bis 480 an.

Der AI Vision-Objekt-Eigenschaftenstapelblock mit dem auf centerY gesetzten Parameter.#
(Vision Objekt [centerY v])

Beispiel

wenn gestartet
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
starte auf [800] [mm v] ▶
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
wenn <Vision Objekt vorhanden?> dann
wenn <(Vision Objekt [centerY v]) [math_less_than v] [240]> dann
drucke [Below the target!] in Konsole ▶
sonst
drucke [Above the target!] in Konsole ▶
Ende
sonst
drucke [No target found!] in Konsole ▶

Lager#

Die Peilungseigenschaft gibt einen Winkel an, der die Position eines Objekts relativ zur Drohne beschreibt. Das Verhalten hängt vom verwendeten Bildsensor ab.

Ein Wert von 0° bedeutet, dass Objekt und Sensor deckungsgleich sind. Positive Werte bedeuten, dass sich das Objekt rechts befindet, negative Werte bedeuten, dass es sich links befindet.

Sensor

Rücksendungen

Nach unten

Gradzahl, um die sich die Vorderseite der Drohne drehen muss, um mit dem Mittelpunkt des Objekts übereinzustimmen, von –180º bis 180º.

Nach vorne

Gradzahl, in der das Objekt von der Mitte des Bildsensors nach links oder rechts versetzt ist, von –180º bis 180º.

Der AI Vision-Objekt-Eigenschaftenstapelblock mit dem auf centerY gesetzten Parameter.#
(Vision Objekt [Peilung v])

Beispiele

wenn gestartet
[Align the front of the drone to an AprilTag ID.]
setze Drehgeschwindigkeit auf (15)%
starte auf [500] [mm v] ▶
für immer
hole [alle AprilTags v] Daten von Vision [nach unten v] Kamera
wenn <Vision Objekt vorhanden?> dann
wenn <[-20] [math_less_than v] (Vision Objekt [Peilung v]) [math_less_than v] [20]> dann
[Hover once sensor is centered on the AprilTag ID.]
schweben
spiele Ton [Erfolg v] ▶
sonst wenn <(Vision Objekt [Peilung v]) [math_less_than v] [-21]> dann
drehe [links v]
sonst
drehe [rechts v]

Drehung#

Die Rotationseigenschaft gibt die Ausrichtung der erkannten AprilTag-ID als ganze Zahl in Grad von 1 bis 359 an.

Der AI Vision-Objekt-Eigenschaftenstapelblock, dessen Parameter auf Rotation eingestellt ist.#
(Vision Objekt [Drehung v])

Beispiel

wenn gestartet
[Turn left or right based on the rotation of an AprilTag ID.]
starte auf [1000] [mm v] ▶
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
wenn <Vision Objekt vorhanden?> dann
wenn <[240] [math_less_than v] (Vision Objekt [Drehung v]) [math_less_than v] [300]> dann
drehe [links v] für [90] Grad ▶
sonst wenn <[60] [math_less_than v] (Vision Objekt [Drehung v]) [math_less_than v] [120]> dann
drehe [rechts v] für [90] Grad ▶
sonst
schweben

originX#

Die originX-Eigenschaft gibt die x-Koordinate der oberen linken Ecke des Begrenzungsrahmens des erkannten Objekts in Pixeln als ganze Zahl von 1 bis 640 an.

Der AI Vision-Objekt-Eigenschaftenstapelblock, dessen Parameter auf originX gesetzt ist.#
(Vision Objekt [originX v])

Beispiel

wenn gestartet
[Draw lines to the AprilTag ID origin from all corners.]
für immer
Bildschirm löschen
get [all AprilTags v] data from vision [forward v] camera
wenn <Vision Objekt vorhanden?> dann
zeichne Linie [0] [0] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
zeichne Linie [0] [480] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
zeichne Linie [640] [0] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
zeichne Linie [640] [480] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
Ende
warte [0.2] Sekunden

UrsprungY#

Die originY-Eigenschaft gibt die y-Koordinate der oberen linken Ecke des Begrenzungsrahmens des erkannten Objekts in Pixeln als ganze Zahl von 1 bis 480 an.

Der AI Vision-Objekt-Eigenschaftenstapelblock, dessen Parameter auf originY gesetzt ist.#
(Vision Objekt [originY v])

Beispiel

wenn gestartet
[Draw lines to the AprilTag ID origin from all corners.]
für immer
Bildschirm löschen
get [all AprilTags v] data from vision [forward v] camera
wenn <Vision Objekt vorhanden?> dann
zeichne Linie [0] [0] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
zeichne Linie [0] [480] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
zeichne Linie [640] [0] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
zeichne Linie [640] [480] (Vision Objekt [originX v]) (Vision Objekt [originY v]) auf Bildschirm
Ende
warte [0.2] Sekunden

Ausweis#

Die id-Eigenschaft gibt die Identifikationsnummer der erkannten AprilTag-ID als ganze Zahl an.

Der AI Vision-Objekt-Eigenschaftenstapelblock, dessen Parameter auf tagID gesetzt ist.#
(Vision Objekt [id v])

Beispiel

wenn gestartet
[Display the detected AprilTag ID.]
für immer
hole [alle AprilTags v] Daten von Vision [vorwärts v] Kamera
Konsole löschen
wenn <Vision Objekt vorhanden?> dann
drucke (Vision Objekt [id v]) in Konsole ▶
Ende
warte [0.2] Sekunden