ROB
From WikiAI
1. Nazwa polska przedmiotu: Robotyka Behawioralna
2. Kod: ROB
3. Katedra / Zespół: Katedra Systemów Wieloagentowych i Robotyki
4. Rodzaj studiów: magisterskie; specjalizacja MD, EM (Multimedia; Inteligentne systemy przetwarzania danych)
Grupy:
1. Poniedziałek 15:30 - 17:00 S-3 (Paweł Ośmiałowski)
2. Wtorek 17:00 - 19:00 S-3 (Adam Szmigielski)
3. Środa 19:00 - 20:30 S-3 (Paweł Ośmiałowski)
Wykład: Czwartek 17:00 110B (Adam Szmigielski)
Podstawa zaliczenia: wykonane ćwiczenia zadane podczas zajęć dydaktycznych; w ciągu semestru przewidziane są trzy ćwiczenia, których wykonanie zajmie kilka kolejnych zajęć.
Podstawy teoretyczne:
1. Robin R. Murphy - Introduction to AI Robotics, MIT Press, 2000 (dobra książka bo ma mało wzorów i dużo obrazków)
2. Roland Siegwart, Illah R. Nourbakhsh - Introduction to Autonomous Mobile Robots, MIT Press, 2004
3. Gregory Dudek - Computational Principles Of Mobile Robotics, Cambridge University Press, 2000
4. Ulrich Nehmzow - Mobile Robotics: A Practical Introduction, 2nd edition, Springer, 2006
5. Peter Stone - Layered Learning in Multiagent Systems: A Winning Approach to Robotic Soccer, MIT Press, 2000
Dla bardziej dociekliwych:
1. Strona przedmiotu ROB dla specjalizacji Robotyka przygotowana przez Macieja Stankiewicza (bazuje na trochę starszej literaturze)
2. Strona projektu Processing
3. Strona projektu Player/Stage
4. Strona projektu Virtual Robotics Laboratory
Uwagi dotyczące oprogramowania Player/Stage i Virtual Robotics Laboratory:
1. Virtual Robotics Laboratory używa oprogramowania Player. Player został zaprojektowany zgodnie z architekturą Client/Server. Dostarcza usług serwerowych (protokół TCP/IP), drivery do popularnych urządzeń robotycznych oraz zapewnia współbieżność (POSIX threads).
2. Stage to symulator 2D, który jest pluginem do Playera; jest zbiorem driverów udających istnienie rzeczywistych urządzeń.
3. W Virtual Robotics Laboratory używamy Playera w wersji 1.6.5 z naszymi poprawkami. Najnowsza wersja z poprawkami znajduje się w tym katalogu. Jest tam również symulator Stage z naszymi poprawkami w wersji 2.0.0a, która pasuje do Playera w wersji 1.6.5.
4. Powody nie korzystania z Playera w wersji 2.x są następujące:
4.1. Player w wersji 2.x ma problemy z obsługą kamer (wyciek pamięci)
4.2. Player w wersji 2.x nie ma driverów passthrough i dummy, pierwszy wymagany do funkcjonowania laboratorium, drugi przydaje się podczas zajęć.
4.3. Player w wersji 2.x ma więcej wymagań dotyczących bibliotek programistycznych zainstalowanych w systemie.
5. Jest to oprogramowanie bardzo zorientowane na Unixa (zwłaszcza Linuxa). Jednakże udało mi się przygotować programy klienckie dla systemu Windows. Niestety, Client-side może nie wystarczać do wykonania bardziej skomplikowanych ćwiczeń. Wprawdzie możliwe jest skompilowanie i uruchomienie serwera Player pod Cygwinem (tu jest opis jak to zrobić, może być lekko nieaktualny, bo Cygwin ewoluuje), niestety, kompilowanie pluginów nie jest możliwe (z tego też powodu nie daje się skompilować dla Windows symulatora Stage w wymaganej wersji). Zalecana instalacja Linuxa. Pielęgnowane przez nas drzewo pakietów (portage tree) dla dystrybucji Gentoo znajduje się w tym katalogu.
6. Standardowe programy klienckie to: playerv (defaultowy klient serwera Player) i playernav (pozwala na wytyczanie ścieżki, którą podążać będzie robot). Niestety, playerv nie pozwala na wyświetlanie obrazu z kamery, do tego celu stworzyłem osobny program, Videoplayer (zalecane używanie wersji korzystającej z biblioteki gtk2).
7. Programowanie dla playera to dwa zagadnienia: 1. Pisanie pluginów, tutaj w grę wchodzi jedynie język C++. 2. Pisanie programów klienckich z wykorzystaniem bibliotek programistycznych przygotowanych dla poszczególnych języków programowania. Są to:
7.1. libplayerc dla języka C, biblioteka dostępna od razu po zainstalowaniu Playera, najbardziej wspierana przez twórców, stanowi podstawę bibliotek dla pozostałych języków. Libplayerc można używać również z C++.
7.2. playerclient dla języka C++, ta biblioteka jest również dostępna od razu po zainstalowaniu Playera (nie mylić z playercclient - starą biblioteką dla języka C).
7.3. playerc.py dla języka Python, biblioteka standardowo dostępna po zainstalowaniu Playera, patrz również punkt 7.4.
7.4. Projekt Python Robotics (dawniej Pyro) - pozwala na pisanie bardziej rozbudowanych programów klienckich dla Playera w języku Python.
7.5. guileplayer biblioteka przygotowana przeze mnie dla języka Scheme (wymagany interpreter guile w wersji 1.6.x).
7.6. Player Client for Common Lisp dla języka Lisp, wymaga interpretera OpenMCL, który działa tylko na procesorach PowerPC (ostatnio również na x86-64, niestety, nie mamy żadnej maszyny z PowerPC a na najnowszych maszynach z x86-64 zainstalowane zostały systemy operacyjne dla x86-32, więc u nas tego uruchomić się nie da).
7.7. RubyPlayer dla języka Ruby.
7.8. Javaclient dla języka Java (uwaga na wersję! dla nas jest 1.6.5).
7.9. octplayer dla języka octave (bardzo zbliżonego do Matlaba; zaletą jest darmowość Octave'a), nam pasuje wersja 0_18. Niestety, octplayer pozwala na korzystanie z bardzo ograniczonej listy urządzeń.
8. Tutaj dostępne są materiały z warsztatów, które przygotowałem na Dni Trzeciego Świata, zawierają wprowadzenie do korzystania z Virtual Robotics Laboratory, oraz wskazówki jak samemu zainstalować całe oprogramowanie bez konieczności korzystania z uprawnień Administratora Systemu.
9. Pełne korzystanie z Virtual Robotics Laboratory możliwe jest tylko poprzez specjalne proxy autoryzacyjne, co wiąże się z koniecznością posiadania odpowiedniego konta. Bez tego możliwy jest jedynie dostęp w trybie read-only.
