\chapter{Stabilizace podvozku}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/arch}
	\caption{Znázornění architektury stabilizačních systémů}
	\label{obr:arch}
\end{figure}

Cílem systému stabilizace podvozku je zlepšení dynamických vlastností vozu.
Toho lze dosáhnout celou řadou prostředků, já se zaměřuji na využití nezávislého pohonu kol.
Tento systém se dá rozdělit na dvě úrovně, jak je znázorněno na obrázku \ref{obr:arch}.
Nejprve je třeba zaručit přilnavost pneumatik, tento problém řeší systém regulace prokluzu \acs{tcs}.
Systém \acs{tcs} reguluje točivý moment motorů jednotlivých kol nezávisle na sobě.
Nad tímto systémem je poté systém \acs{esp}, který v~závislosti na stavu vozidla reguluje točivý moment pro jednotlivá kola.

\section{Systém regulace prokluzu pneumatiky \acs{tcs}}

Jak bylo ukázáno v~semestrální práci\cite{semestralka}, podélná síla vyvinutá pneumatikou nejprve téměř lineárně roste s~prokluzem, ale pouze do prokluzu přibližně $ 15\% $, poté tato síla dále neroste, ba naopak může i klesat.
Prokluz navíc negativně ovlivňuje příčnou přilnavost pneumatiky, takže při vysokém prokluzu má pneumatika nízkou příčnou přilnavost.
Cílem systému \acs{tcs} je udržet prokluz pneumatiky v~optimálním intervalu.
Nejprve v~kapitole \ref{sec:tcs-pid} popisuji variantu diskrétního PID regulátoru použitého v~mém systému a poté popisuji vývoj systému \acs{tcs} a nakonec výsledky zhodnotím v~kapitole \ref{sec:tcs-vysl}.

\subsection{Testovací scénář systému \acs{tcs}}

Abych mohl objektivně zhodnotit výsledky systému \acs{tcs}, musel jsem navrhnout vhodný test.
Využil jsem jednu z~disciplín závodů Formule Student sprint na $ 75 \unit{m} $.
Kritériem testu je čas za jaký vůz urazí tuto dráhu.

\FloatBarrier

\subsection{Chování vozu bez systému \acs{tcs}}

Na obrázku \ref{obr:tcs} je znázorněn průběh akcelerace vozu bez systému \acs{tcs}. Je zde vidět, že zrychlení ihned vzroste na zhruba $ 0,4 \unit{g} $, zároveň vzroste prokluz na hodnotu až 250, jak je vidět na obrázku \ref{obr:tcs-slip}, a poté už zrychlení roste velmi pomalu a špičky $ 1 \unit{g} $ dosáhne v~čase zhruba $ 2,25 \unit{s} $.
Tato špička je způsobena tím, že motor už při těchto rychlostech ztrácí točivý moment, čímž se sníží prokluz na přiměřenou hodnotu.
Poté motor už není schopen dodat tolik točivého momentu, aby vůz dokázal dále zrychlovat tímto tempem.
Až do času zhruba $ 2 \unit{s} $ má kolo prokluz vyšší než 10, což je mnohonásobně více než optimálních 0,15.
Jediný způsob jak zabránit tak vysokému prokluzu je právě omezení točivého momentu.

\FloatBarrier

\subsection{PID regulátor použitý v~systému \acs{tcs}}
\label{sec:tcs-pid}

\begin{figure}
	\centering
	\includegraphics[angle=90,height=\textheight]{obrazky/matlab/tcsv1-pid.png}
	\caption{Schéma PID regulátoru}
	\label{obr:tcs-pid}
\end{figure}

V~systému \acs{tcs} používám modifikaci diskrétního PS-D regulátoru s~filtrací derivační složky ze skript Číslicové řídicí techniky\cite{bcrt}.
Z~tohoto regulátoru jsem vyšel, protože má dva stupně volnosti, díky čemuž je možné dobře optimalizovat jak odezvu na změnu žádané hodnoty, tak i odezvu na poruchu.

Na obrázku \ref{obr:tcs-pid} je schéma mé verze regulátoru.
První modifikací je dynamická saturace na výstupu, tato saturace omezuje rozsah akčního zásahu podle dvou vstupů.
Prvním vstupem je požadovaný moment zadaný plynovým pedálem.
Smyslem tohoto omezení je, aby regulátor při snaze o~dosažení požadované hodnoty nepoužil větší točivý moment než požaduje řidič, což by způsobilo vyšší než žádané zrychlení.
Druhým vstupem je maximální točivý moment, který dokáže motor dodat při aktuálních otáčkách a je odvozený ze závislosti na obrázku \ref{obr:motor}.
Výsledný rozsah omezení se poté vypočítá podle rovnic \ref{eq:signed-min}.

\begin{subequations}
	\label{eq:signed-min}
	\begin{align}
	\var{M} &= \min{ \left( \left| \acs{mw} \right|, \left| \var{M}_\textind{max} \right| \right)} \sign \left(\var{M}_\textind{w}\right) \label{eq:signed-min-m} \\
	\var{M}_\textind{sat,max} &= \max \left(\var{M}, 0\right) \label{eq:signed-min-max} \\
	\var{M}_\textind{sat,min} &= \min \left(\var{M}, 0\right) \label{eq:signed-min-min}
	\end{align}
\end{subequations}

\begin{figure}
	\subfloat[Průběh bez omezení]{
		\label{obr:pid-nes} \includegraphics[width=0.5\linewidth]{obrazky/matlab/pid.pdf}}
	\subfloat[Průběh s~omezením proporcionální a derivační složky]{
		\label{obr:pid-dat} \includegraphics[width=0.5\linewidth]{obrazky/matlab/pid-sat.pdf}}
	\caption{Průběh PID regulátoru prokluzu}
	\label{obr:pid}
\end{figure}

Druhou úpravou jsou bloky saturace v~proporcionální a derivační větvi regulátoru.
Vložil jsem je tam, protože v~některých případech vznikne tak velká regulační odchylka, že i samotná proporcionální nebo derivační složka má hodnotu několikanásobně větší než je pracovní rozsah motoru.
Omezení saturace  se snaží potlačit akční zásah mimo rozsah pomocí integrátoru, který naintegruje takovou hodnotu, aby akční zásah byl v~dovoleném intervalu.
Problém poté nastane, jakmile se začne regulační odchylka zmenšovat.
Pokud se začne snižovat velmi rychle, může zpoždění v~omezení saturace způsobit, že akční zásah regulátoru bude kmitat vysokou frekvencí, jako na obrázku \ref{obr:pid}.
Tyto saturace mají nastaveno omezení na hodnotu přibližně dvakrát větší než je maximální možný výstup regulátoru.

Vzhledem k~nelinearitě chování a celkové komplexnosti vozu jsem hned zpočátku zavrhl analytické metody návrhu regulátoru.
Navíc vzhledem k~časové náročnosti simulace nebylo možné použít automatickou optimalizaci kritéria pomocí \texttt{fminsearch}.
Proto jsem regulátor vždy ladil ručně analýzou chování jednotlivých složek PID regulátoru jako jsou na obrázku \ref{obr:pid}.

\FloatBarrier

\clearpage

\subsection{\acs{tcs} verze 1}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcsv1.png}
	\caption{Schéma \acs{tcs} verze 1}
	\label{obr:tcsv1}
\end{figure}

V~semestrální práci\cite{semestralka} jsem ze simulací odvodil optimální prokluz pneumatiky jako 15\% a podle toho navrhl regulátor prokluzu.
Na obrázku \ref{obr:tcsv1}, je vidět schéma tohoto regulátoru.
Vstupem do regulátoru je požadovaný točivý moment, rychlost vozu v~bodě zavěšení, obvodová rychlost kola a maximální točivý moment, který je schopen motor dodat.
Nejprve se z~rychlosti vozu a obvodové rychlosti kola spočítá skutečný prokluz a z~točivého momentu se odvodí, zda má být žádaný prokluz kladný nebo záporný.
PID regulátor, popsaný v~kapitole \ref{sec:tcs-pid}, poté reguluje na žádaný prokluz.

Na obrázku \ref{obr:tcs} je vidět porovnání akcelerace modelu bez regulace prokluzu a s~regulací prokluzu.
Nový model hnaného kola modeluje další jevy, jedním z~nich je torzní pružnost pneumatiky. Ta výrazně ovlivňuje přenos točivého momentu motoru na prokluz. Zároveň tento model používá jinou definici prokluzu, která je při nízkých rychlostech velmi citlivá a při nepatrné změně rychlosti se výsledný prokluz prudce mění. Proto je tento regulátor nevyhovující.
Z~průběhů lze vidět, že regulátor dá plný akční zásah, což způsobí vysoký prokluz, viz obrázek \ref{obr:tcs-slip}. Takový zásah způsobí, že regulátor nyní čeká, až prokluz klesne na nižší hodnotu než dá další akční zásah.
Jedním z~důvodů takového chování regulátoru je to, že měřím rychlost středu kola a neberu v~úvahu torzní pružnost pneumatiky, takže obvodová rychlost pneumatiky v~místě kontaktu s~vozovkou může být jiná.

\FloatBarrier

\subsection{\acs{tcs} verze 2}

\FloatBarrier

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcsv2.png}
	\caption{Schéma \acs{tcs} verze 2}
	\label{obr:tcsv2}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/slip-lut.pdf}
	\caption{Závislost žádaného prokluzu na rychlosti vozu}
	\label{obr:slip-lut}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcsv2-spd.pdf}
	\caption{Průběh rychlosti karoserie a obvodové rychlosti kola \acs{tcs} verze 2}
	\label{obr:tcsv2-vel}
\end{figure}

Po porovnání zrychlení modelu s~\acs{tcs} s~modelem bez \acs{tcs}, kde je vidět, že při nízkých rychlostech je výhodnější vyšší prokluz, jsem se rozhodl regulátor vylepšit.
Místo regulace na konstantní hodnotu 15\% nyní reguluji podle funkce závislé na rychlosti vozu, viz obrázek \ref{obr:slip-lut}.
Toto výrazně zlepší akceleraci, viz obrázek \ref{obr:tcs}, protože vyšší žádaný prokluz ze začátku nezpůsobí tak vysoký překmit a celkově se průběh akčního zásahu rychleji ustálí.
Průběh akčního zásahu je ale stále velmi kmitavý a navíc je obvodová rychlost kola velmi vysoká, viz obrázek \ref{obr:tcsv2-vel}, což způsobí zbytečné opotřebení pneumatik a spotřebuje energii navíc.
Schéma celého regulátoru je na obrázku \ref{obr:tcsv2}.

\FloatBarrier

\subsection{\acs{tcs} verze 3}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcsv3.png}
	\caption{Schéma \acs{tcs} verze 3}
	\label{obr:tcsv3}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcsv3-vel.pdf}
	\caption{Průběh rychlosti karoserie a obvodové rychlosti kola \acs{tcs} verze 3}
	\label{obr:tcsv3-vel}
\end{figure}

V~této verzi jsem se zaměřil na neoptimální průběh akčního zásahu předchozího regulátoru a neoptimální obvodovou rychlost při nízké rychlosti vozu.
Za stávající regulátor prokluzu jsem zařadil ještě regulátor otáček.
Tento regulátor otáček dále snižuje točivý moment, pokud se kolo točí rychleji než je nastaveno.
Regulátor je nastaven tak, že reguluje rychlost kola na rychlost o~$ 1 \unit{m/s} $ vyšší než je rychlost vozu, ale pouze do rychlosti vozu $ 5 \unit{m/s} $, od vyšší rychlosti je požadovaná rychlost kola $ 30 \unit{m/s} $ a tento regulátor nemá na točivý moment žádný efekt.

Na obrázku \ref{obr:tcsv3} je vidět schéma celého systému a na obrázku \ref{obr:tcsv3-vel} je vidět porovnání rychlosti kola a rychlosti vozu.
Srovnání s~předchozí verzí, viz obrázek \ref{obr:tcsv2-vel}, ukazuje, že rozdíl rychlostí je výrazně menší.
Lepší chování je způsobeno snížením nelinearity regulační smyčky. Toho jsem dosáhl tím, že nereguluji podle prokluzu, který je podle definice velmi citlivý na změny při nízkých rychlostech, ale reguluji obvodovou rychlost, která se tak výrazně nemění.
Na obrázku \ref{obr:tcs} je poté vidět srovnání s~ostatními variantami, zde je vidět, že akční zásah není tak kmitavý a navíc je tento regulátor oproti předchozím verzím i efektivnější.

\FloatBarrier

\subsection{\acs{tcs} verze 4}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcsv4.png}
	\caption{Schéma \acs{tcs} verze 4}
	\label{obr:tcsv4}
\end{figure}

Nevýhodou předchozí verze systému byla složitost, protože obsahoval dva PID regulátory.
Uvědomil jsem si, že je možné z~prokluzu zpětně vypočítat rychlost, a mít tedy jen regulátor rychlosti.
Rovnicí \ref{eq:vw} je možné z~prokluzu a rychlosti karoserie vypočítat obvodovou rychlost kola.
\begin{equation}
\acs{vks} = \acs{vz} \acs{s} + \acs{vz}
\label{eq:vw}
\end{equation}
Regulátor tedy reguluje na žádanou rychlost, vypočítanou z~požadovaného prokluzu 15\% nebo na rychlost o~$ 1 \unit{m/s} $ vyšší než je rychlost karoserie.
Přesný výpočet žádané rychlosti vyjadřuje rovnice \ref{eq:tcsv4-vw}.
Tato nová verze má velmi podobné chování jako verze předchozí, viz obrázek \ref{obr:tcs}, ale používá jen jeden PID regulátor a kompletní schéma je vidět na obrázku \ref{obr:tcsv4}.
\begin{equation}
\acs{vw} = \begin{cases}
\acs{vz} + \max\left(\acs{vks} - \acs{vz}, 1\right) & \acs{mw} > 0 \\
\acs{vz} + \min\left(\acs{vks} - \acs{vz}, -1\right) & \acs{mw} < 0
\end{cases}
\label{eq:tcsv4-vw}
\end{equation}

\FloatBarrier

\subsection{Zhodnocení výsledků systému \acs{tcs}}
\label{sec:tcs-vysl}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcs.pdf}
	\caption{Porovnání modelu bez regulace prokluzu se čtyřmi verzemi regulace prokluzu}
	\label{obr:tcs}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/tcs-slip.pdf}
	\caption{Detail průběhu prokluzu pro vůz bez regulace prokluzu a čtyři verze regulace prokluzu s~vyznačeným optimálním prokluzem 0.15}
	\label{obr:tcs-slip}
\end{figure}

\begin{table}
	\centering
	\caption{Porovnání časů regulátorů prokluzu na 75m sprintu}
	\label{tab:tcs-time}
	\begin{tabular}{|l|r|r|r|}
		\hline
		& čas $ \left[\unit{s}\right] $ & odstup $ \left[\unit{s}\right] $ & relativní odstup $ \left[\unit{\%}\right] $  \\ \hline
		bez regulace & $ 5,722 $ & $ 0,000 $ & $ 0,0 $ \\ \hline
		verze 1 & $ 5,947 $ & $ +0,225 $ & $ +3,9 $ \\ \hline
		verze 2 & $ 5,320 $ & $ -0,402 $ & $ -7,0 $ \\ \hline
		verze 3 & $ 5,248 $ & $ -0,474 $ & $ -8,3 $ \\ \hline
		verze 4 & $ 5,190 $ & $ -0,532 $ & $ -9,3 $ \\ \hline
	\end{tabular}
\end{table}

\begin{table}[!]
	\centering
	\caption{Porovnání spotřebované energie regulátorů prokluzu na 75m sprintu}
	\label{tab:tcs-energy}
	\begin{tabular}{|l|r|r|r|}
		\hline
		& čas $ \left[\unit{s}\right] $ &  spotřebovaná energie $ \left[\unit{kJ}\right] $ & $ \left[\unit{\%}\right] $ \\ \hline
		bez regulace & $ 5,722 $ & $ 144,8 $ & $ 0,0 $ \\ \hline
		verze 1 & $ 5,947 $ & $ 106,5 $ & $ -26,5 $ \\ \hline
		verze 2 & $ 5,320 $ & $ 110,1 $ & $ -24,0 $ \\ \hline
		verze 3 & $ 5,248 $ & $ 107,7 $ & $ -25,6 $ \\ \hline
		verze 4 & $ 5,190 $ & $ 106,9 $ & $ -26,1 $ \\ \hline
	\end{tabular}
\end{table}

Na obrázku \ref{obr:tcs} je vidět srovnání průběhů všech variant regulátorů a na obrázku \ref{obr:tcs-slip} je vidět detail průběhu prokluzu.

V~tabulce \ref{tab:tcs-time} je vidět porovnání časů vozů s~jednotlivými verzemi regulátorů.
Je zde vidět, že první verze regulátoru čas spíše zhoršila a všechny ostatní verze regulátorů již čas zlepšují, čtvrtá verze regulátoru čas zkrátí o~$ 9,3 \% $.
V~tabulce \ref{tab:tcs-energy} poté srovnávám i spotřebovanou energii v~tomto sprintu.
Protože v~tuto chvíli neznám účinnost pohonného systému, absolutní hodnota v~tomto případě nemá žádný smysl, ale poměr těchto energií nám může naznačit skutečnou úsporu.
Zde je vidět že všechny verze regulátoru šetří energii zhruba stejně.

Na základě předchozích měření jsem proto zvolil čtvrtou verzi regulátoru jako obecně nejlepší a budu ji používat při návrhu systému \acs{esp} a bude implementována do řídicí jednotky.

\FloatBarrier

\section{Systém stabilizace rotace vozu}

Cílem tohoto systému je zlepšit dynamické vlastnosti vozu v~zatáčkách optimalizací rozložení točivého momentu.
Tento systém byl navržen jako nadřazený systém systému \acs{tcs}.

\subsection{Testovací scénář systému \acs{esp}}
\label{sec:esp-test}

Abych mohl objektivně zhodnotit tento systém, musel jsem si připravit testovací scénář.
Na rozdíl od systému \acs{tcs} není návrh scénáře tak jednoduchý.
Nepodařilo se mi najít objektivní test, který by byl v~přiměřeném časovém horizontu realizovatelný.

Test, který používám, nedokáže jednoznačně označit nejlepší systém.
Tento test je sestaven tak, že vůz nejprve zrychlí na $ 15 \unit{m/s} $ a po uražení $ 20 \unit{m} $ vůz prudce zatočí doprava.
Vůz se snaží po celou dobu udržet tuto rychlost.
Poté hodnotím trajektorii vozu.
Plná čára značí trajektorii vozu a šipka naznačuje aktuální orientaci vozu.
Díky těmto šipkám jsem schopen určit, zda se vůz dostává do smyku.
Vzhledem k~absenci zpětné vazby v~této simulaci nelze určit, zda by byl řidič schopen tuto pomyslnou zatáčku zvládnout i bez těchto systémů.

Původním záměrem bylo zahrnout i testy s~pevně danou trajektorií a se zpětnou vazbou, ale protože jejich výsledky nebyly přesvědčivé, nepoužil jsem je pro hodnocení.
Pro úplnost jsem tyto testy zahrnul do přílohy, kde v~příloze \ref{sec:skid} ukazuji koncept testu na skidpadu a v~příloze \ref{sec:slalom} ukazuji test vozu ve slalomu.

\subsection{Chování vozu bez systému \acs{esp}}

Systém regulace prokluzu pneumatiky \acs{tcs} omezuje pouze prokluz pneumatiky a bere v~úvahu pouze rychlosti v~ose $ \unit{X} $.
Již v~semestrální práci\cite{semestralka} jsem experimentálně ověřil, že takový systém nemá na chování v~zatáčce velký vliv.
Na obrázku \ref{obr:esp-traj} je vidět trajektorie vozu se systémem \acs{tcs} a vozu bez tohoto systému.
Oba vozy projíždí zatáčkou velmi podobně a je vidět, že oba vozy se postupně dostávají do přetáčivého smyku.

\FloatBarrier

\subsection{\acs{esp} verze 1}

\begin{figure}
	\centering
	\includegraphics[angle=90,height=\textheight]{obrazky/matlab/espv1.png}
	\caption{Schéma systému \acs{esp} verze 1}
	\label{obr:espv1}
\end{figure}

V~semestrální práci\cite{semestralka} jsem navrhl systém, který nejprve z~rovnice \ref{eq:kin-mod-w} vypočítá ideální úhlovou rychlost vozu, z~ní se poté podle rovnice \ref{eq:vr} vypočítají ideální rychlosti v~bodech zavěšení kol.
Rozdíl skutečné a ideální rychlosti v~bodě zavěšení se použije jako regulační odchylka a pomocí proporcionálního regulátoru se upravuje točivý moment daného kola.
Schéma tohoto systému je na obrázku \ref{obr:espv1}.
Na obrázku \ref{obr:esp-traj} je vidět porovnání trajektorie vozu s~tímto systémem, vozem pouze se systémem \acs{tcs} a vozem bez jakýchkoli systémů.
I~když má ze začátku vůz s~\acs{esp} menší poloměr otáčení, dostává se do přetáčivého smyku rychleji než vůz bez tohoto systému.
Tato verze systému je tudíž nevyhovující.

\FloatBarrier

\subsection{\acs{esp} verze 2}

\begin{figure}
	\centering
	\includegraphics[angle=90,height=\textheight]{obrazky/matlab/espv2.png}
	\caption{Schéma systému \acs{esp} verze 2}
	\label{obr:espv2}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[width=0.5\linewidth]{obrazky/matlab/ovr_cut.png}
	\caption{Schéma ochrany proti přetáčivému smyku}
	\label{obr:ovr-cut}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/oversteer.pdf}
	\caption{Závislost zesílení na úhlu \acs{beta} v~bloku omezení přetáčení}
	\label{obr:ovr-cut-lut}
\end{figure}

V~této verzi jsem se zaměřil na problém s~přetáčením.
Jak je vidět na obrázku \ref{obr:esp}, předchozí verze \acs{esp} působila na vnější kolo příliš velkým momentem.
To způsobilo, že se kolo dostalo za hranici své příčné přilnavosti a vůz se dostal do smyku.
Tento problém jsem vyřešil tak, že jsem vytvořil omezení točivého momentu v~závislosti na úhlu prokluzu karoserie \acs{beta}.
Tento úhel vyjadřuje rozdíl orientace vozu a směru pohybu a vypočítá se podle rovnice \ref{eq:beta}.
V~případě, že je tento úhel velký, znamená to, že vůz je ve smyku.
\begin{equation}
	\label{eq:beta}
	\acs{beta} = \arctan \dfrac{\acs{vy}}{\acs{vx}}
\end{equation}

Toho využívám v~této verzi \acs{esp}.
Pomocí úhlu \acs{beta} omezuji limity výstupních saturací podle rovnice \ref{eq:ovr-cut}.
\begin{equation}
\label{eq:ovr-cut}
\var{M}_\textind{u} = \var{M}_\textind{w} \cdot \const{f} \left(\acs{beta}\right)
\end{equation}
Kde $ \var{M}_\textind{u} $ je limit momentu po omezení, $ \var{M}_\textind{w} $ je limit momentu před omezením a $ \const{f} \left(\acs{beta}\right) $ je funkce definována tabulkou, znázorněnou na obrázku \ref{obr:ovr-cut-lut}.
Tato úprava způsobí, že v~případě, kdy je vůz ve velkém smyku, omezí akční zásah.

Tato verze \acs{esp} už dokáže vůz v~prudké zatáčce stabilizovat, jak je vidět na obrázku \ref{obr:esp-traj}.

\FloatBarrier

\subsection{\acs{esp} verze 3}

\begin{figure}[!]
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/w-espv3.pdf}
	\caption{Porovnání ideální úhlové rychlosti se skutečnou úhlovou rychlostí \acs{esp} verze 3}
	\label{obr:w-espv3}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[angle=90,height=\textheight]{obrazky/matlab/espv3.png}
	\caption{Schéma systému \acs{esp} verze 3}
	\label{obr:espv3}
\end{figure}

Předchozí verze \acs{esp} používaly proporcionální regulátor, který, jak je známo, nedokáže plně vyregulovat regulační odchylku.
Proto jsem se pokusil v~této verzi původní regulátor nahradit regulátorem PID.
Výsledné schéma je vidět na obrázku \ref{obr:espv3}.
Problémem ale je, že žádaná hodnota, vypočítaná z~kinematického modelu není přesná, protože tento model zanedbává vlastnosti pneumatiky.
Kombinace nepřesné žádané hodnoty a integrátoru v~regulátoru způsobí, že v~akčním zásahu je patrný jistý trend, jak je vidět na obrázku \ref{obr:esp}, ten způsobí ztrátu stability zhruba po $ 10 \unit{s} $, kterou ale vůz po $ 1 \unit{s} $ opět získá za cenu ztráty rychlosti.
Toto se poté ještě jednou zopakuje a poté je vůz již stabilní.
Nicméně si nemyslím, že toto je výrazný problém, protože vůz reálně nesetrvává tak dlouho v~zatáčce.

\FloatBarrier

\subsection{Zhodnocení výsledků systémů \acs{esp}}

\begin{figure}[bt!]
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/esp-traj.pdf}
	\caption{Porovnání trajektorií vozů různými verzemi \acs{esp}, vozem pouze s~\acs{tcs} a vozem bez těchto systémů}
	\label{obr:esp-traj}
\end{figure}

\begin{figure}
	\centering
	\includegraphics[width=\linewidth]{obrazky/matlab/esp.pdf}
	\caption{Porovnání rychlostí, úhlů prokluzu a točivých momentů vozů různými verzemi \acs{esp}, vozem pouze s~\acs{tcs} a vozem bez těchto systémů}
	\label{obr:esp}
\end{figure}

Na obrázku \ref{obr:esp-traj} je vidět srovnání různých konfigurací tohoto systému, a na obrázku \ref{obr:esp} je porovnání rychlostí, točivých momentů a úhlů prokluzu.
Zde je vidět, že verze 2 a 3 stabilizují vůz.
Verze 2 aplikuje o~něco vyšší točivý moment, což drží vůz po celou dobu v~mírném přetáčivém smyku, což způsobí menší poloměr otáčení, ale za cenu vyššího opotřebení pneumatik a nižší rychlosti.
Verze 3 naopak aplikuje točivého momentu méně, má vyšší poloměr otáčení, projíždí zatáčkou rychleji a zároveň není ve smyku, takže neopotřebovává pneumatiky.
Až testování na voze pravděpodobně rozhodne která z~těchto dvou verzí je lepší.

\chapter{Příprava realizace systémů stabilizace podvozku}

Aby bylo možné řídicí algoritmy, navržené v~předchozích kapitolách, aplikovat na vůz, je nutné je realizovat v~naší řídicí jednotce.
Kompletní realizace není předmětem této práce, pouze zde navrhnu možnou architekturu programu a převedu řídicí algoritmy do formy vhodné pro naši řídicí jednotku.

\section{Výběr platformy pro realizaci řídicích algoritmů}

Platforma realizující tyto řídicí algoritmy musí splňovat několik požadavků.
Tato platforma musí mít dostatečný výpočetní výkon, aby dokázala dostatečně rychle zpracovávat vstupní data a počítat akční zásahy.
Dalším kritériem je jednoduchost naučení se a zprovoznění těchto algoritmů.
Podle těchto kritérií nejlépe vychází platforma STM32.
Tato platforma obsahuje mikrokontrolery s~32~bit šířkou slova a hardwarovou jednotkou pro práci s~čísly s~plovoucí desetinnou čárkou.
Tato platforma je navíc velmi populární, takže je dostupná celá řada zdrojů literatury.
Existuje celá řada dalších platforem od různých výrobců, jako například TI, NSP nebo Freescale, s~podobným nebo vyšším výpočetním výkonem, ale buď jsou spíše určeny pro specializované aplikace nebo se prostě nerozšířily.
V~obou případech to znamená, že jejich uživatelská základna je velmi malá a proto i dostupnost literatury nízká.
Také existují jiné populární platformy jako například AVR, ale protože je to 8~bit platforma bez hardwarové podpory operací s~čísly s~plovoucí desetinnou čárkou, nemá dostatečný výpočetní výkon pro tuto aplikaci.

Mikrokontrolery platformy STM32 se programují nejčastěji v~programovacím jazyce~C, který použiji pro implementaci těchto algoritmů.
Simulink sice umožňuje přímý převod modelů do jazyka C, ale protože s~ním nemám zkušenosti a mé řídicí algoritmy jsou poměrně jednoduché, rozhodl jsem se je převést ručně.
Toto má navíc ještě jednu výhodu, mnou přepsané algoritmy budou čitelnější a tudíž lépe upravitelné při testování přímo v~kódu bez nutnosti upravovat model v~Simulinku.

\section{Rozhraní řídicí jednotky ESP}

Tato řídicí jednotka bude sbírat potřebná data z~více senzorů.
Hlavním zdrojem dat bude INS jednotka Ellipse2-N\cite{ins}, připojená pomocí RS-232.
Pro zpřesnění měření bude tato jednotka doplněna odometrem, což v~našem případě znamená, že se využije jeden snímač rychlosti kola.
Tyto snímače rychlostí kol budou poté také přivedeny do této řídicí jednotky pro případné zpřesnění údajů rychlosti.
Dále je potřeba znát natočení volantu a pozice plynového a brzdového pedálu.
Tyto údaje budou dostupné na sběrnici CAN.
Akční zásah této řídicí jednotky bude odesílán sběrnicí CAN do měniče pro motory.

\section{Architektura programu}
\label{sec:arch}

\begin{figure}[tbh!]
	\centering
	\includegraphics[width=\linewidth]{obrazky/diag/flow.pdf}
	\caption{Znázornění programu}
	\label{obr:flow}
\end{figure}

Na obrázku \ref{obr:flow} je znázorněna zamýšlená architektura programu.
Program je rozdělen do několika nezávislých smyček.
Hlavní smyčka je regulační a běží v~ní hlavní regulační algoritmus navržený v~předchozích kapitolách.
Spouštění této smyčky bude časováno hardwarovým čítačem, aby byla vždy dodržena perioda vzorkování.

Dále zde bude celá řada smyček pro zpracování dat.
Každá z~těchto smyček bude obsluhovat jedno komunikační rozhraní, jako je sběrnice CAN, sériová linka RS-232 a čítače pulzů rychlostí kol.
Smyslem těchto smyček je okamžité zpracování příchozích dat a zařídit odeslání dat, aby nebyla blokována smyčka hlavní.

\section{Implementace}

Do jazyka C jsem převedl své řídicí systémy \acs{tcs} a \acs{esp} ve formě modulů, které je možné použít při implementaci zbytku softwaru, jehož architekturu jsem navrhl v~kapitole \ref{sec:arch}.
Program byl psán s~ohledem na přehlednost a jednoduchou modifikovatelnost.
To znamená, že jsem program rozdělil na co nejvíce samostatné celky, které jsou napsány pokud možno maximálně obecně, aby se daly využít i ve zbytku programu.
Kód jsem zdokumentoval a pomocí nástroje Doxygen jsem vytvořil dokument popisující můj kód.
Tento dokument je přiložen jako zvláštní příloha k~této práci.

