Programowanie robota mobilnego E-puck w języku Python

Podobne dokumenty
Algorytmy i struktury danych

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

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Wykresy i interfejsy użytkownika

Podstawy Programowania C++

Pętla for. Wynik działania programu:

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

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

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Języki i metody programowania

Warsztaty dla nauczycieli

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Python. Wprowadzenie. Jolanta Bachan

Programowanie robota mobilnego Khepera

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

1. Indeksy/indeksowanie : Do elementów wektora, list, macierzy czy ramek, można się odwołać na kilka sposobów.

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Programowanie w języku Python. Grażyna Koba

Programowanie komputerowe. Zajęcia 3

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Programowanie w Ruby

Wstęp do programowania

1 Podstawy c++ w pigułce.

WHILE (wyrażenie) instrukcja;

WHILE (wyrażenie) instrukcja;

Języki skryptowe w programie Plans

Podstawy bioinformatyki 2017/18

Podstawy programowania w Pythonie

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Bloki anonimowe w PL/SQL

Warunki logiczne instrukcja if

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

LibreOffice Calc VBA

Podstawy Programowania Podstawowa składnia języka C++

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

PODSTAWY INFORMATYKI

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Kurs rozszerzony języka Python

1 Podstawy c++ w pigułce.

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

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

System operacyjny Linux

Zad. 1: Sterowanie mimika

Programowanie obiektowe

Cw.12 JAVAScript w dokumentach HTML

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Wprowadzenie do języka Java

Liczby losowe i pętla while w języku Python

Programowanie - instrukcje sterujące

Wstęp do programowania

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy programowania w Pythonie

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Zapis algorytmów: schematy blokowe i pseudokod 1

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Podstawy. Jan Koprowski Politechnika Gdańska, FTiMS Informatyka Stosowana

Wstęp do programowania

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy programowania skrót z wykładów:

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Środowisko programisty Zestaw 7

PROGRAMOWANIE W JĘZYKU PYTHON

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Kiedy i czy konieczne?

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Operacje logiczne i struktury sterujące.

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Poprawność semantyczna

Podstawowe części projektu w Javie

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Podstawy bioinformatyki 2017/18

Pytania dla języka Python

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

do instrukcja while(wyrażenie);

4. Funkcje. Przykłady

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Redis, skrypty w języku Lua

Transkrypt:

Programowanie robota mobilnego E-puck w języku Python Joanna Ratajczak Mirela Kaczmarek 1 Zasady bezpieczeństwa W trakcie pracy z robotem E-puck, rys. 1, należy zachować ostrożność. Pod żadnym pozorem nie można dopuścić, aby robot spadł ze stołu. Należy unikać wszelkich sytuacji mogących spowodować uszkodzenie robota. Podczas wykonywania programu robota można zatrzymać wywołując komendę e.stop(). Przerwanie wykonywania programu jest także możliwe poprzez użycie kombinacji klawiszy Ctrl-C. Rysunek 1: Robot E-puck [1] Data powstania: 24.10.2015. Ćwiczenie w ramach kursu Podstawy Robotyki realizowanego na Wydziale Elektrycznym 1

2 Opis robota Robot E-puck stanowi platformę dydaktyczną powstałą w ramach otwartego projektu 1. E-puck jest niewielkim (średnica 7 cm, wysokość 5 cm, waga 200 g) robotem mobilnym poruszającym się na dwóch kołach sterowanych silnikami krokowymi. Jest on wyposażony między innymi w 8 czujników odległości IR (których rozkład przedstawiono na rysunku 2), kamerę RGB, akcelerometr 3D oraz trzy mikrofony. Rysunek 2: Rozłożenie czujników IR [1] 3 Dostępne komendy Do pracy z robotem dostępne są komendy wymienione poniżej. set_speed(lewy,prawy) ustawienie prędkości lewego i prawego koła. sleep(n) odczekanie zadanego czasu, gdzie parametr n oznacza zadany czas podawany w sekundach. stop() zatrzymanie robota. read_speed() odczyt prędkości kół. Funkcja zwraca dwuelementową listę [v_lewego, v_prawego]. 1 Strona projektu: http://www.e-puck.org 2

read_proximity() odczyt czujników zbliżeniowych. Stan czujników zwracany jest w 8 elementowej tablicy indeksowanej od 0, zawierającej kolejno [IR0, IR1, IR2, IR3, IR4, IR5, IR6, IR7] zgodnie z oznaczeniami przyjętymi na rysunku 2. read_light() odczyt czujników oświetlenia. Stan czujników zwracany jest w 8 elementowej tablicy indeksowanej od 0, zawierającej kolejno [IR0, IR1, IR2, IR3, IR4, IR5, IR6, IR7] zgodnie z oznaczeniami przyjętymi na rysunku 2. read_proximity_avg(n) zwraca uśredniony odczyt czujników zbliżeniowych. Parametr n określa liczbę pomiarów użytych do uzyskania wyniku uśrednionego. Uśredniony stan czujników zwracany jest w 8 elementowej tablicy (analogicznie do read_proximity()). read_light_avg(n) uśredniony odczyt czujników oświetlenia. Parametr n określa liczbę pomiarów użytych do uzyskania wyniku uśrednionego. Uśredniony stan czujników zwracany jest w 8 elementowej tablicy (analogicznie do read_proximity()). Moduł współpracy z robotem mobilnym E-puck został napisany w wersji obiektowej, co oznacza, że wszystkie instrukcje powinny być poprzedzone odpowiednią instancją, np. e.set_speed(100,100). 4 Przykład programu Poniżej przedstawiono przykładowy program napisany w języku Python: from epuck import * # funkcja uzytkownika def fun(e): e.set_speed(100,-100) e.sleep(1) e.stop() print "Koniec" # uruchomienie funkcji go(fun) 3

5 Składnia języka Python [2] Python to przejrzysty skryptowy język programowania obiektowego, wykorzystujący przejrzystą składnię, przez co programy są łatwe do zrozumienia. Zawiera różnorodne wbudowane typy danych: liczbowych (zmiennoprzecinkowe, zespolone, liczby całkowite o nieskończonej precyzji), tekstowych, listy, słowniki, itp. Jezyk zapewnia obsługę wyjątków pozwalając efektywniej obsługiwać błędy. 5.1 Lista Podstawowym złożonym typem danych w języku Python jest lista. Poszczególne elementy listy są oddzielone przecinkami, a całość znajduje się w nawiasach kwadratowych, np. a=[ pies, kot, 100, 1234]. Elementy listy nie muszą być tego samego typu. Dostęp do elementu listy uzyskuje się stosując operator indeksowania, np. a[2]. Lista jest indeksowana od 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. 5.2 Operatory Standardowe operatory porównań sa identyczne jak w C: < (mniejszy), > (większy), == (równy), <= (mniejszy lub równy), >= (większy lub równy) i!= (rożny). W języku zdefiniowane sa 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 operatorów and, or i not. 5.3 While Poniżej przedstawiono prosty sposób użycia instrukcji while: # liczby Fibonnaci ego a, b = 0, 1 while b < 10: print b a, b = b, a+b 4

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. 5.4 For Instrukcja for w Pythonie różni się od tych stosowanych w C lub Pascalu. Instrukcja for w Pythonie powoduje iterację po elementach jakiejkolwiek sekwencji (np. listy lub łańcucha znaków), w takim porządku, w jakim są one umieszczone w danej sekwencji. # Mierzy pewne napisy: a = [ kot, okno, wyróżnić ] for x in a: print x, len(x) Instrukcja ta zwróci kot 3 okno 4 wypróżnić 8 Jeżeli zachodzi potrzeba iterowania po sekwencji liczb należy użyć funkcji range(), generującej listę zawierająca ciąg arytmetyczny, przykładowo: range(10) zwraca ciąg [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żliwe jest także określenie początku range(5,10) oraz kroku range(0, 10, 3). Wyrażenie break podobnie jak w C, powoduje opuszczenie najbardziej zagnieżdżonej pętli forfor lub while. Wyrażenie continue powoduje wykonanie pętli od początku. 5.5 If Wyrażenie warunkowe uzyskuje się prawie identycznie jak w innych językach: 5

if x < 0: print ujemny elif x == 0: print zero else: print dodatni 5.6 Grupowanie wyrażeń W języku Python 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ęć. 5.7 Funkcje wbudowane Poniżej podano niektóre przydatne 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 sa 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. Literatura [1] http://www.e-puck.org [2] Paweł Ludwików, Programowanie robota mobilnego Khepera w języku Python, 2011 6