Korzystanie z czujników w sterowaniu robotem Lego NXT



Podobne dokumenty
Ustawienia ogólne. Ustawienia okólne są dostępne w panelu głównym programu System Sensor, po kliknięciu ikony

Instrukcja użytkownika

JĘZYK SCRATCH Manual użytkownika

Laboratorium Podstaw Robotyki I Ćwiczenie Khepera dwukołowy robot mobilny

Sterowanie silnikami robota Lego NXT

akademia androida Sensory część V Mobile Applications Developers

THP-100 su Obsługa oprogramowania oraz instrukcja wzorcowania

Sterowanie silnikami robota Lego NXT

Projekt i wykonanie robota klasy Micromouse

NASTROJOWA LAMPA LED Z GŁOŚNIKIEM BLUETOOTH

Lekcja budowania robotów na podstawie klocków LEGO Mindstorms NXT 2.0. Temat: GrabBot Budujemy robota, który przenosi przedmioty.

Lokalizacja robota Lego Mindstorms NXT przy użyciu odometrii

PANEL SŁONECZNY NXT. Rozpocznij

"SOUNDBAR" BLUETOOTH Z GŁOŚNIKIEM BASOWYM

lider projektu: finansowanie:

TURBINA WIATROWA NXT. Rozpocznij

Dystrybutor: BH-Wandex Warszawa Ciołka 8 / 210. tel wersja 4-8. Str 1

FORMULARZ TECHNICZNY (FT) Część nr 3

Sensory i Aktuatory Laboratorium. Mikromechaniczny przyspieszeniomierz i elektroniczny magnetometr E-kompas

Raport z budowy robota typu Linefollower Mały. Marcin Węgrzyn

Instrukcja obsługi napędu bramy garażowej

Praca i energia Mechanika: praca i energia, zasada zachowania energii; GLX plik: work energy

lider projektu: finansowanie:

INSTRUKCJA PROGRAMU DO REJESTRATORÓW SERII RTS-05 ORAZ RTC-06. wyposażonych w komunikację. Bluetooth lub USB PRZEDSIĘBIORSTWO PRODUKCYJNO HANDLOWE

Skrócona instrukcja obsługi Czytnik kodów XL6200

DM-902 Wszelkie kopiowanie, odtwarzanie i rozpowszechnianie niniejszej instrukcji wymaga pisemnej zgody firmy Transfer Multisort Elektronik.

Gry Komputerowe Interaktywna kamera FPP

XL Laserowy wolnostojący czytnik kodów kreskowych. Skrócona instrukcja obsługi.

Dalmierze firmy SHARP na przykładzie 2D120XJ100F

Niania elektroniczna Motorola Babyphone

7. Pomiar przez ustawienie prędkości ultradźwięków

Dodatek A. Spis instrukcji języka Prophio.

NAZWA PRODUKTU: ZDALNIE STEROWANY HELIKOPTER LS220 RC ŻYROSKOP Z57

Nr zamówienia

Zestaw głośnomówiący B-Speech BT-FSE PRIM

Zastosowania Robotów Mobilnych

Podstawy Programowania C++

Zestawienie zasilaczy i sterowników DGP. Osprzęt DGP. Zasilanie i sterowniki DGP SYSTEMY KOMINOWE SYSTEMY DGP STEROWANIE WENTYLACJA

WIZUALIZACJA I STEROWANIE ROBOTEM

Luksomierz Extech HD-400, Lux, USB

AX Informacje dotyczące bezpieczeństwa

Kinect vs VR, czyli technologie sensoryczne stosowane w konsolach do gier.

Zestawienie zasilaczy i sterowników DGP. Osprzęt DGP. Zasilanie i sterowniki DGP SYSTEMY KOMINOWE SYSTEMY DGP STEROWANIE WENTYLACJA

Komputer rowerowy z GPS GB-580P Szybki start

Mechatronika i inteligentne systemy produkcyjne. Sensory (czujniki)

U-DRIVE DUAL. Instrukcja obsługi. Osobista czarna skrzynka kierowcy z kamerą cofania MT4056

Kamera. Nr produktu

NAZWA PRODUKTU: Kamera SPORTOWA MD80 DV HD 720x480 + uchwyty T09 Główne funkcje

Higrometr Testo 623, %RH, -10 do +60 C

Dla ułatwienia możesz skorzystać z poniższej tabeli średnic koła oraz wartości parametrów. Strona 1 z 5

FER Częstochowa, r. Zmiana zapytania ofertowego

mbot Ranger Robot edukacyjny 3-w-1

Aplikacje Systemów. Nawigacja inercyjna. Gdańsk, 2016

Wskaźnik. Opis. Informacje ogólne. Obrotomierz. Kalibracja

Przymiar ArborSonic 3D z komunikacją Bluetooth. modele 1600 mm i 2000 mm. Instrukcja użytkownika. wer. 1.0

PRZENOŚNY GŁOŚNIK BLUETOOTH SUPER BASS

Wersja polska. Wstęp. Zawartość opakowania. Uwaga! WC030 Sweex Webcam 300K with Microphone USB

NAZWA PRODUKTU: Interaktywny ROBOT OLBRZYM K1 Walczy Strzela Y73 Cechy produktu

(Patrz rys. poniżej z lewej) Kontroler ma zaprogramowane cztery profile pracy które można przełączać poprzez naciskanie (klikanie) czerwonego

Ćwiczenie 5 Badanie sensorów piezoelektrycznych

Instrukcja obsługi Bezprzewodowy czytnik kodów kreskowych HD45

AKTUATOR DO SYSTEMU DUO Q

Base i stacja pogodowa MODBUS

Sterowanie, uczenie i symulacja robotów przemysłowych Kawasaki

NAZWA PRODUKTU: Ukryta MINI KAMERA H2 PODSŁUCH Powerbank IR LED S151 Cechy produktu

GPSport Pro. Instrukcja obsługi

INSTRUKCJA UŻYTKOWNIKA. Mini rejestrator cyfrowy MD-80P

WISPER 706 Alpino WISPER 806 Alpino

Instrukcja użytkownika. Słuchawki HEAD BANG 83131/83132/83133

Politechnika Wrocławska

Badanie współczynników lepkości cieczy przy pomocy wiskozymetru rotacyjnego Rheotest 2.1

Rejestrator temperatury LOG100 CRYO Dostmann Electronic

Dokąd on zmierza? Przemieszczenie i prędkość jako wektory

WYDZIAŁ ELEKTROTECHNIKI I AUTOMATYKI KATEDRA AUTOMATYKI. Robot do pokrycia powierzchni terenu

Przełącznik KVM USB. Przełącznik KVM USB z obsługą sygnału audio i 2 portami. Przełącznik KVM USB z obsługą sygnału audio i 4 portami

WYŚWIETLACZ KOMPUTERA

CYFROWY MIERNIK NATĘŻENIA OŚWIETLENIA AX-L230. Instrukcja obsługi

Sensory i systemy pomiarowe Prezentacja Projektu SYNERIFT. Michał Stempkowski Tomasz Tworek AiR semestr letni

Instrukcja używania Wózek inwalidzki elektryczny Airwheel H3S

Głośnik Bluetooth INSTRUKCJA OBSŁUGI BTL-60

INSTRU KCJA UŻYTKOWNIKA

Skrócony Przewodnik. SoundGate. Bernafon SoundGate. Zmiana programów oraz głośności. Telefon. Połączenie muzyczne, np. MP3. Bluetooth muzyka/audio

PRESTIGIO GEOVISION 150/450

M15D-thermal jest dostępna w trzech wersjach, różniących się kątem widzenia obiektywu wbudowanego w przetwornik podczerwieni:

Polski. Podręcznik Użytkownika BT-03i

Włączenie automatycznego biegu neutralnego. Informacje ogólne

NAZWA PRODUKTU: Skaczący dron robot Bounce Car z kamerą Wi-Fi sterowany ze smartfona Y136 Cechy produktu

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Instrukcja obsługi do kamery interwencyjnej TV-8400

ROGUE RF. Instrukcja obsługi (wersja poprawiona) Wireless Gamepad PC with headphones MT1503

Poznaj swój retrace Lite

Płyta wiórowa, papier Beton,cegła,pustaki. Dodatek 2. Gęstość materiału i kody materiałów trybu SEARCH (w celu porównania)

Wersja polska. Wstęp. Zawartość opakowania. Uwaga! WC002 Sweex USB Webcam 100K with Microphone

Instrukcja obsługi Profesjonalny bezprzewodowy czytnik kodów HD2000

Szlaban automatyczny KSE-1000 Instrukcja Obsługi i montażu

DXComms NetPro TDR Skrócona instrukcja obsługi

ZEGAR Z KAMERĄ INSTRUKCJA UŻYTKOWANIA

OSTRZEŻENIE: NIEBEZPIECZEŃSTWO ZADŁAWIENIA małe elementy. Dla dzieci powyżej 3 roku życia.

Instrukcja. BT400 G5 Bluetooth Headset - instrukcja 1

Wideoboroskop AX-B250

Transkrypt:

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Laboratorium Sterowania Robotów Korzystanie z czujników w sterowaniu robotem Lego NXT Uwagi wstępne 1. Wszystkie przykłady i zadania wykonujemy w środowisku Matlab z użyciem skrzynki narzędziowej RWTHMindstormsNXT. 2. Komunikację z robotem rozpoczynamy od podłączenia poprzez kabel USB. Następnie wykorzystujemy połączenie poprzez Bluetooth, zgodnie z zaleceniami prowadzącego. 3. Poniższy opis został przygotowany na podstawie informacji umieszczonych na stronie: http://www.mindstorms.rwth-aachen.de/. Wstęp teoretyczny 1. Do komunikacji z sensorami robota będziemy korzystali z następujących funkcji: OpenSwitch (otwarcie dostępu do przełącznika) GetSwitch (odczytanie stanu przełącznika) OpenSound (otwarcie dostępu do mikrofonu, tj. czujnika poziomu dźwięku) GetSound (odczytanie aktualnego poziomu dźwięku) OpenLight (otwarcie dostępu do czujnika poziomu oświetlenia) GetLight (odczytanie aktualnego poziomu oświetlenia) OpenUltrasonic (otwarcie dostępu do czujnika ultradźwiękowego) GetUltrasonic (odczytanie aktualnej odległości do przeszkody) CloseSensor (zamkniecie dostępu do wskazanego sensora) Wymienione powyżej funkcje pozwalają nam na łatwy dostęp do standardowych sensorów robota: Sensor ultradźwiękowy korzysta z cyfrowego interfejsu dlatego jest on wewnętrznie obsługiwany inaczej niż pozostałe sensory. Korzystając jednak z funkcji wysokiego poziomu (czyli tych powyżej) nie zauważamy żadnej różnicy. Jedyną ważną informacją godną zapamiętania jest to iż funkcja GetUltrasonic jest około 2 razy wolniejsza niż pozostałe funkcje Get*. Wywołanie funkcji CloseSensor jest konieczne do wyłączenia danego czujnika (sensora) - to pozwala na oszczędzanie baterii. Numery portów do których podłączone są sensory oznaczone są liczbami całkowitymi od 0 do 3. Korzystając ze skrzynki narzędziowej RWTHMindstormsNXT używamy zdefiniowanych stałych o nazwach od SENSOR_1 do SENSOR_4 dla poprawienia czytelności utworzonego przez nas kodu. Przykłady zastosowań: OpenSwitch(SENSOR_1); % otwarcie dostępu do przełącznika podłączonego do portu nr 1 OpenSound(SENSOR_2, DB ); % musimy wybrać tryb, DB lub DBA % DB - pomiar w decybelach % DBA - pomiar w skali akustycznej OpenLight(SENSOR_3, ACTIVE ); % musimy wybrać tryb, ACTIVE lub INACTIVE %ACTIVE - aktywna iluminacja: zapalona czerwona dioda %INACTIVE - pasywna iluminacja: wyłączona czerwona dioda OpenUltrasonic(SENSOR_4); 2. Teraz możemy już korzystać z podłączonych sensorów. Oto przykłady : if GetSwitch(SENSOR_1) % Pamiętaj aby zawsze określić numer portu! % jeśli czujnik dotyku jest wciśnięty to zrób coś if GetSound(SENSOR_2) < 100 % pamiętaj że wartości zmieniają się od 0 do 1023 % czyli całkiem cicho w tym przypadku 1

if GetLight(SENSOR_3) > 1000 % pamiętaj że wartości zmieniają się od 0 do 1023 % bardzo duża jasność if GetUltrasonic(SENSOR_4) < 30 % jednostkami są [cm] odległości % czyli jesteśmy całkiem blisko przeszkody Musimy również pamiętać o wyłączeniu czujników jeśli z nich nie korzystamy. Dzięki temu oszczędzamy baterię robota. % nie zapomnij o tym :-) CloseSensor(SENSOR_1); % zamykamy dostęp na porcie nr 1 CloseSensor(SENSOR_2); %... i na porcie nr 2 CloseSensor(SENSOR_3); %... i na porcie nr 3 CloseSensor(SENSOR_4); %... i na porcie nr 4 też 3. Korzystanie z dodatkowych sensorów firmy HiTechnic (www.hitechic.com) Do budowy robotów Lego NXT możemy użyć wielu dodatkowych sensorów dostarczanych przez zewnętrznych producentów. Wśród najbardziej cenionych i przydatnych sensorów są te produkowane przez firmę HiTechnic. W naszym przypadku będziemy korzystać z 3-ech dodatkowych sensorów: akcelerometru (czujnik przyspieszenia), żyroskopu, kompasu. Pierwszym opisywanym sensorem jest akcelerometr. Aby uzyskać do niego dostęp wykorzystujemy funkcję OpenAccelerator wskazując numer portu do którego podłączony jest ten sensor. Dane odczytujemy przy użyciu funkcji GetAccelerator która zwraca wektor o rozmiarze 1x3. Poszczególne kolumny tego wektora zawierają wartości przyspieszenia odpowiednio w kierunku x, y, oraz z. Odczytana wartość 200 odnosi się to przyspieszenia 1g. Maksymalny zakres odczytywanych wartości to od -2g do +2g. Przykład użycia: OpenAccelerator(SENSOR_4); % otwieramy dostęp do sensora na pocie nr 4 acc_vector = GetAccelerator(SENSOR_4); % pobieramy wartości CloseSensor(SENSOR_4); % i zamykamy dostęp Kolejnym użytecznym sensorem jest żyroskop do którego dostęp uzyskujemy wywołując funkcję OpenGyro. Aby móc używać żyroskopu musimy go skalibrować, gdyż w innym przypadku zostanie wywołane ostrzeżenie. kalibracja może być przeprowadzona w trybie AUTO poprzez wywołanie funkcji CalibrateGyro, np.: offset = CalibrateGyro(port, AUTO ) lub trybie ręcznym (manualnym) offset = CalibrateGyro(port, MANUAL, manualoffset) Po przeprowadzonej kalibracji możemy odczytywać prędkość kątową obrotu wywołując funkcję GetGyro. W większości podstawowych zastosowań (a tak to jest podczas laboratorium) wykonujemy kalibrację w trybie automatycznym, czyli wywołujemy np.: offset = CalibrateGyro(port, AUTO ) i offset jest wyznaczany automatycznie. Podczas tej kalibracji dane z czujnika są odczytywane automatycznie przynajmniej 5 razy przez ok. 1 sekundy. Podczas tej operacji sensor musi być nieruchomy. W przypadku bardziej zaawansowanych zastosowań, kiedy kalibracja jest naprawdę ważna i konieczna do wykonania wielokrotnie, możemy zaoszczędzić trochę czasu poprzez użycie odczytanej już w trybie automatycznym wartości zmiennej offset. Aby wykonać kalibrację w trybie ręcznym należy wywołać 2

CalibrateGyro(port, MANUAL, manualoffset) co nie wymaga utrzymywania żyroskopu w stanie nieruchomym. Należy używać wartości całkowitych dla zmiennej manualoffset, gdyż żyroskop ma dokładność +/- 1 stopień/sekundę. Należy pamiętać aby dokonać kalibracji po każdorazowej zmianie środowiska pracy (temperatura, ciśnienie, itp.). Dodatkowo kalibracja jest tylko aktualna dla danego portu do którego dołączony jest żyroskop. Po zmianie portu, kalibracja musi być wykonana ponownie. Przykłady użycia i kalibracji żyroskopu % Przykład 1 % przykład kalibracji żyroskopu w trybie automatycznym port = SENSOR_2; % żyroskop na porcie nr 2 OpenGyro(port); % otwieramy dostęp do żyroskopu CalibrateGyro(port, AUTO ); % kalibracja w trybie auto % teraz żyroskop jest gotowy do użycia % przykładowo odczytujemy prędkość kątową speed = GetGyro(port); % dalsza część programu tutaj % na koniec zamykamy dostęp do żyroskopu CloseSensor(port); % Przykład 2 % Wykorzystanie kalibracji manualnej h = COM_OpenNXT(); COM_SetDefaulNXT(h); OpenGyro(SENSOR_1); % uchwyt do kostki % otwarcie dostępu do żyroskopu... % jeden raz wykonujemy kalibrację automatyczną offset = CalibrateGyro(SENSOR_1, AUTO ); % i przechowujemy wartość offset... % Program główny wygląda teraz tak: % otwieramy dostęp do żyroskopu OpenGyro(SENSOR_1); % i używamy wartości offset określonej wcześniej CalibrateGyro(SENSOR_1, MANUAL, offset); % i możemy korzystać z żyroskopu... Ostatnim omawianym sensorem jest kompas służący do odczytu położenia względem kierunków geograficznych. Standardowo dostęp do czujnika uzyskujemy poprzez wywołanie funkcji OpenCompass podając jako argument numer portu do którego podłączony jest kompas. Następnie, podobnie jak to było w przypadku żyroskopu, przeprowadzamy kalibrację wywołując (jedną z poniższych) CalibrateCompass(port, f_start) CalibrateCompass(port, f_start, handle) 3

Przed rozpoczęciem kalibracji kompasu należy usunąć wszelkie obiekty metalowe znajdujące się w pobliżu czujnika. W szczególności należy wziąć pod uwagę bliskie położenie kostki NXT i silników robota. Następnie ustawiamy wartość parametru f_start = true (wywołując funkcję CalibrateCompass) aby formalnie rozpocząć procedurę kalibracji, a w celu jej zakończenia f_start = false. Pomiędzy zmianami tego parametru dokonujemy kalibracji czyli wykonujemy 2 pełne obroty kompasem. Przykład kalibracji kompasu: % dostęp do kompasu musi aktywny przed kalibracją OpenCompass(SENSOR_2); % np.: kompas podłączony do poru nr 2 % startujemy procedure kalibracji kompasu CalibrateCompass(SENSOR_2, true); % Kompas jest przymocowany do sinika A, którym wykonujemy 2 pełne obroty m = NXTMotor( A, Power, 5, TachoLimit, 720) m.stonxt(); m.waitfor(); % kalibracja powinna teraz się zakończyć CalibrateCompass(SENSOR_2, false); % i możemy teraz korzystać z kompasu Wartość obrotu (w stopniach) odczytujemy wywołując funkcję GetCompass, gdzie argumentem jest numer portu. Odczytana wartość jest w zakresie od 0 do 360 gdzie 0 stopni oznacza północ, 90 - zachód, itd. Po zakończeniu korzystania z kompasu wywołujemy funkcję CloseCompass. Zadania do wykonania 1. Zbudować robota według wskazówek prowadzącego. Robot powinien zawierać dwa silniki i 4 sensory (dotyku, ultradźwiękowy, światła, dźwięku). 2. Przetestować wszystkie programy umieszczone w powyższym wprowadzeniu teoretycznym. 3. Zaimplementować funkcję wykreślającą: (a) charakterystyki czułości sensora dźwięku (tj. odczytanych wartości z sensora w stosunku do zadanych dźwięków o różnej głośności) w skali db i dba. (b) charakterystyki czułości sensora światła w obu trybach pracy sensora. Pomiarów dokonujemy przy użyciu kolorowej tablicy znajdującej się w laboratorium. 4. Zaimplementuj program do poruszania robotem w przód i w tył. Zmiana kierunku jazdy ma odbywać się za każdorazowym klaśnięciem w dłonie. 5. Zbadać możliwości rozpoznania obiektów (znajdujących się w sali laboratorium) i odległości do nich przy użyciu sensora ultradźwiękowego. Zaimplementuj program pozwalający omijać robotowi obiekty znajdujące się przed robotem. Użyj sensora dotyku do określenia czy robot uderzył obiekt znajdujący się na trajektorii robota. 6. Zaimplementować program do odczytu wartości z jednego otrzymanych sensorów (akcelerometr, żyroskop, kompas). 7. Zaimplementować program do losowego ruchu robota (każdorazowo kierunek i pokonywana odległość ma być losowana). Na podstawie odczytów z akcelerometru, żyroskopu i/lub kompas należy narysować trajektorię przemieszczania się robota. Sprawdzić wyznaczoną pozycję z rzeczywistymi współrzędnymi robota. 4

Sprawozdanie Sprawozdanie z przeprowadzonego laboratorium powinno zawierać: Kody źródłowe wszystkich utworzonych podczas laboratorium skryptów(nie zamieszczać kodów programów przykładowych!) wraz z komentarzem. Wyniki pomiarów i odpowiednie wykresy zależności. Uwagi i wnioski. 5