Praca dyplomowa inżynierska Autor : Krzysztof Baranowski Tytuł: Komunikacja bezprzewodowa z grupą robotów mobilnych z wykorzystaniem technologii Bluetooth Opiekun : dr. inż. Wojciech Szynkiewicz
Plan prezentacji Cel i zakres pracy Stanowisko badawcze Założenia projektowe Budowa i działanie serwera Przeprowadzone testy Podsumowanie
Cel i zakres pracy Opracowanie projektu, implementacja oraz wdrożenie serwera komunikacyjnego. Utworzenie warstwy pośredniczącej w komunikacji pomiędzy programem realizującym algorytm gry robotów, a robotem typu HMT2. Umożliwienie gry w dwóch trybach: Tryb robocup Tryb gry pojedynczej Umożliwienie współpracy z systemem operacyjnym zaprojektowanym dla robota HMT2 oraz z programem pracy zdalnej. Określenie wzorców pisania programu klienta.
Stanowisko badawcze (1) Turniej RoboCUP. Drużyna 6 robotów typu HMT2. Budowa mechaniczna robota HMT2: Korpus Dwukołowa baza jezdna Enkodery prędkości Zasilanie Podpory Budowa sterownika elektronicznego robota HMT2: Moduł główny (Adapter Bluetooth EYMF2CAMM-XX firmy TAIYO YUDEN, wyświetlacz LCD) Moduł silników Oprogramowanie sterownika robota HMT2: Program pracy zdalnej System operacyjny
Stanowisko badawcze (2) - Schemat komunikacji z komputerem PC Serwer komunikacyjny. Program mserver-0.23a. Wirtualny port szeregowy COM, (/dev/rfcommX). Klient w sieci Ethernet.
Założenia projektowe (1) Wykorzystanie technologii komunikacji bezprzewodowej Bluetooth. Wykorzystanie sieci Ethernet do współpracy z programami klientów realizującymi algorytm gry robotów. Serwer działa w systemie Linux i jest utworzony w języku C. Ustanawia i zrywa połączenie wykorzystując interfejs komunikacji szeregowej SPP modułu Bluetooth oraz protokół i gniazda RFCOMM. Parametry serwera i meczu określane są w przygotowanym wcześniej pliku konfiguracyjnym. Rozmieszczenie przestrzenne komputera PC i boiska – jak najbliżej siebie. Projekt i implementacja serwera nie zakładają realizacji komunikacji z robotami innego typu niż HMT2.
Założenia projektowe (2) - wykorzystywane mechanizmy języka C TCP_NODELAY – wyłączenie algorytmu Negl’a. SO_REUSEADDR – szybkie ponowne łączenie do gniazda słuchającego (w stanie WAIT gniazda TCP/IP). O_NONBLOCK – przestawienie gniazda w tryb nieblokujący przy komendzie recv(). SELECT() – mechanizm monitorowania wielu gniazd w tym samym czasie. Sprawdza gotowość gniazda do odczytu lub zapisu.
Budowa i działanie serwera (1) Bloki funkcjonalne: Konfiguracja Ustalenie trybu działania Czytanie konfiguracji Nawiązywanie połączeń Z robotami Z klientami Pętla główna Odbiór komend Wykonywanie komend Odmierzanie czasu meczu
Budowa i działanie serwera (2) - tryby pracy Tryb robocup Jeden program klienta. Klient steruje 6 robotami na raz. Tryb pojedynczy Wiele programów klienta. Jeden program klienta steruje jednym robotem.
Budowa i działanie serwera (3) - współpraca z systemem operacyjnym i programem pracy zdalnej Stos BlueZ. Nawiązywanie i zrywanie połączenia. Odczytywanie wartości prędkości. Współpraca z programem pracy zdalnej
Budowa i działanie serwera (4) - komendy wysyłane przez program klienta Stop - zatrzymuje prace serwera. Start - wznawia prace serwera. Restart - resetowanie połączenia z robotem. Quit - odłączenie programu klienta od serwera. Gameover - zakończenie meczu. Chat tekst - wymiana wiadomości pomiędzy programami klientów. P<liczba> - wysyła wartość prędkości (liczba) dla prawego silnika. L<liczba> - wysyła wartość prędkości (liczba) dla lewego silnika. p - pobiera wartość prędkości prawego silnika. l - pobiera wartość prędkości lewego silnika. ?<cyfra> - pobiera wartość odczytaną na jednym z 7 czujników modułu silnikowego sterownika robota. !<cyfra> - pobiera wartość odczytaną na jednym z 3 czujników modułu głównego sterownika robota.
Przeprowadzone testy Środowisko testowe 6 testów Wyznaczenie optymalnej odległości położenia serwera komunikacyjnego i boiska (1-3 metry). Testy szybkości odpowiedzi na wysyłane ciągi komend dla systemu operacyjnego i programu pracy zdalnej. Komendy wysyłane pojedynczo Komendy wysyłane z dużą częstotliwością
Podsumowanie Opracowano serwer komunikacyjny do sterowania drużyną robotów HMT2. Wykorzystano technologię Bluetooth do komunikacji bezprzewodowej z robotami. Umożliwiono współpracę serwera z dwoma wersjami sterownika robota HMT2. Umożliwiono pracę serwera w dwóch trybach docelowym i treningowym. Wykonano testy serwera. Możliwe kierunki rozwoju.