Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mpc_package

Paczka dedykowane jest do symulatora F1TENTH opartego na symulatorze AWSIM v1.1.0

Model pojazdu:

Jako model pojazdu (samochodu), o który został oparty cały kontroler wybrano tzw. kinematyczny model roweru. Został on poddany reformulacji w celu dostosowania go do realizowanego zadania - podążania za trajektorią ścieżki toru. Model przestrzenny (ang. Spatial Bicycle [3]) został sformułowany na podstawie grafki poniżej - zmiennymi stanu są: odsunięcie poprzeczne od ścieżki, błąd kąta yaw oraz dystans przebyty wzdłuż trajektorii.

image
[Model roweru z zaznaczonym układem odniesienia do referencyjnej ścieżki. (ref: [3])]

MPC zwraca jako sterowanie: kąt skrętu koła oraz prędkość wzdłuż osi pojazdu. Regulatorem prędkości jest dodatkowy regulator PID.

Ograniczenia nałożone na pojazd:
v_max = 10.0
delta_max = pi/3.0
ay_max = 8.0
ax_min = -7.0
ax_max = 4.0

Ścieżka referencyjna:

Ścieżka referencyjna została wyznaczona ręcznie jako zbiór kilkudziesięciu punktów wzdłuż trasy (gdzie punkt początkowy jest pierwyszym punktem). Rozdzielczość ścieżki ([waypoint/m]) została zwiększona/dopasowana bazując na mapie zajętości podanej jako obraz. Referencyjna prędkość oraz kąt skierowania pojazdu zostały wyznaczone z uwzględnieniem fizycznych ograniczeń: przyspieszeń wzdłużnych i poprzecznych oraz prędkości maksymalnej. Punkt od którego liczony jest horyzont predykcji wyznaczany jest jako kartezjańsko najbliższy punkt z listy punktów referencyjnych.

ref_path
[Ścieżka referencyjna - waypointy wpisane ręcznie (kolor niebieski) oraz wyliczone na ich podstawie i poddane smoothingowi (kolor czerwony)]

Solver:

OSQP

Środowisko symulacyjne:

Całość sterowania realizowana jest w Callbacku ground_truth, gdzie zbierane są dane potrzebne do wyznaczenia stanu modelu (kinematycznego i potem przestrzennego). Częstotliwość wywoływania wynosi 25Hz.

Strutura projektu

.
mpc_package
├── f1tenth_mpc_lib                  
│   ├── MPC.py             # algorytm MPC
│   ├── spatial_bicycle_models.py   # model pojazdu
│   ├── pid.py            # regulator dynamiki wzdłużnej 
│   ├── map.py            # obsługa mapy (via matssteinweg)
│   └── reference_path.py  # generate reference path, waypoints for the assigned map (via matssteinweg)
├── f1tenth_mpc.py         # plik wykonywalny, zawierający Node sterujący ze wszystkimi callbackami, definicja problemu i wartości parametrów                

Porównanie z Pure Pursuit:

Zestawienie przebiegów prędkości pojazdu w funkcji drogi przebytej wzdłuż środka toru. image
[kolorem zielonym - MPC, żółtym - PP]

Zauważalne jest zatem, że prędkość pojazdu przy zastosowaniu MPC jest dość poszarpana, co może wpływać ostatecznie na jej ograniczenie przez sam kontroler. Pure pursuit w tym przypadku okazało się lepsze, choć prawdopodobnie jest to spowodowane problemami opisanymi poniżej.

Napotkane problemy:

Rozbieżność między lokalizają pozyskiwaną z ground_truth, a lokalizacją pojadu w symulatorze nie pozwalała na łatwe dostosowywanie ścieżki w celach optymalizaji czasu przejazdu. W pojedynczych zakrętach należało dodać dodatkowe punkty na mapie, aby uniknąć kolizji ze ścianą.
Linearyzajca modelu (szczególnie np. przy większych skrętach kierownicy) niepozwala na uzyskanie płynnych i nieoscylujących rozwiązań.
Brak znajomości parametrów pojazdu z symulatora (zastosowanego modelu, geometrii skrętu, itd.) nie pozwoliła na dokładne dobranie parametrów modelu - przy tak prostym przyjętym modelu nie sprawiało to większego problemu.

Bibliografia:

Autorzy:

  • Jan Iwaszkiewicz - Rudoszański
  • Maksymilian Jaruga

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages