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.
pobierz dane obiektu — Przechwytuje dane dla identyfikatorów AprilTag.
Ustawienia — Dostosuj, do których wykrytych obiektów chcesz uzyskać dostęp.
ustaw obiekt Vision — Wybiera określony obiekt z listy wykrytych obiektów.
Wartości — pobierz informacje o obecności, klasyfikacji i właściwościach obiektu.
Obiekt Vision istnieje — Raportuje, czy obiekt został wykryty.
Obiekt Vision ma identyfikator AprilTag — sprawdza, czy wykryte identyfikatory AprilTag pasują do określonych identyfikatorów.
Liczba obiektów wizji — Raportuje liczbę wykrytych obiektów.
Właściwość obiektu Vision — Pobiera szczegóły, takie jak:
centerX i centerY — współrzędne położenia środkowego w polu widzenia czujnika.
namiar — kąt obiektu względem przedniego czujnika wizyjnego lub liczba stopni potrzebna, aby dron był skierowany w stronę obiektu.
obrót — Orientacja obiektu.
originX i originY — współrzędne położenia lewego górnego rogu w polu widzenia czujnika.
id — Numer identyfikacyjny identyfikatora AprilTag.
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.
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.
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.
<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ą.
<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ą.
(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.
(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.
(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.
(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.
(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.
(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º. |
(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.
(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.
(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.
(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ą.
(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