Wizja AI#
Wstęp#
Czujnik wizyjny AI robota VEX AIM Coding Robot wykrywa i śledzi obiekty, kolory oraz identyfikatory AprilTag. Dzięki temu robot może analizować otoczenie, śledzić obiekty i reagować na podstawie wykrytych danych wizualnych.
Czujnik wizyjny AI ma rozdzielczość 320×240 pikseli. Początek układu współrzędnych (0, 0) znajduje się w lewym górnym rogu, co oznacza, że środek czujnika znajduje się w punkcie (160, 120), jak pokazano na poniższym schemacie:

Poniżej znajduje się lista wszystkich bloków:
Akcje — Kontroluj strumień danych AI Vision i przechwytuj dane obiektów.
Widok AI Vision na ekranie — Włącza lub wyłącza transmisję na żywo AI Vision na ekranie robota.
pobierz dane obiektu — Przechwytuje dane dla określonego podpisu, takiego jak skonfigurowany kolor, wstępnie wyszkolony obiekt lub identyfikator AprilTag.
Ustawienia — Dostosuj, do których wykrytych obiektów chcesz uzyskać dostęp.
ustaw obiekt AI Vision — Wybiera określony obiekt z listy wykrytych obiektów.
Wartości — zwracają obecność obiektu, klasyfikację i właściwości.
ma obiekt — Sprawdza, czy robot trzyma wykryty obiekt.
Obiekt AI Vision istnieje — Raportuje, czy obiekt został wykryty.
Obiekt AI Vision jest — sprawdza, czy wykryty obiekt pasuje do określonej klasyfikacji.
Obiekt AI Vision ma identyfikator AprilTag — sprawdza, czy wykryte identyfikatory AprilTag pasują do określonych identyfikatorów.
Liczba obiektów AI Vision — Raportuje liczbę wykrytych obiektów.
Właściwość obiektu AI Vision — Raportuje szczegóły, takie jak:
Akcje#
Widz AI Vision na ekranie#
Blok stosu Widok AI Vision na ekranie włącza lub wyłącza transmisję na żywo z AI Vision na ekranie robota. Po włączeniu ekran wyświetla dane z czujników w czasie rzeczywistym, zapobiegając wyświetlaniu innych obrazów i tekstu. Aby wyświetlić inne treści, użyj tego bloku, aby ukryć transmisję.
AI Vision [pokaż v] podgląd na ekranie
Parametry |
Opis |
|---|---|
status |
Steruje wyświetlaniem strumienia danych na ekranie robota: show wyświetla strumień danych, natomiast hide usuwa strumień danych z ekranu. |
Przykład
gdy uruchomiony
[View the AI Vision Sensor's feed for five seconds.]
AI Vision [pokaż v] podgląd na ekranie
czekaj [5] sekund
AI Vision [ukryj v] podgląd na ekranie
pobierz dane obiektu#
Blok stosu pobierz dane obiektu filtruje dane z ramki czujnika AI Vision do pojedynczego podpisu — zapisanego opisu czegoś, co czujnik może rozpoznać, na przykład wstępnie wyszkolonego obiektu, identyfikatora AprilTag lub skonfigurowanego koloru lub kodu koloru.
Aby móc używać kolorów i kodów kolorów z tym blokiem, należy je najpierw skonfigurować w narzędziu AI Vision Utility.
Zbiór danych przechowuje obiekty uporządkowane od największego do najmniejszego według szerokości, zaczynając od indeksu 0. Dostęp do właściwości każdego obiektu można uzyskać za pomocą bloku właściwość obiektu AI Vision. Jeśli nie wykryto żadnych pasujących obiektów, zgłaszany jest pusty zbiór danych.
pobierz dane [piłka sportowa v] z AI Vision
Parametr |
Opis |
|---|---|
podpis |
Filtruje zbiór danych, aby zawierał tylko dane o podanym podpisie. Dostępne podpisy to:
|
Przykład
gdy uruchomiony
[Move forward if a sports ball is detected.]
zawsze
pobierz dane [piłka sportowa v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
leć [do przodu v] przez [10] [mm v] ▶
Sygnatury kolorów#
Sygnatura koloru to unikalny kolor, który czujnik AI Vision potrafi rozpoznać. Sygnatury te pozwalają czujnikowi wykrywać i śledzić obiekty na podstawie ich koloru. Po skonfigurowaniu Sygnatury koloru w narzędziu AI Vision Utility czujnik może identyfikować obiekty o tym konkretnym kolorze w swoim polu widzenia.
Sygnatury kolorów są używane w bloku get object data do przetwarzania i wykrywania kolorowych obiektów w czasie rzeczywistym.

Przykład
gdy uruchomiony
[Display if any objects matching the Red_Box signature is detected.]
zawsze
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
wyczyść wiersz [1] na ekranie
[Change the signature to any configured Color Signature.]
pobierz dane [Red_Box v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
wydrukuj [Color signature detected!] na ekranie ▶
Kody kolorów#
Kod koloru to ustrukturyzowany wzór składający się z 2 do 4 sygnatur kolorów ułożonych w określonej kolejności. Po skonfigurowaniu kodu koloru w narzędziu AI Vision Utility czujnik może rozpoznawać predefiniowane wzorce kolorów.
Kody kolorów są szczególnie przydatne do identyfikacji złożonych obiektów, dopasowywania ich do elementów gry lub tworzenia unikalnych znaczników do autonomicznej nawigacji.

Przykład
gdy uruchomiony
[Display if any objects matching the BlueRed code is detected.]
zawsze
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
wyczyść wiersz [1] na ekranie
[Change the signature to any configured Color Code.]
pobierz dane [BlueRed v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
wydrukuj [Color code detected!] na ekranie ▶
Ustawienia#
ustaw obiekt AI Vision#
Blok stosu ustaw element obiektu AI Vision ustawia, który element w zestawie danych ma zostać użyty.
ustaw element obiektu AI Vision na (1)
Parametry |
Opis |
|---|---|
przedmiot |
Numer elementu w zestawie danych, który ma zostać użyty. |
Przykład
gdy uruchomiony
[Display the width of the smallest detected object.]
zawsze
pobierz dane [cały ładunek v] z AI Vision
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
jeśli <obiekt AI Vision istnieje?> to
ustaw element obiektu AI Vision na (liczba obiektów AI Vision)
wydrukuj (obiekt AI Vision [szerokość v]) na ekranie ▶
Wartości#
ma obiekt#
Blok logiczny ma obiekt informuje, czy robot ma obecnie wykryty obiekt w swoim Kicker.
Prawda — robot ma obiekt.
Fałsz — Robot nie ma obiektu.
<ma [piłka sportowa v]? :: custom-ai-vision>
Parametr |
Opis |
|---|---|
obiekt |
Obiekt do wykrycia przy kopaczu robota:
|
Przykład
gdy uruchomiony
[Kick when the robot has a sports ball.]
zawsze
jeśli <ma [piłka sportowa v]? :: custom-ai-vision> to
kopnij obiekt [średni v]
Obiekt AI Vision istnieje#
Blok logiczny Obiekt AI Vision istnieje informuje, czy obiekt został wykryty w zestawie danych.
Prawda — Zestaw danych zawiera wykryty obiekt.
Fałsz — Nie wykryto żadnych obiektów.
<obiekt AI Vision istnieje?>
Parametry |
Opis |
|---|---|
Ten blok nie ma żadnych parametrów. |
Przykład
gdy uruchomiony
[Move forward if a sports ball is detected.]
zawsze
pobierz dane [piłka sportowa v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
leć [do przodu v] przez [10] [mm v] ▶
Obiekt AI Vision to#
Obiekt AI Vision to blok logiczny, który informuje, czy wykryty obiekt pasuje do określonej klasyfikacji.
Prawda — Element w zestawie danych jest konkretnym obiektem.
Fałsz — Element w zestawie danych nie jest konkretnym obiektem.
<obiekt AI Vision to [piłka sportowa v]?>
Parametr |
Opis |
|---|---|
obiekt |
Do którego obiektu porównać przedmiot:
|
Przykład
gdy uruchomiony
[Display if a sports ball is detected.]
zawsze
pobierz dane [cały ładunek v] z AI Vision
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
jeśli <obiekt AI Vision istnieje?> to
jeśli <obiekt AI Vision to [piłka sportowa v]?> to
wydrukuj [Sports ball detected!] na ekranie ▶
czekaj [0.5] sekund
Obiekt AI Vision ma identyfikator AprilTag#
Obiekt AI Vision to blok logiczny AprilTag ID, który informuje, czy wykryte ID AprilTag pasuje do określonego ID.
Prawda — Identyfikator AprilTag jest liczbą.
Fałsz — Identyfikator AprilTag nie jest liczbą.
<AI Vision object is AprilTag ID [1] ?>
Parametry |
Opis |
|---|---|
Identyfikator AprilTag |
Liczba do porównania z wykrytym numerem ID AprilTag. |
Liczba obiektów AI Vision#
Blok reportera AI Vision object count raportuje liczbę wykrytych obiektów w zestawie danych jako liczbę całkowitą.
liczba obiektów AI Vision
Parametry |
Opis |
|---|---|
Ten blok nie ma żadnych parametrów. |
Przykład
gdy uruchomiony
[Display the amount of sports balls and barrels.]
zawsze
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [cały ładunek v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
wydrukuj (liczba obiektów AI Vision) na ekranie ▶
koniec
czekaj [0.5] sekund
Właściwość obiektu AI Vision#
Każdy obiekt (pokazany poniżej) zawiera dziewięć właściwości, które są przechowywane po użyciu bloku get object data.
obiekt AI Vision [szerokość v]
Wszystkie wartości właściwości, z wyjątkiem tagID, opisują położenie, rozmiar, orientację lub azymut wykrytego obiektu w momencie użycia bloku pobierz dane obiektu. Wartości te są mierzone w pikselach lub stopniach, w oparciu o rozdzielczość czujnika 320 na 240 pikseli.

Parametr |
Opis |
|---|---|
nieruchomość |
Którą właściwość wykrytego obiektu użyć: |
szerokość#
Właściwość szerokość raportuje szerokość wykrytego obiektu w pikselach jako liczbę całkowitą od 1 do 320.
Uwaga: Wartości pikseli są względne względem układu współrzędnych czujnika. Patrz schemat we Wprowadzeniu w celach informacyjnych.
obiekt AI Vision [szerokość v]

Przykład
gdy uruchomiony
[Move towards a blue barrel until its width is larger than 100 pixels.]
zawsze
pobierz dane [niebieska beczka v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <(obiekt AI Vision [szerokość v]) [math_less_than v] [100]> to
jedź [do przodu v]
koniec
w przeciwnym razie
zatrzymaj wszystkie ruchy
wysokość#
Właściwość height raportuje wysokość wykrytego obiektu w pikselach jako liczbę całkowitą od 1 do 240.
Uwaga: Wartości pikseli są względne względem układu współrzędnych czujnika. Patrz schemat we Wprowadzeniu w celach informacyjnych.
obiekt AI Vision [wysokość v]

Przykład
gdy uruchomiony
[Move towards a blue barrel until its height is larger than 100 pixels.]
zawsze
pobierz dane [niebieska beczka v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <(obiekt AI Vision [wysokość v]) [math_less_than v] [100]> to
jedź [do przodu v]
koniec
w przeciwnym razie
zatrzymaj wszystkie ruchy
środekX#
Właściwość centerX raportuje współrzędną x środka wykrytego obiektu w pikselach jako liczbę całkowitą od 0 do 320.
Uwaga: Wartości pikseli są względne względem układu współrzędnych czujnika. Patrz schemat we Wprowadzeniu w celach informacyjnych.
obiekt AI Vision [centerX v]

Przykład
gdy uruchomiony
[Turn slowly until a blue barrel is centered in front of the robot.]
ustaw prędkość obrotu na [30]%
skręć [w prawo v]
zawsze
pobierz dane [niebieska beczka v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <[140] [math_less_than v] (obiekt AI Vision [centerX v]) [math_less_than v] [180]> to
zatrzymaj wszystkie ruchy
środek Y#
Właściwość centerY raportuje współrzędną y środka wykrytego obiektu w pikselach jako liczbę całkowitą od 0 do 240.
Uwaga: Wartości pikseli są względne względem układu współrzędnych czujnika. Patrz schemat we Wprowadzeniu w celach informacyjnych.
obiekt AI Vision [centerY v]

Przykład
gdy uruchomiony
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
zawsze
pobierz dane [niebieska beczka v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <(obiekt AI Vision [centerY v]) [math_less_than v] [140]> to
jedź [do przodu v]
koniec
w przeciwnym razie
zatrzymaj wszystkie ruchy
pochodzenieX#
Właściwość originX raportuje współrzędną x lewego górnego rogu pola ograniczającego wykryty obiekt w pikselach jako liczbę całkowitą od 0 do 320.
Uwaga: Wartości pikseli są względne względem układu współrzędnych czujnika. Patrz schemat we Wprowadzeniu w celach informacyjnych.
obiekt AI Vision [originX v]

Przykład
gdy uruchomiony
[Display if an orange barrel is to the left or the right.]
zawsze
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [pomarańczowa beczka v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <(obiekt AI Vision [originX v]) [math_less_than v] [160]> to
wydrukuj [To the left!] na ekranie ▶
w przeciwnym razie
wydrukuj [To the right!] na ekranie ▶
koniec
czekaj [0.5] sekund
pochodzenieY#
Właściwość originY raportuje współrzędną y lewego górnego rogu pola ograniczającego wykryty obiekt w pikselach jako liczbę całkowitą od 0 do 240.
Uwaga: Wartości pikseli są względne względem układu współrzędnych czujnika. Patrz schemat we Wprowadzeniu w celach informacyjnych.
obiekt AI Vision [originY v]

Przykład
gdy uruchomiony
[Display if an orange barrel is close or far from the robot.]
zawsze
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [pomarańczowa beczka v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <(obiekt AI Vision [originY v]) [math_less_than v] [80]> to
wydrukuj [Far!] na ekranie ▶
w przeciwnym razie
wydrukuj [Close!] na ekranie ▶
koniec
czekaj [0.5] sekund
obrót#
Właściwość rotation raportuje orientację wykrytego identyfikatora AprilTag lub kodu koloru jako liczbę całkowitą w stopniach od 0 do 359.
obiekt AI Vision [obrót v]

Przykład
gdy uruchomiony
[Slide left or right depending on how the Color Code is rotated.]
zawsze
pobierz dane [Red_Blue v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <[50] [math_less_than v] (obiekt AI Vision [obrót v]) [math_less_than v] [100]> to
jedź [w prawo v]
w przeciwnym razie jeśli <[270] [math_less_than v] (obiekt AI Vision [obrót v]) [math_less_than v] [330]> to
jedź [w lewo v]
w przeciwnym razie
zatrzymaj wszystkie ruchy
koniec
w przeciwnym razie
zatrzymaj wszystkie ruchy
łożysko#
Właściwość bearing informuje, jak daleko obiekt znajduje się na lewo lub na prawo od środka pola widzenia czujnika AI Vision Sensor, w stopniach. Wartość 0 oznacza, że obiekt jest wyśrodkowany, wartości dodatnie oznaczają, że obiekt znajduje się na prawo, a wartości ujemne oznaczają, że obiekt znajduje się na lewo.
gdy uruchomiony
[Keep the blue barrel directly in front of the robot.]
ustaw prędkość obrotu na [40]%
zawsze
pobierz dane [niebieska beczka v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jeśli <(obiekt AI Vision [namiar v]) [math_greater_than v] [5]> to
skręć [w prawo v]
w przeciwnym razie jeśli <(obiekt AI Vision [namiar v]) [math_less_than v] [-5]> to
skręć [w lewo v]
w przeciwnym razie
zatrzymaj wszystkie ruchy
identyfikator tagu#
Właściwość tagID raportuje numer identyfikacyjny wykrytego identyfikatora AprilTag jako liczbę całkowitą.
obiekt AI Vision [tagID v]
Przykład
gdy uruchomiony
[Move forward when AprilTag ID 0 is detected.]
zawsze
pobierz dane [AprilTag ID 0 v] z AI Vision
jeśli <obiekt AI Vision istnieje?> to
jedź [do przodu v]
koniec
zatrzymaj wszystkie ruchy