Roboterspezifische Blöcke#

Einführung#

Der Hero Bot, Flop, umfasst einen Ansaugmotor, einen Armmotor und einen IQ AI Vision Sensor.

Alle Standard-VEXcode-VR-Blöcke können im IQ 26-27 Level Up Playground verwendet werden.

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

Bewegung – Die Motoren des Roboters bewegen und verfolgen.

KI-Vision – Objekte mithilfe des IQ KI-Vision-Sensors erfassen und analysieren.

  • Aktionen

    • Objektdaten abrufen - Erfasst Daten für eine bestimmte Signatur, z. B. eine erkannte KI-Klassifizierung.

  • Einstellungen

  • Werte

    • object exists - Gibt zurück, ob eine Klassifizierung erkannt wurde.

    • object is - Gibt zurück, ob eine bestimmte Klassifizierung erkannt wurde.

    • object is AprilTag - Gibt zurück, ob das erkannte Objekt ein AprilTag ist, das einer bestimmten ID entspricht.

    • Objektanzahl - Gibt zurück, wie viele Objekte erkannt wurden.

    • Objekteigenschaft - Gibt Breite, Höhe, MittelpunktX, MittelpunktY, UrsprungX oder UrsprungY zurück.

Die Beispiele auf dieser Seite verwenden die standardmäßige Startposition des Playgrounds.

Bewegung#

Flop nutzt den Einzugsmotor, um Spielelemente aufzunehmen und auszuwerfen. Der Armmotor hebt und senkt den Arm.

Jeder Motor verfügt über eigene Richtungsoptionen. Die Richtungsbezeichnungen beschreiben, wie sich der jeweilige Motor auf dem Flop bewegt.

Aktionen#

Spinmotor#

Der Drehmotor-Stapelblock lässt einen Motor sich endlos in eine von zwei Richtungen drehen. Der Motor dreht sich so lange, bis er eine andere Aktion auslöst, z. B. die Drehrichtung ändert oder anhält.

drehe [IntakeMotor v] [intake v]

Parameter

Beschreibung

Motor

Der zu drehende Motor: IntakeMotor oder ArmMotor.

Richtung

Die Drehrichtung des Motors:

  • Einlassmotor — Einlass oder Auslass
  • Armmotor — auf oder ab

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]

Spinmotor für#

Der Drehmotor für den Stapelblock lässt einen Motor eine bestimmte Strecke drehen. Die Drehung erfolgt relativ zur aktuellen Position des Motors. Das Projekt wartet, bis der Motor seine Drehung beendet hat, bevor der nächste Block im Stapel ausgeführt wird.

drehe [ArmMotor v] [hoch v] für (500) [Grad v] ▶

Parameter

Beschreibung

Motor

Der zu drehende Motor: IntakeMotor oder ArmMotor.

Richtung

Die Drehrichtung des Motors:

  • Einlassmotor — Einlass oder Auslass
  • Armmotor — auf oder ab

Distanz

Die Strecke, die der Motor zurücklegt. Gradangaben werden als ganze Zahlen angegeben. Umdrehungen können als ganze Zahlen oder Dezimalzahlen angegeben werden.

Einheit

Die Entfernungseinheit: Grad oder Umdrehungen.

und warte nicht

Wählen Sie den Pfeil ( ▶ ), um den Block zu erweitern und und warten Sie nicht anzuzeigen, damit der nächste Block im Stapel sofort ausgeführt wird.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]

Drehmotor in Position#

Der Drehmotor-Positionierungsblock dreht einen Motor in eine bestimmte Position.

Die Position eines Motors gibt an, wie weit er sich gedreht hat, gemessen in Grad oder Umdrehungen. Eine Umdrehung entspricht 360 Grad. Zu Beginn eines Projekts ist die Motorposition auf 0 Grad eingestellt. Die Motorposition kann auch mit dem Block Motorposition festlegen eingestellt werden.

Positionswerte sind absolut. Das bedeutet, dass die Drehrichtung von der aktuellen Position des Motors abhängt.

Wenn der Motor beispielsweise bei 0 Grad startet und sich bis zu einer Position von 720 Grad dreht, dreht er sich zwei Umdrehungen vorwärts. Dreht er sich anschließend bis zu einer Position von 360 Grad, dreht er sich eine Umdrehung rückwärts, da 360 kleiner als 720 ist.

drehe [ArmMotor v] zu Position (500) [Grad v] ▶

Parameter

Beschreibung

Motor

Der zu drehende Motor: IntakeMotor oder ArmMotor.

Position

Der Positionswert, bis zu dem sich der Motor dreht. Grad werden als ganze Zahlen angegeben. Umdrehungen können als ganze Zahlen oder Dezimalzahlen angegeben werden.

Einheit

Die Positionseinheit: Grad oder Umdrehungen.

und warte nicht

Wählen Sie den Pfeil ( ▶ ), um den Block zu erweitern und und warten Sie nicht anzuzeigen, damit der nächste Block im Stapel sofort ausgeführt wird.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] zu Position (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]

Motor stoppen#

Der Motorstopp-Block stoppt den ausgewählten Motor.

stoppe [IntakeMotor v]

Parameter

Beschreibung

Motor

Der Motor, der gestoppt werden soll: IntakeMotor oder ArmMotor.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]
warte (1) Sekunden
stoppe [IntakeMotor v]

Einstellungen#

Motorgeschwindigkeit einstellen#

Der Motorgeschwindigkeit einstellen-Block legt fest, wie schnell sich ein Motor drehen soll. Ein höherer Prozentwert beschleunigt die Drehung, ein niedrigerer Prozentwert verlangsamt sie.

Jedes Projekt beginnt standardmäßig damit, dass jeder Motor mit 50 % Drehzahl läuft.

Hinweis: Eine höhere Drehzahl lässt den Motor schneller drehen, kann aber die Präzision verringern. Eine niedrigere Drehzahl lässt den Motor langsamer drehen, kann aber die Präzision erhöhen.

setze [IntakeMotor v] Geschwindigkeit auf [50] [% v]

Parameter

Beschreibung

Motor

Der Motor, dessen Drehzahl eingestellt werden soll: IntakeMotor oder ArmMotor.

Geschwindigkeit

Die Drehzahl des Motors. Prozent werden in ganzen Zahlen von 0 % bis 100 % angegeben.

Einheit

Die Geschwindigkeitseinheit: %.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
setze [IntakeMotor v] Geschwindigkeit auf [100] [% v]
drehe [IntakeMotor v] [outtake v]

Motor-Timeout einstellen#

Der Block „Motor-Timeout festlegen“ bestimmt, wie lange ein Motor versucht, eine Bewegung abzuschließen. Schafft er es nicht, die Bewegung innerhalb dieser Zeit zu beenden, bricht er den Versuch ab und fährt mit dem nächsten Block im Stapel fort. Dadurch wird verhindert, dass der Motor bei einer Bewegung hängen bleibt.

setze [ArmMotor v] Zeitlimit auf [1] Sekunden

Parameter

Beschreibung

Motor

Der Motor, für den das Timeout eingestellt werden soll: IntakeMotor oder ArmMotor.

Zeit

Die Anzahl der Sekunden, die der Motor versuchen kann, eine Bewegung abzuschließen. Dies kann eine ganze Zahl oder eine Dezimalzahl sein.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
setze [ArmMotor v] Zeitlimit auf [2] Sekunden
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]

Position#

Motorposition#

Die Position eines Motors wird in Grad oder Umdrehungen gemessen und gibt an, wie weit er sich gedreht hat. Eine Umdrehung entspricht 360 Grad. Der Block zur Meldung der Motorposition gibt die aktuelle Position des Motors aus.

Zu Beginn eines Projekts wird die Motorposition auf 0 Grad eingestellt. Dreht sich der Motor eine volle Umdrehung vorwärts, beträgt die Position 360 Grad bzw. eine Umdrehung. Dreht sich der Motor in die andere Richtung, ist die Position negativ.

([ArmMotor v] Position in [Grad v])

Parameter

Beschreibung

Motor

Der Motor, der die Position von IntakeMotor oder ArmMotor meldet.

Einheit

Die Einheit, in der die Motorposition angegeben werden soll: Grad oder Umdrehungen.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
solange <([ArmMotor v] Position in [Grad v]) [math_less_than v] [360]>
drehe [ArmMotor v] [hoch v]
warte (0.002) Sekunden
Ende
stoppe [ArmMotor v]
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]

Motorposition einstellen#

Die Position eines Motors gibt an, wie weit er sich gedreht hat, gemessen in Grad oder Umdrehungen. Eine Umdrehung entspricht 360 Grad. Der Block „Motorposition festlegen“ ändert die aktuelle Motorposition auf einen neuen Wert.

Hat sich ein Motor beispielsweise um 180 Grad gedreht, wird durch Einstellen der Position auf 0 Grad diese Position von 180 auf 0 Grad zurückgesetzt. Anschließend kann sich der Motor basierend auf diesem neuen Wert in verschiedene Positionen drehen.

setze [ArmMotor v] Position auf (0) [Grad v]

Parameter

Beschreibung

Motor

Der Motor, der die Position von IntakeMotor oder ArmMotor einstellt.

Position

Der einzustellende Positionswert. Gradangaben werden als ganze Zahlen angegeben. Drehungen können als ganze Zahlen oder Dezimalzahlen angegeben werden.

Einheit

Die Positionseinheit: Grad oder Umdrehungen.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
setze [ArmMotor v] Position auf [0] [Grad v]
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]

Werte#

Der Motor ist fertig.#

Der boolesche Block Motor beendet meldet, ob der Motor seine Bewegung abgeschlossen hat. Dies kann genutzt werden, um den Zeitpunkt anderer Aktionen basierend auf der Motorbewegung zu steuern.

  • Wahr — Der Motor hat seine Bewegung beendet.

  • Falsch — Der Motor dreht sich noch.

Dieser Block arbeitet mit den folgenden Motion-Blöcken zusammen, die den Parameter und nicht warten haben: Motor drehen für und Motor drehen zu Position.

<[ArmMotor v] abgeschlossen?>

Parameter

Beschreibung

Motor

Der Motor, der meldet, ob er seine Bewegung beendet hat: IntakeMotor oder ArmMotor.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] zu Position (1) [Umdrehungen v] ◀ und nicht warten
warte bis <[ArmMotor v] abgeschlossen?>
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]

Der Motor dreht sich#

Der boolesche Block „Motor dreht sich“ meldet, ob sich der Motor dreht. Dies kann genutzt werden, um den Zeitpunkt anderer Aktionen basierend auf der Motorbewegung zu steuern.

  • Wahr — Der Motor dreht sich.

  • Falsch — Der Motor dreht sich nicht.

Dieser Block arbeitet mit den folgenden Motion-Blöcken zusammen, die den Parameter und nicht warten haben: Motor drehen für und Motor drehen zu Position.

<[IntakeMotor v] dreht?>

Parameter

Beschreibung

Motor

Der Motor, der meldet, ob er sich dreht: IntakeMotor oder ArmMotor.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]
warte bis <nicht <[IntakeMotor v] dreht?>>
stoppe [IntakeMotor v]

Motorgeschwindigkeit#

Der Motorgeschwindigkeits-Reporterblock gibt an, wie schnell sich der Motor dreht, und zwar als Prozentsatz von -100% bis 100%.

([IntakeMotor v] Geschwindigkeit in [% v] :: custom-motion)

Parameter

Beschreibung

Motor

Der Motor, der die Geschwindigkeit von IntakeMotor oder ArmMotor melden soll.

Einheit

Die Einheit, in der die Motorgeschwindigkeit angegeben werden soll: %.

Beispiel

wenn gestartet
[Score a Bean Bag in a Blue Goal.]
drehe [links v] für (90) Grad ▶
fahre [vorwärts v] für (35) [Zoll v] ▶
drehe [rechts v] für (90) Grad ▶
drehe [ArmMotor v] [hoch v] für (1) [Umdrehungen v] ▶
fahre [vorwärts v] für (40) [Zoll v] ▶
drehe [IntakeMotor v] [outtake v]
warte [0.2] Sekunden
drucke ([IntakeMotor v] Geschwindigkeit in [% v] :: custom-motion) ▶

KI-Vision#

Aktionen#

Objektdaten abrufen#

Der Block Objektdaten abrufen filtert Daten aus dem IQ AI Vision Sensor-Frame zu einer einzigen Signatur – einer gespeicherten Beschreibung von etwas, das der Sensor erkennen kann, wie zum Beispiel ein Spielelement auf dem Spielfeld.

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

Der Stackblock zum Abrufen von Objektdaten.#
hole [KI-Klassifikationen v] Daten von [AIVision v]

Parameter

Beschreibung

Unterschrift

Filtert den Datensatz, sodass nur Daten der angegebenen Signatur enthalten sind. Verfügbare Signaturen:

  • KI-Klassifizierungen – Erkennt rote, blaue und gelbe Sitzsäcke.
  • AprilTags – Erkennt die AprilTag-IDs an den Seiten der Tore.

Beispiel

wenn gestartet :: hat events
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Find and face the nearest red Bean Bag.]
setze Drehgeschwindigkeit auf (30) [% v]
setze [object_counter v] auf [1]
hole [KI-Klassifikationen v] Daten von [AIVision v]
wiederhole ([AIVision v] Objektanzahl)
setze [AIVision v] Objektelement auf (object_counter)
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
if <([AIVision v] Objekt [centerX v]) < (140)> then
drehe [links v]
else if <([AIVision v] object [centerX v]) > (180)> then
drehe [rechts v]
sonst
Fahren stoppen
Ende
Abbruch
Ende
ändere [object_counter v] um [1]
Ende

Einstellungen#

Objektelement festlegen#

Der Block set object item legt fest, welches Element im Datensatz verwendet werden soll.

Der Set-Objekt-Elementstapelblock.#
setze [AIVision v] Objektelement auf [1]

Parameter

Beschreibung

Artikel

Die Nummer des zu verwendenden Elements im Datensatz.

Beispiel

wenn gestartet :: hat events
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Find the index of the nearest red Bean Bag.]
setze [object_counter v] auf [1]
hole [KI-Klassifikationen v] Daten von [AIVision v]
wiederhole ([AIVision v] Objektanzahl)
setze [AIVision v] Objektelement auf (object_counter)
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
drucke (verbinde [Nearest Red Bean Bag is ] (object_counter)) ▶
Abbruch
sonst
ändere [object_counter v] um [1]
Ende
Ende

Werte#

Objekt existiert#

Der Objekt existiert-Block gibt einen booleschen Wert zurück, der angibt, ob im Datensatz ein Objekt gefunden wurde.

  • Wahr – Der Datensatz enthält ein erkanntes Objekt.

  • Falsch – Der Datensatz enthält keine erkannten Objekte.

Das AI Vision-Objekt existiert als Boolescher Block.#
<[AIVision v] Objekt vorhanden?>

Parameter

Beschreibung

Dieser Block hat keine Parameter.

Beispiel

wenn gestartet :: hat events
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Turn until a Bean Bag is detected.]
setze Drehgeschwindigkeit auf (30) [% v]
drehe [rechts v]
wiederhole bis <[AIVision v] Objekt vorhanden?>
hole [KI-Klassifikationen v] Daten von [AIVision v]
Ende
Fahren stoppen

Objekt ist#

Der Objekt ist-Block gibt einen booleschen Wert zurück, der angibt, ob ein erkanntes Objekt einer bestimmten Klassifizierung entspricht.

  • Wahr – Das Element im Datensatz ist das spezifische Objekt.

  • Falsch – Das Element im Datensatz ist nicht das angegebene Objekt.

Das Objekt ist ein boolescher Block.#
<[AIVision v] Objekt ist [RedBeanBag v]?>

Parameter

Beschreibung

Objekt

Mit welchem ​​Objekt soll der Artikel verglichen werden: RoterSitzsack, BlauerSitzsack oder GelberSitzsack?

Beispiel

wenn gestartet :: hat events
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Find the index of the nearest red Bean Bag.]
setze [object_counter v] auf [1]
hole [KI-Klassifikationen v] Daten von [AIVision v]
wiederhole ([AIVision v] Objektanzahl)
setze [AIVision v] Objektelement auf (object_counter)
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
drucke (verbinde [Nearest Red Bean Bag is ] (object_counter)) ▶
Abbruch
sonst
ändere [object_counter v] um [1]
Ende
Ende

Objekt ist AprilTag#

Der Block object is AprilTag gibt einen booleschen Wert zurück, der angibt, ob es sich bei dem erkannten Objekt um einen AprilTag handelt, der einer bestimmten ID entspricht.

  • True - Das erkannte Objekt ist ein AprilTag mit der angegebenen ID.

  • Falsch – Das erkannte Objekt ist kein AprilTag mit der angegebenen ID.

Das Objekt ist ein boolescher Block namens AprilTag.#
<[AIVision v] Objekt ist AprilTag [0]?>

Parameter

Beschreibung

AprilTag ID

Die ID-Nummer zum Vergleich mit dem erkannten AprilTag.

Beispiel

wenn gestartet :: hat events
[Stop when you see the Red Goal!]
setze Drehgeschwindigkeit auf (30) [% v]
drehe [rechts v]
wiederhole bis <[AIVision v] Objekt ist AprilTag [1]?>
hole [AprilTags v] Daten von [AIVision v]
Ende
Fahren stoppen
drucke [Found the Red Goal!] ▶

Objektanzahl#

Der Objektanzahl-Block gibt die Anzahl der im Datensatz erkannten Objekte als ganze Zahl zurück.

Der Block zur Zählung von Objekten.#
([AIVision v] Objektanzahl)

Parameter

Beschreibung

Dieser Block hat keine Parameter.

Beispiel

wenn gestartet :: hat events
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Print how many Bean Bags are detected.]
hole [KI-Klassifikationen v] Daten von [AIVision v]
drucke ([AIVision v] Objektanzahl) ▶

Objekteigenschaft#

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

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

Alle Eigenschaftswerte beschreiben Position und Größe des erkannten Objekts im Sichtfeld des IQ AI Vision Sensors zum Zeitpunkt der Verwendung des Blocks „Objektdaten abrufen“. Die Werte werden in Pixeln gemessen, basierend auf der Auflösung des Sensors von 320 x 240 Pixeln.

Parameter

Beschreibung

Eigentum

Welche Eigenschaft des erkannten Objekts soll verwendet werden: Breite, Höhe, MitteX, MitteY, UrsprungX oder UrsprungY?

Breite#

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

Der AI Vision-Objekteigenschaften-Reporterblock mit ausgewählter Breite.#
([AIVision v] Objekt [Breite v])

Beispiel

wenn gestartet
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Approach the Bean Bag, then pick it up.]
setze Fahrgeschwindigkeit auf (30) [% v]
für immer
hole [KI-Klassifikationen v] Daten von [AIVision v]
wenn <[AIVision v] Objekt vorhanden?> dann
setze [AIVision v] Objektelement auf [1]
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
if <([AIVision v] object [width v]) > (180)> then
fahre [vorwärts v] für [50] [mm v] ▶
drehe [IntakeMotor v] [intake v] für [90] [Grad v] ▶
Abbruch
sonst
fahre [vorwärts v]
Ende
Ende
Ende
Ende
Höhe#

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

Der AI Vision-Objekt-Eigenschaftenberichtsblock mit ausgewählter Höhe.#
([AIVision v] Objekt [Höhe v])

Beispiel

wenn gestartet
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Approach the Bean Bag, then pick it up.]
setze Fahrgeschwindigkeit auf (30) [% v]
für immer
hole [KI-Klassifikationen v] Daten von [AIVision v]
wenn <[AIVision v] Objekt vorhanden?> dann
setze [AIVision v] Objektelement auf [1]
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
if <([AIVision v] object [height v]) > (100)> then
fahre [vorwärts v] für [50] [mm v] ▶
drehe [IntakeMotor v] [intake v] für [90] [Grad v] ▶
Abbruch
sonst
fahre [vorwärts v]
Ende
Ende
Ende
Ende
centerX#

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

Der AI Vision-Objekt-Eigenschaftenberichtsblock mit ausgewähltem centerX.#
([AIVision v] Objekt [centerX v])

Beispiel

wenn gestartet
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Steer to keep the Bean Bag centered while approaching.]
setze Drehgeschwindigkeit auf (30) [% v]
setze Fahrgeschwindigkeit auf (30) [% v]
für immer
hole [KI-Klassifikationen v] Daten von [AIVision v]
wenn <[AIVision v] Objekt vorhanden?> dann
setze [AIVision v] Objektelement auf [1]
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
if <([AIVision v] Objekt [centerX v]) < (140)> then
drehe [links v] für (5) Grad ▶
sonst
fahre [vorwärts v] für (150) [mm v] ▶
drehe [IntakeMotor v] [intake v]
Abbruch
Ende
Ende
Ende
Ende
ZentrumY#

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

Der AI Vision-Objekt-Eigenschaftenberichtsblock mit ausgewähltem centerY.#
([AIVision v] Objekt [centerY v])

Beispiel

wenn gestartet
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Print the y-position of the Bean Bag.]
hole [KI-Klassifikationen v] Daten von [AIVision v]
wenn <[AIVision v] Objekt vorhanden?> dann
setze [AIVision v] Objektelement auf [1]
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
drucke ([AIVision v] Objekt [centerY v]) ▶
Ende
Ende
originX#

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

Der AI Vision-Objekt-Eigenschaftenberichtsblock mit ausgewähltem Ursprung X.#
([AIVision v] Objekt [originX v])

Beispiel

wenn gestartet
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Steer to keep the left edge centered.]
setze Drehgeschwindigkeit auf (30) [% v]
setze Fahrgeschwindigkeit auf (30) [% v]
für immer
hole [KI-Klassifikationen v] Daten von [AIVision v]
wenn <[AIVision v] Objekt vorhanden?> dann
setze [AIVision v] Objektelement auf [1]
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
if <([AIVision v] Objekt [originX v]) < (100)> then
drehe [links v] für (5) Grad ▶
sonst
fahre [vorwärts v] für (150) [mm v] ▶
drehe [IntakeMotor v] [intake v]
Abbruch
Ende
Ende
Ende
Ende
UrsprungY#

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

Der AI Vision-Objekt-Eigenschaftenberichtsblock mit ausgewähltem UrsprungY.#
([AIVision v] Objekt [originY v])

Beispiel

wenn gestartet
[Drop the preloaded Bean Bag.]
drehe [IntakeMotor v] [outtake v] für (180) [Grad v] ▶
drehe [links v] für (90) Grad ▶
[Print the y-position of the Bean Bag's top edge.]
hole [KI-Klassifikationen v] Daten von [AIVision v]
wenn <[AIVision v] Objekt vorhanden?> dann
setze [AIVision v] Objektelement auf [1]
wenn <[AIVision v] Objekt ist [RedBeanBag v]?> dann
drucke ([AIVision v] Objekt [originY v]) ▶
Ende
Ende