Lab1 » Historia » Wersja 3
Wersja 2 (Dawid Seredyński, 2018-06-13 11:52) → Wersja 3/23 (Dawid Seredyński, 2018-06-13 12:19)
h1. Lab 1: Introduction to ROS www.ros.org
h2. Preparation
* Teams are formed
* The tutor adds teams and their members to organization PW-EITI-ANRO-SUMMER-18 on GitHub.
* Introduction to the laboratories.
h2. Scope:
* Getting familiar with ROS tutorials (http://wiki.ros.org/ROS/Tutorials)
* Read and follow Core ROS Tutorials->Beginner Level without sections: Getting started with roswtf, Navigating the ROS wiki, Where Next?
* We advise you to type commands instead of copying them from the webpage. This should help you remember them.
* Writing your own ROS package.
* Uploading your results (source code) to GitHub
h2. Detailed hints for ROS Ros Tutorials:
* Installing and Configuring Your ROS Environment
* W laboratorium jest już zainstalowany ROS and all needed packages are already installed on computers in the laboratory. You 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 not have to install anything during the class, but you are welcome to install ROS on your own PC. zainstalowania ROS, w szczególności jego odpowiednich pakietów w domu,
* When creating your Catkin worskpace (*Create Tworząc swój katalog roboczy (worskpace) Create a ROS Workspace*) use default setting for Workspace korzystamy z domyślnej opcji catkin
* Navigating the ROS Filesystem
* As in the previous tutorial, stick to a single version of Catkin for all tasks. Podobnie jak poprzednio konsekwentnie trzymamy się wersji catkin. Tak też będzie i w kolejnych pozycjach przewodnika,
* ROS package W laboratorium jest już zainstalowany pakiet ros-tutorials is already installed in the lab.
* The command *roscd log* works only if *roscore* is already running. You can run *roscore* in another terminal.
Żeby polecenie roscd log spowodowało przejście do katalogu z logami konieczne jest wcześniejsze uruchomienie programu roscore w innej konsoli.
* Creating a ROS Package
* Remember to set needed paths using *source* command with proper arguments (your workspace directory). Use this also in the following tasks/tutorials. 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,
* *Do not* follow the section *package dependencies* in the lab. sekcji package dependencies nie przechodzicie w laboratorium
* The last section, *Customizing Na końcu tego rozdziału przewodnika jest opisany sposób personalizacji pakietu Customizing Your Package* is important. You can use any text editor to modify Package. Do edycji pliku package.xml file (e.g. *gedit*, *vim* in terminal). Add to package.xml name of one of memebers of your team. To build your workspace use *catkin_make* command (described in the next section). The command should check for errors (at least some of them) in package.xml and CMakeLists.txt files. 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).
* To compile use command *catkin_make* with proper arguments. You can also use other build commands for catkin, e.g. *catkin_make_isolated* or 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 in default devel mode. However you should stick w domyślnym trybie devel. Jeżeli ktoś zdecyduje się na któreś z rozwiązań to one compilation method through the whole course.
powinien konsekwentnie korzystać z niego przez wszystkie laboratoria.
* Building a ROS Package
* This section describes build procedure for your package.
Ten rozdział taktuje o budowaniu własnego pakietu
* Understanding ROS Nodes
* You can run your Node in this tutorial.
Tutaj uruchamiamy węzeł ROS
* Understanding ROS Topics
* The graph in widok z rqt_graph differs slightly from the one shown in webpage, but it is okay. nieco odbiega od tego w przewodniku, nie należy się tym przejmować
* We use newer distribution of nasza dystrybucja ROS (Kinetic instead of Hydro). jest nowsza niż ROS Hydro
* Video Tutorial can be omitted.
można pominąć
* Understanding ROS Services and Parameters
* To use TAB key autocompletion, begin paths with */* key
wpisując w poleceniach argumenty poprzedzone znakiem / powodujemy, że działa podpowiadanie za pomocą tabulatora
* Using rqt_console and roslaunch
* Look of some windows differ slightly from tutorial webpage, but it does not matter.
okienka wyglądają inaczej niż w przewodniku i nie należy się tym przejmować
* Using rosed to edit files in ROS
* Default domyślny program for editing with *rosed* can be set using *.bashrc* file in your home directory.
do edycji z użyciem rosed można ustawić edytując plik .bashrc w swoim katalogu domowym
* Creating a ROS msg and srv
* You should *source* your *setup.bash* file in your workspace directory.
Tutaj trzeba zrobić source do pliku setup.bash ze swojego katalogu roboczego
* Writing a Simple Publisher and Subscriber (C++)
* Tworzymy węzły napisane w języku C++: wysyłający wiadomości na temacie i odbierający takie wiadomości
* Writing a Simple Publisher and Subscriber (Python)
* Tworzymy odpowiedni węzłów z poprzedniego rozdziału, tym razem w języku Python
* Examining the Simple Publisher and Subscriber
* Wyjście konsoli wygląda nieco inaczej niż w przewodniku,
* Writing a Simple Service and Client (C++)
* Tworzymy węzły napisane w języku C++: serwer usługi i klienta
* Writing a Simple Service and Client (Python)
* Tworzymy odpowiedni węzłów z poprzedniego rozdziału, tym razem w języku Python
* na końcu jest test, który dubluje się z tym z kolejnego rozdziału
* Examining the Simple Service and Client
* i znowu powtórka z rozrywki z testem
* Recording and playing back data
* dane z tematów można zapisywać i odtwarzać, o czym traktuje ten rozdział
h2. The task:
* W katalogu roboczym wykorzystywanym podczas przechodzenia przewodnika aktualizujemy plik .rosinstall rozszerzając go (dodająć linię( o repozytorium z organizacji GitHub przedmiotu
*<pre>git: {local-name: src/anro-NAZWA_ZESPOLU, uri: 'https://github.com/PW-EITI-ANRO-NUMER_SEMESTRU/anro-NAZWA_ZESPOLU.git', version: 'master'}</pre>
* Jeśli nie ma tego pliku należy wywołać wstool init
* Pobieramy repozytoria wywołując polecenie wstool update
* Pobierane repozytorium nie może być puste. Jeżeli jest puste można mu dodać np. plik README z poziomu GitHub
* wchodzimy do podkatalogu src
* Wchodzimy do podkatalogu anro-NAZWA_ZESPOLU
* W tym katalogu tworzymy nowy pakiet ROS
* Za pomocą dowolnego z dwóch języków (C++, Python) tworzymy program, który będzie służył do sterowania żółwiem
* Program powinien zapewnić sterowanie za pomocą innych klawiszy niż oryginalnie w przewodniku, np: g d p l.
* Klawisze, którymi się steruje, powinny być wczytywane z serwera parametrów. Serwer parametrów startuje automatycznie po uruchomieniu roscore.
* Dołączamy plik roslaunch, który uruchomi węzeł żółwia i węzeł sterowania
* Testujemy system i przedstawiamy prowadzącemu do oceny
h2. git repository:
* Zakładamy, że pakiet ROS jest poprawnie napisany
* Dodajemy wszystkie pliki oprócz wynikowych za pomocą polecenia git add
* Całość komitujemy lokalnie za pomocą polecenia git commit
* na serwer wgrywamy poleceniem git push
* 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.
* Podczas prezentacji prowadzącemu pobieramy pakiet z serwera GitHub.
h2. Preparation
* Teams are formed
* The tutor adds teams and their members to organization PW-EITI-ANRO-SUMMER-18 on GitHub.
* Introduction to the laboratories.
h2. Scope:
* Getting familiar with ROS tutorials (http://wiki.ros.org/ROS/Tutorials)
* Read and follow Core ROS Tutorials->Beginner Level without sections: Getting started with roswtf, Navigating the ROS wiki, Where Next?
* We advise you to type commands instead of copying them from the webpage. This should help you remember them.
* Writing your own ROS package.
* Uploading your results (source code) to GitHub
h2. Detailed hints for ROS Ros Tutorials:
* Installing and Configuring Your ROS Environment
* W laboratorium jest już zainstalowany ROS and all needed packages are already installed on computers in the laboratory. You 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 not have to install anything during the class, but you are welcome to install ROS on your own PC. zainstalowania ROS, w szczególności jego odpowiednich pakietów w domu,
* When creating your Catkin worskpace (*Create Tworząc swój katalog roboczy (worskpace) Create a ROS Workspace*) use default setting for Workspace korzystamy z domyślnej opcji catkin
* Navigating the ROS Filesystem
* As in the previous tutorial, stick to a single version of Catkin for all tasks. Podobnie jak poprzednio konsekwentnie trzymamy się wersji catkin. Tak też będzie i w kolejnych pozycjach przewodnika,
* ROS package W laboratorium jest już zainstalowany pakiet ros-tutorials is already installed in the lab.
* The command *roscd log* works only if *roscore* is already running. You can run *roscore* in another terminal.
Żeby polecenie roscd log spowodowało przejście do katalogu z logami konieczne jest wcześniejsze uruchomienie programu roscore w innej konsoli.
* Creating a ROS Package
* Remember to set needed paths using *source* command with proper arguments (your workspace directory). Use this also in the following tasks/tutorials. 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,
* *Do not* follow the section *package dependencies* in the lab. sekcji package dependencies nie przechodzicie w laboratorium
* The last section, *Customizing Na końcu tego rozdziału przewodnika jest opisany sposób personalizacji pakietu Customizing Your Package* is important. You can use any text editor to modify Package. Do edycji pliku package.xml file (e.g. *gedit*, *vim* in terminal). Add to package.xml name of one of memebers of your team. To build your workspace use *catkin_make* command (described in the next section). The command should check for errors (at least some of them) in package.xml and CMakeLists.txt files. 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).
* To compile use command *catkin_make* with proper arguments. You can also use other build commands for catkin, e.g. *catkin_make_isolated* or 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 in default devel mode. However you should stick w domyślnym trybie devel. Jeżeli ktoś zdecyduje się na któreś z rozwiązań to one compilation method through the whole course.
powinien konsekwentnie korzystać z niego przez wszystkie laboratoria.
* Building a ROS Package
* This section describes build procedure for your package.
Ten rozdział taktuje o budowaniu własnego pakietu
* Understanding ROS Nodes
* You can run your Node in this tutorial.
Tutaj uruchamiamy węzeł ROS
* Understanding ROS Topics
* The graph in widok z rqt_graph differs slightly from the one shown in webpage, but it is okay. nieco odbiega od tego w przewodniku, nie należy się tym przejmować
* We use newer distribution of nasza dystrybucja ROS (Kinetic instead of Hydro). jest nowsza niż ROS Hydro
* Video Tutorial can be omitted.
można pominąć
* Understanding ROS Services and Parameters
* To use TAB key autocompletion, begin paths with */* key
wpisując w poleceniach argumenty poprzedzone znakiem / powodujemy, że działa podpowiadanie za pomocą tabulatora
* Using rqt_console and roslaunch
* Look of some windows differ slightly from tutorial webpage, but it does not matter.
okienka wyglądają inaczej niż w przewodniku i nie należy się tym przejmować
* Using rosed to edit files in ROS
* Default domyślny program for editing with *rosed* can be set using *.bashrc* file in your home directory.
do edycji z użyciem rosed można ustawić edytując plik .bashrc w swoim katalogu domowym
* Creating a ROS msg and srv
* You should *source* your *setup.bash* file in your workspace directory.
Tutaj trzeba zrobić source do pliku setup.bash ze swojego katalogu roboczego
* Writing a Simple Publisher and Subscriber (C++)
* Tworzymy węzły napisane w języku C++: wysyłający wiadomości na temacie i odbierający takie wiadomości
* Writing a Simple Publisher and Subscriber (Python)
* Tworzymy odpowiedni węzłów z poprzedniego rozdziału, tym razem w języku Python
* Examining the Simple Publisher and Subscriber
* Wyjście konsoli wygląda nieco inaczej niż w przewodniku,
* Writing a Simple Service and Client (C++)
* Tworzymy węzły napisane w języku C++: serwer usługi i klienta
* Writing a Simple Service and Client (Python)
* Tworzymy odpowiedni węzłów z poprzedniego rozdziału, tym razem w języku Python
* na końcu jest test, który dubluje się z tym z kolejnego rozdziału
* Examining the Simple Service and Client
* i znowu powtórka z rozrywki z testem
* Recording and playing back data
* dane z tematów można zapisywać i odtwarzać, o czym traktuje ten rozdział
h2. The task:
* W katalogu roboczym wykorzystywanym podczas przechodzenia przewodnika aktualizujemy plik .rosinstall rozszerzając go (dodająć linię( o repozytorium z organizacji GitHub przedmiotu
*<pre>git: {local-name: src/anro-NAZWA_ZESPOLU, uri: 'https://github.com/PW-EITI-ANRO-NUMER_SEMESTRU/anro-NAZWA_ZESPOLU.git', version: 'master'}</pre>
* Jeśli nie ma tego pliku należy wywołać wstool init
* Pobieramy repozytoria wywołując polecenie wstool update
* Pobierane repozytorium nie może być puste. Jeżeli jest puste można mu dodać np. plik README z poziomu GitHub
* wchodzimy do podkatalogu src
* Wchodzimy do podkatalogu anro-NAZWA_ZESPOLU
* W tym katalogu tworzymy nowy pakiet ROS
* Za pomocą dowolnego z dwóch języków (C++, Python) tworzymy program, który będzie służył do sterowania żółwiem
* Program powinien zapewnić sterowanie za pomocą innych klawiszy niż oryginalnie w przewodniku, np: g d p l.
* Klawisze, którymi się steruje, powinny być wczytywane z serwera parametrów. Serwer parametrów startuje automatycznie po uruchomieniu roscore.
* Dołączamy plik roslaunch, który uruchomi węzeł żółwia i węzeł sterowania
* Testujemy system i przedstawiamy prowadzącemu do oceny
h2. git repository:
* Zakładamy, że pakiet ROS jest poprawnie napisany
* Dodajemy wszystkie pliki oprócz wynikowych za pomocą polecenia git add
* Całość komitujemy lokalnie za pomocą polecenia git commit
* na serwer wgrywamy poleceniem git push
* 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.
* Podczas prezentacji prowadzącemu pobieramy pakiet z serwera GitHub.