Pawelq86 Napisano Styczeń 23, 2012 Udostępnij Napisano Styczeń 23, 2012 Witam. Chciałbym zaprezentować rezultat pracy dyplomowej magisterskiej wykonanej przeze mnie i kolegę, studentów Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie. Kierunek: Elektronika i Telekomunikacja, Specjalność: Cyfrowe Systemy Sterowania. Głównym celem pracy było wykorzystanie czujników inercyjnych w procesie sterowania robotem humanoidalnym dla poprawy jego zdolności motorycznych. W tym celu stworzona została platforma sprzętowo-programowa, obejmująca robota Futaba RBT-1, sterownik robota, moduł komunikacji bezprzewodowej, aplikacja uruchamiana na komputerze PC oraz symulacja. Sterownik robota oparty został na mikrokontrolerze z rdzeniem ARM7TDMI i wyposażony w kompletny system czujników inercyjnych, magistralę RS485 do komunikacji z serwonapędami robota, moduł komunikacji bezprzewodowej 2.4 GHz oraz Bluetooth. Sterownik komunikuje się radiowo z komputerem PC poprzez moduł radiowy podłączony do portu USB. Aplikacja sterująca uruchomiona na komputerze PC napisana została w środowisku Microsoft Robotics Developer Studio, które przeznaczone jest do tworzenia wielowątkowych, rozproszonych oraz skalowalnych aplikacji wykorzystywanych w robotyce. Aplikacja wykorzystuje wyniki pomiarów uzyskanych drogą radiową do implementacji algorytmów chodzenia i utrzymywania równowagi przez robota. Ponadto aplikacja wykorzystuje sztuczną sieć neuronową do obliczania kinematyki odwrotnej nóg robota. W celu wizualizacji ruchów robota oraz umożliwienia testowania i rozwoju algorytmów bez ryzyka jego uszkodzenia stworzona została symulacja w Visual Simulation Environment, będącym częścią Microsoft Robotics Developer Studio. W symulacji został wykorzystany model 3D robota wykonany w programie 3DS Max. Robot Futaba RBT - 1 W pracy wykorzystano robota humanoidalnego Futaba RBT -1, którego wygląd przedstawiony jest na rysunku poniżej. Robot ten posiada 20 stopni swobody - po 6 dla każdej nogi, po 3 dla rąk, 1 dla tułowia i 1 dla głowy. Robot posiada 255 mm wysokości, 162 mm szerokości (mierzonej w ramionach) oraz wagę wynoszącą 900 g. Głównym czynnikiem decydującym o wyborze tego modelu, były cyfrowe serwonapędy dedykowane do zastosowań w robotyce. Komunikacja bezprzewodowa W celu zapewnienia komunikacji bezprzewodowej między aplikacją sterującą, działającą na komputerze klasy PC a robotem, wykorzystano gotowy moduł radiowy TLX2401 z układem nRF2401 firmy Nordic Semiconductor, działający w nielicencjonowanym paśmie 2,4 GHz. Moduł nRF2401 samodzielnie zarządza procesem nadawania i odbioru danych. Mikrokontroler przesyła dane do wysłania przez magistralę SPI z dowolną prędkością, dane są przechowywane w buforze FIFO zanim zostaną wysłane. Moduł automatycznie tworzy pakiety do wysłania oraz dekoduje odebrane pakiety. Serwonapędy Przy wyborze konstrukcji mechanicznej robota humanoidalnego kierowano się głównie parametrami jego serwonapędów. Robot RBT-1 firmy Futaba posiada 20 cyfrowych serwonapędów. Mimo że cyfrowy serwonapęd RS301CR wygląda podobnie do serwonapędów powszechnie stosowanych w modelarstwie, to posiada wiele cech, które sprawiają, że nadaje się on idealnie do robotów mobilnych. Z punktu widzenia niniejszej pracy najważniejsze są serwonapędy umieszczone w nogach robota. RS301CR jest małym lekkim serwonapędem zaprojektowanym specjalnie do wykorzystania w robotach. Niska masa (28 g) sprawia, że nadaje się do sterowania konstrukcjami o wielu stopniach swobody, jakim jest noga. Posiada dwukierunkową magistralę RS485 do komunikacji z układem sterującym. Komunikacja odbywa się za pomocą określonych komend wysyłanych z układu master, serwonapęd jest układem slave. Wszystkie serwonapędy w robocie podłączone są do wspólnej magistrali RS485. Każde Serwo posiada swój unikalny numer ID, który jest wykorzystywany w protokole transmisji. Tego typu sposób połączenia wymaga jedynie 2 linii do sterowania wszystkimi napędami. Komunikacja odbywa się przy pomocy określonych komend przesyłanych przez magistralę. Protokół komunikacji umożliwia sterowanie każdym z napędów indywidualnie lub wieloma w tym samym czasie za pomocą jednej komendy. Bardzo istotną cechą, która była jedną z decydujących podczas wyboru konstrukcji mechanicznej z napędami, jest możliwość odczytu aktualnych parametrów każdego z napędów. Aktualnymi parametrami są: pozycja, prędkość, obciążenie, temperatura, flagi alarmowe. Serwonapędy posiadają możliwość zadawania pozycji i czasu przeznaczonego na jej osiągnięcie. Umożliwia to płynny ruch bez szarpnięć. Jest to kolejna ważna cecha. Protokół komunikacyjny pozwala na zmianę wewnętrznych ustawień regulatora pozycji każdego z serwomechanizmów. Każde serwo jest fabrycznie skalibrowane. Pomiar pozycji odbywa się z 12-bitową rozdzielczością. Wybór akcelerometru i żyroskopu Sensory typu MEMS są produkowane przez wiele firm, przy dokonywaniu wyboru brano pod uwagę układy producentów, takich jak Freescale, MEMSIC, ST Microelectronics, Analog Devices. Po analizie właściwości i parametrów różnych czujników zdecydowano się na użycie kompletnego systemu czujników inercyjnych ADIS16362 firmy Analog Devices. Wybrany sensor posiada trójosiowy akcelerometr, trójosiowy żyroskop oraz system wstępnego przetwarzania sygnałów. O wyborze sensora ADIS16362 zadecydował głównie fakt, że każdy czujnik jest fabrycznie skalibrowany oraz posiada kompensację wpływu temperatury na pomiary każdego z wewnętrznych czujników w zakresie temperatur od -20°C do 70°C. Fabryczna kalibracja oznacza zlinearyzowanie charakterystyk czujników, eliminację offsetu oraz wyrównanie osi układu czujników. Sensor umożliwia szybkie i efektywne zastosowanie w wielu dziedzinach, gdzie zachodzi konieczność pomiaru przyśpieszeń i prędkości kątowych. Zwalnia z konieczności stosowania złożonych układów analogowych do wstępnego przetwarzania sygnałów, kalibracji i kompensacji czujnika. Posiada szeregowy interfejs SPI do komunikacji, odczytu danych, konfiguracji. Posiada miniaturowe złącze, które jest kompatybilne z innymi sensorami z serii ADIS1635x firmy Analog Devices. Czujnik ma dolnoprzepustowe filtry cyfrowe typu FIR, które redukują szumy na wyjściach czujników. Filtr składa się z dwóch połączonych kaskadowo filtrów uśredniających o charakterystyce okna Bartlett’a. Możliwa jest konfiguracja rządu filtru od 2 do 16. Projekt modułu radiowego z interfejsem USB W celu zapewnienia bezprzewodowej komunikacji sterownika robota z aplikacją sterującą stworzono moduł komunikacyjny. Jako tor radiowy posłużyły opisane w rozdziale 1.4. moduły radiowe TLX2401. Ponieważ komputer klasy PC nie posiada interfejsów SPI, konieczne było stworzenie odpowiedniego układu pośredniczącego między modułem TLX2401 a dostępnym interfejsem komputerowym. Ze względu na uniwersalność wybrano interfejs USB. Obsługa układu radiowego nRF2401 wymagała zastosowania mikrokontrolera z magistralą SPI. Ponieważ mikrokontroler miał za zadanie komunikowanie się z komputerem, niezbędny był również interfejs USB. Ze względu na wyższą cenę uC ze zintegrowanym USB zastosowano oddzielny konwerter USB<->UART podłączony do mikrokontrolera przez magistralę UART. Wymagania co do mikrokontrolera nie były krytyczne, zastosowano układ ATMega88 firmy Atmel. Część programistyczna: Wyznaczanie wychylenia na podstawie pomiarów przyśpieszenia i prędkości kątowych. W systemach INS powszechnie wykorzystywany jest filtr Kalmana. W robotyce filtr Kalmana używany jest w systemach nawigacji bezwładnościowej do filtracji i fuzji pomiarów pochodzących z sensorów mierzących różne wielkości. W wielu komercyjnych układach nawigacji bezwładnościowej używany jest filtr Kalmana, a uzyskane dzięki niemu pomiary charakteryzują się dużą dokładnością. Jedną z wad filtru jest konieczność częstego przeliczania pomiarów, a sam algorytm jest dosyć złożony obliczeniowo. Ze względu na ograniczoną wydajność obliczeniową mikrokontrolera obarczonego wieloma innymi funkcjami, wymagania co do częstotliwości przeliczania były zbyt wysokie w stosunku do możliwości. W celu realizacji systemu INS wykorzystano wydajny filtr orientacji (ang. Efficient Orientation Filter for inertial sesnors) opracowany przez dr Sebastiana Madgwick’a. Kinematyka odwrotna nóg robota została wyznaczona przy pomocy sztucznej sieci neuronowej w programie Matlab. Aplikacja sterująca Sterownik robota odczytuje dane z jego serwonapędów oraz ze zintegrowanego czujnika inercyjnego. Sterownik przesyła uzyskane dane do komputera PC. Dane są przesyłane drogą radiową przy pomocy modułów TLX2401 wykorzystujących pasmo ISM (ang. Industrial, Scientific, Medical) 2,4 GHz, na korzystanie z którego nie jest wymagana licencja. Komputer odbiera dane za pośrednictwem modułu komunikacyjnego wyposażonego w moduł TLX2401, podłączonego do jego portu USB. Dodatkowo robot używa łączności Bluetooth do przesyłania pomiarów z akcelerometrów oraz informacji o wychyleniu robota do programu Matlab w celu ich zobrazowania na wykresie. Program napisany w środowisku Microsoft Robotic Developer Studio (MRDS), uruchomiony na komputerze PC implementuje algorytm chodzenia i utrzymywania równowagi przez robota. Oblicza on (na podstawie otrzymanych danych o pozycji każdego z serwonapędów oraz wychyleniu robota) nowe wartości kątów zgięć każdego z przegubów. Obliczone dane wysyłane są bezprzewodowo z powrotem do robota. Program korzysta także ze środowiska symulacyjnego, będącego częścią MRDS, do wizualizacji i symulacji zachowania robota. Dzięki temu możliwe jest rozwijanie i testowanie algorytmów sterowania bez podłączonego, prawdziwego robota. Symulacja W celu przeprowadzenia symulacji robota w środowisku symulacyjnym Microsoft Robotics Developer Studio VSE sporządzony został jego trójwymiarowy model w programie 3DS Max. Następnie model ten został przeniesiony do środowiska symulacyjnego VSE. Model składa się z 21 części, każda z nich w celu lepszego uwidocznienia, posiada inny kolor. Każda z tych części została przeniesiona do środowiska symulacyjnego w postaci osobnego pliku .obj. Jako obiekt bazowy wybrano tułów robota. Każda część łącząca się z obiektem bazowym jest z nim powiązana relacją rodzic-dziecko i sama staje się rodzicem dla kolejnych części łączących się z nią. W ten sposób wszystkie komponenty robota tworzą hierarchię na szczycie której znajduje się obiekt reprezentujący tułów. Elementy połączone są ze sobą za pomocą złącz o jednym stopniu swobody. Opis działania aplikacji sterującej Napisana aplikacja umożliwia działanie w dwóch trybach: • Tryb symulacji – aplikacja znajduje się w tym trybie, kiedy nie ma fizycznego połączenia z rzeczywistym robotem. W tym trybie obiektem sterowania jest model robota umieszczony w symulacji. • Tryb sterowania – aplikacja komunikuje się poprzez wirtualny port szeregowy z robotem, odbiera informacje o stanie robota oraz wysyła komendy sterujące. W tym trybie symulacja służy jako wizualizacja stanu rzeczywistego robota. Dzięki możliwości pracy w tych dwóch trybach możliwe jest opracowywanie i testowanie algorytmów sterowania robotem humanoidalnym najpierw przy użyciu symulacji, a następnie przeniesienie tych algorytmów na obiekt prawdziwego robota. Takie postępowanie minimalizuje ryzyko uszkodzenia robota w wyniku źle działającego algorytmu oraz pozwala na testowanie algorytmów, kiedy nie jest możliwy dostęp do prawdziwego robota. Realizacja projektu trwała około 1,5 roku. Cześć pozostałych informacji o projekcie znajduje się na filmie (jakość HD) 2 Link do komentarza Share on other sites More sharing options...
bartek1333 Styczeń 24, 2012 Udostępnij Styczeń 24, 2012 Robot na wysokim poziomie - tylko pogratulować! 😃 Czym go zasilacie? Chyba w ramieniu widzę li-pol albo to coś innego jest. 😉 Link do komentarza Share on other sites More sharing options...
Pawelq86 Styczeń 24, 2012 Autor tematu Udostępnij Styczeń 24, 2012 Zasilany jest z li-poli umocowanych po bokach tułowia. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »