Stellen Sie sicher, dass Sie Farbsignaturen und Farbcodes mit Ihrem KI-Vision-Sensor konfiguriert haben, damit diese mit Ihren Blöcken verwendet werden können. Um mehr darüber zu erfahren, wie Sie diese konfigurieren können, lesen Sie die folgenden Artikel:
- Konfigurieren von Farbsignaturen mit der AI Vision Signature in VEXcode EXP
- Konfigurieren von Farbcodes mit der AI Vision Signature in VEXcode EXP
Der KI-Vision-Sensor kann auch KI-Klassifizierungen und AprilTags erkennen. Um zu erfahren, wie Sie diese Erkennungsmodi aktivieren, klicken Sie hier:
- KI-Klassifizierungen mit dem KI-Vision-Sensor in VEXcode EXP
- AprilTags mit dem KI-Vision-Sensor in VEXcode EXP
Visuelle Daten mit dem KI-Vision-Sensor erfassen
Jeder Befehl des KI-Vision-Sensors beginnt mit dem Namen des konfigurierten KI-Vision-Sensors. In allen Beispielen dieses Artikels wird der verwendete AI Vision Sensor als AIVisionbezeichnet.
Schnappschuss machen
Die Methode takeSnapshot erstellt ein Bild von dem, was der KI-Vision-Sensor aktuell sieht, und extrahiert Daten aus diesem Snapshot, die dann in einem Projekt verwendet werden können. Wenn eine Momentaufnahme erstellt wird, müssen Sie angeben, von welchem Objekttyp der KI-Vision-Sensor Daten erfassen soll:
- AFarbsignatur oderFarbcode
- Diese visuellen Signaturen beginnen mit dem Namen des KI-Vision-Sensors, gefolgt von zwei Unterstrichen und dem Namen der visuellen Signatur, zum Beispiel:
AIVision1__Blue.
- Diese visuellen Signaturen beginnen mit dem Namen des KI-Vision-Sensors, gefolgt von zwei Unterstrichen und dem Namen der visuellen Signatur, zum Beispiel:
-
KI-Klassifizierungen -
aivision::ALL_AIOBJS -
AprilTags-
aivision::ALL_TAGS
Durch das Erstellen eines Snapshots wird ein Array aller erkannten Objekte erzeugt, die Sie angegeben haben. Wenn Sie beispielsweise eine "Blau" Farbsignaturerkennen möchten und der KI-Vision-Sensor 3 verschiedene blaue Objekte erkennt, werden die Daten aller drei in das Array eingefügt.
In diesem Beispiel wird eine Momentaufnahme der "Blau" Farbsignaturvom AI Vision Sensor mit der Bezeichnung AIVision1aufgenommen. Es zeigt die Anzahl der im Array erkannten Objekte an und erstellt alle 0,5 Sekunden eine neue Momentaufnahme.
while (true) {
// Erhalte einen Snapshot aller blauen Objekte.
AIVision.takeSnapshot(AIVision1__Blue);
// Vor dem Abrufen der Daten prüfen, ob im Snapshot ein Objekt erkannt wurde.
if (AIVision.objectCount > 0) {
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, ms);
}
Objekte
Jedes Objekt in einem Snapshot besitzt unterschiedliche Eigenschaften, die zur Ermittlung von Informationen über dieses Objekt verwendet werden können. Die Objektmethode ermöglicht den Zugriff auf diese Eigenschaften.
Folgende Objekte stehen zur Verfügung:
- Ausweis
- centerX und centerY
- UrsprungX und UrsprungY
- Breite
- Höhe
- Winkel
- existiert
- Punktzahl
Um auf eine Objekteigenschaft zuzugreifen, verwenden Sie den Namen des KI-Vision-Sensors, gefolgt von der Objektmethode und dann dem Index des Objekts.
Der Objektindex gibt an, welche spezifische Eigenschaft des Objekts Sie abrufen möchten. Nach der Aufnahme eines Fotos sortiert der KI-Vision-Sensor die 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 AIVision1.objects[0].widthlauten.
Ausweis
Die Eigenschaft id ist nur für AprilTags und KI-Klassifizierungen verfügbar.
Für einenAprilTagstellt die id Eigenschaft die erkannte(n)AprilTag(s) ID-Nummer(n) dar.
Die Identifizierung spezifischer AprilTags ermöglicht eine selektive Navigation. Sie können Ihren Roboter so programmieren, dass er sich auf bestimmte Markierungen zubewegt, während er andere ignoriert, und diese somit effektiv als Wegweiser für die automatisierte Navigation nutzen.
BeiKI-Klassifizierungenstellt die Eigenschaft id den spezifischen Typ der erkannten KI-Klassifizierung dar.
Die Identifizierung spezifischer KI-Klassifizierungenermöglicht es dem Roboter, sich nur auf bestimmte Objekte zu konzentrieren, z. B. nur auf einen roten Buckyball zuzusteuern, nicht auf einen blauen.
Weitere Informationen zu AprilTags und AI Classifications und wie deren Erkennung im AI Vision Utility aktiviert werden kann, finden Sie in diesen Artikeln.
centerX und centerY
Dies sind die Mittelpunktkoordinaten des erkannten Objekts in Pixeln.
Die CenterX- und CenterY-Koordinaten helfen bei der Navigation und Positionierung. Der KI-Vision-Sensor hat eine Auflösung von 320 x 240 Pixeln.
Man kann erkennen, dass ein Objekt, das näher am KI-Vision-Sensor ist, eine niedrigere CenterY-Koordinate hat als ein Objekt, das weiter entfernt ist.
Da sich in diesem Beispiel der Mittelpunkt des Sichtfelds des KI-Vision-Sensors bei (160, 120) befindet, dreht sich der Roboter nach rechts, bis die CenterX-Koordinate eines erkannten Objekts größer als 150 Pixel, aber kleiner als 170 Pixel ist.
while (true) {
// Erhalte einen Snapshot aller Objekte der Farbe Blau.
AIVision.takeSnapshot(AIVision__Blue);
// Überprüfen, ob im Snapshot ein Objekt erkannt wurde, bevor Daten abgerufen werden.
if (AIVision.objectCount > 0) {
if (AIVision.objects[0].centerX > 150.0 && 170.0 > AIVision.objects[0].centerX) {
Drivetrain.turn(right);
} else {
Drivetrain.stop();
}
}
wait(5, msec);
}
UrsprungX und UrsprungY
OriginX und OriginY sind die Koordinaten in der oberen linken Ecke des erkannten Objekts in Pixeln.
Die Koordinaten OriginX und OriginY helfen bei der Navigation und Positionierung. Durch die Kombination dieser Koordinate mit der Breite und Höhe des Objekts lässt sich die Größe des Begrenzungsrahmens des Objekts bestimmen. Dies kann beim Verfolgen sich bewegender 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 bei der Identifizierung verschiedener Objekte. Ein Buckyball ist beispielsweise höher als ein Ring.
Breite und Höhe geben auch die Entfernung eines Objekts vom KI-Vision-Sensor an. Kleinere Messwerte bedeuten in der Regel, dass das Objekt weiter entfernt ist, während größere Messwerte darauf hindeuten, dass es näher ist.
In diesem Beispiel wird die Breite des Objekts zur Navigation verwendet. Der Roboter nähert sich dem Objekt so lange, bis die Breite eine bestimmte Größe erreicht hat, bevor er anhält.
while (true) {
// Erhalte einen Snapshot aller blauen Objekte.
AIVision.takeSnapshot(AIVision1__Blue);
// Überprüfen, ob im Snapshot ein Objekt erkannt wurde, bevor Daten abgerufen werden.
if (AIVision.objectCount > 0) {
if (AIVision.objects[0].width < 250.0) {
Drivetrain.drive(forward);
} else {
Drivetrain.stop();
}
}
wait(5, msec);
}
Winkel
Die Eigenschaft ° Winkel ist nur für die Farbcodesund(AprilTags verfügbar
Dies bedeutet, dass der erkannte Farbcode (AprilTagoder ausgerichtet ist.
Sie können überprüfen, ob der Roboter in Bezug auf den Farbcode oderAprilTag unterschiedlich ausgerichtet ist und entsprechend Navigationsentscheidungen treffen.
Wird beispielsweise einFarbcode nicht im richtigen Winkel erkannt, kann das von ihm dargestellte Objekt möglicherweise nicht richtig vom Roboter aufgenommen werden.
Punktzahl
Die Eigenschaft Score wird bei der Erkennung vonKI-Klassifizierungen mit dem KI-Vision-Sensor verwendet.
Der Konfidenzwert gibt an, wie sicher sich der KI-Vision-Sensor bei seiner Erkennung ist. In diesem Bild ist die KI-Klassifizierung dieser vier Objekte zu 99 % sicher. Mithilfe dieser Punktzahl können Sie sicherstellen, dass sich Ihr Roboter nur auf Erkennungen mit hoher Treffsicherheit konzentriert.
existiert
Die Eigenschaft exists wird verwendet, um festzustellen, ob eine bestimmte visuelle Signatur im zuletzt aufgenommenen Snapshot erkannt wurde.
Damit können Sie überprüfen, ob im vorherigen Snapshot bereits Objekte erkannt wurden. Diese Eigenschaft gibt True zurück, wenn ein Objekt existiert, und False, wenn das Objekt nicht existiert.
Objektanzahl
Die Methode objectCount gibt die Anzahl der im letzten Snapshot erkannten Objekte zurück.
In diesem Beispiel wurden zwei Objekte mit der Farbsignatur „Blau“ erkannt. Beide Elemente werden in das Array eingefügt, wenn die Methode takeSnapshot verwendet wird.
Dieser Codeabschnitt aktualisiert das EXP Brain kontinuierlich mit der Anzahl der erkannten Objekte. Anhand des angegebenen Beispiels wird wiederholt der Wert 2 gesendet, was bedeutet, dass zwei Objekte erkannt wurden.
while (true) {
// Erhalte einen Snapshot aller blauen Objekte.
AIVision.takeSnapshot(AIVision__Blue);
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
// Vor dem Abrufen der Daten prüfen, ob im Snapshot ein Objekt erkannt wurde.
if (AIVision.objectCount > 0) {
Brain.Screen.print(AIVision1.objectCount);
}
wait(5, ms);
}