Dieser Artikel behandelt ein Beispielprojekt, das ein Dashboard anzeigt, das den Status für die Roboter-Roboter-Kommunikation über VEXlink und auch den Status an den Jetson meldet. Das ai_demo-Projekt wird auf unserem Githubgehostet. Dieses Demoprojekt sammelt Daten vom Jetson-Prozessor über eine serielle USB-Verbindung. Sobald die Daten empfangen wurden, werden sie auf dem Bildschirm des V5 Brain angezeigt und auch an einen über VEXlink verbundenen V5-Partnerroboter übertragen.

Dieses Projekt erfordert die neueste Version von VEXcode Pro V5 (Versionen 2.0.2 und höher). VEXcode Pro V5 hierheruntergeladen.

VEXcode-Pro-V5-icon.png


Nvidia Jetson Nano zu VEX V5 Brain Communications

Der Jetson-Prozessor enthält eine Anwendung, die die folgenden Daten von der VEX AI-Software sammelt:

Screen_Shot_2021-02-05_at_3.30.04_PM.png

Standortdaten des Roboters:

  • X,Y-Position des Roboters in mm von der Mitte des Feldes.
  • Azimut (Kurs), Elevation (Pitch), Rotation (Roll) des Roboters, alle im Bogenmaß.

Objekterkennungsdaten (zwei Arten):

image4.png

Boxinformationen (Typ eins):
  • Diese Daten repräsentieren ein vom AI-Bildsensor erkanntes Objekt.
  • Die Daten enthalten einen Wert, der die Klassifizierung des erkannten Objekts darstellt. (Werte: 0 = Roter Ball, 1 = Blauer Ball, 2 = Tor)
  • Diese Daten beschreiben das Objekt mit Bezug auf das Videobild.
  • Werte für X, Y, Breite und Höhe sind in Pixeleinheiten angegeben. Die Pixelwerte beziehen sich auf die linke obere Ecke des Videobildschirms. Die Bildauflösung beträgt 320x240.

image2.png

image6.png

Karteninformationen (Typ zwei):

  • Diese Daten stellen dieselben Daten wie die Boxinformationen dar, aber diese Daten bleiben bestehen, wenn das Objekt nicht mehr erkannt wird.
  • Jedes Objekt hat einen Alterswert, der für jedes Videobild erhöht wird, in dem das Objekt nicht erkannt wird. Je höher also die Altersnummer für ein Objekt ist, desto länger ist es her, dass das KI-System dieses Objekt erkannt hat.
  • Jedes Objekt enthält einen Wert, der die Klassifizierung des erkannten Objekts darstellt. (Werte: 0 = Roter Ball, 1 = Blauer Ball, 2 = Tor)
  • Jedes Objekt enthält auch die Position des Objekts relativ zur Mitte des Feldes. Die Werte für X und Y sind in Millimetereinheiten von der Mitte des Felds in ihrer jeweiligen Achse angegeben. Der Wert von Z ist Millimeter von den Feldkacheln entfernt.

    Hinweis: Diese Werte werden in Zoll und Grad umgewandelt, um den im Web-Dashboard angezeigten Daten zu entsprechen.
  • Im Programm ai_demo werden die Werte für diese Objekte durch die Struktur MAP_RECORD repräsentiert.

Eine Aufschlüsselung des ai_demo-Programms:

        • Main.cpp

          image5.png

          Standard beinhaltet für VEX-Projekte:

          image7.png

          Deklarieren Sie eine Instanz der Jetson-Klasse. Diese Klasse wird verwendet, um Datenanforderungen an den Jetson zu senden sowie Daten über die serielle USB-Verbindung zu empfangen.

          #define MANAGER_ROBOT 1

          Define_manager_robot_1.png

          Deklarieren Sie eine Instanz der robot_link-Klasse. Dieses Objekt wird verwendet, um Daten zwischen diesem Roboter und einem Partnerroboter zu verbinden und zu übertragen. Das gleiche Projekt kann auf zwei separate Roboter heruntergeladen werden. Ein Roboter benötigt die Zeile:

          //#define MANAGER_ROBOT 1

          Bevor Sie den Code auf den zweiten Roboter laden, müssen Sie diese Zeile auskommentieren:

Die Klasse robot_link richtet den VEXlink des Roboters ein und übernimmt das Senden und Empfangen von Daten zwischen den beiden Robotern. Wir werden in diesem Artikel nicht näher darauf eingehen, wie diese Klasse funktioniert. Es wäre eine gute Idee, zuerst zu verstehen, wie VEXlink funktioniert. Ausführlichere Informationen zur Verwendung der V5 VEXlink API finden Sie in in diesem Dokument werden die neuen Bibliotheken und ihre effektive Verwendung für Kommunikation von Roboter zu Roboter.

  • Wettkampf-Event-Handler

    firstAutoFlag.png

    Einer der größten Unterschiede zwischen VAIC und VRC besteht darin, dass es keine Fahrerkontrollperiode gibt. Stattdessen gibt es zwei autonome Perioden, die Isolationsphase und die Interaktionsphase. In diesem Beispiel gibt es für jede autonome Periode separate Routinen. Da die VEX-API keine zwei verschiedenen Callbacks unterstützt, muss im Programm ein Flag vorhanden sein, um zu bestimmen, welche Routine ausgeführt werden soll. In diesem Beispielprogramm wird das „firstAutoFlag“ verwendet, um die Isolationsfunktion bei der ersten Aktivierung der Autonomie und die Interaktionsfunktion bei der zweiten Aktivierung der Autonomie aufzurufen. Zu beachten ist, dass wenn aus irgendeinem Grund das Match zurückgesetzt werden muss, das Demoprogramm neu gestartet werden muss, damit das firstAutoFlag zurückgesetzt werden kann.

  • Hauptsächlich()

    image3.png

    Dies ist die Hauptaufgabe dieses Projekts. Es beginnt mit dem Aufruf von vexcodeInit(), um die VEXcode-Umgebung korrekt einzurichten. Als nächstes wird ein lokales MAP_RECORD-Objekt zum Speichern der Daten deklariert, die wir vom Jetson erhalten. Für die Aktualisierung des Bildschirms mit den aktuellsten Daten ist auch eine separate Aufgabe eingerichtet. Der Code für diese Aufgabe ist in der Datei Dashboard.cpp enthalten. Der autonome Rückruf wird auch registriert, um zu handhaben, wenn die autonomen Zeiträume eingeleitet werden.

    Die Hauptschleife while() beginnt mit dem Kopieren der neuesten Daten aus dem jetson_comms-Objekt in unser lokales MAP_RECORD-Objekt. Anschließend übergibt er die Standortinformationen des Roboters an das Link-Objekt, damit diese an unseren Partner-Roboter übermittelt werden können. Sobald die Verarbeitung der Daten abgeschlossen ist, fordert er weitere Daten vom Jetson an und ruht für 66 Millisekunden. Die Abfragerate für diese Daten beträgt 15 Hz. Es gibt keinen Grund, schneller abzufragen, da die Daten des KI-Systems mit etwa 15 Hz aktualisiert werden.

    Hinweis: Die Jetson-Kartendaten müssen nur von einer einzigen Aufgabe angefordert werden.

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

Last Updated: