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

Czterokołowy robot mobilny z Raspberry Pi

themin 29 Cze 2015 02:04 5286 5
  • Czterokołowy robot mobilny z Raspberry Pi

    Witam,
    przedstawiony kołowy robot mobilny powstał na potrzeby mojej pracy inżynierskiej, a dokładniej w celu przeprowadzenia testów algorytmu lokalizacji. Przyszłym, praktycznym zastosowaniem robota może być wykonywanie zadań inspekcyjnych, przede wszystkim chodzi o możliwość zdalnego monitorowania danego terenu.

    Założenia projektowe:
    - Konstrukcja czterokołowa, z kołami napędzanymi niezależnie.
    - Zmiana kierunku jazdy przez różnicowanie prędkości kół dwóch stron robota, czyli tak, jak w konstrukcjach typu czołgowego.
    - Elementy konstrukcyjne wykonane ze stopu aluminium.
    - Łożyskowanie osi kół.
    - Nisko zawieszony środek ciężkości, zwarta konstrukcja.
    - Modułowa budowa, aby ułatwić dalszy rozwój projektu. Aktualnie robot składa się z następujących modułów:
    -- moduł zasilania,
    -- moduł sterownika silników,
    -- moduł obsługi sensorów,
    -- moduł komputera nadrzędnego.
    - Komunikacja modułów z wykorzystaniem magistrali I2C.
    - Koła robota zostały wyposażone w enkodery magnetyczne.
    - Wyposażenie w sensory inercyjne, wykorzystywane do lokalizacji.
    - Funkcję jednostki nadrzędnej pełni komputer Raspberry Pi.
    - Komunikacja z robotem wykorzystująca protokół SSH i sieć bezprzewodową Wi-Fi.

    Czterokołowy robot mobilny z Raspberry Pi

    Układ mechaniczny

    Część mechaniczna robota została zaprojektowana w wersji studenckiej oprogramowania Autodesk Inventor 2013. Starano się minimalizować rozmiary robota, zachowując przy tym odpowiednią ilość miejsca dla poszczególnych podzespołów. Celem było uzyskanie zwartej, niezawodnej i dość odpornej na uszkodzenia konstrukcji.

    Czterokołowy robot mobilny z Raspberry Pi Czterokołowy robot mobilny z Raspberry Pi





    Rama robota
    Rama robota wykonana została z aluminiowych ceowników, ze stopu PA38 (EN AW-6060). Płytę podłogową wycięto z blachy aluminiowej o grubości 2 mm. W korpusie robota umieszczono dwie komory do przechowywania akumulatorów. Ich zadaniem jest odizolowanie akumulatorów od pozostałych podzespołów umieszczonych w centralnej części robota.

    Napędy
    Napędy robota to silniki szczotkowe prądu stałego Pololu 37D, z przekładnią 67:1, bez zintegrowanego enkodera. Silnik ten charakteryzuje się: momentem obrotowym o wartości około 1,4 Nm, obrotami na poziomie 150 RPM, poborem prądu bez obciążenia równym 0,3 A i prądem przy zatrzymanym wale osiągającym wartość 5 A. Wymienione parametry osiągane są przy napięciu zasilania równym 12 V.

    Koła
    Wykorzystano koła Mobot MBW-120/55/4, które składają się z plastikowej felgi i gumowej opony z bieżnikiem. Średnica zewnętrzna koła to 120 mm, natomiast wewnętrzna wynosi 55 mm. Ze względu na rodzaj gumy, typ i głębokość bieżnika, koła te nadają się do stosowania na nierównym terenie.

    Czterokołowy robot mobilny z Raspberry Pi

    Przeniesienie napędu na koła
    Przeniesienie napędu na koło zrealizowano z wykorzystaniem zaprojektowanej, wydrążonej osi z otworem pod wał silnika o średnicy 6 mm z jednej strony i otworem gwintowanym z drugiej, gdzie mocowane jest koło. Oś została wykonana ze stopu aluminium w procesie toczenia wałka. Dodatkowo, na końcu osi został wyfrezowany sześciokąt, który umieszczany jest w gnieździe koła. Każda oś koła jest dodatkowo łożyskowana w celu przeniesienia punktu podparcia osi jak najbliżej koła.

    Układ zasilania
    Akumulatory
    Wyposażenie robota w napędy posiadające stosunkowo duże zapotrzebowanie na prąd wymusiło zaopatrzenie go w odpowiednio wydajne źródło zasilania. Zdecydowano się umieścić w robocie akumulatory litowo-polimerowe, które charakteryzują się dużym stosunkiem zgromadzonej energii do wagi i objętości w porównaniu do akumulatorów innych typów oraz posiadają znaczną wydajność prądową.

    Moduł zasilania
    W celu dostarczenia napięć dla poszczególnych modułów, a także zabezpieczenia akumulatorów zaprojektowano osobny moduł zasilania dla robota. Napięcie zasilania dostarczane z akumulatorów zostało w module rozdzielone na trzy linie. Pierwsza odpowiada za dostarczenie napięcia zasilania do silników i płyną w niej największe prądy. Druga linia dostarcza prąd do przetwornic impulsowych obniżających napięcie, z których następnie zasilana jest większa część układów logicznych. Natomiast trzecia linia wykorzystuje stabilizator liniowy i dostarcza zasilanie pomocnicze o napięciu 5 V do układów kontrolujących stan akumulatora. Moduł zasilania zostanie szczegółowo opisany w niedalekiej przyszłości.

    Układ sterowania
    Architektura sprzętowa
    Architektura sprzętowa robota została zaprojektowana w taki sposób, aby pozwolić na realizację zadania lokalizacji, a także innych zadań, które będą w przyszłości rozwijane. Fizyczna realizacja układu sterowania składa się z trzech głównych modułów:
    - moduł obsługi sensorów,
    - moduł sterowania silnikami,
    - jednostka nadrzędna.

    Dodatkowo, wykorzystywane są moduły enkoderów i czujników odległości, które są bezpośrednio połączone z odpowiednim modułem głównym.

    Czterokołowy robot mobilny z Raspberry Pi

    Idea działania systemu jest taka, że komputer nadrzędny zbiera informacje zarówno o stanie robota, jak i otoczeniu, za pomocą podłączonych do niego modułów. Na etapie przetwarzania danych jednostki nadrzędnej wykonywane są między innymi algorytmy lokalizacji, a także wszelkie działania decyzyjne. Następnie, w zależności od przyjętych działań, można za pomocą modułu sterowania silnikami realizować przemieszczenie robota. Dodatkowo, robot łączy się ze stacją roboczą, wykorzystując sieć bezprzewodową Wi-Fi. Z poziomu stacji roboczej można zarówno wydawać komendy jak i nadzorować pracę robota.

    Moduł sterowania silnikami
    Do sterowania napędami robota zaprojektowano i wykonano osobny moduł. Konstrukcja robota oparta na czterech niezależnie sterowanych kołach wymusiła zastosowanie stosunkowo rozbudowanego układu. Spowodowane jest to między innymi wymaganiem synchronizacji prędkości kół robota, szczególnie tych położonych po jednej stronie ramy, aby zminimalizować niepotrzebne poślizgi i straty energii. Dodatkowo, moduł musi obsługiwać cztery enkodery inkrementalne.

    Moduł obsługi sensorów
    Aby zapewnić robotowi informacje o jego stanie, o stanie otoczenia, a także o stanie robota względem otoczenia, zaprojektowano i wykonano moduł sensorów. Zadaniem modułu jest pobieranie danych pomiarowych z zainstalowanych czujników, a następnie w odpowiedzi na żądanie ze strony jednostki nadrzędnej, przesyłanie ich.

    Komputer nadrzędny
    W roli jednostki nadrzędnej zdecydowano się wykorzystać komputer Raspberry Pi w wersji B. Decyzja została podjęta głównie ze względu na stosunkowo niewielki koszt urządzenia, niewielkie rozmiary, a także dostępność dokumentacji i bibliotek w różnych językach programowania. Na Raspberry Pi zainstalowano system Raspbian. Stosunkowo rozbudowana dokumentacja znacznie ułatwia konfigurację systemu. Podstawowe oprogramowanie robota na komputerze Raspberry Pi napisane zostało w języku C.

    Komunikacja ze stacją roboczą
    Realizacja komunikacji między komputerem Raspberry Pi, a stacją roboczą wymagała dołączenia do komputera bezprzewodowej karty sieciowej TP-Link WN725N. Funkcję stacji roboczej pełni PC z zainstalowanym systemem Windows 7. W celu umożliwienia połączenia, z poziomu stacji roboczej utworzono otwarty punkt dostępu (hot-spot). Do tego zadania użyto narzędzia systemowego o nazwie netsh.
    Z komputerem Raspberry Pi można się połączyć wykorzystując chociażby protokół SSH (Secure Shell). Umożliwia to bezpośrednie uruchamianie programów z poziomu komputera Raspberry Pi znajdującego się wewnątrz robota.

    Źródła:
    - Michał Drwięga. Fuzja sygnałów sensorycznych dla potrzeb lokalizacji kołowego robota mobilnego. Praca inżynierska, Politechnika Wrocławska, Wrocław, 2013

    Więcej informacji można znaleźć na mojej stronie www.mdrwiega.com.


    Fajne!
  • PLC Fatek
  • #2 05 Lip 2015 12:49
    pc majster
    Poziom 14  

    Fajny projekt :)
    Mógłbyś zmniejszyć koszty oraz poszerzyć możliwości stosując jakiś terminal z allegro do 20zł.
    Takie komputerki są bardzo wytrzymałe i odporne na skwar, oraz mają procesory x86.
    Zwykle są na 12v, pobierają do 10w-50w i obsługują Linuxa z pendrive :)

  • PLC Fatek
  • #3 05 Lip 2015 14:25
    themin
    Poziom 10  

    Dzięki za informację odnośnie terminali.
    Aktualnie i tak wykorzystuję drugi komputer (laptop z i3), który jeździ na robocie. Po to, aby przetwarzać dane (mapę głębi) z sensora Kinect na potrzeby budowania map i nawigacji robotem.

  • #4 05 Lip 2015 20:42
    pc majster
    Poziom 14  

    themin napisał:
    Dzięki za informację odnośnie terminali.
    Aktualnie i tak wykorzystuję drugi komputer (laptop z i3), który jeździ na robocie. Po to, aby przetwarzać dane (mapę głębi) z sensora Kinect na potrzeby budowania map i nawigacji robotem.

    Wszystko co potrzebujesz masz w terminalu, napędem możesz sterować przez LPT :)
    Moduły masz na USB, jak weźmiesz wydajniejszy z prockiem np: VIA Eden i 256/512/1024/2048 mb ram oraz jakimś pcie to masz lepszy sprzęt z możliwością dodania jakiegoś oszczędnego GPU (karty graficznej) dla graczy :D
    Dzięki niej będziesz mógł skanować teren w 3D :)

    Dodano po 5 [godziny] 41 [minuty]:

    Do sterowsnia kup sobie palmtopa z wifi pcmcia i zainstaluj linuxa :D
    Idą tanio na OLX :)
    W końcu po co masz targać takie gabarety jak laptop?

  • #5 08 Lip 2015 00:18
    themin
    Poziom 10  

    pc majster napisał:

    Wszystko co potrzebujesz masz w terminalu, napędem możesz sterować przez LPT :)
    Moduły masz na USB, jak weźmiesz wydajniejszy z prockiem np: VIA Eden i 256/512/1024/2048 mb ram oraz jakimś pcie to masz lepszy sprzęt z możliwością dodania jakiegoś oszczędnego GPU (karty graficznej) dla graczy :D
    Dzięki niej będziesz mógł skanować teren w 3D :)

    Dodano po 5 [godziny] 41 [minuty]:

    Do sterowsnia kup sobie palmtopa z wifi pcmcia i zainstaluj linuxa :D
    Idą tanio na OLX :)
    W końcu po co masz targać takie gabarety jak laptop?


    Laptopa używam tylko ze względów ekonomicznych. Połączony jest on z Raspberry przez ethernet. Jeżeli chodzi o LPT, to nie byłby mi potrzebny ze względu na wykorzystanie I2C z Raspberry.

    W przyszłości myślałem o podmianie laptopa na komputer Intel NUC. W grę wchodzi też składanie kompa na płycie Pico-ATX . Najlepszym rozwiązaniem byłby komputer przemysłowy, ale to już niestety większy koszt.

    Niestety system nawigacji i samo przetwarzanie danych z Kinecta potrzebuje całkiem dużo mocy obliczeniowej. A jeżeli chciałbym ten system jeszcze rozwijać (np. przez dołożenie drugiego Kinecta) to pewnie i3 będzie za słabe.

  • #6 08 Lip 2015 14:56
    pc majster
    Poziom 14  

    Poczytaj o klastrach obliczeniowych.
    Terminale można łączyć w jeden superkomputer :)
    Do tego polecam systemy linuxowe, np:
    Pelican HPC, CentOS itp.

    Dodano po 11 [minuty]:

    Do 455 mflops wystarczy zwykły switch i zwykła karta sieciowa 100mbit (fast etchernet).
    Taką kartę wbudowaną ma każdy terminal czy płyta główna :)
    W moim serwerze Dell poweredge 2850 z dwoma procesorami jednordzeniowymi, takimi jak jednordzeniowy P4 2.8ghz wyciągają mi w sieci
    gigabitowej 457
    mflops.
    Sprawdzałem z poziomu samego urządzenia i wyszło tyle samo.
    Switch na 24 porty 100mbit na 12v kupisz na allegro za grocie :)
    Nie przepłacaj!!!