Wprowadzenie do systemu operacyjnego ROS: symulator turtlesim
|
|
- Ignacy Kwiatkowski
- 9 lat temu
- Przeglądów:
Transkrypt
1 Wprowadzenie do systemu operacyjnego ROS: symulator turtlesim Katarzyna Zadarnowska Laboratorium Robotyki Wydział Elektroniki Politechnika Wrocławska 1 Cel ćwiczenia Celem ćwiczenia jest opanowanie podstaw programowania w systemie operacyjnym ROS. W szczególności, studenci zaznajomią się z najważniejszymi poleceniami platformy programistycznej ROS, zrozumieją ideę przepływu informacji w systemie ROS, nauczą się tworzyć własne projekty oraz pisać, kompilować i uruchmiać proste węzły. Ćwiczenie stanowi wstęp do realizacji kolejnych ćwiczeń laboratoryjnych bazujących na systemie ROS [5, 6]. 2 Wymagania wstępne Przed przystąpieniem do realizacji ćwiczenia należy: 1. zapoznać się z Instrukcją bezpieczeństwa i higieny pracy w Laboratorium Robotów Autonomicznych L1.5 [1, 2], 2. znać podstawy programowania w językach C++, 3. zapoznać się z niniejszą instrukcją, 4. zapoznać się z zaproponowanymi w instrukcji rozdziałami pozycji [3] (rozdziały , , ) i [4] (rozdział 2). 3 Wprowadzenie ROS (Robot Operating System) to platforma programistyczna do tworzenia oprogramowania oraz sterowania robotów. Stanowi ona zbiór bibliotek pozwalających na sterowanie i symulację pracy robota. W szczególności, ROS zawiera podstawowe procesy systemowe obsługujące urządzenia sprzętowe robota, sterowanie niskopoziomowe, implementacje wykonywania typowych funkcji, komunikację międzywątkową oraz zarządzanie pakietami. Ideę środowiska ROS prezentuje rysunek 1. Ćwiczenie laboratoryjne przeznaczone do realizacji w ramach kursu Robotyka (2) data ostatniej modyfikacji: 19 marca 2015 Katedra Cybernetyki i Robotyki 1
2 2 Wprowadzenie do systemu operacyjnego ROS... MASTER node 1 node 2 node 3 topic 1 publisher message publisher message publisher message topic 2 message subscriber message subscriber node 4 node 5 Rysunek 1: Schemat projektu na platformie ROS Oprogramowanie robotów tworzy się w postaci zbioru małych, działających współbieżnie i w dużej mierze niezależnych od siebie programów, nazywanych węzłami (ang. nodes). W celu ułatwienia procesu wymiany danych pomiędzy tymi węzłami w systemie ROS jest wykorzystywany węzeł pełniący funkcję węzła nadrzędnego (ROS Master), który dba o poprawność komunikacji zachodzącej między pozostałymi węzłami systemu. Węzeł ten uruchamia się wydając polecenie roscore. Węzły komunikują się między sobą poprzez wysyłanie wiadomości (ang. messages). Wiadomości zorganizowane są w tematach (ang. topic). Węzły, które chcą dzielić informacje (ang. publishers) publikują wiadomości w obrębie odpowiedniego tematu, natomiast węzły odbierające wiadomości, tzw. subskrybenci (ang. subscribers) subskrybują wiadomości. Węzeł nadrzędny powinien działać przez cały czas trwania pracy w systemie ROS, należy więc uruchmić go w oddzielnym terminalu (polecenie roscore) i pozostawić uruchomionym na czas pracy. Zatrzymanie węzła nadrzędnego następuje po wysyłaniu sygnał SIGINT (Ctrl-C). 3.1 Pakiety Oprogramowanie systemu ROS stanowi zbiór pakietów. Pakiety z kolei są zbiorem plików realizujących określony cel. Pakiety posiadają swoją dokumentację (plik package.xml). Poniżej umieszczono listę przydatnych poleceń systemu ROS dotyczących pakietów: lista wszystkich dostępnych pakietów zdefiniowanych w systemie ROS rospack list znajdowanie katalogu zawierającego dany pakiet rospack find package-name przeglądanie zawartości katalogu danego pakietu rosls package-name przejście z bieżącego kaalogu do katalogu danego pakietu roscd package-name
3 3.2 Węzły Węzły Węzły to wykonywalne instancje programów systemu ROS. Wyróżniamy następujący zestaw poleceń dotyczących węzłów: tworzenie węzła (uruchamianie programu systemu ROS) rosrun package-name executable-name tworzenie węzła wraz z nadaniem mu nazwy rosrun package-name executable-name name:=node-name wyświetlenie listy uruchomionych węzłów rosnode list uzyskiwanie informacji na temat węzła rosnode info node-name zatrzymanie pracy (zabicie) węzła rosnode kill node-name usunięcie z listy zatrzymanego (zabitego) węzła rosnode cleanup 3.3 Tematy i wiadomości System ROS udostępnia następujący zbiór poleceń dotyczących tematów i wiadomości przesyłanych w obrębie tematów: lista aktywnych tematów rostopic list wyświetlenie wiadomości przesyłanych aktualnie w obrębie danego tematu rostopic echo topic-name mierzenie częstotliwości publikowania wiadomości (wiadomość/sec) rostopic hz topic-name mierzenie przepustowości wiadomości (bajt/sec) rostopic bw topic-name uzyskiwanie informacji na temat danego tematu rostopic info topic-name uzyskiwanie szczegółowych informacji na temat przesyłanych wiadomości rosmsg show message-type-name publikowanie wiadomości rostopic pub -r rate-in-hz topic-name message-type message-content 3.4 Usługi Usługi (ang. services) oferują komunikację dwukierunkową: węzeł wysyła informację do innego węzła i oczekuje na odpowiedź. Rysunek 2 obrazuje przepływ informacji w ramach usług. Zatem węzeł klient wysyła żądanie/prośbę (ang. request) do węzła serwera, ten realizuje żą
4 4 Wprowadzenie do systemu operacyjnego ROS... klient ¹danie odpowiedÿ serwer Rysunek 2: Schemat komunikacji w obrębie klient serwer danie i odsyła odpowiedź (ang. response) do węzła klienta. Usługi, podobnie jak wiadomości, posiadają konkretny typ danych, jednak podzielony jest on na dwie części: typ danych żądania i typ danych odpowiedzi. Korzystanie z usług z linii poleceń wygląda następująco: lista aktywnych usług rosservice list lista usług oferowanych przez dany węzeł rosnode info node-name odnajdywanie węzła oferującego daną usługę rosservice node service-name odczytywanie typu danych konkretnej usługi rosservice type service-name szczegółowe informacje na temat typu danych usługi (osobno dla żądania i odpowiedzi) rossrv show service-data-type-name wywołanie usługi rosservice call service-name request-content przy czym należy pamiętać, że pole request-content powinno zawierać listę wartości uzupełniających poszczególne pola żądania Programowe wywoływanie usług wygląda następująco: Program klient Na początku należy dołączyć odpowiedni plik nagłowkowy definiujący typ danych żądania i odpowiedzi usługi #include<package_name/type_name.h> Następnie, po zainicjowaniu węzła (ros::init) i utworzeniu obiektu węzła (ros::nodehandle), należy utworzyć obiekt klienta, który zajmie się wywołaniem usługi ros::serviceclient client = node_handle.serviceclient<service_type> (service_name); przy czym node_handle to nazwa obiektu definiującego węzeł, service_type to nazwa obiektu usługi zadeklarowanej wcześniej w pliku nagłówkowym, service_name to nazwa usługi wywoływanej. Obiekt klienta zwraca szczegółowe informacje na temat wywoływanej usługi. W kolejnym kroku tworzony jest obiekt żądania, który wyśle dane do serwera i obiekt odpowiedzi klas package_name::service_type::request package_name::service_type::response
5 3.5 W razie problemów 5 W ostatnim kroku należy uzupełnić pola obiektu żądania i wywołać usługę bool success = service_client.call(request,response); Powyższa metoda lokalizuje węzeł serwera, przesyła dane żądania, czeka na odpowiedź i zwraca dane odpowiedzi w odpowiednim obiekcie (Response). Metoda call zwraca wartość typu boolean mówiącą o tym, czy wywołanie usługi zakończyło się powodzeniem. Jeśli tak, mamy dostęp do danych odpowiedzi. Program serwer Sposób tworzenia programu serwera jest opisany w rozdz. 8.4 [3]. Przykładowe programy klienta i serwera wraz z ich szczegółowym opisem można odnaleźć w rozdz. 2 [4]. 3.5 W razie problemów Jeśli ROS zachowuje się inaczej niż oczekujemy można skorzystać z polecenia roswtf które sprawdza poprawność wywołań (w tym zmienne środowiskowe, zainstalowane pliki, uruchomione węzły i inne). 4 Symulator TURTLESIM W celu zapoznania się z koncepcją programowania w systemie ROS, wykorzystamy symulator turtlesim. Opisane poniżej czynności wygodnie jest wykonywać z poziomu osobnych powłok użytkownika (terminali), co pozwoli na łatwe obserwowanie komunikatów o stanie procesów i ewentualnych błędach. W celu dodania do sesji basha odpowiednich zmiennych środowiskowych systemu ROS, należy zadbać, by w uruchamianych powłokach ustawiona była konfiguracja inicjowana skryptem /opt/ros/hydro/setup.bash. Postępuj według instrukcji umieszczonych poniżej. Upewnij się, że uruchomiony jest węzeł nadrzędny sprawujący kontrolę nad pozostałymi węzłami. Jeśli nie, wydaj polecenie roscore. Na początek spróbujmy uruchomić symulator turtlesim i przećwiczyć omawiane wcześniej podstawowe polecenia platformy ROS. W tym celu otwórz dwa terminale jednocześnie i wywołaj w nich kolejno polecenia: rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key By zapobiec pojawieniu się na pulpicie zbyt wielu okien terminala można skorzystać z aplikacji pozwalających na uruchomienie wielu terminali w jednym oknie, takich jak terminator Upewnij się czy linia source /opt/ros/hydro/setup.bash została dodana do pliku ~/.bashrc. Jeśli nie, w każdym nowo otwieranym terminalu należy wydać polecenie source /opt/ros/hydro/setup.bash Lokalne ustawienia konfiguracji platformy ROS mogą spowodować pojawienie się po uruchomieniu jądra ostrzeżenia WARNING: ROS_MASTER_URI [ host is not set to this machine auto-starting new master. W takiej sytuacji, poniżej tego ostrzeżenia zostanie podany aktualny adres sieciowy uruchomionego jądra (np. ROS_MASTER_URI= Należy każdorazowo (w każdym nowo otwartym terminalu) ustawić wartość zmiennej środowiskowej ROS_MASTER_URI korzystając z aktualnego adresu sieciowego (np. export ROS_MASTER_URI= Powyższe polecenie można wpisać do pliku ~/.bashrc, wówczas wydawanie go przy każdym nowo otwieranym terminalu nie będzie konieczne. Należy jednak pamiętać, by na koniec zajęć usunąć je z pliku ~/.bashrc
6 6 Wprowadzenie do systemu operacyjnego ROS... Polecenie rosrun umożliwia uruchamianie węzłów. Przyjmuje on dwa parametry: nazwę pakietu oraz nazwę pliku wykonywalnego umieszczonego w pakiecie, inaczej nazwę węzła (rosrun package-name executable-name). W naszym przypadku, w ramach pakietu turtlesim utworzyliśmy dwa węzły. Jeden z nich jest instancją programu wykonywalnego turtlesim_node i jest on odpowiedzialny za utworzenie okna, a w nim symulatora robota (w kształcie żółwia), natomiast drugi jest instancją programu wykonywalnego turtle_teleop_key, który umożliwia sterowanie robotem za pomocą klawiszy strzałek. Drugi węzeł konwertuje naciśnięcie odpowiedniego klawisza strzałki na polecenie ruchu, a następnie polecenie to przesyła do węzła turtlesim_node. Spróbuj sterować robotem za pomocą strzałek (pamiętaj, że w celu wprowadzadzania instrukcji ruchu dla robota, powinieneś mieć aktywny terminal, w którym wywołałeś rosrun turtlesim turtle_teleop_key). Pozostawiając uruchomione oba węzły przetestuj polecenia realizujące następujące czynności: wyświetlenie listy uruchomionych węzłów uzyskanie informacji na temat węzła turtlesim wyświetlenie listy aktywnych tematów wyświetlenie wiadomości przesyłanych w obrębie tematu turtle1/cmd_vel i turtle1/pose uzyskiwanie szczegółowych informacji na temat wiadomości geometry_msgs/twist i geometry_msgs/pose sprawdzenie listy oferowanych usług dla węzła turtlesim sprawdzenie typu danych usługi spawn wywołanie usługi spawn (proszę pamiętać o parametrach wywołania) W kolejnym kroku, spróbujmy utowrzyć własny pakiet. W tym celu: 1. Utwórz swój własny obszar/katalog roboczy (ang. workspace), w którym będziesz przechowywać nowo utworzone pakiety/projekty mkdir catkin_ws Wejdź do tak utworzonego katalogu. 2. Następnie utwórz katalog src, w którym będziesz przechowywać kody źródłowe swoich pakietów. mkdir src 3. W katalogu src utwórz swój projekt catkin_create_pkg package_name Wywołanie powyższego polecenia spowoduje, że zostanie utworzony katalog o nazwie takiej jak nazwa pakietu, a w nim dwa pliki konfiguracyjne: package.xml stanowiący dokumentację pakietu i CMakeLists.txt. CMakeLists jest skryptem dla wieloplatformowego systemu budowania CMake. Zawiera on listę instrukcji budowania mówiących o tym jakie programy wykonywalne będą tworzone, jakie pliki źródłowe będą wykorzystane do ich utworzenia, gdzie poszukiwać dołączanych plików/bibliotek itp.
7 Symulator TURTLESIM 7 4. W katalogu projektu utwórz jeszcze raz katalog src, w którym bedziesz przechowywać pliki źródłowe projektu mkdir src Teraz możesz już spróbować pisać własne programy w systemie ROS (obowiązujący język programowania to C++). W dalszym kroku spróbujemy utworzyć węzeł, który będzie publikował losowe prędkości. Prędkości będą odbierane przez zaimplementowanego w pakiecie turtlesim robota - żółwia, który odzwierciedla zachowanie się znanego robota typu monocykl. Nietrudno się domyślić, że sterowaniami robota są: prędkość zmiany orientacji robota oraz prędkość postępowa robota. Zadanie, jako przykładowe, zostało szczegółowo opisane w [3] (podrodział 3.3). Sposób tworzenia, kompilacji oraz uruchamiania nowego węzła jest opisany w podrozdziale 3.2 pozycji [3]. W celu realizacji zadania: 5. Do katalogu src w katalogu projektu (patrz punkt 4 powyżej) skopiuj plik pubvel.cpp z rysunku (3) (znajdziesz go w /opt/ros_lab1_5/materialy/). Zapoznaj się z jego treścią. Najważniejsze informacje dotyczące programu pubvel (rys. 3): Program pubvel tworzy węzeł, który generuje oraz publikuje losowe prędkości. Prędkości są typu Twist. Jako że typ Twist zdefiniowano w pakiecie geometry_msgs, konieczne jest pojawienie się w programie dyrektywy #include<geometry_msgs/twist.h> Dalej, program tworzy obiekt publikujący pub klasy ros::publisher. ros::publisher pub = nh.advertise<geometry_msgs::twist> ("turtle1/cmd_vel", 1000); Tutaj ustalany jest typ wiadomości (geometry_msgs/twist) publikowanych przez obiekt publikujący, nazwa tematu (turtle1/cmd_vel), w obrębie którego będą publikowane wiadomości oraz rozmiar kolejki wiadomości (1000). Temat turtle1/cmd_vel zdefiniowano w pakiecie turtlesim, domyślamy się więc, że prędkości będą subskrybowane przez węzeł definiujący robota żółwia (turtlesim_node). Typ wiadomości geometry_msgs/twist składa się z dwóch pól opisujących prędkość liniową (m/sec) oraz prędkość kątową (rad/sec) robota geometry_msgs/vector3 linear float64 x float64 y float64 z geometry_msgs/vector3 angular float64 x float64 y float64 z Każda z prędkości jest więc wektorem (x, y, z) (elementy typu double) opisującym jej poszczególne współrzędne. Program pubvel przypisuje losowe wartości poszczególnym składowym prędkości: msg.linear.x (prędkość postępowa robota wzdłuż osi x) oraz msg.angular.z (prędkość zmiany orientacji robota wokół osi z). Pozostałe składowe przyjmują domyślne (zerowe) wartości. Dalej wywoływana jest metoda publish obiektu publikującego pub.publish(msg)
8 8 Wprowadzenie do systemu operacyjnego ROS... // this program randomly-generated velocity messages for turtlesim #include <ros/ros.h> #include <geometry_msgs/twist.h> #include <stdlib.h> int main(int argc, char ** argv) { // init ROS ros::init(argc, argv, "publish_velocity"); ros::nodehandle nh; // create a publisher object ros::publisher pub = nh.advertise<geometry_msgs::twist>("turtle1/cmd_vel", 1000); // seed random number generator srand(time(0)); // loop at 2Hz until the node is shutdown ros::rate rate(2); while(ros::ok) { // create and fill in the message geometry_msgs::twist msg; msg.linear.x = double(rand())/double(rand_max); msg.angular.z = 2 * double(rand())/double(rand_max) - 1; // publish the message pub.publish(msg); // send a message to rosout ROS_INFO_STREAM("Sending random velocity: " << " linear=" << msg.linear.x << " angular=" << msg.angular.z); } } // wait until its time for another iteration rate.sleep(); Rysunek 3: Listing programu pubvel.cpp publikującego losowe prędkości dla robota zaimplementowanego w pakiecie turtlesim
9 Symulator TURTLESIM 9 Metoda dodaje wiadomość do kolejki wiadomości, skąd wiadomość możliwie najszybciej zostaje wysyłana do wszystkich subskrybentów odpowiadających danemu tematowi. Polecenie ROS_INFO_STREAM wysyła komunikaty na wyjście. Program powtarza kroki publikowania wiadomości w pętli while. Warunek pętli ros::ok() zwraca true, dopóki węzeł istnieje i wykonuje pracę. False uzyskamy gdy np. wykonamy instrukcję rosnode kill lub gdy do programu wyślemy sygnał Ctrl-C. Należy pamiętać, że Ctrl-C powoduje, że warunek w pętli while przyjmuje wartość false, natomiast nie przerywa programu. Działanie programu można przerwać poprzez wysłanie sygnału Ctrl-Z (ten sam efekt można uzyskać poprzez wywołanie w programie ros::shutdown()). Wreszcie, ważnym elementem systemu ROS jest kontrolowanie częstotliwości publikowania wiadomości. Częstotliwość tę ustala obiekt ros::rate. Parametrem jego konstruktora jest częstotliwość podawana w hercach (Hz). I tak, ros::rate rate(2) tworzy obiekt rate, który reguluje pracą pętli dopuszczając w tym przypadku na wykonywanie instrukcji pętli z częstotliwością dwa razy na sekundę. Pod koniec pętli wykonywana jest metoda sleep obiektu rate rate.sleep() która nie pozwala wykonywać się pętli szybciej niż to określono wcześniej za pomocą wyspecyfikowania częstotliwości. 6. W katalogu projektu edytuj pliki package.xml oraz CMakeLists.txt. W szczególności, w domyślnej wersji pliku CMakeLsts.txt zawarta jest linia find_package(catkin REQUIRED) w której, w sekcji COMPONENTS, określa się zależności od innych pakietów. W naszym przypadku linia powinna wyglądać następująco find_package(catkin REQUIRED COMPONENTS roscpp geometry_msgs) Ponadto, należy dodać linię określającą uruchamiany węzeł oraz listę plików źródłowych, na podstawie których tworzony jest dany węzeł, a zatem (jeśli pakiet zawiera więcej węzłów, dla każdego węzła dodaje się osobną linię) add_executable(pubvel src/pubvel.cpp) I wreszcie linia mówiąca o użyciu odpowiednich bibliotek podczas konsolidacji węzłów (dla każdego węzła osobna linia) target_link_libraries(pubvel ${catkin_libraries}) Zawartość przykładowych plików została zaprezentowana oraz szczegółowo opisana w podrozdziale 3.2 pozycji [3] (listingi 3.1 oraz 3.3). W podrozdziale 3.3 zasygnalizowano jakich zmian należy dokonać w plikach zaprezentowanych w listingach 3.1 i 3.3, by odpowiadały naszemu projektowi. 7. Przejdź do katalogu obszaru roboczego. Skompiluj projekt poleceniem catkin_make Powyższe polecenie buduje wszystkie projekty znajdujące się w naszym obszarze roboczym, stąd, by móc wywołać polecenie, należy znajdować się w katalogu obszaru roboczego. Wywołane polecenie utworzy m.in. katalogi devel i bulid.
10 10 Wprowadzenie do systemu operacyjnego ROS W katalogu devel zostanie utworzony skrypt setup.bash, który należy uruchomić poleceniem source devel/setup.bash Omawiany skrypt ustawia zmienne środowiskowe, które umożliwią systemowi ROS m.in. zlokalizowanie pakietów oraz programów wykonywalnych. Polecenie należy wywołać w każdym nowo otwieranym terminalu. 9. Uruchom symulator robota rosrun turtlesim turtlesim_node 10. Uruchom nowo utworzony węzeł poleceniem rosrun nazwa_projektu nazwa_wezla (np. rosrun projekt pubvel). 11. Zaobserwuj jak zachowuje się robot w odpowiedzi na zadawane przez węzeł pubvel prędkości losowe. 12. W podrozdziale 3.4 pozycji [3] opisano jak tworzy się węzły subskrybujące. 13. W systemie ROS konieczność uruchamiania dwóch lub większej liczby węzłów w tym samym czasie stanowi podstawę do sporządzenia pliku uruchamiającego (ang. launch file). Plik uruchamiający (o nazwie z rozszerzeniem.launch) znajduje się w katalogu danego pakietu i stanowi specyfikację (w formacie XML) węzłów, które mają być uruchomione w tym samym czasie. Odpowiednio zdefiniowany plik wywołuje się poleceniem roslaunch package-name launch-file-name Polecenie roslaunch sprawdza czy węzeł nadrzędny jest uruchomiony i jeśli nie uruchamia go automatycznie. Wysłanie sygnału SIGINT (Ctrl-C) kończy sesję uruchomioną poleceniem roslaunch (w szczególności kończy pracę uruchomionych węzłów). Szczegółowe informacje dotyczące składni/formatu pliku uruchamiającego znajdziesz w rozdziale 6.2 pozycji [3]. Przykładowy plik uruchamiający umieszczono na rysunku 4. Plik uruchamia węzeł turtle_node implementujący robota, węzeł turtle_teleop_key pozwalający na sterowanie robotem za pomocą klawiszy strzałek oraz utworzony przez nas węzeł publikujący prędkości losowe (pubvel). Umieść omawiany plik uruchamiający w katalogu z nazwą utworzonego projektu (plik znajdziesz w /opt/ros_lab1_5/materialy), edytuj go zmieniając nazwę pakietu na właściwą (pole: pkg= package-name") i uruchom za pomocą polecenia roslaunch package-name launch-file-name. Sprawdź jak działają poszczególne węzły. Spróbuj zamykać kolejne węzły. Co zaobserwowałeś? Zinterpretuj znaczenie poleceń: respawn="true oraz required="true". Komunikacja w obrębie pojedynczego tematu odbywa się na zasadzie: "wielu do wielu" (ang. "many to many"). Jako że pojedynczy temat jest dzielony jednocześnie przez wiele węzłów publikujących i subskrybujących, to bez względu na to, który węzeł publikuje, wiadomości odbierane są przez wszystkich subskrybentów danego tematu. Zaobserwuj działanie komunikacji "wielu do wielu". Próbuj na przemian sterować robotem za pomocą węzła pubvel oraz węzła (turtle_teleop_key). Dzięki temu, że poszczególne węzły działają niezależnie od siebie, a jedynym ich łącznikiem są tematy i wiadomości, potrafimy zorganizować komunikację "jeden do jednego" (ang. one to one ). Jednym ze sposobów jest wykorzystanie idei przestrzeni nazw (ang.
11 Zadania do wykonania 11 <launch> <node pkg="turtlesim" type="turtlesim_node" name="turtlesim" respawn="true" /> <node pkg="turtlesim" type="turtle_teleop_key" name="teleop_key" required="true" launch-prefix="xterm -e" /> <node pkg="pakiet" type="pubvel" name="pubvel" launch-prefix="xterm -e" /> </launch> Rysunek 4: Listing pliku uruchamiającego przyklad.launch namespace) (patrz rozdział 6.3 [3]). W tym przypadku, w obrębie pliku uruchamiającego przypisuje się poszczególnym węzłom atrybuty definiujące ich domyślną przestrzeń nazw, w obrębie której będą uruchamiane poszczególe węzły (ns= namespace ). Przypisanie w pliku uruchamiającym poszczególnym węzłom atrybutu ns oznacza, że w ramach jednego tematu komunikować się będą jedynie węzły dzielące ten sam atrybut definiujący ich domyślną przestrzeń nazw. Innym sposobem zapewnienia komunikacji "jeden do jednego"jest wykorzystanie idei usług (patrz rozdział 3.4). 5 Zadania do wykonania 1. Na przykładzie węzła pubvel utwórz węzeł publikujący prędkości pozwalające zrealizować zadaną na rys. 5 ścieżkę robota zdefiniowanego w pakiecie turtlesim. Ścieżka jest cykliczna i składa się z szeregu wzjemnie zorientowanych kwadratów. Niech długość boku kwadratu oraz kąt jego obrotu będą zadawane przez użytkownika zaraz po uruchomieniu węzła. Wskazówka: do obliczenia czasu potrzebnego na realizację zadanego odcinka drogi wykorzystaj informacje dotyczące częstotliwości publikowania wiadomości (ros::rate). 2. Utwórz węzeł, który opublikuje prędkości przeprowadzające robota z punktu A do punktu B wzdłuż ścieżki zadanej na rys. 6. Ścieżka składa się z łuków o zadanych promieniach krzywizny. 3. W ramach węzła publikującego wygeneruj funkcje sterujące u = (v, ω) przeprowadzające robota z punktu A do punktu B wzdłuż ścieżki zadanej na rys. 7. Znajdź sterowania û = ( ˆv, ˆω) przeprowdzającego robota z punktu B do punktu A.
12 12 Wprowadzenie do systemu operacyjnego ROS... Rysunek 5: Ścieżka 1 B R 2 R 2 R 1 A Rysunek 6: Ścieżka 2 A Rysunek 7: Ścieżka 3 B
13 Sprawozdanie Dla każdego z poprzednich zadań sporządź plik uruchamiający. Informacje dotyczące składni/formatu pliku uruchamiającego znajdziesz w rozdziale 6.2 pozycji [3]. Niech węzły publikujące prędkości uruchamiają się w odzielnych terminalach (skorzystaj z polecenia launch-prefix= command-prefix ). Dodatkowo, niech węzły publikujące będą węzłami wymagalnymi (jeśli praca wymagalnego węzła zostanie z jakiegoś powodu przerwana, to plik uruchamiający przerwie pracę pozostałych aktywnych węzłów i zakończy swoje działanie). Wreszcie, zapewnij, by węzeł symulujący pracę robota (turtlesim_node) był, w razie przerwania jego pracy, uruchamiany na nowo. 5. Sporządź plik uruchamiający jednocześnie dwa pierwsze zadania. Zaobserwuj jak wygląda praca węzłów w ramach komunikacja "wielu do wielu". W celu zapewnienia poprawnej komunikacji poszczególych węzłów ("jeden do jednego") skorzystaj z idei przestrzeni nazw (rozdz. 6.3 [3]). 6. Przygotuj plik uruchamiający, który: uruchomi w odzielnym terminalu napisany w pierwszym zadaniu węzeł publikujący prędkości realizujące śledzenie ścieżki z Rys. 5 uruchomi dwie instancje symulatora robota (turtlesim_node) jeden z robotów będzie odpowiadał na prędkości publikowane przez węzeł, natomiast drugi robot będzie podążał za pierwszym robotem. Wskazówka: Wykorzystaj węzeł mimic (, ) oraz pojęcie mapowania (patrz rozdz. 6.4 [3]). 7. Zrealizuj następujące zadanie: w oknie symulatora turtlesim znajdują się dwa roboty. Jeden z nich porusza się z pewnymi prędkościami, natomiast drugi realizuje ruch dla tych samych prędkości, ale ze zmienionymi znakami. Wskazówka: węzeł publikujący prędkości dla drugiego robota powinien subskrybować prędkości publikowane dla pierwszego robota, zmieniać ich znaki na przeciwne i w nowej postaci publikować prędkości dla drugiego robota. Wykorzystaj usługę /spawn pakietu turtlesim w celu umieszczenia nowego robota w oknie symulatora (patrz rozdz. 8.3 [3]). Spróbuj wykorzystać usługę /clear pakietu turtlesim, aby na początku wyczyścić okno symulatora. Podobnie, spróbuj wykorzystać usługę /teleport_relative lub /teleport_absolute pakietu turtlesim, aby umieścić robota we właściwej pozycji startowej. 8. Zapoznaj się z informacjami na temat tworzenia programu serwera (rozdz. 8.4 [3]). Napisz program serwer oferujący usługę zamiany znaków prędkości. Wykorzystaj go do realizacji poprzedniego zadania. 6 Sprawozdanie Sprawozdanie z przebiegu ćwiczenia powinno zawierać: Imię i nazwisko autora, numer i termin grupy, skład grupy, temat ćwiczenia, datę wykonania ćwiczenia. Cel ćwiczenia
14 14 Wprowadzenie do systemu operacyjnego ROS... Opis przebiegu i efektu wykonania realizowanych zadań. Wnioski końcowe. Literatura [1] Mariusz Janiak. Instrukcja bezpieczeństwa i higieny pracy w Laboratorium Robotów Autonomicznych L1.5. Katedra Cybernetyki i Robotyki, Politechnika Wrocławska, Instrukcja Laboratorium Robotów Autonomicznych L1.5, [2] Mariusz Janiak, Aleksandra Grzelak. Instrukcja bezpieczeństwa i higieny pracy przy obsłudze robotów Pionneer P3-DX. Katedra Cybernetyki i Robotyki, Politechnika Wrocławska, Instrukcja Laboratorium Robotów Autonomicznych L1.5, [3] J. M. O Kane. A Gentle Introduction to ROS. Independently published, Available at [4] A. Martinez i E. Fernandez. Learning ROS for Robotics Programming. A practical, instructive, and comprehensive guide to introduce yourself to ROS, the top - notch, leading robotics framework Available at [5] Joanna Ratajczak. Weryfikacja własności ruchowych układów nieholonomicznych na przykładzie robota mobilnego Pioneer 3DX. Katedra Cybernetyki i Robotyki, Politechnika Wrocławska, Instrukcja Laboratorium Robotów Autonomicznych L1.5, [6] Robert Muszyński. Zastosowanie czujnika głębi Kinect do interakcji z robotem mobilnym z wykorzystaniem platformy ROS. Katedra Cybernetyki i Robotyki, Politechnika Wrocławska, Instrukcja Laboratorium Robotów Autonomicznych L1.5, 2015.
NS-2. Krzysztof Rusek. 26 kwietnia 2010
NS-2 Krzysztof Rusek 26 kwietnia 2010 1 Opis ćwiczenia Symulator ns-2 jest potężnym narzędziem, szeroko stosowanym w telekomunikacji. Ćwiczenie ma na cele przedstawić podstawy symulatora oraz symulacji
Weryfikacja własności ruchowych układów nieholonomicznych na przykładzie robota mobilnego Pioneer 3-DX z elementami ROSa
Weryfikacja własności ruchowych układów nieholonomicznych na przykładzie robota mobilnego Pioneer 3-DX z elementami ROSa Joanna Ratajczak, Katarzyna Zadarnowska Laboratorium Robotów Autonomicznych Wydział
Zastosowania Robotów Mobilnych
Zastosowania Robotów Mobilnych Temat: Zapoznanie ze środowiskiem Microsoft Robotics Developer Studio na przykładzie prostych problemów nawigacji. 1) Wstęp: Microsoft Robotics Developer Studio jest popularnym
Laboratorium Podstaw Robotyki I Ćwiczenie Khepera dwukołowy robot mobilny
Laboratorium Podstaw Robotyki I Ćwiczenie Khepera dwukołowy robot mobilny 16 listopada 2006 1 Wstęp Robot Khepera to dwukołowy robot mobilny zaprojektowany do celów badawczych i edukacyjnych. Szczegółowe
Zaawansowane aplikacje internetowe - laboratorium
Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest
Cyfrowe Przetwarzanie Obrazów i Sygnałów
Cyfrowe Przetwarzanie Obrazów i Sygnałów Laboratorium EX0 Wprowadzenie Joanna Ratajczak, Wrocław, 2018 1 Cel i zakres ćwiczenia Celem ćwiczenia jest zapoznanie się ze środowiskiem Matlab/Simulink wraz
SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja
SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja Instytut Telekomunikacji Wydział Elektroniki i Technik Informacyjnych Politechnika Warszawska, marzec 2015 Wprowadzenie Ćwiczenie jest wykonywane
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 1 (3h) Wprowadzenie do obsługi platformy projektowej Quartus II Instrukcja pomocnicza do laboratorium z przedmiotu
Politechnika Wrocławska, Katedra Inżynierii Biomedycznej Systemy Pomiarowo-Diagnostyczne, laboratorium
Politechnika Wrocławska, Katedra Inżynierii Biomedycznej Systemy Pomiarowo-Diagnostyczne, laboratorium Zajęcia wprowadzające 1. Cel ćwiczenia Przyswojenie podstawowych informacji dotyczących zasad tworzenia
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C
Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C Wymagana wiedza wstępna: 1) Student musi 1) Znać język C 2) Znać zasady zarządzania pamięcią w komputerze 3) Znać pojecie wskaźnika
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
dr inż. Tomasz Krzeszowski
Microsoft Robotics Developer Studio dr inż. Tomasz Krzeszowski 2017-05-20 Spis treści 1 Przygotowanie do laboratorium... 3 2 Cel laboratorium... 3 3 Microsoft Robotics Developer Studio... 3 3.1 Wprowadzenie...
MentorGraphics ModelSim
MentorGraphics ModelSim 1. Konfiguracja programu Wszelkie zmiany parametrów systemu symulacji dokonywane są w menu Tools -> Edit Preferences... Wyniki ustawień należy zapisać w skrypcie startowym systemu
SYSTEMY CZASU RZECZYWISTEGO (SCR)
Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania SYSTEMY CZASU RZECZYWISTEGO (SCR) Temat: Implementacja i weryfikacja algorytmu sterowania z regulatorem
Aplikacja Sieciowa wątki po stronie klienta
Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Instrukcja integratora - obsługa dużych plików w epuap2
Instrukcja integratora - obsługa dużych plików w epuap2 Wersja: 1.1 Strona 1 z 18 Spis treści SPIS TREŚCI... 2 WPROWADZENIE ORAZ INFORMACJE OGÓLNE... 3 1.1 WSTĘP... 3 1.2 WARUNKI KONIECZNE DO SPEŁNIENIA
Współpraca z platformą dokumentacja techniczna
Współpraca z platformą Emp@tia dokumentacja techniczna INFO-R Spółka Jawna - 2016 43-430 Pogórze, ul. Baziowa 29, tel. (33) 479 93 29, (33) 479 93 89 fax (33) 853 04 06 e-mail: admin@ops.strefa.pl Strona1
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Sieci Komputerowe 2 / Ćwiczenia 2
Tematyka Sieci Komputerowe 2 / Ćwiczenia 2 Opracował: Konrad Kawecki na podstawie materiałów: http://www.isi.edu/nsnam/ns/tutorial/index.html Na ćwiczeniach zapoznamy się z symulatorem
Zad. 6: Sterowanie robotem mobilnym
Zad. 6: Sterowanie robotem mobilnym 1 Cel ćwiczenia Utrwalenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie dziedziczenia
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium
1 Moduł Inteligentnego Głośnika
1 Moduł Inteligentnego Głośnika Moduł Inteligentnego Głośnika zapewnia obsługę urządzenia fizycznego odtwarzającego komunikaty dźwiękowe. Dzięki niemu możliwa jest konfiguracja tego elementu Systemu oraz
Sterowanie, uczenie i symulacja robotów przemysłowych Kawasaki
Ćwiczenie VIII LABORATORIUM MECHATRONIKI IEPiM Sterowanie, uczenie i symulacja robotów przemysłowych Kawasaki Zał.1 - Roboty przemysłowe i mobilne. Roboty Kawasaki - charakterystyka Zał.2 - Oprogramowanie
1 Moduł Inteligentnego Głośnika 3
Spis treści 1 Moduł Inteligentnego Głośnika 3 1.1 Konfigurowanie Modułu Inteligentnego Głośnika........... 3 1.1.1 Lista elementów Modułu Inteligentnego Głośnika....... 3 1.1.2 Konfigurowanie elementu
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program Przygotował: Jakub Wawrzeńczak 1. Wprowadzenie Lekcja przedstawia wykorzystanie środowiska LabVIEW 2016
SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)
(opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
S P I S T R E Ś C I. Instrukcja obsługi
S P I S T R E Ś C I Instrukcja obsługi 1. Podstawowe informacje o programie.................................................................................... 2 2. Instalacja programu.....................................................................................................
Programowanie niskopoziomowe
W. Complak, J.Kniat, M. Antczak, K. Kwarciak, G. Palik, A. Rybarczyk, Ł. Wielebski Materiały Programowanie niskopoziomowe http://www.cs.put.poznan.pl/arybarczyk/c_w_0.pdf Spis treści 1. Instalacja środowiska
Instrukcja laboratoryjna cz.0
Algorytmy i Struktury Danych 2012/2013 Instrukcja laboratoryjna cz.0 Wprowadzenie Prowadzący: Tomasz Goluch Wersja: 2.0 Warunki zaliczenia Cel: Zapoznanie studentów z warunkami zaliczenia części laboratoryjnej
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014 06. Programowanie Usług Sieciowych
1 Moduł E-mail. 1.1 Konfigurowanie Modułu E-mail
1 Moduł E-mail Moduł E-mail daje użytkownikowi Systemu możliwość wysyłania wiadomości e-mail poprzez istniejące konto SMTP. System Vision może używać go do wysyłania informacji o zdefiniowanych w jednostce
Język Java część 2 (przykładowa aplikacja)
Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa
Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Zaawansowane metody programowania Copyright c 2014 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Wdrożenie modułu płatności eservice. dla systemu Zen Cart 1.3.9 1.5
Wdrożenie modułu płatności eservice dla systemu Zen Cart 1.3.9 1.5 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8
Programowanie Urządzeń Mobilnych Laboratorium nr 7, 8 Android Temat 1 tworzenie i uruchamianie aplikacji z użyciem Android SDK Krzysztof Bruniecki 1 Wstęp Platforma Android jest opartym na Linuxie systemem
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa
UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa Następnie należy sprawdzić czy w KOLFK w Słownik i-> Dokumenty-> znajduje się dokument BO- Bilans Otwarcia (w grupie
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl
Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Współpraca z platformą Emp@tia. dokumentacja techniczna
Współpraca z platformą Emp@tia dokumentacja techniczna INFO-R Spółka Jawna - 2013 43-430 Pogórze, ul. Baziowa 29, tel. (33) 479 93 29, (33) 479 93 89 fax (33) 853 04 06 e-mail: admin@ops.strefa.pl Strona1
Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32
Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:
Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier
Systemy operacyjne Instrukcja laboratoryjna Ćwiczenie 1: Polecenia systemu UNIX/LINUX Opracował: dr inż. Piotr Szpryngier Olsztyn 2009 1 Wprowadzenie. Cel zajęć praktycznych. Wymagania stawiane studentom
Graficzny terminal sieciowy ABA-X3. część druga. Podstawowa konfiguracja terminala
Graficzny terminal sieciowy ABA-X3 część druga Podstawowa konfiguracja terminala Opracował: Tomasz Barbaszewski Ustawianie interfejsu sieciowego: Podczas pierwszego uruchomienia terminala: Program do konfiguracji
Zad. 4: Rotacje 2D. 1 Cel ćwiczenia. 2 Program zajęć. 3 Opis zadania programowego
Zad. 4: Rotacje 2D 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich struktur
Instrukcja. importu dokumentów. z programu Fakt do programu Płatnik. oraz. przesyłania danych do ZUS. przy pomocy programu Płatnik
Fakt Dystrybucja, Instrukcja z dnia 06.2010 Instrukcja importu dokumentów z programu Fakt do programu Płatnik oraz przesyłania danych do ZUS przy pomocy programu Płatnik 1/22 1 Eksport danych z Programu
Spring Web MVC, Spring DI
Państwowa Wyższa Szkoła Zawodowa w Tarnowie Zakład Informatyki Laboratorium 5 Spring Web MVC, Spring DI Prowadzący: Kierunek: Semestr: Rok: Informatyka Zimowy 2 Technologie Technologie / narzędzia będące
WOJEWÓDZTWO PODKARPACKIE
WOJEWÓDZTWO PODKARPACKIE UNIA EUROPEJSKA EUROPEJSKI FUNDUSZ ROZWOJU REGIONALNEGO Instrukcja instalacji generatora wniosku o dofinansowanie projektu ze środków EFRR w ramach I osi priorytetowej Regionalnego
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()
Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,
Forte Zarządzanie Produkcją Instalacja i konfiguracja. Wersja B
Forte Zarządzanie Produkcją Instalacja i konfiguracja Wersja 2013.1.B Forte Zarządzanie Produkcją - Instalacja i konfiguracja Strona 2 z 13 SPIS TREŚCI 1 Instalacja i konfiguracja Forte Zarządzanie Produkcją...
Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do zajęć laboratoryjnych z przedmiotu: Przetwarzanie Sygnałów Kod: TS1C400027 Temat ćwiczenia:
Przesyłania danych przez protokół TCP/IP
Przesyłania danych przez protokół TCP/IP PAKIETY Protokół TCP/IP transmituje dane przez sieć, dzieląc je na mniejsze porcje, zwane pakietami. Pakiety są często określane różnymi terminami, w zależności
Zamawianie Taxi Aktywator Instrukcja użytkownika
Zamawianie Taxi Aktywator Instrukcja użytkownika 2009 Jarek Andrzejewski www.ptja.pl wersja 1.0, 13 października 2009 Zmiany w dokumencie: Wersja Data Autor Zmiany 1.0 13.10.2009 Jarek Andrzejewski Pierwsza
Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania
Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe
Lekcja 1. Środowisko OMNeT++
Lekcja 1. Środowisko OMNeT++ W przygotowanym materiale zostanie omówione środowisko OMNeT++, pokazane zostanie, w jaki sposób tworzyć modele topologii. Język topologii NED Model OMNeT ++ składa się z hierarchicznie
Zad. 3: Rotacje 2D. Demonstracja przykładu problemu skończonej reprezentacji binarnej liczb
Zad. 3: Rotacje 2D 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich struktur
APLIKACJA SHAREPOINT
APLIKACJA SHAREPOINT Spis treści 1. Co to jest SharePoint?... 2 2. Tworzenie nowej witryny SharePoint (obszar roboczy)... 2 3. Gdzie znaleźć utworzone witryny SharePoint?... 3 4. Personalizacja obszaru
Pobieranie komunikatów GIF
Spis treści Wstęp... 2 1. Ustawienia harmonogramu zadań... 3 1.1. Tryby pracy AswPlan... 3 2. System KS-EWD... 4 2.1. Instalacja KS-EWD... 5 3. Inauguracja OSOZ... 6 3.1. Zdefiniowanie zadania pobierania
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy
Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki
Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy
Pracownia internetowa w każdej szkole (edycja Jesień 2007)
Instrukcja numer D2/08_01 Pracownia internetowa w każdej szkole (edycja Jesień 2007) Opiekun pracowni internetowej cz. 2 (D2) Określanie właściwości stron WWW (domyślne pliki startowe, katalogi wirtualne,
Instrukcja obsługi DHL KONWERTER 1.6
Instrukcja obsługi DHL KONWERTER 1.6 Opis: Niniejsza instrukcja opisuje wymogi użytkowania aplikacji oraz zawiera informacje na temat jej obsługi. DHL Konwerter powstał w celu ułatwienia oraz usprawnienia
Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
Instrukcja obsługi Multiconverter 2.0
Instrukcja obsługi Multiconverter 2.0 Opis: Niniejsza instrukcja opisuje wymogi użytkowania aplikacji oraz zawiera informacje na temat jej obsługi. DHL Multiconverter powstał w celu ułatwienia oraz usprawnienia
Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe
Architektury Usług Internetowych Laboratorium 2. Usługi sieciowe Wstęp Celem laboratorium jest zapoznanie się z modelem usług sieciowych na przykładzie prostego serwera Apache Axis2. Apache Axis2 Apache
Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x
Wdrożenie modułu płatności eservice dla systemu oscommerce 2.3.x - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Materiały dodatkowe. Raspberry Pi
Katedra Inżynierii Systemów Sterowania Materiały dodatkowe Raspberry Pi Opracowali: mgr inż. Tomasz Karla Data: Listopad, 2016 r. Dodatkowe informacje Materiały dodatkowe mają charakter ogólny i służą
Wprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM
Wprowadzenie do środowiska Visual Studio cz. 2 (ćwiczenie wykonywane zdalnie) Wykorzystanie Wirtualnego portu COM 1.1 Cel ćwiczenia: Celem dwiczenia jest zaznajomienie studenta z tematyka tworzenia aplikacji
Zmienne i stałe w PHP
Zmienne i stałe w PHP Zmienne Zmienne to konstrukcje programistyczne, które pozwalają na przechowywanie danych. Każda zmienna posiada swoją nazwę oraz typ. Nazwa to jednoznaczny identyfikator, dzięki któremu
Dokumentacja końcowa projektu z ZPR
Dokumentacja końcowa projektu z ZPR Temat projektu: Prowadzący projekt: Zespół projektowy: Losowe przeszukiwanie stanów dr inż. Robert Nowak Piotr Krysik Kamil Zabielski 1. Opis projektu Projekt ma za
Zad. 5: Sterowanie robotem mobilnym
Zad. 5: Sterowanie robotem mobilnym 1 Cel ćwiczenia Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Tworzenie diagramu klas, czynności oraz przypadków użycia. Wykorzystanie
Instalacja programu. Wymaganiach sprzętowych systemu. Instalacji programu w wersji podstawowej. Instalacji programu dla innych użytkowników w sieci
D O D A T E K A Instalacja programu Dowiesz się o: Wymaganiach sprzętowych systemu Instalacji programu w wersji podstawowej Instalacji programu w sieci Instalacji programu dla innych użytkowników w sieci
System IVR. Opis elementów systemu
System IVR Opis elementów systemu 1. Wstęp Na system IVR (IVR Pack) składają się następujące usługi: IVR Player, IVR Menu, IVR List, IVR Switch. Cennik usług IVR dostępny jest na stronie www.ipfon.pl.
Część II Wyświetlanie obrazów
Tło fragmentu ABA-X Display jest wyposażony w mechanizm automatycznego tworzenia tła fragmentu. Najprościej można to wykonać za pomocą skryptu tlo.sh: Składnia: tlo.sh numer oznacza numer
Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika
Warsztaty AVR Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR Dariusz Wika 1.Krótki wstęp: Eclipse to rozbudowane środowisko programistyczne, które dzięki możliwości instalowania
1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4
Wdrożenie modułu płatności eservice dla systemu Gekosale 1.4 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do integracji...
Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.
T: Konfiguracja usługi HTTP w systemie Windows. Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http. HTTP (ang. Hypertext Transfer Protocol) protokół transferu plików
Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE
Katedra Elektroniki Akademia Górniczo-Hutnicza w Krakowie Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE opis układu w Verilog, kompilacja i symulacja
Tomasz Greszata - Koszalin
T: Konfiguracja usługi HTTP w systemie Windows. Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołów HTTP oraz HTTPS i oprogramowania IIS (ang. Internet Information Services).
Konstruktor destruktor Programowanie obiektowe
Konstruktor destruktor Programowanie obiektowe Klasa w osobnym pliku Pracując w scalonym środowisku programistycznym mamy okno z nazwami wszystkich swoich klas ustawionych alfabetycznie Tworząc klasę w
EXSO-CORE - specyfikacja
EXSO-CORE - specyfikacja System bazowy dla aplikacji EXSO. Elementy tego systemu występują we wszystkich programach EXSO. Może on ponadto stanowić podstawę do opracowania nowych, dedykowanych systemów.
TM-47.1-2 PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T
LANEX S.A. ul. Ceramiczna 8 20-150 Lublin tel. (081) 444 10 11 tel/fax. (081) 740 35 70 TM-47.1-2 PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T LANEX S.A., ul.ceramiczna 8, 20-150
Podstawy Programowania 2
Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu
Kurs walut. Specyfikacja projektu. Marek Zając 2013-12-16
Kurs walut Specyfikacja projektu Marek Zając 2013-12-16 Spis treści 1. Podsumowanie... 2 1.1 Wstęp... 2 1.2 Projekt interfejsu... 2 1.2.1 Rozmiar głównego okna... 2 2. Słownik pojęć... 2 2.1 Definicja
Zad. 3: Układ równań liniowych
1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich
Praca w środowisku Visual Studio 2008, Visual C
Praca w środowisku Visual Studio 2008, Visual C++ 2008 mgr inż. Tomasz Jaworski tjaworski@kis.p.lodz.pl http://tjaworski.kis.p.lodz.pl/ Tworzenie aplikacji konsolowych 2 3 Tworzenie nowego projektu aplikacji
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych
Opis przykładowego programu realizującego komunikację z systemem epuap wykorzystując interfejs komunikacyjny "doręczyciel"
Opis przykładowego programu realizującego komunikację z systemem epuap wykorzystując interfejs komunikacyjny "doręczyciel" dn.24.09.2009 r. Dokument opisuje przykładowy program doręczający dokumenty na
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w
Java jako język programowania
Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)