Skalibrowana mata i pasy 3D — testy dokładności

Pierwsza seria ćwiczeń. Przejazdy po torze modułowym i weryfikacja szacowania pozycji

Koncepcja. Środowisko do badań - składana mata i pasy ruchu

Ten post to propozycja zestawu ćwiczeń ilustrujących estymację trajektorii z przejazdu po makiecie drogi. Najpierw prezentuję samo środowisko. Makieta to czarna, składana mata oraz białe „klocki–szyny” udające pasy ruchu, wykonane w technice druku 3D. Elementy łączę na wpusty („na klik”). Przygotowałem dwa zestawy łuków o znanych promieniach $R_{\mathrm{ICR}}$: 250 mm i 500 mm (segmenty po 15°) oraz dwa zestawy prostych (długości 100 i 200 mm). Pozwala to szybko zbudować różne trasy.

Rysunek poniżej pokazuje jedną z konfiguracji toru:

TorCw1

Ponieważ mata składa się z płytek o stałych wymiarach, a łuki i proste mają zadaną geometrię, traktuję trasę jako skalibrowaną. Na tak przygotowanej makiecie sprawdzam funkcjonalność modelu pojazdu i przydatność modeli obliczeniowych. Na ostrych zakrętach jadę wolno, aby ograniczyć poślizgi (pojazd nie ma dyferencjału kątowego). Poniżej surowe serie: prędkości i prądy silników oraz kąty serw (FBK) przed obróbką — dane wejściowe do resamplingu 50 Hz.

DaneSur

Następnie, jak wcześniej, wyznaczam sygnały sterujące w punkcie środka pojazdu:

Sterowanie

Otrzymana trajektoria:

Trajekt

Widać rozbieżność końcowej pozycji w kierunku osi (Y) (w (X) jej nie ma — pojazd rzeczywiście zatrzymał się nieco dalej). Różnica w (Y) wynosi około 10 cm. Jest to „znoszenie”, którego prawdopodobną przyczyną jest brak dyferencjału kątowego i wynikające z tego poślizgi na łukach; przy większej prędkości odchylenie byłoby zapewne większe. Na koniec prezentuję oszacowane błędy (przy założeniu normalnych rozkładów szumów):

Blad

Błędy narastają powoli i przewidywalnie wzdłuż trasy, co potwierdza stabilność odometrii przy niskich prędkościach i umiarkowanych kątach skrętu.

Zadanie wprowadzające. Sprawdzenie poprawności nastaw dyferencjału

Nastaw programowo kąt skrętu na jedną z wartości $\delta \in {5^\circ,10^\circ,\ldots,35^\circ}$ i wyłącz pojazd z takim ustawieniem kół. Wolno przepychaj pojazd po macie tak, aby środek pojazdu wykonał 1–2 pełne okręgi. Zlicz obroty kół: $N_{\mathrm{in}}$, $N_{\mathrm{out}}$.

Pomiary geometryczne (bez modelu):

Obliczenia z pomiarów:

Oblicz przewidywne wartości teoretyczne z modelu Ackermana (idealna zbieżność):

$ \begin{aligned} R_{\mathrm{ICR}}(\delta) &= \dfrac{L}{2\,\tan \delta}
\end{aligned} $

$ \begin{aligned} R_{\mathrm{in}}(\delta) &= \sqrt{\left(R_{\mathrm{ICR}}(\delta) - \dfrac{D}{2}\right)^{2} + \left(\dfrac{L}{2}\right)^{2}}
\end{aligned} $

$ \begin{aligned} R_{\mathrm{out}}(\delta) &= \sqrt{\left(R_{\mathrm{ICR}}(\delta) + \dfrac{D}{2}\right)^{2} + \left(\dfrac{L}{2}\right)^{2}}
\end{aligned} $

$ \begin{aligned} S_{\mathrm{model}}(\delta) &= \dfrac{R_{\mathrm{out}}(\delta)}{R_{\mathrm{in}}(\delta)} \end{aligned} $

Oceń wyniki i sformułuj wnioski:

$ \begin{aligned} \frac{n_{\mathrm{out}}}{n_{\mathrm{in}}} =\frac{1-\kappa}{1+\kappa}\;S_{\mathrm{model}} \quad\Rightarrow\quad \kappa=\frac{S_{\mathrm{model}}-S_{\mathrm{meas}}}{S_{\mathrm{model}}+S_{\mathrm{meas}}} \end{aligned} $

i podaj proponowaną wartość $\kappa(\delta)$ z eksperymentu.

Cel pierwszej serii ćwiczeń

Instrukcja do tej serii ćwiczeń (pdf) jest na stronie githuba.

Materiały wejściowe

1) Import, synchronizacja, jednostki

Zadanie:

Wyniki:

2) Odometria 4WS (Ackermann‑predict)

Równania aktualizacji stanu:

\[\begin{aligned} x_k = x_{k-1} + V_k\,\Delta T \cos \Theta_{k-1} \end{aligned}\] \[\begin{aligned} y_k = y_{k-1} + V_k\,\Delta T \sin \Theta_{k-1} \end{aligned}\] \[\begin{aligned} \Theta_k = \Theta_{k-1} + \dfrac{2 V_k\,\Delta T}{L}\,\tan \delta_k \end{aligned}\]

Zadanie:

Wyniki:

3) Niepewność i elipsy 3‑sigma

Założenia:

\[\begin{aligned} P_0 = \mathrm{diag}\big(\sigma_x^2,\ \sigma_y^2,\ \sigma_\Theta^2\big) \end{aligned}\] \[\begin{aligned} Q_0 = \mathrm{diag}\big(\sigma_V^2,\ \sigma_\delta^2\big) \end{aligned}\]

Macierze Jacobiego:

\[\begin{aligned} F_k = \begin{bmatrix} 1 & 0 & -V_k\,\Delta T\,\sin \Theta_{k-1} \\ 0 & 1 & \ \ V_k\,\Delta T\,\cos \Theta_{k-1} \\ 0 & 0 & 1 \end{bmatrix} \end{aligned}\] \[\begin{aligned} G_k = \begin{bmatrix} \Delta T \cos \Theta_{k-1} & 0 \\ \Delta T \sin \Theta_{k-1} & 0 \\ \dfrac{2\,\Delta T}{L}\,\tan \delta_k & \dfrac{2\,V_k\,\Delta T}{L}\,\sec^2 \delta_k \end{bmatrix} \end{aligned}\]

Propagacja: $\hat x_k^{-} = f(\hat x_{k-1}, z_k)$ $P_k^{-} = F_k P_{k-1} F_k^\top + G_k Q_k G_k^\top$ $z_k = [V_k,\ \delta_k]^\top$

Zadanie:

Wyniki:

4) Weryfikacja na makiecie: korytarz z pasów

Zadanie:

Wyniki:

5) Pętla zamknięta (ósemka / pętla parkingowa)

Zadanie:

Wyniki:

6) (Opcjonalnie) Dopasowanie łuku

Zadanie:

Wyniki:


Kryteria oceniania

Poprawność techniczna

Jakość analizy

Prezentacja i wnioski

Punktacja sugerowana

Ocena 3 - 51%, 3.5 - 61%, 4 - 71%, 4.5 - 81%, 5 ponad 91%.

Uwaga praktyczna