1 ARIA:
Transkrypt
1 ARIA:
Laboratorium "Robotyki Mobilnej" zajęcia 5 1 Piotr Kowalski Paweł Musialik ▪ 23 maja 2010 1 ARIA: Aria jest zbiorem bibliotek C++ udostępnianych przez Mobile Robots, przeznaczonych do współpracy i obsługi oferowanych przez nich robotów. Jest dostępna pod systemem Windows lub dowolną dystrybucją systemu Linux. Biblioteka ma różnorodne zastosowania: od prostego sterowania pojedynczych robotów, poprzez implementacje algorytmów mapowania, do tworzenia złożonych projektów wielorobotowych. Więcej informacji na temat biblioteki można znaleźć tutaj. Oprócz bibliotek C++ Aria zawiera również wersję dla języków Python i Java. Podczas dzisiejszych zajęć będziemy korzystać z wersją dla Pythona. Poniżej przedstawione są podstawowe klasy wraz z najważniejszymi metodami, które będą nam potrzebne: ArRobot() - podstawowa klasa robota; dzięki niej możemy wydawać rozkazy oraz sczytywać dane z robota. Obiekt robota deklarujemy następująco: robot=ArRobot() Klasa ArRobot ma następujące przykładowe metody: • move(k)-przejdź k mm • setVel(f)-ustaw prędkość f mm/s • setVel(f1,f2)-umożliwia ustawienie prędkości dla każdego z kół • setHeading(n)-powoduje obróceni się robota do kąta n(podane w stopniach) mierzonego w bezwzględnym układzie współrzędnych • getSonarRange(i)-pobiera wartość mierzone odległości dla sonaru i • getPose()-zwraca aktualną pozycję robota ArSonarDevice() - klasa reprezentująca sonar; dołącza się ją do robota ArUtil.sleep(k) – polecenie czekania k ms UWAGA! Podczas wydawania rozkazów robotowi, konieczne jest zablokowanie od niego dostępu poprzez komendę robot.lock(). Wydane polecenia są wykonywane po odblokowaniu: robot.unlock(). Przykład: robot.lock() robot.move(500) robot.unlock() ArUtil.sleep(2000) #dajemy 2 sekundy na wykonanie zadania 1 Na podstawie kusów MIT OCW http://ocw.mit.edu 2 Roboty Podczas zajęć będziemy używać 2 rodzajów robotów: • Amigobot - robot o napędzie różnicowym, wyposażony w 6 przednich i 2 tylne sonary • Pioneer 3DX - robot o napędzie różnicowym, wyposażony w 8 sonarów przednich i 8 tylnych Dokładniej informacje o robotach można znaleźć pod linkami. Aby zaprogramować robota należy podłączyć go od komputera za pomocą kabla RS232. Na zajęciach udostępniony zostanie program szkieletowy z zaimplementowanymi komendami pozwalającymi na połączenie się z robotem. Do zrealizowania będą 3 zadania,które będą wykonywane dwoma metodami: na robocie i symulacyjną: • Uruchomienie programu na robocie: ◦ podłączenie robota do komputera za pomocą udostępnionego kabla(należy się upewnić, że przejściówka USB-RS232 jest ustawiona jako port COM1(lista urządzeń USB i menadżer urządzeń) ◦ zapisanie programu w pliku podstawowy.py , umieszczonym na pulpicie(należy wpisać wszystkie komendy w wyznaczonym do tego miejscu) ◦ dwukrotne kliknięcie na wspomnianym pliku • Uruchomienie programu: ◦ uruchomienie symulatora MobileRobots->MobileSim) MobileSim (menu Start->Programy-> ◦ analogicznie z punktem 2 i 3 dla robota(plik może nazywać się simple.py) 3 Test kwadratu Pierwszym zadaniem będzie przeprowadzenie tzw testu kwadratu na podstawie, którego określona zostanie jakość odometrii robota. Test polega na przejechaniu robotem po kwadracie o boku określonej długości, tylko na podstawie danych z odometrii. Następnie mierzone jest odchylenie pozycji startowej od końcowej. Plan zadania: • napisz program umożliwiający robotowi poruszanie się po kwadracie • wykonaj kilka pomiarów dla różnych długości boków kwadratu • wykonaj wykres błędu w zależności od długości boku kwadratu • opracuj wnioski 4 P oążd a n i e Drugim zadanie jest napisanie prostego programu podążania za obiektem. Robot stara się zachować stały dystans od obiektu znajdującego się na wprost niego. Jeżeli obiekt się przybliża, robot cofa się, jeżeli oddala, podąża za nim. Dystans od obiektu będzie mierzony za pomocą sonarów. Podczas wykonania zadania postaraj się odpowiedzieć na następujące pytania: Jaki jest zakres działania sonarów? Jak są indeksowane? Czy sonary zawsze wskazują poprawne wartości odległości? Jakie są powody ewentualnych błędnych pomiarów? Jakie czynniki mają wpływ na dokładność zachowywanego dystansu? 5 Nawigacja Trzecim zadanie jest napisanie programu pozwalającemu robotowi na poruszanie się z punktu startowego do punktu końcowego o zadanych współrzędnych. W trakcie jazdy robot dodatkowo zbiera i zapisuje do pliku pomiary z sonarów robota. Następnie na podstawie zabranych danych należy wykonać mapy pomieszczenia w którym znajduje się robot. Czy są one dokładne? Jakie czynniki wpływają na dokładność mapy? 6 Przeszkody(opcjonalny) Wzbogać program z punktu 5 w prosty algorytm omijania przeszkód.