c10


Ćwiczenia 10
Ä…É
Śledzenie obiektów kamerą NXTCam-v3 - z zasto-
sowaniem kontrolera PID
Specyfikacja kamery:
- kamera daje możliwości śledzenia do ośmiu różnych kolorów, z częstotliwością 30
klatek na sekundÄ™,
- kolory są definiowane po podłączeniu kamery kablem USB do komputera,
- może być wykorzystywana do śledzenia linii,
- dostarcza w czasie rzeczywistym informacji o śledzonych obiektach, podaje ich
ilość, kolor, współrzędne i wielkość,
- kamera rejestruje obraz w rozdzielczości (176 x 144) piksele, po podłączeniu do
komputera,
- rozdzielczość śledzonych obiektów wynosi 88 x 144, 30 klatek na sekundę
- używa protokołu komunikacji kompatybilnego z I2C
Aby uzyskać szczegółową instrukcję obsługi kamery NXTCam-v3,
wpisz w google, NXTCam-v3-User-Guide.pdf.
Definiowanie kolorów w kamerze NXTCam-v3
W celu zdefiniowania kolorów, pobieramy oprogramowanie NXTCamView,
- pobieramy sterowniki kamery NXTCam v3p0
- podłączamy kamerę do komputera za pośrednictwem kabla USB i wskazujemy ste-
rowniki podczas pierwszego podłączenia,
- uruchamiamy program NXTCamView
- Å‚Ä…czymy siÄ™ z kamerÄ… przyciskiem connect,
- ustawiamy przed kamerą kolor, który chcemy zapisać do śledzenia,
- robimy zdjęcie, wciskając opcję capture,
- wybieramy w zakładce colors numer buforu, w którym umieścimy kolor,
- zaznaczamy na zdjęciu interesujący nas kolor przy użyciu kursora, ustawiając po-
ziom możliwej rozbieżności od odcienia i klikamy upload
Możliwość śledzenia wczytanych kolorów można przetestować, wybierając opcję trac-
king i pokazując kamerze wybrane obiekty do śledzenia,
Obsługa kamery NXTCam-v3 w bibliotece NXT++
Kamerę inicjujemy w porcie IN 2, bezpośrednio po nawiązaniu komunikacji z robo-
tem,
NXT : : NxtCam : : NxtCamInit(&comm, IN 2 ) ;
Przed użyciem kamery możemy każdorazowo czyścić jej rejestry.
NXT : : NxtCam : : NxtCamFlush(&comm, IN 2 ) ;
Aby pobrać ilość widzianych obiektów, używamy polecenia
i l o b=NXT : : NxtCam : : GetNxtCamNumObjects(&comm, IN 2 ) ;
naturalnie zmienna il ob powinna być wcześniej zadeklarowana jako wartość całko-
wita,
Dane pobierane z kamery majÄ… format wektorowy, stÄ…d deklarujemy tablicÄ™ wekto-
rową data cam następująco,
s t d : : v e c t o r < s t d : : v e c t o r > data cam ;
Po deklaracji i wykryciu ilości widzianych obiektów, nadajemy tablicy data cam
odpowiedni wymiar i czyścimy ją,
data cam . r e s i z e ( i l o b ) ;
f o r ( i n t i =0; i {
data cam [ i ] . r e s i z e ( 6 ) ;
}
f o r ( i n t i =0; i {
f o r ( i n t j =0; j <6; j ++)
{
data cam [ i ] [ j ] = 0 ;
}
}
W kolejnym kroku wczytujemy dane o napotkanych obiektach do tablicy da-
ta cam, uwzględniane są dane obiektów, które przekraczają maksymalną powierzch-
niÄ™ determinowanÄ… przez trzeci argument funkcji GetNxtCamObjects.
data cam=NXT: : NxtCam : : GetNxtCamObjects(&comm, IN 2 , 0 ) ; \% p o b r a n i e i n f o r m a c j i z
kamery
Zakładając, że kamera wykryła dwa obiekty przekraczające ustaloną wielkość,
dane pobrane z kamery majÄ… format:
o b i e k t p i e r w s z y :
data cam [ 0 ] [ 1 ] współrzędna p i k s e l o w a x
data cam [ 0 ] [ 1 ] współrzędna p i k s e l o w a y
data cam [ 0 ] [ 1 ] wysokość o b i e k t u
data cam [ 0 ] [ 1 ] s z e r o k o ś ć o b i e k t u
data cam [ 0 ] [ 1 ] symbol wykrytego koloru ,
o b i e k t d r u g i :
data cam [ 1 ] [ 1 ] współrzędna p i k s e l o w a x
data cam [ 1 ] [ 1 ] współrzędna p i k s e l o w a y
data cam [ 1 ] [ 1 ] wysokość o b i e k t u
data cam [ 1 ] [ 1 ] s z e r o k o ś ć o b i e k t u
data cam [ 1 ] [ 1 ] symbol wykrytego koloru ,
Zadanie do wykonania
3) Zapoznaj się ze sposobem używania kamery NXTCam-v3 w bibliotece NXT++.
4) Napisz podprogram śledzenia piłki o kolorze czerwonym za pomocą kamery NXT
v3, sterowanie kołami zaimplementuj przy użyciu kontrolera PID, podprogram śle-
dzenia koloru uruchom klawiszem T.


Wyszukiwarka