Kodowanie robota VEX AI

W tym artykule omówiono przykładowy projekt wyświetlający pulpit raportujący stan komunikacji między robotami za pomocą VEXlink, a także status Jetson. Projekt ai_demo jest hostowany na naszym Github. Ten projekt demonstracyjny zbiera dane z procesora Jetson poprzez połączenie szeregowe USB. Po odebraniu danych są one wyświetlane na ekranie V5 Brain, a także przesyłane do współpracującego robota V5, który jest podłączony za pośrednictwem VEXlink.

Uwaga: Ten projekt wymaga najnowszej wersji rozszerzenia VS Code dla wersji 5. Pobierz rozszerzenie VS Code dla wersji V5 tutaj.


NVIDIA Jetson Nano do komunikacji mózgowej VEX V5

W procesorze Jetson znajduje się aplikacja zbierająca z oprogramowania VEX AI następujące dane:

Schemat ilustrujący proces wykorzystania VEX AI, prezentujący kluczowe komponenty i przepływ pracy w celu efektywnej implementacji w systemach robotyki V5.

Dane lokalizacji robota:

  • Lokalizacja X, Y robota w metrach od środka pola.
  • Azymut robota (kurs), wysokość (nachylenie), obrót (przechylenie) wszystko w radianach.

Dane dotyczące wykrywania obiektów (trzy typy):

Schemat ilustrujący komponenty systemu VEX AI i ich interakcje, pokazujący w jaki sposób VEX AI rozszerza funkcjonalność robotyki w kategorii V5.

Detekcja obrazu (typ pierwszy):
  • Dane te reprezentują obiekt wykryty przez kamerę Intel VEX AI.
  • Dane te opisują obiekt w odniesieniu do obrazu z kamery.
  • Wartości X, Y, szerokość i wysokość podano w jednostkach pikseli. Wartości pikseli odnoszą się do lewego górnego rogu pola wykrywania obrazu i obiektu. Rozdzielczość obrazu to 640x480.

 

Schemat ilustrujący funkcje i komponenty VEX AI, podkreślający jego zastosowania i korzyści w robotyce, jako część opisu kategorii V5.

Wykrywanie mapy (typ drugi):

  • Dane te przedstawiają lokalizację obiektu na polu w tym samym układzie współrzędnych co czujnik GPS, wyrażoną w metrach.
  • Każdy obiekt zawiera także położenie obiektu względem środka pola. Wartości X i Y podano w metrach od środka pola na ich osi. Wartość Z to metry od pól pola (wysokość).

Wykrywany obiekt (typ trzeci):

Schemat ilustrujący komponenty systemu VEX AI i ich interakcje, podkreślający kluczowe cechy i funkcjonalności platformy robotycznej V5.

  • Zawiera wszystkie informacje o wykrytych obiektach.
  • Każdy obiekt zawiera wartość reprezentującą klasyfikację wykrytego obiektu. (Identyfikator klasy: 0 = GreenTriball, 1 = RedTriBall, 2 = BlueTriBall)
  • Każdy obiekt zawiera również prawdopodobieństwo, które reprezentuje pewność wykrycia przez sztuczną inteligencję VEX. Dzieje się tak po filtrze w pliku model.py, który usuwa wykrycia o niskim prawdopodobieństwie.
  • Ponadto głębokość obiektu jest raportowana w metrach przez kamerę VEX AI Intel Camera.
  • Do każdego obiektu dołączone są funkcje wykrywania obrazu i wykrywania mapy, które reprezentują współrzędne obiektu na obrazie, a także w świecie rzeczywistym.

Rozkład programu ai_demo:

Główny.cpp

Schemat ilustrujący funkcje i cechy VEX AI w kategorii V5, pokazujący, jak efektywnie wykorzystać tę technologię w zastosowaniach robotyki.

Standard obejmuje dla projektów VEX:

Schemat ilustrujący komponenty systemu VEX AI i ich interakcje, jako część Opisu kategorii V5 w sekcji Korzystanie z VEX AI.

Zadeklaruj instancję klasy Jetson. Ta klasa służy do wysyłania żądań danych do Jetsona, a także odbierania danych poprzez połączenie szeregowe USB.

#zdefiniuj MANAGER_ROBOT 1

Schemat ilustrujący funkcje i komponenty VEX AI w kontekście robotyki V5, podkreślający kluczowe funkcjonalności i wytyczne dotyczące użytkowania.

Zadeklaruj instancję klasy robot_link. Obiekt ten będzie używany do łączenia i przesyłania danych pomiędzy tym robotem a robotem partnerskim. Ten sam projekt można pobrać na dwa osobne roboty. Jeden robot będzie potrzebował linii:

//#zdefiniuj MANAGER_ROBOT 1

Zanim załadujesz kod do drugiego robota, będziesz musiał skomentować tę linię:

Klasa robot_link konfiguruje VEXlink robota i obsługuje transmisję i odbieranie danych pomiędzy dwoma robotami. W tym artykule nie będziemy szczegółowo omawiać działania tej klasy. Dobrze byłoby najpierw zrozumieć, jak działa VEXlink. Aby uzyskać bardziej szczegółowe informacje na temat korzystania z interfejsu API V5 VEXlink, w tym dokumencie wyjaśniono nowe biblioteki i sposób ich efektywnego wykorzystania do komunikacji między robotami.

  • Opiekunowie wydarzeń konkursowych

    Schemat ilustrujący funkcje i komponenty VEX AI w systemie robotyki V5, podkreślający jego możliwości w zakresie zwiększania wydajności i programowania robotów.

    Jedną z największych różnic między VAIC i VRC jest brak okresu kontroli sterownika. Zamiast tego istnieją dwa autonomiczne okresy, okres izolacji i okres interakcji. W tym przykładzie istnieją oddzielne procedury dla każdego okresu autonomicznego. Ponieważ API VEX nie obsługuje dwóch różnych wywołań zwrotnych, w programie musi znajdować się flaga określająca, która procedura ma zostać wykonana. W tym przykładowym programie „firstAutoFlag” służy do wywołania funkcji Isolation przy pierwszym włączeniu funkcji autonomicznej oraz funkcji interakcji, gdy funkcja autonomiczna jest włączona po raz drugi. Należy zauważyć, że jeśli z jakiegoś powodu dopasowanie wymaga zresetowania, program demonstracyjny musi zostać uruchomiony ponownie, aby można było zresetować pierwszą flagę AutoFlag.

  • Główny()

    Schemat ilustrujący funkcje i cechy VEX AI w kategorii V5, podkreślający kluczowe komponenty i ich interakcje w celu ulepszonego programowania i automatyzacji robotyki.

    To jest główne zadanie tego projektu. Zaczyna się od wywołania vexcodeInit() w celu prawidłowego skonfigurowania środowiska VEXcode. Następnie deklarowany jest lokalny obiekt AI_RECORD do przechowywania danych, które otrzymujemy od Jetsona. Odrębne zadanie ustawione jest także do obsługi aktualizacji ekranu o najbardziej aktualne dane. Kod tego zadania znajduje się w pliku dashboard.cpp. Autonomiczne wywołanie zwrotne jest również rejestrowane do obsługi w przypadku inicjowania okresów autonomicznych.

    Główna pętla while() rozpoczyna się od skopiowania najnowszych danych z obiektu jetson_comms do naszego lokalnego obiektu AI_RECORD. Następnie przekazuje informacje o lokalizacji robota do obiektu łącza, aby można je było przesłać do robota naszego partnera. Po zakończeniu przetwarzania danych żąda od Jetsona większej ilości danych i pozostaje w stanie uśpienia na 66 milisekund. Częstotliwość odpytywania tych danych wynosi 15 Hz. Nie ma powodu, aby odpytywać szybciej, ponieważ dane systemu AI aktualizują się z częstotliwością około 15 Hz.

    Uwaga: dane mapy Jetson muszą być wymagane tylko w ramach jednego zadania.

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

Last Updated: