Czujnik wizyjny AI#

Wstęp#

Czujnik wizyjny AI VEX IQ może 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.

Przykłady AI Vision są przeznaczone do użytku z Basebotem wyposażonym w czujnik AI Vision VEX IQ. W tych przykładach czujnik jest skonfigurowany pod nazwą AIVision1, która pojawia się w blokach.

Poniżej znajduje się lista wszystkich bloków:

Akcje — przechwytywanie danych z czujnika wizyjnego AI VEX IQ dla wybranego podpisu.

  • pobierz dane obiektu — Przechwytuje dane dla określonego podpisu, takiego jak skonfigurowany kolor, wstępnie wyszkolony obiekt lub identyfikator AprilTag.

Ustawienia — Wybierz obiekt, z którym chcesz wejść w interakcję.

Wartości — dostęp do przechwyconych danych i korzystanie z nich.

Akcje#

pobierz dane obiektu#

Blok stosu pobierz dane obiektu filtruje dane z ramki czujnika wizyjnego VEX IQ AI 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.

Blok stosu danych obiektu Get.#
pobierz dane [SELECT_A_SIG v] z [AIVision1 v]

Parametr

Opis

podpis

Filtruje zbiór danych, aby zawierał tylko dane o podanym podpisie. Dostępne są następujące podpisy:

  • Identyfikatory AprilTag
  • Klasyfikacje AI — Dostępność zmienia się w zależności od modelu skonfigurowanego w narzędziu AI Vision Utility.
  • NAZWA — Sygnatura koloru lub Kod koloru, gdzie NAZWA to nazwa skonfigurowana w narzędziu AI Vision Utility

Uwaga: Aby opcje AprilTag ID lub klasyfikacji AI były widoczne, ich wykrywanie musi być włączone w narzędziu AI Vision Utility.

Przykład

gdy uruchomiony
[Drive forward if an AprilTag ID is detected.]
zawsze
pobierz dane [AprilTag IDs v] z [AIVision1 v]
jeśli <obiekt [AIVIsion1 v] istnieje?> to
jedź [do przodu v] przez [10] [mm v] ▶

Klasyfikacje AI#

Czujnik wizyjny AI VEX IQ może wykrywać różne obiekty w ramach określonych klasyfikacji AI. W zależności od modelu klasyfikacji AI wybranego podczas konfiguracji czujnika wizyjnego AI VEX IQ w oknie Urządzenia, wykrywane będą różne obiekty. Obecnie dostępne modele to:

Obiekty klasowe

  • BlueBall

  • GreenBall

  • Czerwona Piłka

  • Niebieski pierścień

  • Zielony Pierścień

  • Czerwony Pierścień

  • BlueCube

  • GreenCube

  • RedCube

Konkurs robotyki VEX IQ Mix & Match

  • Belka

  • RedPin

  • BluePin

  • Pomarańczowa Pin

Wzrost poziomu konkursu robotyki VEX IQ

  • Niebieska Torba Fasoli

  • Czerwona Torba Fasoli

  • Żółta Worek Fasoli

Sygnatury kolorów#

Sygnatura koloru to unikalny kolor, który rozpoznaje czujnik wizyjny VEX IQ AI. Sygnatury te pozwalają czujnikowi wykrywać i śledzić obiekty na podstawie ich koloru. Po skonfigurowaniu Sygnatury koloru czujnik może identyfikować obiekty o tym konkretnym kolorze w swoim polu widzenia.

Sygnatury kolorów są używane w bloku pobierz dane obiektu do przetwarzania i wykrywania kolorowych obiektów w czasie rzeczywistym. Jednocześnie można skonfigurować do 7 sygnatur kolorów.

Narzędzie AI Vision Utility przedstawiające połączony czujnik wizyjny wykrywający dwa kolorowe obiekty. Po lewej stronie wyświetlany jest obraz z kamery na żywo z niebieskim polem po lewej i czerwonym polem po prawej, każde z nich otoczone białymi ramkami. Czarne etykiety wyświetlają ich nazwy, współrzędne i wymiary. Po prawej stronie znajdują się ustawienia sygnatury kolorów, z suwakami do regulacji odcienia i nasycenia dla pola czerwonego i niebieskiego. Na dole znajdują się przyciski do dodawania kolorów, zatrzymywania wideo, kopiowania i zapisywania obrazu, a także przycisk zamykania w prawym dolnym rogu.

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 [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
wydrukuj [Color detected!] na ekranie ▶

Kody kolorów#

Kod koloru to uporządkowany wzór składający się z 2 do 4 sygnatur kolorów ułożonych w określonej kolejności. Kody te pozwalają czujnikowi wizyjnemu VEX IQ AI rozpoznawać predefiniowane wzorce kolorów.

Kody kolorów są szczególnie przydatne do identyfikacji złożonych obiektów, dopasowania do elementów gry lub tworzenia unikalnych znaczników do autonomicznej nawigacji. Jednocześnie można skonfigurować do 8 kodów kolorów.

Interfejs AI Vision Utility pokazuje podłączony czujnik wizyjny wykrywający dwa sąsiadujące obiekty – niebieskie pole po lewej stronie i czerwone pole po prawej – zgrupowane w jednym białym polu granicznym oznaczonym BlueRed. Informacje o wykryciu obejmują kąt (A: 11°), współrzędne (X: 143, Y: 103), szerokość (W: 233) i wysokość (H: 108). Na prawym panelu znajdują się trzy sygnatury kolorów: Red_Box, Blue_Box i BlueRed z regulowanymi zakresami odcienia i nasycenia. Sygnatura BlueRed łączy sygnatury Blue_Box i Red_Box. Pod kanałem wideo znajdują się przyciski oznaczone etykietami: Zamroź wideo, Kopiuj obraz, Zapisz obraz i Zamknij.

Przykład

gdy uruchomiony
[Display if any objects matching the RED_BLUE 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 [RED_BLUE v] z [AIVision1 v]
jeśli <obiekt [AIVIsion1 v] istnieje?> to
wydrukuj [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.

Blok stosu obiektów Set AI Vision.#
ustaw element obiektu [AIVision1 v] na (1)

Parametry

Opis

przedmiot

Numer elementu w zestawie danych, który ma zostać użyty.

Przykład

Stos bloków rozpoczyna się blokiem „When Started”, po którym następuje blok komentarza „Wyświetl największy wykryty identyfikator AprilTag”. W pętli „Forever” blok „Take a AI Vision Snapshot” przechwytuje obraz identyfikatorów AprilTag. Blok „If” sprawdza, czy obiekt AI Vision istnieje. Jeśli „True”, blok „Set” obiektu AI Vision przypisuje liczbę obiektów do zmiennej, a blok „Print” wyświetla na ekranie identyfikator tagu wykrytego obiektu.#
gdy uruchomiony
[Display the largest detected AprilTag ID.]
zawsze
pobierz dane [AprilTag IDs v] z [AIVision1 v]
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
jeśli <obiekt [AIVision1 v] istnieje?> to
ustaw element obiektu [AIVision1 v] na (liczba obiektów [AIVision1 v])
wydrukuj (obiekt [AIVision1 v] [tagID v]) na ekranie ▶

Wartości#

Obiekt AI Vision istnieje#

Blok logiczny Obiekt AI Vision istnieje informuje, czy w zestawie danych wykryto jakikolwiek obiekt.

  • Prawda — Zestaw danych zawiera wykryty obiekt.

  • Fałsz — Zestaw danych nie zawiera żadnych wykrytych obiektów.

Obiekt AI Vision jest blokiem boolowskim.#
<obiekt [AIVision1 v] istnieje?>

Parametry

Opis

Ten blok nie ma żadnych parametrów.

Przykład

gdy uruchomiony
[Drive forward if an object is detected.]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jedź [do przodu v] przez [10] [mm v] ▶

Liczba obiektów AI Vision#

Blok reportera AI Vision object count raportuje liczbę wykrytych obiektów w zestawie danych jako liczbę całkowitą.

Blok stosu obiektów Set AI Vision.#
(liczba obiektów [AIVision1 v])

Parametry

Opis

Ten blok nie ma żadnych parametrów.

Przykład

gdy uruchomiony
[Display the total amount of cubes, rings, and balls.]
zawsze
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
wydrukuj (liczba obiektów [AIVision1 v]) 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.

Blok raportujący właściwości obiektu AI Vision.#
(obiekt [AIVision1 v] [szerokość v])

Wszystkie wartości właściwości, z wyjątkiem tagID, opisują położenie i rozmiar wykrytego obiektu w polu widzenia czujnika wizyjnego VEX IQ AI w momencie użycia bloku get object data. Wartości te są mierzone w pikselach, 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.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na szerokość.#
(obiekt [AIVision1 v] [szerokość v])

Przykład

gdy uruchomiony
[Drive towards an object until its width is larger than 100 pixels.]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <(obiekt [AIVision1 v] [szerokość v]) [math_less_than v] [100]> to
jedź [do przodu v]
koniec
w przeciwnym razie
zatrzymaj jazdę

wysokość#

Właściwość height raportuje wysokość wykrytego obiektu w pikselach jako liczbę całkowitą od 1 do 240.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na wysokość.#
(obiekt [AIVision1 v] [wysokość v])

Przykład

gdy uruchomiony
[Drive towards an object until its height is larger than 100 pixels.]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <(obiekt [AIVision1 v] [wysokość v]) [math_less_than v] [100]> to
jedź [do przodu v]
koniec
w przeciwnym razie
zatrzymaj jazdę

środekX#

Właściwość centerX raportuje współrzędną x środka wykrytego obiektu w pikselach jako liczbę całkowitą od 0 do 320.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na centerX.#
(obiekt [AIVision1 v] [centerX v])

Przykład

gdy uruchomiony
[Turn slowly until an object is centered in front of the robot.]
ustaw prędkość obrotu na [30] [% v]
skręć [w prawo v]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <[140] [math_less_than v] (obiekt [AIVision1 v] [centerX v]) [math_less_than v] [180]> to
zatrzymaj jazdę

środek Y#

Właściwość centerY raportuje współrzędną y środka wykrytego obiektu w pikselach jako liczbę całkowitą od 0 do 240.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na centerY.#
(obiekt [AIVision1 v] [centerY v])

Przykład

gdy uruchomiony
[Drive towards an object until its center y-coordinate is more than 140 pixels.]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <(obiekt [AIVision1 v] [centerY v]) [math_less_than v] [140]> to
jedź [do przodu v]
koniec
w przeciwnym razie
zatrzymaj jazdę

kąt#

Właściwość angle raportuje orientację wykrytego kodu koloru lub identyfikatora AprilTag jako liczbę całkowitą w stopniach od 0 do 359.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na kąt.#
(obiekt [AIVision1 v] [ką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 [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <[50] [math_less_than v] (obiekt [AIVision1 v] [kąt v]) [math_less_than v] [100]> to
jedź [w prawo v]
w przeciwnym razie jeśli <[270] [math_less_than v] (obiekt [AIVision1 v] [kąt v]) [math_less_than v] [330]> to
jedź [w lewo v]
w przeciwnym razie
zatrzymaj jazdę
koniec
w przeciwnym razie
zatrzymaj jazdę

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.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na originX.#
(obiekt [AIVision1 v] [originX v])

Przykład

gdy uruchomiony
[Display if an object is to the left or the right.]
zawsze
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <(obiekt [AIVision1 v] [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.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na originY.#
(obiekt [AIVision1 v] [originY v])

Przykład

gdy uruchomiony
[Display if an object is close or far from the robot.]
zawsze
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <(obiekt [AIVision1 v] [originY v]) [math_less_than v] [80]> to
wydrukuj [Far!] na ekranie ▶
w przeciwnym razie
wydrukuj [Close!] na ekranie ▶
koniec
czekaj [0.5] sekund

identyfikator tagu#

Właściwość tagID raportuje numer identyfikacyjny wykrytego identyfikatora AprilTag jako liczbę całkowitą.

Blok stosu właściwości obiektu AI Vision z parametrem ustawionym na tagID.#
(obiekt [AIVision1 v] [tagID v])

Przykład

gdy uruchomiony
[Drive forward when AprilTag ID 0 is detected.]
zawsze
pobierz dane [AprilTag IDs v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <(obiekt [AIVision1 v] [tagID v]) [math_equal v] [0]> to
jedź [do przodu v]
w przeciwnym razie
zatrzymaj jazdę
koniec
czekaj [0.5] sekund

Czym jest obiekt AI Vision?#

Blok Obiekt AI Vision to? raportuje wartość logiczną wskazującą, czy wykryty obiekt pasuje do określonej klasyfikacji.

  • Prawda — elementem w zestawie danych jest konkretny obiekt.

  • Fałsz — element w zestawie danych nie jest konkretnym obiektem.

Klasyfikacja AI Vision AI jest obiektem bloku boolowskiego.#
<obiekt [AIVision1 v] to [BlueBall v]?>

Parametr

Opis

obiekt

Do której klasyfikacji AI porównać element.

Przykład

gdy uruchomiony
[Display if a Blue Cube is detected.]
zawsze
pobierz dane [Klasyfikacje AI v] z [AIVision1 v]
wyczyść wiersz [1] na ekranie
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <obiekt [AIVision1 v] to [BlueCube v]?> to
wydrukuj [Cube detected!] na ekranie ▶
czekaj [0.5] sekund

Obiekt AI Vision to AprilTag?#

Blok Obiekt AI Vision to AprilTag? raportuje wartość logiczną wskazującą, czy wykryty obiekt jest obiektem AprilTag pasującym do określonego identyfikatora.

  • Prawda — wykryty obiekt to AprilTag o podanym identyfikatorze.

  • Fałsz — wykryty obiekt nie jest obiektem AprilTag o podanym identyfikatorze.

Obiektem AI Vision jest blok boolowski AprilTag.#
<obiekt [AIVision1 v] to AprilTag [0]?>

Parametr

Opis

Identyfikator AprilTag

Numer ID do porównania z wykrytym AprilTag.

Przykład

gdy uruchomiony
[Report if AprilTag 3 is detected.]
zawsze
wyczyść ekran
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [AprilTag IDs v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <obiekt [AIVision1 v] to AprilTag [3]?> to
wydrukuj [That is 3!] na ekranie ▶
w przeciwnym razie
wydrukuj [That isn't 3!] na ekranie ▶
koniec
koniec
czekaj [0.1] sekund

Obiekt AI Vision ma identyfikator AprilTag?#

Blok Obiekt AI Vision to AprilTag ID? raportuje wartość logiczną wskazującą, czy wykryty identyfikator AprilTag pasuje do określonego identyfikatora.

  • Prawda — identyfikator AprilTag jest liczbą.

  • Fałsz — identyfikator AprilTag nie jest liczbą.

AI Vision wykryło, że AprilTag ID jest blokiem logicznym.#
<[AIVision1 v] object is AprilTag ID [1] ?>

Parametry

Opis

Numer identyfikacyjny AprilTag

Liczba do porównania z wykrytym numerem ID AprilTag.

Przykład:

gdy uruchomiony
[Report if AprilTag ID 3 is detected.]
zawsze
wyczyść ekran
ustaw kursor na wiersz [1] kolumnę [1] na ekranie
pobierz dane [AprilTag IDs v] z [AIVision1 v]
jeśli <obiekt [AIVision1 v] istnieje?> to
jeśli <[AIVision1 v] object is AprilTag ID [3] ?> to
wydrukuj [That is 3!] na ekranie ▶
w przeciwnym razie
wydrukuj [That isn't 3!] na ekranie ▶
koniec
koniec
czekaj [0.1] sekund