Programowanie robota mobilnego Khepera

Podobne dokumenty
Programowanie robota mobilnego E-puck w języku Python

Przetwarzanie sygnaªów

Programowanie i struktury danych 1 / 44

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Programowanie wspóªbie»ne

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

2 Skªadnia polece«w pliku

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

1. Wprowadzenie do C/C++

Programowanie wspóªbie»ne

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

1. Wprowadzenie do C/C++

Ekonometria. wiczenia 13 Metoda ±cie»ki krytycznej. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk Studenckie Koªo Automatyków SKALP

wiczenie 1 Podstawy j zyka Java. Instrukcje warunkowe

J zyk C dla sterowników programowalnych GeFanuc

Listy i operacje pytania

1 Metody iteracyjne rozwi zywania równania f(x)=0

Programowanie i struktury danych

Logika dla matematyków i informatyków Wykªad 1

Python. Skąd taka nazwa? Kurs systemu UNIX 1

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Metodydowodzenia twierdzeń

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Warsztaty dla nauczycieli

Lekcja 5 Programowanie - Nowicjusz

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if

Weryfikacja własności ruchowych układów nieholonomicznych na przykładzie robota mobilnego Pioneer 3-DX 1

Podstawy JavaScript. Dawid Poªap. Dawid Poªap Technologia informacyjna Grudzie«, / 13

Ÿ1 Oznaczenia, poj cia wst pne

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

P tle. Rozdziaª Wst p. 4.2 P tle P tla for(...);

2 Liczby rzeczywiste - cz. 2

Wyra»enia logicznie równowa»ne

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Lekcja 3 Banki i nowe przedmioty

Kurs rozszerzony języka Python

Funkcje, wielomiany. Informacje pomocnicze

Metody numeryczne. Wst p do metod numerycznych. Dawid Rasaªa. January 9, Dawid Rasaªa Metody numeryczne 1 / 9

Programowanie wspóªbie»ne

Bazy danych, 4. wiczenia

Dokªadna arytmetyka liczb rzeczywistych w j zyku Python

Interpreter opisu dziaªa«quadrokoptera wtyczki. 1 Ogólny opis zadania. 2 Skªadnia nowych polece« 2.1 Polecenie Grasper

Wst p do informatyki

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Szeregowanie zada« Przedmiot fakultatywny 15h wykªadu + 15h wicze« dr Hanna Furma«czyk. 7 pa¹dziernika 2013

Lekcja 12 - POMOCNICY

wiczenie nr 3 z przedmiotu Metody prognozowania kwiecie«2015 r. Metodyka bada«do±wiadczalnych dr hab. in». Sebastian Skoczypiec Cel wiczenia Zaªo»enia

Algorytmy i struktury danych

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

Wstęp do programowania

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Lab. 02: Algorytm Schrage

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Laboratorium elektryczne. Falowniki i przekształtniki - I (E 14)

Wojewódzki Konkurs Matematyczny

Metody dowodzenia twierdze«

Podstawy programowania w Pythonie

Dyskretyzacja i kwantyzacja obrazów

Wst p teoretyczny do wiczenia nr 3 - Elementy kombinatoryki

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Cyfrowe Ukªady Scalone

O autorze... 9 Wprowadzenie... 11

Wykresy i interfejsy użytkownika

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

x y x y x y x + y x y

Programowanie funkcyjne w Pythonie

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Liczby zmiennoprzecinkowe

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język Python. Język Python 1/35

Wska¹niki, tablice dynamiczne wielowymiarowe

Metody numeryczne i statystyka dla in»ynierów

G PROGRAMMING. Part #4

19. Obiektowo± 1 Kacze typowanie. 2 Klasy

Proste metody segmentacji

Podstawy Programowania C++

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Materiaªy do Repetytorium z matematyki

1 Podstawy c++ w pigułce.

Oba zbiory s uporz dkowane liniowo. Badamy funkcj w pobli»u kresów dziedziny. Pewne punkty szczególne (np. zmiana denicji funkcji).

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Wst p do informatyki. Systemy liczbowe. Piotr Fulma«ski. 21 pa¹dziernika Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

YapS Plan testów. Šukasz Bieniasz-Krzywiec Dariusz Leniowski Jakub Š cki 29 maja 2007

Programowanie wspóªbie»ne

Propozycja integracji elementów ±wiata gry przy u»yciu drzew zachowa«

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Wyznaczanie krzywej rotacji Galaktyki na podstawie danych z teleskopu RT3

Zastosowania matematyki

Transkrypt:

Programowanie robota mobilnego Khepera Paweª Ludwików 14 grudnia 2006 roku 1 Wst p Celem wiczenia jest zapoznanie si z programowaniem robota mobilnego Khepera. Programowanie odbywa si w j zyku Python. Skrócony opis skªadni i wybranych instrukcji j zyka Python zostaª zamieszczony w punkcie A. 2 Dost pne komendy Moduª wspóªpracy z robotem mobilnym Khepera zostaª napisany w wersji obiektowej, wi c wszystkie instrukcje powinny by poprzedzone odpowiedni instancj (np. k.stop()). Je»eli w opisie nie zaznaczono inaczej wszystkie argumenty instrukcji i warto±ci zwracane s typu caªkowitoliczbowego. about() informacje o wersji interfejsu obsªugi, stop() zatrzymanie robota, reset() przywrócenie domy±lnych warto±ci parametrów, read_version() odczyt wersji biosu i protokoªu khepery, set_speed(vlewy, vprawy) ustawienie pr dko±ci obrotu kóª, [vl,vp]=read_speed() odczyt pr dko±ci kóª, set_poscounter(l,p) ustawienie warto±ci liczników obrotów kóª, set_pos(poz_lew, poz_praw) ustawienie poªo»enia do którego robot powinien doj±, complete() odczekanie, a» robot osi gnie zadane poªo»enie, [l,p]=read_pos() odczyt warto±ci liczników obrotów kóª, conf_speed_profile(v_l, a_l, v_p, a_p) ustawienie prolu sterownika: maksymalnej pr dko±ci koªa lewego i prawego (v_l, v_p) oraz przyspieszenia (a_l, a_p), read_status() odczyt stanu kontrolera ruchu, change_led(nr, dzialanie) zmiana stanu diód LED, nr=0 boczna, nr=1 przednia; dzialanie=0 wyª czenie, dzialanie=1 wª czenie, dzialanie=2 zmiana stanu, read_adc(kanal) odczyt warto±ci przetwornika A/C read_proximity() odczyt czujników zbli»eniowych, read_proximity_avg(n) u±redniony odczyt czujników zbli»eniowych, read_light() odczyt czujników o±wietlenia, read_light_avg(n) u±redniony odczyt czujników o±wietlenia, sleep(t) opó¹nienie t sekund (mo»e by warto±ci zmiennoprzecinkow ), demo(d) wywoªanie procedury demonstracyjnej, d=0 omijanie przeszkód, d=1 pod»anie do ±wiatªa. 1

Stan czujników zwracany jest w 8 elementowej tablicy, indeksowanej od 0 zawieraj cej kolejno [lewy_90, lewy_45, lewy_10, prawy_10, prawy_45, prawy_90, prawy_tyª, lewy_tyª]. Na szczycie robota zamontowany jest moduª monochromatycznej 8-bitowej 64 pikselowej kamery. Domy±lnie zwracane s warto±ci z peªnego zakresu (8- bitów szaro±ci). Zestaw komend wspóªpracuj cych z kamer : turret_read_image() odczytanie peªnego obrazu 64 pikseli, turret_read_light_intensity() odczytanie jasno±ci otoczenia, turret_read_image_lowres() odczytanie peªnego obrazu w trybie 4- bitowej rozdzielczo±ci, turret_read_subimg8(poczatek) odczyt 8 kolejnych pikseli rozpoczynaj c od poczatek, turret_read_subimg16(poczatek) odczyt 16 kolejnych pikseli rozpoczynaj c od poczatek, turret_read_subscanned2() odczyt co drugiego piksela peªnego obrazu (tablica 32 warto±ci), turret_read_subscanned4() odczyt co czwartego piksela peªnego obrazu (tablica 16 warto±ci). Uruchomienie programu nast puje po wpisaniu w konsoli (np. xterm) polecenia python nazwaprogramu 3 Przykªad programu #!/usr/bin/python # -*- coding: latin2 -*- from khepera import * # funkcja uzytkownika def fun(k): k.set_speed(4,4) k.sleep(1.5) k.stop() print "Koniec" # uruchomienie funkcji go(fun) 4 Laboratorium 4.1 Wymagania wst pne przeczytanie i zrozumienie tej instrukcji, zaznajomienie si z parametrami robota khepera i rozmieszczeniem czujników 2

4.2 Zasady bezpiecze«stwa Robot Khepera jest bardzo delikatn konstrukcj. Podczas wiczenia nale»y pilnowa, aby nie wyjechaª poza obszar stanowiska. Pod»adnym pozorem nie wolno dopu±ci do spadni cia robota ze stoªu. Nie nale»y rozwija pr dko±ci przekraczaj cych zdolno± reakcji obsªuguj cych. W przypadkach awaryjnych robota nale»y chwyta za korpus, nie blokuj c kóª palcami. Nie nale»y ci gn za przewód ª cz cy. Nie powinno si dopu±ci do nadmiernego skr cenia przewodu. Podczas wykonywania programu robota mo»na zatrzyma wywoªuj c komend k.stop(). Przerwanie wykonywania programu poprzez Ctrl-C powinno równie» zatrzyma robota (pod warunkiem uruchamiania funkcji u»ytkownika identycznie jak na przykªadzie podanym w punkcie 3). Zako«czenie wykonywania programu powoduje zatrzymanie robota (warunek j.w.). W przypadkach awaryjnych robota mo»na podnie± r cznie lub ostatecznie wyª czy przez wyj cie zasilacza z listwy zasilaj cej. 4.3 Zadania do wykonania narysowa kwadrat steruj c pr dko±ci (set_speed oraz sleep), narysowa okr g, narysowa kwadrat u»ywaj c liczników (set_poscounter, set_pos), narysowa kwadrat bez zaokr glonych naro»ników, narysowa okr g u»ywaj c liczników (conf_speed_profile), narysowa ósemk, napisa program zatrzymuj cy robota przed przeszkod (read_proximity), napisa program do bezkolizyjnej jazdy w±ród przeszkód, porówna zachowanie surowych odczytów z czujników i u±rednionych (read_proximity_avg), napisa program do jazdy w kierunku ¹ródªa ±wiatªa (read_light), uzupeªni w/w programy o funkcj odkr caj c kabel ª cz cy w momencie wyj±cia przez Ctrl-C (read_pos). Przykªad obsªugi wyj tku Ctrl-C: def fun(k):... # funkcja uzytkownika def safefun(k): # nadzorca try: fun(k) except KeyboardInterrupt: print 'Ctrl-C' go(safefun) # uruchomienie 3

A Skªadnia j zyka Python Python jest przejrzystym i wszechstronnym j zykiem programowania obiektowego. U»ywa eleganckiej skªadni, dzi ki czemu programy s ªatwe do zrozumienia. Zapewnia du» ró»norodno± wbudowanych typów danych: liczbowych (zmiennoprzecinkowe, zespolone, liczby caªkowite o niesko«czonej precyzji), tekstowych, listy, sªowniki, itp. J zyk zapewnia obsªug wyj tków pozwalaj c na efektywniej obsªugiwa bª dy. Podstawowym zªo»onym typem danych w j zyku Python jest lista. Lista jest zapisywana jako wyszczególnienie warto±ci rozdzielone przecinkami uj ta w nawiasy kwadratowe. Elementy listy nie musz byc tego samego typu. np. a=['spam', 'eggs', 100, 1234]. Dost p do elementu listy uzyskuje si stosuj c operator indeksowania, np. a[2]. Pocz tkowy element posiada indeks 0. U»ycie indeksów ujemnych powoduje zwrócenie odpowiedniej warto±ci elementu listy licz c od ko«ca. Indywidualne elementy listy mo»na dowolnie zmienia, np: a[2]=a[2]+3. Przykªadowy program w j zyku Python (zapo»yczony z wprowadzenia): # liczby Fibonnaci'ego a, b = 0, 1 while b < 10: print b a, b = b, a+b Pierwsza linia zawiera przykªad wielokrotnego przypisania: warto±ci a i b jednocze±nie przyjmuj warto±ci 0 i 1. Jak w ka»dym przypisaniu warto±ci prawostronne s obliczane najpierw, a potem podstawiane do lewej strony. P tla while wykonuje si tak dªugo jak dªugo warunek (tutaj b < 10) jest prawdziwy. W Pythonie, podobnie jak w C, ka»da niezerowa warto± caªkowita ma warto± logicznej prawdy, ka»da niepusta lista lub ci g znaków tak»e. Standardowe operatory porówna«s identyczne jak w C: < (mniejszy), > (wi kszy), == (równy), <= (mniejszy lub równy), >= (wi kszy lub równy) i!= (ró»ny). W j zyku zdeniowane s dwa wyra»enia logiczne: True oraz False posiadaj ce logiczn warto± odpowiednio prawdy i faªszu. Š czenie warunków w zªo»one wyra»enia nast puje przy pomocy opeatorów and, or i not. Grupowanie wyra»e«odbywa si poprzez wci cia. Ka»da linia tego samej grupy musi by wci ta o t sam liczb znaków. Koniec grupy oznacza si pust lini. Zagnie»d»enie grup uzyskuje si przez zagnie»d»enie wci. A.1 Kontrola przebiegu programu Wyra»enie warunkowe uzyskuje si prawie identycznie jak w innych j zykach: if x < 0: print 'ujemny' elif x == 0: print 'zero' else: print 'dodatni' 4

P tla for ró»ni si od odpowiedników w C i Pascalu. W Pythonie for iteruje po warto±ciach podanej sekwencji (listy lub ci gu) w kolejno±ci ich pojawiania si. Je»eli zachodzi potrzeba iterowania po sekwencji liczb nale»y u»y funkcji range(), generuj cej list zawieraj c ci g arytmetyczny. >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Punkt ko«cowy nie jest cz ±ci wygenerowanej listy, range(10) generuje list 10 warto±ci, dopuszczalnych indeksów listy o dªugo±ci 10. Mo»na tak»e okre±li pocz tek: range(5,10) oraz tak»e krok: range(0, 10, 3) Wyra»enie break, podobnie jak w C, powoduje opuszczenie najbardziej zagnie»d»onej p tli for lub while. Wyra»enie continue powoduje wykonanie p tli od pocz tku. A.2 Funkcje wbudowane len(a) podaje dªugo± (liczb elementów) a max(a) podaje warto± maksymalnego elementu listy a min(a) podaje warto± minimalnego elementu listy a print... drukowanie warto±ci, podanie przecinka na ko«cu nie powoduje przej±cia do nast pnej linii Dla listy l dost pne s nast puj ce funkcje: l.index(w) zwraca indeks pierwszego elementu o warto±ci w w in l test, czy lista l zawiera element o warto±ci w 5