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:
- Konfigurieren von Farbsignaturen mit der AI Vision Signature in VEXcode V5
- Konfigurieren von Farbcodes mit dem AI Vision Sensor in VEXcode V5
Der AI Vision Sensor kann auch AI-Klassifizierungen und AprilTags erkennen. Um zu erfahren, wie Sie diese Erkennungsmodi aktivieren, klicken Sie hier:
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
.
- Diese visuellen Signaturen beginnen mit dem Namen des AI Vision Sensors, einem doppelten Unterstrich und dann dem Namen der visuellen Signatur, zum Beispiel:
-
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_1
enthä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.
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.
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.
Die Koordinaten CenterX und CenterY helfen bei der Navigation und Positionierung. Der AI Vision Sensor hat eine Auflösung von 320 x 240 Pixeln.
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.
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.
Die Breiten- und Höhenangaben helfen dabei, unterschiedliche Objekte zu identifizieren. Beispielsweise ist ein Buckyball höher als ein Ring.
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
Die Eigenschaft Winkel
ist nur fürFarbcodes undAprilTagsverfügbar.
Dies stellt dar, ob der erkannte Farbcodeoder AprilTag anders ausgerichtet ist.
Sie können erkennen, ob der Roboter in Bezug auf denFarbcode oderAprilTag anders ausgerichtet ist und entsprechend Navigationsentscheidungen treffen.
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.
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.