Sterownik silników DC do platform mobilnych z wsparciem dla środowiska ROS

Maj 11, 2016
Wysłane przez Michał Drwięga

Sterownik silników szczotkowych DC został wykonany w oparciu o 32-bitowy mikrokontroler  Kinetis. Podstawowe przeznaczenie urządzenia to sterowanie napędami platform mobilnych zarówno dwu jak i czterokołowych. Jednak szereg zaimplementowanych funkcji sprawia, że urządzenie jest  stosunkowo uniwersalne i może być wykorzystane do innych celów. To co przede wszystkim odróżnia ten projekt od innych sterowników silników to wsparcie dla środowiska ROS (Robot Operating System) oraz obliczanie danych odometrycznych, czyli względnego przesunięcia i orientacji platformy na podstawie informacji z enkoderów. Wykorzystanie urządzenia wraz ze środowiskiem ROS może znacznie przyspieszyć zarówno proces tworzenia jak i uruchamiania oraz testowania robotów mobilnych. Wraz z urządzeniem dostarczane jest API w języku C++ oraz dedykowana aplikacja do konfiguracji i diagnostyki sterownika. Poniżej przedstawiono możliwości urządzenia.

Funkcjonalności sterownika:

  • obsługa do 4 silników DC,
  • napięcie zasilania silników w przedziale 6 – 24 V DC,
  • ciągły prąd do 8 A na silnik przy zapewnieniu odpowiedniego chłodzenia,
  • prąd maksymalny do 20 A na silnik,
  • komunikacja z komputerem przez USB (HID),
  • obsługa do 4 enkoderów inkrementalnych (wejścia A, B) z poziomami logicznymi 3,3 V lub 5 V,
  • dwa tryby sterowania:
    • zamknięta pętla prędkościowa z regulatorem PID,
    • brak pętli sprzężenia zwrotnego,
  • dobór parametrów regulatorów PID dla każdego silnika oddzielnie,
  • układ monitorujący, który zatrzymuje silniki w przypadku utraty komunikacji,
  • szereg zabezpieczeń zarówno sterownika jak i silników,
  • dwa tryby dla różnych typów platform mobilnych: dwukołowych (możliwość połączenia równoległego kanałów) i czterokołowych,
  • obliczanie danych odometrycznych, czyli względnego przemieszczenia i orientacji platformy na podstawie danych z enkoderów,
  • 4 wyjścia cyfrowe o obciążalności do 1 A każde (np. do hamulców), napięcie wyjściowe równe napięciu zasilania silników,
  • 4 wejścia cyfrowe (możliwość skonfigurowania ich jako: stop awaryjny, przycisk deadman, ograniczenie prędkościowe lub do innego celu),
  • niewielkie zużycie energii w trybie stand-by,
  • graficzny interfejs użytkownika (GUI) do konfiguracji i diagnostyki modułu sterownika,
  • udostępnione API w C++,
  • dostępny moduł w środowisku ROS Hydro/Indigo/Jade/Kinetic do obsługi urządzenia.
  • wymiary 70 x 70 x 20 mm,
  • waga około 200 g.

 

Poniżej przedstawiono schemat blokowy urządzenia zawierający między innymi interfejsy enkoderów, blok mikrokontrolera, stopień mocy oraz moduły wejść i wyjść cyfrowych.

 

Schemat blokowy sterownika silników
Schemat blokowy sterownika silników

 

Węzeł w środowisku ROS

Poniższy diagram przedstawia strukturę modułu obsługującego urządzenie w środowisku ROS. Węzeł subskrybuje takie informacje jak zadana prędkość liniowa i kątowa robota oraz stany wyjść cyfrowych. Natomiast publikowane są informacje o względnych przesunięciach i orientacji robota, stany wejść cyfrowych, napięcie wejściowe oraz stan urządzenia. Wykorzystywane są jedynie standardowe typy wiadomości środowiska ROS. Kod węzła w C++ został umieszczony na GitHubie: https://github.com/mdrwiega/md_drive_controller .

 

drive_controller_node
Struktura węzła w środowisku ROS obsługującego sterownik silników

 

Projekt elektroniki

Część elektroniczna urządzenia została zaprojektowana w programie KiCad (opensource). Poniższa wizualizacja została również wygenerowana w programie KiCad.

mdmc4v1_main_v2_white_1
Wizualizacja urządzenia wykonana w programie KiCad
Testy urządzenia

Sterownik silników został przetestowany w robocie mobilnym, opisanym w temacie: System autonomicznej nawigacji robota mobilnego w środowisku ROS. Poprawność działania systemu odometrycznego została potwierdzona z wykorzystaniem systemu śledzenia ruchu (motion capture) OptiTrack składającego się z sześciu kamer.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

  • Polski
  • English