Upewnij się, że w swoim czujniku AI Vision masz skonfigurowane Sygnatur kolorów i Kody kolorów , aby można było ich używać z klockami. Aby dowiedzieć się więcej na temat ich konfiguracji, przeczytaj poniższe artykuły:
- Konfigurowanie sygnatur kolorów za pomocą sygnatury AI Vision w VEXcode EXP
- Konfigurowanie kodów kolorów z sygnaturą AI Vision w VEXcode EXP
Czujnik wizyjny AI potrafi również wykrywać klasyfikacje AI i AprilTagi. Aby dowiedzieć się, jak włączyć te tryby wykrywania, przejdź tutaj:
- Klasyfikacje AI z czujnikiem wizyjnym AI w VEXcode EXP
- AprilTags z czujnikiem wizyjnym AI w VEXcode EXP
Uzyskaj dane wizualne za pomocą czujnika wizyjnego AI
Każde polecenie czujnika AI Vision będzie zaczynać się od nazwy skonfigurowanego czujnika AI Vision. We wszystkich przykładach podanych w tym artykule nazwa użytego czujnika AI Vision będzie wynosić ai_vision_1.
zrób migawkę
Metoda take_snapshot tworzy obraz tego, co aktualnie widzi czujnik AI Vision i pobiera z tego obrazu dane, które można następnie wykorzystać w projekcie. Podczas wykonywania migawki należy określić typ obiektu, o którym czujnik AI Vision ma zbierać dane:
- Podpis koloruKod koloru lub
- Tego typu sygnatury wizualne zaczynają się od nazwy czujnika AI Vision, podwójnego podkreślenia, a następnie nazwy sygnatury wizualnej, na przykład:
ai_vision_1__Blue.
- Tego typu sygnatury wizualne zaczynają się od nazwy czujnika AI Vision, podwójnego podkreślenia, a następnie nazwy sygnatury wizualnej, na przykład:
-
Klasyfikacje AI -
AiVision.ALL_AIOBJS -
kwietniaTagi-
AiVision.ALL_TAGS
Wykonanie migawki spowoduje utworzenie krotki wszystkich wykrytych obiektów, które określiłeś. Na przykład, jeśli chcesz wykryć sygnaturę koloru „Niebieski” , a czujnik wizyjny AI wykrył 3 różne niebieskie obiekty, dane ze wszystkich trzech zostaną umieszczone w krotce.
W tym przykładzie zmienna vision_objects przechowuje krotkę zawierającą wykryte sygnatury kolorów „Fioletowy” z czujnika AI Vision o nazwie ai_vision_1. Wyświetla liczbę wykrytych obiektów i wykonuje nową migawkę co 0,5 sekundy.
while True:
# Pobierz migawkę wszystkich sygnatur kolorów fioletowych i zapisz ją w vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Purple)
# Sprawdź, czy obiekt został wykryty na migawce przed pobraniem danych.
jeśli vision_objects[0].exists == Prawda
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Liczba obiektów:", len(vision_objects))
czekaj(0,5, SEKUND)
Właściwości obiektu
Każdy obiekt ze migawki ma inne właściwości, które można wykorzystać do raportowania informacji o tym obiekcie. Dostępne właściwości są następujące:
- id
- środekX i środekY
- originX i originY
- szerokość
- wysokość
- kąt
- wynik
- istnieje
Aby uzyskać dostęp do właściwości obiektu, należy użyć nazwy zmiennej przechowującej krotkę, a następnie indeksu obiektu.
Indeks obiektu wskazuje konkretną właściwość obiektu, którą chcesz pobrać. Po zrobieniu zdjęcia czujnik AI Vision automatycznie sortuje obiekty według rozmiaru. Największemu obiektowi przypisuje się indeks 0, a mniejszym obiektom wyższe numery indeksów.
Na przykład wywołanie szerokości największego obiektu wewnątrz zmiennej vision_objects wyglądałoby następująco: vision_objects[0].width.
id
Właściwość id jest dostępna tylko dla klasyfikacji AI z 2013 r., tagów i
W przypadku AprilTago wartościwłaściwość id reprezentuje wykryty numer identyfikacyjnyAprilTag(s) .
Identyfikacja konkretnych AprilTags umożliwia selektywną nawigację. Możesz zaprogramować robota tak, aby poruszał się w kierunku określonych znaczników, ignorując inne. W ten sposób możesz wykorzystać je jako drogowskazy do automatycznej nawigacji.
W przypadkuklasyfikacji AIwłaściwość id oznacza konkretny typ wykrytej klasyfikacji AI.
Identyfikacja konkretnych Klasyfikacji AIpozwala robotowi skupić się tylko na określonych obiektach, np. chcieć nawigować tylko w kierunku czerwonej piłki Buckyball, a nie niebieskiej.
Aby uzyskać więcej informacji na temat kwietniaTags i AI Classifications oraz sposobu włączania ich wykrywania w narzędziu AI Vision Utility, zapoznaj się z tymi artykułami.
środekX i środekY
Są to współrzędne środka wykrytego obiektu w pikselach.
Współrzędne CenterX i CenterY ułatwiają nawigację i pozycjonowanie. Czujnik AI Vision ma rozdzielczość 320 x 240 pikseli.
Można zauważyć, że obiekt znajdujący się bliżej czujnika AI Vision będzie miał niższą współrzędną CenterY niż obiekt znajdujący się dalej.
W tym przykładzie, ponieważ środek pola widzenia czujnika AI Vision wynosi (160, 120), robot skręci w prawo, dopóki współrzędna środka X wykrytego obiektu nie będzie większa niż 150 pikseli, ale mniejsza niż 170 pikseli.
while True:
# Pobierz migawkę wszystkich sygnatur kolorów niebieskich i zapisz ją w vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Sprawdź, czy obiekt został wykryty na migawce przed pobraniem danych.
jeśli vision_objects[0].exists == True
# Sprawdź, czy obiekt nie znajduje się w centrum widoku czujnika AI Vision.
jeśli vision_objects[0].centerX > 150 i 170 > vision_objects[0].centerX:
# Kontynuuj skręcanie w prawo, aż obiekt znajdzie się w centrum widoku.
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
wait(5, MSEC)
originX i originY
OriginX i OriginY to współrzędne w lewym górnym rogu wykrytego obiektu w pikselach.
Współrzędne OriginX i OriginY ułatwiają nawigację i pozycjonowanie. Łącząc tę współrzędną z szerokością i wysokością obiektu, można określić rozmiar pola ograniczającego obiekt. Może to pomóc w śledzeniu ruchomych obiektów lub nawigowaniu pomiędzy obiektami.
szerokość i wysokość
Jest to szerokość lub wysokość wykrytego obiektu w pikselach.
Pomiary szerokości i wysokości pomagają identyfikować różne obiekty. Na przykład Buckyball będzie miał większą wysokość niż Ring.
Szerokość i wysokość wskazują również odległość obiektu od czujnika wizyjnego AI. Mniejsze pomiary zwykle oznaczają, że obiekt jest dalej, podczas gdy większe pomiary sugerują, że jest bliżej.
W tym przykładzie szerokość obiektu jest wykorzystywana do nawigacji. Robot będzie zbliżał się do obiektu, aż osiągnie on określoną szerokość, po czym się zatrzyma.
while True:
# Pobierz migawkę wszystkich sygnatur kolorów niebieskich i zapisz ją w vision_objects.
vision_objects = ai_vision_1.take_snapshot(ai_vision_1__Blue)
# Sprawdź, czy obiekt został wykryty na migawce przed pobraniem danych.
jeśli vision_objects[0].exists == True
# Sprawdź, czy największy obiekt znajduje się blisko czujnika wizyjnego AI, mierząc jego szerokość.
jeśli vision_objects[0].width < 250:
# Podjedź bliżej obiektu, aż będzie szerszy niż 250 pikseli.
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
wait(5, MSEC)
kąt
Właściwość kąta jest dostępna tylko dlakodów kolorów iAprilTags.
Oznacza to, czy wykryty kod koloru lub AprilTag jest zorientowany inaczej.
Można sprawdzić, czy robot jest zorientowany inaczej w stosunku do kodu koloru lubAprilTag i na tej podstawie podjąć decyzje nawigacyjne.
Na przykład, jeśli kod koloru nie zostanie wykryty pod odpowiednim kątem, robot może nie być w stanie prawidłowo podnieść obiektu, który on przedstawia.
wynik
Właściwość wyniku jest używana w przypadku wykryciaklasyfikacji AI za pomocą czujnika wizyjnego AI.
Wynik pewności wskazuje, jak pewny jest czujnik AI Vision, że wykryje błąd. Na tym obrazku identyfikacja klasyfikacji AI tych czterech obiektów jest na poziomie 99% pewna. Za pomocą tego wyniku możesz mieć pewność, że Twój robot skupi się tylko na wykryciach o wysokiej pewności.
istnieje
Właściwość exists służy do wykrywania wykryty w ostatniej wykonanej migawce.
Umożliwia to sprawdzenie, czy w poprzedniej migawce zostały wykryte jakiekolwiek obiekty. Ta właściwość zwróci wartość True, jeśli obiekt istnieje, lub False, jeśli obiekt nie istnieje.