Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterowanie robotem humanoidalnym Futaba RBT-1

paw789 17 Maj 2011 02:08 9737 10
  • Sterowanie robotem humanoidalnym Futaba RBT-1

    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.

    Sterowanie robotem humanoidalnym Futaba RBT-1

    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.

    Sterowanie robotem humanoidalnym Futaba RBT-1

    Do komunikacji między robotem a pakietem Matlab/Simulink wykorzystano moduł Bluetooth BTM-222, który posiada profil wirtualnego portu szeregowego SPP.

    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.

    Sterowanie robotem humanoidalnym Futaba RBT-1

    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.
    Sterowanie robotem humanoidalnym Futaba RBT-1


    Schemat systemu sterowania robotem Futaba RBT-1:
    Sterowanie robotem humanoidalnym Futaba RBT-1

    Zmontowany moduł sterujący wraz z czujnikiem oraz modułami do komunikacji bezprzewodowej:
    Sterowanie robotem humanoidalnym Futaba RBT-1

    Robot z zamontowanym sterownikiem oraz akumulatorami Li-pol po bokach tułowia:
    Sterowanie robotem humanoidalnym Futaba RBT-1

    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.

    W celu umożliwienia użytkownikowi kontroli nad robotem oraz symulacji stworzono prosty interfejs graficzny
    Sterowanie robotem humanoidalnym Futaba RBT-1

    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.
    Sterowanie robotem humanoidalnym Futaba RBT-1

    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)


    Link


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 17 Maj 2011 15:13
    r06ert
    Poziom 25  

    Fajny temat, zawsze sam chciałem coś podobnego zrobić. Mam prośbę, czy kolega może się podzielić bibliotekami do obsługi TLX2401? Swego czasu walczyłem z nimi trochę i nie mogłem zmusić ich do komunikacji ze sobą.

    Pozdrawiam

  • #3 17 Maj 2011 17:28
    felekfala
    Poziom 19  

    Witam,
    świetna robota:D
    wraz z kolegami przymierzam się do budowy segwaya w którym także będzie żyroskop i akcelerometr mógł byś napisać coś więcej o to w jaki sposób skolerować z nich dane ?
    ADIS16362 chyba jest trudno dostępny więc myślimy o wykorzystaniu analogowych odpowiedników.

  • #4 17 Maj 2011 21:07
    paw789
    Poziom 18  

    Biblioteki do obsługi TLX2401 (nRF2401) z modułu komunikacyjnego stworzonego na ATMega88 w załączniku.

    @felekfala co masz na myśli pisząc skorelować ?
    Z dostępnością ADIS16362 nie ma problemu, problemem jest jego cena... Jest już nowsza wersja tego czujnika. Jednak polecam zastosowanie układu typu ADIS jeśli wymagana jest duża dokładność. W przypadku urządzenia działającego w różnych temperaturach dużą rolę odgrywa temperatura, która znacznie wpływa na wyniki pomiarów czujników MEMS. ADIS16362 jest wewnętrznie skompensowany temperaturowo w zakresie −20°C do +70°C, posiada skalibrowaną czułość, wartość pomiarów w spoczynku (bias) oraz skompensowane osie czujników. Można oczywiście uzyskać podobny efekt stosując oddzielne akcelerometry i żyroskopy, do tego filtry analogowe, a następnie kalibracja temperaturowa zrealizowana programowo na uC, tak się robi często w układach IMU w quadrokopterach aby zaoszczędzić na czujniku kosztem pracy i czasu.

  • #6 17 Maj 2011 21:31
    paw789
    Poziom 18  

    Żyroskop mierzy prędkość kątową , to nie to samo co prędkość... tu nie chodzi tylko o usunięcie dryftu żyroskopu (który w tym czujniku jest bardzo mały), jest to zagadnienie bardziej skomplikowane niż może się wydawać.

    Sposób wyznaczania wychylenia był podany w pierwszym poście, wykorzystano publikację "Efficient Orientation Filter for inertial sesnors" stworzoną przez dr Sebastiana Madgwick’a. Link:
    http://imumargalgorithm30042010sohm.googlecod...0and%20inertialmagnetic%20sensor%20arrays.pdf

    Rysunek przedstawia zasadę działania filtru:
    Sterowanie robotem humanoidalnym Futaba RBT-1

  • #7 17 Maj 2011 22:59
    Tomek-85
    Poziom 14  

    Aby wyliczyć prędkość można posłużyć się całkowaniem przyspieszenia z akcelerometru.
    Niestety już mały przechył czujnika od pionu lub poziomu może wprowadzać błąd podczas całkowania.
    Dlatego stosuje się akcelerometry z żyroskopami aby kompensować przechyły.
    Dużo informacji na temat akcelerometrów można znaleźć na stronie -> Konar
    Kolejny ciekawy dokument znajduje się tu -> Memsic #AN-00MX-012
    Szkoda, że kolegom nie udało się zaimplementować filtru Kalmana.
    Gratuluję świetnego projektu!

  • #9 18 Maj 2011 02:21
    paw789
    Poziom 18  

    Tomek-85 napisał:

    Szkoda, że kolegom nie udało się zaimplementować filtru Kalmana.


    Nie próbowaliśmy :) , wykorzystany filtr wykazuje lepsze właściwości przy niskiej prędkości próbkowania w porównaniu do filtru Kalmana. Jedynie lepszy byłby Extended Kalman Filter. Polecam zapoznac się z dokumentem umieszczonym przeze mnie w poprzednim poście, lub innymi pracami o "Complementary Filter" lub "Extended Kalman Filter"

    Sterowanie robotem humanoidalnym Futaba RBT-1

  • #10 09 Lis 2011 15:06
    pio_89
    Uczeń

    Jak przeniosłeś te kąty obliczone z odwrotnego zagadnienia kinematyki do MRDSa ? Masz może plik z tym?