Wizja#

Wstęp#

Dron VEX AIR posiada dwa czujniki wizyjne, które wykrywają i śledzą identyfikatory AprilTag. Pozwalają one dronowi analizować otoczenie, śledzić obiekty i reagować na podstawie wykrytych danych wizualnych.

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

Akcje — Kontroluj strumień danych Vision i przechwytuj dane obiektów.

Ustawienia — Dostosuj, do których wykrytych obiektów chcesz uzyskać dostęp.

Wartości — pobierz informacje o obecności, klasyfikacji i właściwościach obiektu.

Akcje#

pobierz dane obiektu#

Blok stosu pobierz dane obiektu filtruje dane z ramki czujnika wizyjnego. Czujniki wizyjne mogą wykrywać identyfikatory AprilTag.

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 Vision. Jeśli nie wykryto żadnych pasujących obiektów, zgłaszany jest pusty zbiór danych.

Blok stosu danych obiektu Get.#
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]

Parametr

Opis

podpis

Filtruje zbiór danych, aby zawierał tylko dane o podanym podpisie. Dostępny podpis to all AprilTags.

kamera

Czujnik wizyjny umożliwiający pobieranie danych do przodu lub w dół.

Przykład

gdy uruchomiony
[Climb upward when an AprilTag ID is detected.]
startuj na [300] [mm v] ▶
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
jeśli <obiekt Vision istnieje?> to
wznosz się [w górę v] przez [200] [mm v] ▶

Ustawienia#

ustaw element obiektu Vision#

Blok stosu ustaw element obiektu Vision ustawia, który element w zestawie danych ma zostać użyty.

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

Parametry

Opis

przedmiot

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

Przykład

gdy uruchomiony
[Display the smallest-appearing AprilTag ID.]
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
wyczyść konsolę
jeśli <obiekt Vision istnieje?> to
ustaw element obiektu Vision na (liczba obiektów Vision)
wydrukuj (obiekt Vision [id v]) w konsoli ▶

Wartości#

Obiekt wizji istnieje#

Blok logiczny Obiekt Vision istnieje informuje, czy określony czujnik Vision obecnie wykrywa jakiekolwiek obiekty.

  • Prawda — określony czujnik wizyjny wykrył obiekt.

  • Fałsz — określony czujnik wizyjny nie wykrył obiektu.

Pokaż lub ukryj blok stosu pulpitu nawigacyjnego AI Vision.#
<obiekt Vision istnieje?>

Parametr

Opis

Ten blok nie ma żadnych parametrów.

Przykład

gdy uruchomiony
[Climb upward when an AprilTag ID is detected.]
startuj na [300] [mm v] ▶
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
jeśli <obiekt Vision istnieje?> to
wznosz się [w górę v] przez [200] [mm v] ▶

Obiekt wizji to identyfikator AprilTag#

Blok logiczny Obiekt Vision to AprilTag ID informuje, czy AprilTag ID to konkretny numer ID.

  • Prawda — Identyfikator AprilTag jest liczbą.

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

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

Parametry

Opis

Numer identyfikacyjny AprilTag

Liczba do porównania z wykrytym numerem ID AprilTag od 0 do 37.

Przykład

gdy uruchomiony
[Display when the target AprilTag ID is detected.]
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
wyczyść konsolę
jeśli <obiekt Vision istnieje?> to
jeśli <Vision object is AprilTag ID [21]> to
wydrukuj [Target found!] w konsoli ▶
koniec

Liczba obiektów wizji#

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

Blok stosu obiektów Set AI Vision.#
(liczba obiektów Vision)

Parametry

Opis

Ten blok nie ma żadnych parametrów.

Przykład

gdy uruchomiony
[Display how many AprilTag IDs are detected.]
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
wyczyść konsolę
wydrukuj (liczba obiektów Vision) w konsoli ▶
czekaj [0.2] sekund

Właściwość obiektu wizji#

Każdy obiekt (pokazany poniżej) zawiera wiele 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 Vision [szerokość v])

Wszystkie wartości właściwości z wyjątkiem id opisują położenie, rozmiar, orientację lub azymut wykrytego obiektu w momencie użycia bloku get object data. Wartości te są mierzone w pikselach lub stopniach. Każdy czujnik wizyjny ma inną rozdzielczość:

  • Do przodu: 640 x 480 pikseli

  • Skierowany w dół: 640 x 400 pikseli

Parametr

Opis

nieruchomość

Which property of the detected object to use:

szerokość#

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

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

Przykład

gdy uruchomiony
[Show if the AprilTag ID appears large or small.]
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
wyczyść konsolę
jeśli <obiekt Vision istnieje?> to
jeśli <(obiekt Vision [szerokość v]) [math_greater_than v] [100]> to
wydrukuj [Large] w konsoli ▶
w przeciwnym razie
wydrukuj [Small] w konsoli ▶
koniec
koniec
czekaj [0.2] sekund

wysokość#

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

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

Przykład

gdy uruchomiony
[Show if the AprilTag ID appears large or small.]
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
wyczyść konsolę
jeśli <obiekt Vision istnieje?> to
jeśli <(obiekt Vision [wysokość v]) [math_greater_than v] [100]> to
wydrukuj [Large] w konsoli ▶
w przeciwnym razie
wydrukuj [Small] w konsoli ▶
koniec
koniec
czekaj [0.2] sekund

środekX#

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

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

Przykład

gdy uruchomiony
[Show if an AprilTag ID is to the left or the right of the camera.]
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
wyczyść konsolę
jeśli <obiekt Vision istnieje?> to
jeśli <(obiekt Vision [centerX v]) [math_less_than v] [320]> to
wydrukuj [To the left] w konsoli ▶
w przeciwnym razie
wydrukuj [To the right] w konsoli ▶
koniec
koniec
czekaj [0.2] sekund

środek Y#

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

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

Przykład

gdy uruchomiony
[Take off and attempt to align the drone with an AprilTag ID on the wall.]
[Adjust the takeoff height to observe different results.]
startuj na [800] [mm v] ▶
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
jeśli <obiekt Vision istnieje?> to
jeśli <(obiekt Vision [centerY v]) [math_less_than v] [240]> to
wydrukuj [Below the target!] w konsoli ▶
w przeciwnym razie
wydrukuj [Above the target!] w konsoli ▶
koniec
w przeciwnym razie
wydrukuj [No target found!] w konsoli ▶

łożysko#

Właściwość bearing raportuje kąt wskazujący położenie obiektu względem drona. Zachowanie zależy od użytego czujnika wizyjnego.

Wartość 0° oznacza, że ​​środek obiektu i czujnik są wyrównane. Wartości dodatnie oznaczają, że obiekt znajduje się po prawej stronie, a wartości ujemne – po lewej stronie.

Transduktor

Zwroty

Zniżkowy

Zakres kątów, o jakie musi obrócić się przód drona, aby wyrównać się ze środkiem obiektu, od –180º do 180º.

Do przodu

Stopnie, o jakie obiekt jest przesunięty w lewo lub prawo od środka czujnika wizyjnego, od –180º do 180º.

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

Przykłady

gdy uruchomiony
[Align the front of the drone to an AprilTag ID.]
ustaw prędkość obrotu na (15)%
startuj na [500] [mm v] ▶
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [w dół v]
jeśli <obiekt Vision istnieje?> to
jeśli <[-20] [math_less_than v] (obiekt Vision [namiar v]) [math_less_than v] [20]> to
[Hover once sensor is centered on the AprilTag ID.]
zawis
odtwórz dźwięk [sukces v] ▶
w przeciwnym razie jeśli <(obiekt Vision [namiar v]) [math_less_than v] [-21]> to
skręć [w lewo v]
w przeciwnym razie
skręć [w prawo v]

obrót#

Właściwość rotation raportuje orientację wykrytego identyfikatora AprilTag jako liczbę całkowitą w stopniach od 1 do 359.

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

Przykład

gdy uruchomiony
[Turn left or right based on the rotation of an AprilTag ID.]
startuj na [1000] [mm v] ▶
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
jeśli <obiekt Vision istnieje?> to
jeśli <[240] [math_less_than v] (obiekt Vision [obrót v]) [math_less_than v] [300]> to
skręć [w lewo v] o [90] stopni ▶
w przeciwnym razie jeśli <[60] [math_less_than v] (obiekt Vision [obrót v]) [math_less_than v] [120]> to
skręć [w prawo v] o [90] stopni ▶
w przeciwnym razie
zawis

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 1 do 640.

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

Przykład

gdy uruchomiony
[Draw lines to the AprilTag ID origin from all corners.]
zawsze
wyczyść ekran
get [all AprilTags v] data from vision [forward v] camera
jeśli <obiekt Vision istnieje?> to
narysuj linię [0] [0] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
narysuj linię [0] [480] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
narysuj linię [640] [0] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
narysuj linię [640] [480] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
koniec
czekaj [0.2] 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 1 do 480.

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

Przykład

gdy uruchomiony
[Draw lines to the AprilTag ID origin from all corners.]
zawsze
wyczyść ekran
get [all AprilTags v] data from vision [forward v] camera
jeśli <obiekt Vision istnieje?> to
narysuj linię [0] [0] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
narysuj linię [0] [480] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
narysuj linię [640] [0] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
narysuj linię [640] [480] (obiekt Vision [originX v]) (obiekt Vision [originY v]) na ekranie
koniec
czekaj [0.2] sekund

id#

Właściwość id 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 Vision [id v])

Przykład

gdy uruchomiony
[Display the detected AprilTag ID.]
zawsze
pobierz dane [wszystkie AprilTags v] z Vision kamery [do przodu v]
wyczyść konsolę
jeśli <obiekt Vision istnieje?> to
wydrukuj (obiekt Vision [id v]) w konsoli ▶
koniec
czekaj [0.2] sekund