Projekt symulacji ruchu łazika mobilnego został opracowany jako narzędzie edukacyjne i badawcze, mające na celu zrozumienie dynamiki ruchu robotów mobilnych oraz sposobów ich sterowania.
Symulacja bazuje na równaniach różniczkowych oraz różnicowych opisujących ruch w dwóch wymiarach, uwzględniając:
- Prędkość liniową,
- Prędkość kątową,
- Orientację względem układu współrzędnych.
Wykorzystano zaawansowane metody numeryczne, takie jak integracja ODE (zwykłych równań różniczkowych), co pozwala na dokładne odwzorowanie trajektorii ruchu w dynamicznie zmieniających się warunkach.
Dzięki dodatkowej integracji systemów ROS 2 oraz symulacji Gazebo projekt umożliwia dynamiczne modelowanie bardziej złożonych scenariuszy ruchu, uwzględniając czynniki takie jak masa łazika, tarcie czy nierówności terenu.
-
Modelowanie dynamicznego ruchu: Symulacja odwzorowuje płynne zmiany prędkości liniowej i kątowej w realistycznych warunkach robotycznych.
-
Integracja równań różniczkowych i różnicowych: Użycie metod matematycznych pozwala na dynamiczne obliczanie orientacji oraz trajektorii łazika.
-
Tworzenie narzędzia edukacyjnego: Projekt stanowi pomoc dydaktyczną dla studentów i badaczy zajmujących się kinematyką i dynamiką robotów mobilnych.
-
Rozszerzalność: Projekt można rozbudować o elementy sztucznej inteligencji, systemy sterowania oparte na ROS 2 oraz integrację z rzeczywistymi czujnikami.
Ruch łazika jest opisany za pomocą równań różniczkowych:
-
Położenie w osi
$(x)$ i$(y)$ :$\frac{dx}{dt} = v \cos(\theta), \quad \frac{dy}{dt} = v \sin(\theta)$ -
Zmiana orientacji kątowej:
$\frac{d\theta}{dt} = \omega$ Gdzie:
-
$(x, y)$ – współrzędne pozycji łazika, -
$(\theta)$ – orientacja łazika względem osi$(x)$ , -
$(v)$ – prędkość liniowa, -
$(\omega)$ – prędkość kątowa.
-
Prędkość kątowa wynika z różnicy prędkości kół:
Gdzie:
-
$(v_R)$ ,$(v_L)$ – prędkości kół prawego i lewego, -
$(d)$ – odległość między kołami (rozstaw osi).
Do obliczeń numerycznych stanu łazika w kolejnych krokach czasowych wykorzystano równania różnicowe:
-
Położenie:
$x_{k+1} = x_k + v_k \cos(\theta_k) \Delta t, \quad y_{k+1} = y_k + v_k \sin(\theta_k) \Delta t$ -
Orientacja:
$\theta_{k+1} = \theta_k + \omega_k \Delta t$
Gdzie:
-
$k$ oznacza bieżący krok czasowy, -
$\Delta t$ – interwał czasowy.
Symulacja korzysta z metody numerycznej integracji:
Gdzie:
-
$(\text{odeint})$ – funkcja z bibliotekiscipy
, -
$(\text{state}(t))$ – stan łazika (pozycja$(x, y)$ i orientacja$(\theta)$ ) w chwili$(t)$ .
- Język programowania:
- Python
- Biblioteki:
scipy
(metodaodeint
do rozwiązywania równań różniczkowych),numpy
(operacje numeryczne),matplotlib
(wizualizacja trajektorii).
- Systemy robotyczne:
- ROS 2 (Robot Operating System),
- Gazebo (symulacja 3D ruchu robotów).
- Metody matematyczne:
- Równania różniczkowe zwyczajne (ODE),
- Równania różnicowe.
-
Trajektoria ruchu: Symulacja rysuje ścieżkę łazika w przestrzeni 2D, pokazując wpływ zmian prędkości i orientacji w czasie.
-
Dynamiczne zmiany prędkości: Wykresy prędkości liniowej i kątowej w funkcji czasu.
-
Interaktywna wizualizacja: Integracja z Gazebo pozwala na podgląd 3D trajektorii łazika w wirtualnym środowisku.
Projekt może być używany w:
- Edukacji, jako materiał dydaktyczny dla studentów robotyki,
- Badaniach, do symulowania algorytmów sterowania i optymalizacji,
- Prototypowaniu, w kontekście rozwoju robotów mobilnych.
Projekt został podzielony na moduły znajdujące się w odpowiednich folderach:
Zawiera wszystkie pakiety ROS 2 niezbędne do uruchomienia oprogramowania symulującego równania różnicowe.
Zawiera projekt oparty na ROS 2, korzystający z dystrybucji „humble”. Projekt integruje symulację, wizualizację, teleoperację i sterowanie robotem.
Odpowiada za interfejs użytkownika oraz wizualizację wyników symulacji równań różniczkowych.