Projekt

Ogólne

Profil

Lab1 » Historia » Wersja 2

Dawid Seredyński, 2018-06-13 11:52

1 1 Dawid Seredyński
h1. Lab 1: Introduction to ROS www.ros.org
2 1 Dawid Seredyński
3 1 Dawid Seredyński
h2. Preparation
4 1 Dawid Seredyński
5 1 Dawid Seredyński
* Teams are formed
6 1 Dawid Seredyński
* The tutor adds teams and their members to organization PW-EITI-ANRO-SUMMER-18 on GitHub.
7 1 Dawid Seredyński
* Introduction to the laboratories.
8 1 Dawid Seredyński
9 1 Dawid Seredyński
h2. Scope:
10 1 Dawid Seredyński
11 1 Dawid Seredyński
* Getting familiar with ROS tutorials (http://wiki.ros.org/ROS/Tutorials)
12 1 Dawid Seredyński
13 1 Dawid Seredyński
 * Read and follow Core ROS Tutorials->Beginner Level without sections: Getting started with roswtf, Navigating the ROS wiki, Where Next?
14 1 Dawid Seredyński
 * We advise you to type commands instead of copying them from the webpage. This should help you remember them.
15 1 Dawid Seredyński
16 1 Dawid Seredyński
* Writing your own ROS package.
17 1 Dawid Seredyński
* Uploading your results (source code) to GitHub
18 1 Dawid Seredyński
19 2 Dawid Seredyński
h2. Detailed hints for Ros Tutorials:
20 1 Dawid Seredyński
21 2 Dawid Seredyński
* Installing and Configuring Your ROS Environment
22 1 Dawid Seredyński
23 2 Dawid Seredyński
 * W laboratorium jest już zainstalowany ROS jak i wszystkie pakiety, które będą dalej potrzebne. Na zajęciach nie należy więc tego robić, natomiast jak najbardziej zachęcam do zainstalowania ROS, w szczególności jego odpowiednich pakietów w domu,
24 2 Dawid Seredyński
 * Tworząc swój katalog roboczy (worskpace) Create a ROS Workspace korzystamy z domyślnej opcji catkin
25 1 Dawid Seredyński
26 2 Dawid Seredyński
* Navigating the ROS Filesystem
27 1 Dawid Seredyński
28 2 Dawid Seredyński
 * Podobnie jak poprzednio konsekwentnie trzymamy się wersji catkin. Tak też będzie i w kolejnych pozycjach przewodnika,
29 2 Dawid Seredyński
 * W laboratorium jest już zainstalowany pakiet ros-tutorials
30 2 Dawid Seredyński
 * Żeby polecenie roscd log spowodowało przejście do katalogu z logami konieczne jest wcześniejsze uruchomienie programu roscore w innej konsoli.
31 1 Dawid Seredyński
32 2 Dawid Seredyński
* Creating a ROS Package
33 2 Dawid Seredyński
34 2 Dawid Seredyński
 * pamiętajcie by ustawiać ścieżki w konsoli za pomocą polecenia source z odpowiednim argumentami (do waszego katalogu roboczego). Tak też będzie i w kolejnych pozycjach przewodnika,
35 2 Dawid Seredyński
 * sekcji package dependencies nie przechodzicie w laboratorium
36 2 Dawid Seredyński
 * Na końcu tego rozdziału przewodnika jest opisany sposób personalizacji pakietu Customizing Your Package. Do edycji pliku package.xml możecie używać edytora wedle uznania np. gedit, lub vim w konsoli. Proszę o wpisane danych jednego z członków zespołu. Uczulam, aby budować katalog roboczy wspominanym już wcześniej poleceniem catkin_make (o tym jest kolejny rozdział) w celu sprawdzenia czy w plikach nie pojawiły się błędy (choć nie wszystkie tak wykryjemy).
37 2 Dawid Seredyński
 * Domyślnie kompilację i przygotowanie środowiska uruchomieniowego wykonuje się za pomocą polecenia catkin_make z odpowiednimi argumentami. Alternatywnie można skorzystać z jego nowszych odpowiedników catkin_make_isolated lub najnowszego zestawu catkin tools w domyślnym trybie devel. Jeżeli ktoś zdecyduje się na któreś z rozwiązań to powinien konsekwentnie korzystać z niego przez wszystkie laboratoria.
38 2 Dawid Seredyński
39 2 Dawid Seredyński
* Building a ROS Package
40 2 Dawid Seredyński
41 2 Dawid Seredyński
 * Ten rozdział taktuje o budowaniu własnego pakietu
42 2 Dawid Seredyński
43 2 Dawid Seredyński
* Understanding ROS Nodes
44 2 Dawid Seredyński
45 2 Dawid Seredyński
 * Tutaj uruchamiamy węzeł ROS
46 2 Dawid Seredyński
47 2 Dawid Seredyński
* Understanding ROS Topics
48 2 Dawid Seredyński
49 2 Dawid Seredyński
 * widok z rqt_graph nieco odbiega od tego w przewodniku, nie należy się tym przejmować
50 2 Dawid Seredyński
 * nasza dystrybucja ROS jest nowsza niż ROS Hydro
51 2 Dawid Seredyński
 * Video Tutorial można pominąć
52 2 Dawid Seredyński
53 2 Dawid Seredyński
* Understanding ROS Services and Parameters
54 2 Dawid Seredyński
55 2 Dawid Seredyński
 * wpisując w poleceniach argumenty poprzedzone znakiem / powodujemy, że działa podpowiadanie za pomocą tabulatora
56 2 Dawid Seredyński
57 2 Dawid Seredyński
* Using rqt_console and roslaunch
58 2 Dawid Seredyński
59 2 Dawid Seredyński
 * okienka wyglądają inaczej niż w przewodniku i nie należy się tym przejmować
60 2 Dawid Seredyński
61 2 Dawid Seredyński
* Using rosed to edit files in ROS
62 2 Dawid Seredyński
63 2 Dawid Seredyński
 * domyślny program do edycji z użyciem rosed można ustawić edytując plik .bashrc w swoim katalogu domowym
64 2 Dawid Seredyński
65 2 Dawid Seredyński
* Creating a ROS msg and srv
66 2 Dawid Seredyński
67 2 Dawid Seredyński
 * Tutaj trzeba zrobić source do pliku setup.bash ze swojego katalogu roboczego
68 2 Dawid Seredyński
69 2 Dawid Seredyński
* Writing a Simple Publisher and Subscriber (C++)
70 2 Dawid Seredyński
71 2 Dawid Seredyński
 * Tworzymy węzły napisane w języku C++: wysyłający wiadomości na temacie i odbierający takie wiadomości
72 2 Dawid Seredyński
73 2 Dawid Seredyński
* Writing a Simple Publisher and Subscriber (Python)
74 2 Dawid Seredyński
75 2 Dawid Seredyński
 * Tworzymy odpowiedni węzłów z poprzedniego rozdziału, tym razem w języku Python
76 2 Dawid Seredyński
77 2 Dawid Seredyński
* Examining the Simple Publisher and Subscriber
78 2 Dawid Seredyński
79 2 Dawid Seredyński
 * Wyjście konsoli wygląda nieco inaczej niż w przewodniku,
80 2 Dawid Seredyński
81 2 Dawid Seredyński
* Writing a Simple Service and Client (C++)
82 2 Dawid Seredyński
83 2 Dawid Seredyński
 * Tworzymy węzły napisane w języku C++: serwer usługi i klienta
84 2 Dawid Seredyński
85 2 Dawid Seredyński
* Writing a Simple Service and Client (Python)
86 2 Dawid Seredyński
87 2 Dawid Seredyński
 * Tworzymy odpowiedni węzłów z poprzedniego rozdziału, tym razem w języku Python
88 2 Dawid Seredyński
 * na końcu jest test, który dubluje się z tym z kolejnego rozdziału
89 2 Dawid Seredyński
90 2 Dawid Seredyński
* Examining the Simple Service and Client
91 2 Dawid Seredyński
92 2 Dawid Seredyński
 * i znowu powtórka z rozrywki z testem
93 2 Dawid Seredyński
94 2 Dawid Seredyński
* Recording and playing back data
95 2 Dawid Seredyński
96 2 Dawid Seredyński
 * dane z tematów można zapisywać i odtwarzać, o czym traktuje ten rozdział
97 2 Dawid Seredyński
98 2 Dawid Seredyński
h2. The task:
99 2 Dawid Seredyński
100 2 Dawid Seredyński
* W katalogu roboczym wykorzystywanym podczas przechodzenia przewodnika aktualizujemy plik .rosinstall rozszerzając go (dodająć linię( o repozytorium z organizacji GitHub przedmiotu
101 2 Dawid Seredyński
102 2 Dawid Seredyński
 *<pre>git: {local-name: src/anro-NAZWA_ZESPOLU, uri: 'https://github.com/PW-EITI-ANRO-NUMER_SEMESTRU/anro-NAZWA_ZESPOLU.git', version: 'master'}</pre>
103 2 Dawid Seredyński
 * Jeśli nie ma tego pliku należy wywołać wstool init
104 2 Dawid Seredyński
105 2 Dawid Seredyński
* Pobieramy repozytoria wywołując polecenie wstool update
106 2 Dawid Seredyński
 * Pobierane repozytorium nie może być puste. Jeżeli jest puste można mu dodać np. plik README z poziomu GitHub
107 2 Dawid Seredyński
* wchodzimy do podkatalogu src
108 2 Dawid Seredyński
* Wchodzimy do podkatalogu anro-NAZWA_ZESPOLU
109 2 Dawid Seredyński
* W tym katalogu tworzymy nowy pakiet ROS
110 2 Dawid Seredyński
* Za pomocą dowolnego z dwóch języków (C++, Python) tworzymy program, który będzie służył do sterowania żółwiem
111 2 Dawid Seredyński
 * Program powinien zapewnić sterowanie za pomocą innych klawiszy niż oryginalnie w przewodniku, np: g d p l.
112 2 Dawid Seredyński
 * Klawisze, którymi się steruje, powinny być wczytywane z serwera parametrów. Serwer parametrów startuje automatycznie po uruchomieniu roscore.
113 2 Dawid Seredyński
* Dołączamy plik roslaunch, który uruchomi węzeł żółwia i węzeł sterowania
114 2 Dawid Seredyński
* Testujemy system i przedstawiamy prowadzącemu do oceny
115 2 Dawid Seredyński
116 2 Dawid Seredyński
h2. git repository:
117 2 Dawid Seredyński
118 2 Dawid Seredyński
* Zakładamy, że pakiet ROS jest poprawnie napisany
119 2 Dawid Seredyński
* Dodajemy wszystkie pliki oprócz wynikowych za pomocą polecenia git add
120 2 Dawid Seredyński
* Całość komitujemy lokalnie za pomocą polecenia git commit
121 2 Dawid Seredyński
* na serwer wgrywamy poleceniem git push
122 2 Dawid Seredyński
* W ramach nowo utworzonego repozytorium na serwerze GitHub z własnym pakietem dodajemy wiki z opisem plików źródłowych oraz instrukcją jak uruchomić system opisany w pliku roslaunch. Dodatkowo schemat i opis struktury systemu wraz z użytymi mechanizmami komunikacji.
123 2 Dawid Seredyński
* Podczas prezentacji prowadzącemu pobieramy pakiet z serwera GitHub.