这是一次绝望的求助。我正在用 LaTeX 写论文,遇到了一些问题。我在论坛上寻求帮助,然后我得到了,为什么你这样做,为什么不这样做……我已经很困惑了。我是 LaTeX 的新手,有时很难理解回复。
我写这篇文章是因为我很快就要交论文了,而我的论文中还有一些大问题没有解决。所以我迫切需要帮助。
我希望有人能仔细阅读我的所有论文,并讨论/帮助我如何解决问题,必要时还可以更改我的一些解决方案,以获得一份像样的论文形式。
如果有人愿意以互动的方式帮助我,我将不胜感激。正如我所说,有几个问题,而不仅仅是一个。
我分享了整个 LaTeX 代码,并添加了我最初的问题。提前谢谢您!
该文件:
\documentclass[12pt]{article}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{blindtext} % kamuszoveget ad
\usepackage{hyperref} % ez csinal linket a contentsbol
\usepackage{geometry} % ez a margin beallitasokat
\usepackage{fancyhdr} %ez az oldalszamozast csinalja
\usepackage{mathptmx} % ez a times new roman
\usepackage{etoolbox}
\usepackage{sectsty}
\usepackage[document]{ragged2e} %justification left/right
\usepackage{titlesec}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[ceqn]{nccmath}
%\usepackage[fleqn]{nccmath}
\usepackage{mwe} %kepek egymas mellett
\usepackage{color,soul} %sorkiemelő
\usepackage{xcolor} %sorkiemelő
\usepackage[disable]{todonotes} %todo buborekok
\usepackage{verbatim} %a kikommenteleshez
\usepackage{epigraph} %idezet az elso oldalon
\usepackage{mathtools}
\pagestyle{fancy}
\fancyfoot{}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\fancyhead[C]{\thepage}
%\pagenumbering{arabic}
\allsectionsfont{\centering}
\subsectionfont{\normalsize\bfseries}
\renewcommand{\baselinestretch}{1.5}
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\@makechapterhead}{\huge}{\large}{\center}{}% for \chapter
\patchcmd{\@makechapterhead}{\Huge}{\large}{\center}{}% for \chapter
\patchcmd{\@makeschapterhead}{\Huge}{\large}{\center}{}% for \chapter*
\makeatother
\allsectionsfont{\centering}
\subsectionfont{\normalsize\bfseries}
\subsubsectionfont{\normalsize\bfseries}
\renewcommand{\baselinestretch}{1.5}
\renewcommand{\figurename}{Ábra}
\geometry{a4paper, left=35mm, right=20mm, top=40mm, bottom=40mm}
\title{Diplomamunka}
\date{}
\author{Zsarnowszky Loránt}
\begin{document}
\maketitle
\newpage
\tableofcontents
\clearpage
%\justify
\section{Bevezetés}
%ez itt egy komment
%\epigraph{Bip bip bee bee bip}{\textit{R2-D2}}
\begin{justify}
Alapvetően három különböző típusú robotot különböztetünk meg: a vezérelt robot, az automatizált robot és az autonóm azaz önálló robot.\\
A vezérelt robotok esetében mindenképp szükség van emberi üzemeltetésre. Ezek jellemzően olyan robotok melyek teljes mértékben függnek az emberi irányítástól, önállóan semmilyen feladatot, tevékenységet nem végeznek. Vezérelt robotokat gyakran alkalmaznak orvosi műtétek során illetve katonai akciók, bombák hatástalanítása alkalmából.
\end{justify}
\begin{wrapfigure}{r}{0.4\textwidth}
\centering
\includegraphics[width=0.25\textwidth]{kiva_robot.png}
\caption{\label{fig:kiva robot}Az Amazon által alkalmazott Kiva robot.}
\end{wrapfigure}
\todo{Megoldani az ábra feliratot..szám az ábra elé}
Az autonóm robotok lehetőséget adnak arra, hogy óriási mértében növeljük a termelés minőségét és hatékonyságát. Csak, hogy megemlítsek egy pár ilyen területet a teljesség igénye nélkül: csomagszállítás, logisztika, takarítás, mezőgazdaság, földművelés.
\subsection{A szakdolgozat tartalmi összefoglalása}
\begin{justify}
A szakdolgozatom első részében a mobil robot megvalósításának elméleti hátteréről értékezek.
\subsection{A virtuális környezet}
Az elméleti kidolgozás során az amerikai Georgia Institute of Technology (Georgia Tech) egyetem által fejlesztett sim.I.am mobil robot szimulátort fogom használni.
\subsubsection{A sim.I.am könyvtérszerkezet bemutatása}
A sim.I.am
\subsection{A gyakorlati kivitelezés}
A gyakorlati kivitelezés részben beszámolok az általam épített robot tapasztalatairól.A robot programkódját \todo{itt majd megadni hogy miben írtam meg a kódot } Python/Matlab/C nyelven írtam. Az általam írt programot részletesen ismertetem a gyakorlati kivitelezés részben.
\subsection{Célkitűzés}
A szakdolgozat célja, hogy bemutassa egy autonóm mobil robot irányítástechnikájának az elméleti hátterét, figyelembe véve az inputokat, outputokat és a visszacsatolást.
\subsection{A szakdolgozat fő fejezeteinek tartalma}
A szakdolgozat első fejezete a bevezető rész. Ez a fejezet tartalmaz egy rövid összefoglalót a mobil robotok típusairól, egy kis ismertetőt a szakdolgozat elméleti kidolgozásához alkalmazott szimulátorról illetve gyakorlati megvalósításról és a szakdolgozat célkitűzését.
\end{justify}
\clearpage
\section{A PID típusú szabályzó}
%itt irok a PID vezérlésről
\subsection{Egy egyszerű vezérlés}
\begin{justify}
A vezérlés feladata, hogy az általunk irányított járművet, vagy adott esetben robotot, egy - általunk megadott - sebességen tartson. Azaz indulásnál felgyorsítson egészen a megadott sebességig majd ezt a sebességet tartsa egészen addig amíg eltérő jelzést, azaz újabb referenciaértéket nem kap.
Ezen információk rendelkezésre állása segít abban, hogy levezessem az alábbi egyenletet:
\begin{ceqn}
\begin{equation*}
\dot{v} = a \Rightarrow m \cdot \dot{v} = c \cdot u \Rightarrow \dot{v} = \frac{c}{m} \cdot u
\end{equation*}
\end{ceqn}
A célsebesség értékét $r$ jelöli és az eltérés mértékét - az angol error szó után - $e$ betűvel jelölöm. Ebből adódik, hogy: $e = r - v$.
A vezérlés gyakorlati megtervezése előtt, fontos rögzíteni azokat a
tulajdonságot melyekkel rendelkeznie kell:
\begin{itemize}
\item kis eltérési érték esetén ($e$) a korrekciónak ($u$) is kicsinek kell lennie
\item a célérték ($u$) nem "ugrálhat" nagy mértékben (azaz a hirtelen gyorsulás/lassítás nem haladhat meg egy megadott értéket)
\item a céltérték nem lehet az átviteli koefficiens ($c$) illetve a gépjármű vagy robot tömegének ($m$) a függvénye
\end{itemize}
Az utolsó pont valójában azt jelenti, hogy a robot vezérlője, a különböző paraméterek (mint például tömeg vagy átviteli veszteségek) ismerete nélkül is képes kell legyen egy megadott sebességen tartani a robotot.
Tehát ha az eltérés pozitív akkor a maximális bemeneti értéket határozok meg, ha az eltérés negatív (azaz a valós sebesség nagyobb mint a referencia sebesség) akkor minimális (negatív) bemeneti értékkel számolok, nulla eltérés esetén pedig a bemeneti érték is nulla.
\end{justify}
\begin{equation}
u=
\begin{cases}
u_{max}, & \text{ha}\ e > 0 \\
-u_{max}, & \text{ha}\ e < 0 \\
0, & \text{ha}\ e = 0
\end{cases}
\end{equation}
\begin{justify}
A két grafikon megmutatja, hogy pontosan mi a gond a fenti elképzeléssel.
\end{justify}
\begin{figure}
\centering
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=0.99\textwidth]{Bev_PID_vez_1.PNG} % first figure itself
\caption{\label{fig:sebesseg_ido_norm_vezerl}a robot sebességgörbéje}
\end{minipage}\hfill
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=0.99\textwidth]{Bev_PID_vez_2.PNG} % second figure itself
\caption{\label{fig:bem_jel_norm_vezerl}a bemeneti jel értékei}
\end{minipage}
\end{figure}
\todo{Betenni a saját grafikonokat}
\begin{justify}
A bal oldali grafikon mutatja a robot sebességét az eltelt idő függvényében. Ezen az látható hogy a robot egészen addig gyorsul amíg eléri a referencia értéket, majd ezt tartja. A problémát a bal jobb oldali ábra jelenti. Ez az ábra tartalmazza a bemeneti jel értékeit az eltelt idő függvényében. Ez a grafikon azt jelzi hogy a bemeneti érték folyamatosan 100\% és -100\% között ugrál.
Összefoglalásképp megállapítható, hogy az első próbálkozás a fent említett okok miatt nem járt sikerrel így el kellett vetnem.
\end{justify}
\subsection{P szabályzó}
\begin{justify}
Amint az láthattuk az első robotvezérlő modellem nem vált be. A probléma fő oka az volt, hogy az \textit{error}, azaz a referencia sebesség és valós sebesség eltérésének bármilyen értékére a bemeneti jel mely vezérli a robot sebességet azonnal maximális gyorsulással vagy maximális tolatással reagál.
\end{justify}
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{Kepek/2.1_Bev_a_vezerlesbe/P_regulator.PNG}
\caption{\label{fig:seb_ido_P_szab}A P szabályzó sebesség/idő görbéje}
\end{figure}
\todo{betenni a saját P szabályzó grafikont}
\begin{justify}
Ugyanakkor az ábrán azt is hamar észre lehet venni, hogy a valós sebesség nem éri el a referenciajelet. Ebben az esetben a modell matematikai leírása az alábbiak szerint alakul:
\end{justify}
\begin{ceqn}
\begin{equation*}
\dot{v} = \dfrac{c}{m} \cdot u - \gamma \cdot v
\end{equation*}
\end{ceqn}
\begin{justify}
A $\gamma$ ebben az esetben a légellenállási tényezőt jelöli és a sebesség függvénye. Ha jobban megvizsgáljuk ezt a képletet akkor hamar megállapíthatjuk hogy állandó sebesség esetén - azaz ha a rendszer nem gyorsul vagy lassul - a jármű soha nem tudja elérni a referenciaértéket ($r$).
\end{justify}
Tehát:
\begin{ceqn}
\begin{equation*}
\dot{v} = 0 = \dfrac{c}{m} \cdot u - \gamma \cdot v
\end{equation*}
\end{ceqn}
Mivel tudjuk hogy a P szabályozó esetében $u = k(r-v)$, ezt behelyettesítve az alábbi egyenletet kapjuk:
\begin{ceqn}
\begin{equation*}
\dot{v} = 0 = \dfrac{c}{m} \cdot u - \gamma \cdot v = \dfrac{c}{m} \cdot k \cdot (r-v) - \gamma \cdot v \Rightarrow (c \cdot k + m \cdot \gamma) \cdot v = c \cdot k \cdot r
\end{equation*}
\end{ceqn}
Ebből pedig v-re rendezve kapjuk, hogy:
\begin{ceqn}
\begin{equation*}
v = \dfrac{c \cdot k}{c \cdot k + m \cdot \gamma} \cdot r
\end{equation*}
\end{ceqn}
A számlálóban és a nevezőben található tagok miatt könnyen megállapítható, hogy:
\begin{ceqn}
\begin{equation*}
v = \dfrac{c \cdot k}{c \cdot k + m \cdot \gamma} \cdot r < r
\end{equation*}
\end{ceqn}
Ezáltal azt is megállapíthatjuk, hogy a jelen esetben noha a P szabályzó garantálja a rendszer stabilitását de a referenciaérték elérése nem valósul meg, ezért a vezérlésen még kell fejleszteni.
\subsection{I szabályzó}
\begin{justify}
Amint azt az előző fejezetben levezettem láthattuk, hogy a P szabályzó - noha stabilan tartja a rendszert és alkalmazása megszünteti a bemeneti jel nagymértékű és hirtelen változásait - mindig alacsonyabb marad mint a referenciaérték.
Ennek a képlete:
\end{justify}
\begin{ceqn}
\begin{equation*}
u(t) = k_{p} \cdot e + k_{i} \cdot \int_{0}^{t} \cdot e(\tau) \cdot d\tau
\end{equation*}
\end{ceqn}
\begin{justify}
Ezzel pedig amint azt az alábbi - most már PI szabályozóval kiegészített vezérlő - sebesség-idő grafikon is mutatja megoldottuk a sebességkülönbség gondját, a vezérlő most már úgy működik, ahogy terveztem.
\end{justify}
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{Kepek/2.1_Bev_a_vezerlesbe/PI_regulator.PNG}
\caption{\label{fig:seb_ido_P_szab}A PI szabályzó sebesség/idő görbéje}
\end{figure}
\begin{comment}
Ezen probléma megoldása érdekében megváltoztatom a bemeneti érték képletét az alábbi módon:
\end{justify}
\begin{ceqn}
\begin{equation*}
u = k \cdot (r-v) + \gamma \cdot \dfrac{m}{c} \cdot v
\end{equation*}
\end{ceqn}
\begin{justify}
Amint látható csupán annyin változtattam, hogy az egyenlethez hozzáadtam a $ \gamma \cdot \dfrac{m}{c} \cdot v$ tagot.
Ezáltal az eredeti egyenlet, mely az alábbiak szerint nézett ki:
\end{justify}
\begin{ceqn}
\begin{equation*}
\dot{v} = \dfrac{c}{m} \cdot u - \gamma \cdot v
\end{equation*}
\end{ceqn}
máris megváltozik, és azt az egyenletet kapom amit célként fogalmaztam meg, azaz:
\begin{ceqn}
\begin{equation*}
\dot{v} = 0 = \dfrac{c}{m} \cdot u + \gamma \cdot v - \gamma \cdot v \Rightarrow v = r
\end{equation*}
\end{ceqn}
Könnyen észrevehető, hogy az új bemeneti képlet segített abban, hogy a légellenállás hatását megszüntesse, ezáltal a valós sebesség most már eléri a referencia sebességet.
\end{comment}
\subsection{D szabályzó}
\begin{justify}
Végezetül kiegészítettem az egyenletet a differenciáló taggal mely amellett, hogy fokozza a folyamat stabilitását, egyúttal csökkenti az integráló tag túllendülését is. Mivel ugyanakkor a jel vagy jelek differenciálása erősíti a zajt kerülni kell a túl magas erősítés instabillá teheti a vezérlést.
\end{justify}
\subsection{PID szabályzó}
A differenciáló tag kiegészítésével most már teljessé vált a PID szabályzóm:
\begin{ceqn}
\begin{equation*}
u(t) = k_{P} \cdot e + k_{I} \cdot \int_{0}^{t} \cdot e(\tau) \cdot d\tau + k_{D} \cdot \dfrac{de(t)}{dt}
\end{equation*}
\end{ceqn}
\begin{justify}
A PID szabályzó három (arányos, integráló és deriváló) tagja immár megfelelő módon sza-bályozzák a robot sebességét.
\end{justify}
\clearpage
\section{A robot hajtása}
%itt majd irok a differenciál meghajtásrol, a szükséges adatokról: kerék átmérő stb
\begin{justify}
Ahhoz, hogy megtervezhessük egy robot vezérlését tudnunk kell, hogy az adott robot hogyan "viselkedik". Mindenekelőtt ismernünk kell a robot meghajtását. Alapvetően ez az egyik legfontosabb paraméter, mely nagyban meghatározza a robot haladási és kanyarodási tulajdonságait. A kerekes mobil robotok esetében több típusú meghajtás és kerékelrendezés is létezik.
\end{justify}
\subsection{A differenciális meghajtású robot}
\begin{justify}
Ahhoz, hogy vezérelni tudjunk egy differenciális meghajtású robotot, rendelkeznünk kell pár alapvető fizikai tulajdonságával.
Mindenképp ismernünk kell a robot hajtókerekeinek az átmérőjét ($R$)és a robot nyomtávolságát ($L$) is.
\end{justify}
\begin{wrapfigure}{r}{0.4\textwidth}
\centering
\includegraphics[width=0.25\textwidth]{Kepek/3.1_Dif_robot/robot_sajat.png}
\caption{\label{fig:diff hajtasu robot}Differenciális meghajtású robot.}
\end{wrapfigure}
Ahhoz, hogy a vezérlés irányítani tudja a robotot a bemeneti jelet - mely jelenleg a sebesség - valahogy össze kell kötnünk a robot pozíciójával és haladási irányával. Ebben pedig a differenciális meghajtású robot kinematikája segít:
\begin{ceqn}
\begin{equation*}
\begin{gathered}
\dot{x} = \dfrac{R}{2} \cdot (v_{R} + v_{L}) \cdot \cos(\phi) \\
\dot{y} = \dfrac{R}{2} \cdot (v_{R} + v_{L}) \cdot \sin(\phi) \\
\dot{\phi}= \dfrac{R}{L} \cdot (v_{R} - v_{L})
\end{gathered}
\end{equation*}
\end{ceqn}
\begin{justify}
Ezen egyenletek segítségével kerekek sebességéből ($v_{R}$,$v_{L}$) ki tudom számolni a robot helyzet- ($\dot{x}$, $\dot{y}$) és irányváltoztatását ($\dot{\phi}$).
Fontos itt megjegyezni, hogy a kerekek sebességét nehézkes lenne megadni, ezért mindenképp egy általánosabb, könnyebben értelmezhető paramétert kell választanom:
\begin{ceqn}
\begin{equation*}
\begin{gathered}
\dot{x} = v \cdot \cos(\phi) \\
\dot{y} = v \cdot \sin(\phi) \\
\dot{\phi}= \omega
\end{gathered}
\end{equation*}
\end{ceqn}
A kanyarodást ugyanúgy mint a differenciális meghajtású robotok esetében $\dot{\phi}$ görög betűvel jelölöm. Az egyenlet jobb oldalán pedig a robot sebességét $v$ illetve szögsebességét - mely megegyezik az irányváltással azaz a szögsebességgel - $\omega$ jelöli.
A két egyenletet behelyettesítve egymással jutok el végül ahhoz az egyenlethez mely segít a kerekek sebességének a pontos kiszámolásában:
\begin{ceqn}
\begin{equation*}
\begin{gathered}
v_{R} = \dfrac{2 \cdot v + \omega \cdot L}{2R} \\
v_{L} = \dfrac{2 \cdot v - \omega \cdot L}{2R}
\end{gathered}
\end{equation*}
\end{ceqn}
Ez utóbbi két egyenlet így már lehetővé teszi, hogy általánosabb, könnyebben értelmezhető paraméterekből azaz a $v$-vel jelölt sebességből és $\omega$-val jelölt szögsebességből ki tudjam számolni a két kerék sebességét.
\end{justify}
\clearpage
\section{A mobil robotok érzékelői}
\begin{justify}
A mobil robotok navigációjához nélkülözhetetlenek az érzékelők vagy más szóval a szenzorok amelyeket a robotot a saját helyzetéről és illetve a környezetéről tájékoztatják. Ezáltal az érzékelőket két nagy csoportba sorolhatjuk:
\begin{itemize}
\item belső érzékelők: ezen csoport tartalmazza azon érzékelőket mely a robot állapotáról adnak információkat, azaz sebesség, gyorsulás, orientáció
\item külső érzékelők: ebben a csoportba tartoznak azok a szenzorok melyek a robot pozíció-járól, környezetéről azaz információt adnak a külvilágról, esetleges akadályokról
\end{itemize}
\end{justify}
\begin{justify}
A szenzorokat továbbá megkülönböztethetjük még aszerint, hogy a aktívak vagy passzívak. Az aktív szenzorok előnyei, hogy jellemzően több adatot szolgáltatnak mint a passzív szenzorok, ugyanakkor a hátrányuk az, hogy magasabb a fogyasztásuk és több szenzor együttes alkalmazása esetén interferencia léphet fel.
\end{justify}
\subsection{Belső érzékelők}
\begin{justify}
Mint azt már az előző bekezdésben említettem a belső érzékelők jellemzően a robot saját állapotáról adnak információt. A robot navigáláshoz létszükséges információk például a robot haladási sebessége és iránya.
Az általam épített robotnál az egyik leggyakrabban használt sebességérzékelőt, az odo-métert alkalmaztam. Ennek a működési elvéről bővebben a következő bekezdésben írok.
\end{justify}
\subsubsection{Az optikai inkrementális kódadó}
\begin{justify}
A mobil robot kerekeinek a forgásának a meghatározására az egyik leggyakrabban alkalmazott megoldás az optikai inkrementális kódadó vagy másik nevén optométer. A vevő érzékeli ezeket a jeleket és elektromos jelekké alakítja.
\end{justify}
\begin{figure}[h]
\centering
\includegraphics[width=0.7\textwidth]{Kepek/4.1.1_Optometer/odometer1.png}
\caption{\label{fig:seb_ido_P_szab}A forgójeladó elvi működése.}
\end{figure}
\begin{justify}
A 7. ábrán látható forgójeladó esetében a fényforrást egy LED biztosítja és a tárcsa ellentétes oldalán pedig egy fototranzisztor érzékeli a tárcsa rovátkáin, résein átjutó fényt.
\end{justify}
\begin{wrapfigure}{l}{0.4\textwidth}
\centering
\includegraphics[width=0.35\textwidth]{Kepek/4.1.1_Optometer/Absolute_optometer.jpg}
\caption{\label{fig:optometer}Egy abszolút forgójeladó tárcsája.}
\end{wrapfigure}
Sokszor nagyon fontos hogy pontosan ismerjük a gép vagy kerék pontos pozícióját akkor is ha például a robotot kikapcsoltuk és újraindítjuk. Ennek a képlete:
\begin{ceqn}
\begin{equation*}
D_{c} = \dfrac{D_{r} + D_{l}}{2}
\end{equation*}
\end{ceqn}
A robot helyzetét meghatározó egyenletrendszerbe behelyettesítve kapom meg az új egyenleteket melyek már a forgójeladó értékeik alapján számítja ki a robot új pozícióját:
%\begin{cases} 3x + 5y + z \\ 7x – 2y + 4z \\ -6x + 3y + 2z
%\end{cases}
\begin{equation*}
\begin{cases}
x^\prime = x + D_{c} \cdot \cos(\phi) \\
y^\prime = y + D_{c} \cdot \sin(\phi) \\
\phi^\prime = \phi + \dfrac{D_{r} + D_{l}}{L}
\end{cases}
\end{equation*}
A forgójeladóból kapott értékek természetesen nem a megtett távolságról adnak információt, hanem arról, hogy a robot elindítása óta (pontosabban a forgójeladó bekapcsolása óta) a forgójeladó fototranzisztora hányszor érzékelte a fénynyaláb átvilágítását a tárcsa rovátkáin. Mivel pontosan tudjuk, hogy a tárcsán összesen hány rovátka van, minden adat rendelkezésünkre áll hogy kiszámolhassuk a kerék által megtett távolságot:
\[ D = 2 \cdot \pi \cdot R \cdot \dfrac{\Delta \text{számláló}}{N}\]
\begin{align*}
\text{Ahol:}\quad
\Delta \text{számláló} &= \text{a forgójeladó által mért számláló értékének a változása}\\
R &= \text{a mobil robot kerekének a sugara}\\
N &= \text{a forgójeladó tárcsáján levő összes rovátka}
\end{align*}
Fontos megjegyezni azonban hogy a forgójeladó önmagában nem alkalmas a robot pozíciójának a meghatározásához.
Az általam épített robot esetében egy saját készítésű, egyszerű infravörös jeladóval és érzékelővel működő forgójeladót alkalmaztam, melyről részletesen a gyakorlati megvalósítás fejezetben értekezek.
\subsection{Külső szenzorok}
\begin{justify}
A külső érzékelők feladata, hogy a robot környezetéről adjanak információt.
\end{justify}
\subsection{Infravörös-fényt érzékelő berendezés}
A robotikában távolságméréshez az egyik leggyakrabban alkalmazott szenzor az infravörös távolságmérő.
A működési elvük alapján ...
Amint azt már a bevezetésben leírtam, a sim.I.am környezetben leprogramozott \textit{Quickbot} virtuális robot öt infravörös távolságmérővel rendelkezik. Ezekből három a robot elején található és kettő pedig a robot jobb illetve bal oldalán. Amint azt az alábbi ábra is mutatja, robot "orrához" képest $90^{\circ}$, $45^{\circ}$, $0^{\circ}$, $-45^{\circ}$, $-90^{\circ}$ foknál lettek elhelyezve.
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{Kepek/Infra_voros/quicbot.jpg}
\caption{\label{fig:seb_ido_P_szab}A Quickbot robot infravörös érzékelői}
\end{figure}
\clearpage
\section{Navigáció}
%ide egy rövid osszefolglaó rész hogy, hogyan miert van szukseg kulonboző viselkedésekre, milyenek vannak es a robot hogyan valtogat ezek között; folyamatábrát is kell alkalmazni
\blindtext
\subsection{Viselkedés típusok}
\blindtext
\subsubsection{Célhoz tartó algoritmus}
\blindtext
\subsubsection{Akadálykerülő algoritmus}
\blindtext
\subsubsection{Falkövető algoritmus}
\blindtext
\clearpage
\section{Gyakorlati megvalósítás}
%ezzel itt most nem tudom mi legyen, kellene csinálni valami saját robotot is, mely egyszerűbb mint a szimulacio, arduino board, kevesebb erzekelo, stb
\blindtext
\subsection{A differenciálhajtású mobil robot felépítése}
\blindtext
\subsection{Az alkalmazott aktuátor}
\blindtext
\subsection{Az alkalmazott mikrokontroller}
\blindtext
\subsection{Az alkalmazott szenzorok}
\blindtext
\subsubsection{Ultrahangos távolságmérő}
\blindtext
\subsection{Az alkalmazott algoritmus}
\blindtext
\clearpage
\section{Gyakorlati megvalósítás}
%ezzel itt most nem tudom mi legyen, kellene csinálni valami saját robotot is, mely egyszerűbb mint a szimulacio, arduino board, kevesebb erzekelo, stb
\blindtext
\clearpage
\section{Összehasonlítás, kifejtés, vagy valami hasonló}
\blindtext
\clearpage
\section*{Egyéb}
\blindtext
\clearpage
\section*{Referenciák}
\subsection*{Mindenképp betenni}
\url{https://hu.wikipedia.org/wiki/PID_szab%C3%A1lyoz%C3%B3} \\
- ide még mindenképp jönnek a tanár slidejai
\subsection*{Esetleges, egyáltalán nem biztos}
\url{http://hadmernok.hu/kulonszamok/robothadviseles7/kucsera_rw7.html}
\todo{A nem magyar idézetjeleket magyarosítani}
\clearpage
\listoftodos
\end{document}
我最初的疑问:
- 为什么默认情况下文本不对齐,是什么原因导致文本不对齐以及如何使其对齐?
- 文字环绕图片:文字环绕图片时,图片旁边的文字不对齐。如何修复?
- 我怎样才能去掉第一页的页码?
- 我如何设置文档从第 5 页(或第 n 页)开始编号?
- 如果是图片标签,文本顺序是错误的。现在是:“Abra 1。”(意思是图 1)。但是我需要“1. ábra”,所以我需要图片的编号作为第一部分,然后是旁边的单词“ábra”。
非常感谢您的帮助!
答案1
嗯,你的代码有几个问题。有些问题会导致错误输出,有些问题以后可能会成为问题。
例如:
- 在你的情况下,包
hyperref
应该被称为最后一个包!如果你没有注意调用包的顺序,这可能会成为一个问题...检查你使用的包的文档以获取调用顺序的提示... - 为什么要在代码中加载包
blindtext
和mwe
?对于实际文档,它们通常不需要... - 对于论文来说,最好使用类
report
... 对于匈牙利文件你应该添加
\usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} % <============================================ \usepackage[hungarian]{babel}
然后你会得到例如更好的连字......
对于 MWE 使用
\usepackage[demo]{graphicx}
。然后不会收到有关缺少图像文件的错误消息...我添加了
\pagenumbering{roman}
标题页、目录等,并在用罗马数字编号的页面上...我添加了
\pagenumbering{arabic}
用阿拉伯数字编号的论文...书写
\caption{Az Amazon által alkalmazott Kiva robot.}\label{fig:kiva rob
时将标签保留在标题内。我建议不要使用
wrapfig
。最好使用通常的环境figure
。通常wrapfigure
会导致图像周围文本的对齐问题...因此更改代码\begin{wrapfigure}{r}{0.4\textwidth} \centering \includegraphics[width=0.25\textwidth]{kiva_robot.png} \caption{Az Amazon által alkalmazott Kiva robot.}\label{fig:kiva robot} % <========================== \end{wrapfigure}
到
\begin{figure}[!hb] \centering \includegraphics[width=0.25\textwidth]{kiva_robot.png} \caption{Az Amazon által alkalmazott Kiva robot.}\label{fig:kiva robot} % <========================== \end{figure}
我以前
[!hb]
只能在与您几乎相同的位置获取图像wrapfigure
。我全部评论了
\begin{justify}
并且\end{justify}
……xcolor
取代color
,因此color
应省略。mathtools
调用amsmath
,因此您可以省略 的调用amsmath
。您是否确实在序言中使用了所有被调用的包并且您是否了解它们在做什么?如果没有,请不要使用您没有阅读文档的包以确认它在做什么...
请查看我在您的代码中所做的更改(参见<========
MWE 中的标记):
\documentclass[12pt]{article} % report
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc} % <============================================
\usepackage{mathptmx} % ez a times new roman
\usepackage{fancyhdr} %ez az oldalszamozast csinalja
\usepackage[hungarian]{babel}
\usepackage[demo]{graphicx} % <=========================================
\usepackage{blindtext} % kamuszoveget ad
%\usepackage{mwe} %kepek egymas mellett
\usepackage{geometry} % ez a margin beallitasokat
\usepackage{etoolbox}
\usepackage{sectsty}
%\usepackage{ragged2e} %justification left/right
\usepackage{titlesec}
\usepackage{wrapfig}
\usepackage{multicol}
\usepackage{mathtools} % loads amsmath <================================
\usepackage[ceqn]{nccmath}
%\usepackage[fleqn]{nccmath}
\usepackage{amssymb}
\usepackage{soul} %sorkiemelő
\usepackage{xcolor} %sorkiemelő
\usepackage[disable]{todonotes} %todo buborekok
\usepackage{verbatim} %a kikommenteleshez
\usepackage{epigraph} %idezet az elso oldalon
\usepackage[unicode]{hyperref} % ez csinal linket a contentsbol <================
\pagestyle{fancy}
\fancyfoot{}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\fancyhead[C]{\thepage}
\setlength{\headheight}{15pt} % <=======================================
\allsectionsfont{\centering}
\subsectionfont{\normalsize\bfseries}
\renewcommand{\baselinestretch}{1.5}
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\@makechapterhead}{\huge}{\large}{\center}{}% for \chapter
\patchcmd{\@makechapterhead}{\Huge}{\large}{\center}{}% for \chapter
\patchcmd{\@makeschapterhead}{\Huge}{\large}{\center}{}% for \chapter*
\makeatother
\allsectionsfont{\centering}
\subsectionfont{\normalsize\bfseries}
\subsubsectionfont{\normalsize\bfseries}
\renewcommand{\baselinestretch}{1.5}
\renewcommand{\figurename}{Ábra}
\geometry{a4paper, left=35mm, right=20mm, top=40mm, bottom=40mm}
\title{Diplomamunka}
\date{}
\author{Zsarnowszky Loránt}
\begin{document}
\pagenumbering{roman} % <===============================================
\maketitle
\thispagestyle{empty} % <===============================================
\newpage
\tableofcontents
\clearpage
%\justify
\pagenumbering{arabic} % <==============================================
\section{Bevezetés}
%ez itt egy komment
%\epigraph{Bip bip bee bee bip}{\textit{R2-D2}}
%\begin{justify}
Alapvetően három különböző típusú robotot különböztetünk meg: a vezérelt
robot, az automatizált robot és az autonóm azaz önálló robot.
A vezérelt robotok esetében mindenképp szükség van emberi üzemeltetésre.
Ezek jellemzően olyan robotok melyek teljes mértékben függnek az emberi
irányítástól, önállóan semmilyen feladatot, tevékenységet nem végeznek.
Vezérelt robotokat gyakran alkalmaznak orvosi műtétek során illetve
katonai akciók, bombák hatástalanítása alkalmából.
%\end{justify}
%\begin{wrapfigure}{r}{0.4\textwidth}
%\centering
%\includegraphics[width=0.25\textwidth]{kiva_robot.png}
%\caption{Az Amazon által alkalmazott Kiva robot.}\label{fig:kiva robot} % <==========================
%\end{wrapfigure}
\begin{figure}[!hb]
\centering
\includegraphics[width=0.25\textwidth]{kiva_robot.png}
\caption{Az Amazon által alkalmazott Kiva robot.}\label{fig:kiva robot} % <==========================
\end{figure}
\todo{Megoldani az ábra feliratot..szám az ábra elé}
Az autonóm robotok lehetőséget adnak arra, hogy óriási mértében növeljük a termelés minőségét és hatékonyságát. Csak, hogy megemlítsek egy pár ilyen területet a teljesség igénye nélkül: csomagszállítás, logisztika, takarítás, mezőgazdaság, földművelés.
\subsection{A szakdolgozat tartalmi összefoglalása}
%\begin{justify}
A szakdolgozatom első részében a mobil robot megvalósításának elméleti hátteréről értékezek.
\subsection{A virtuális környezet}
Az elméleti kidolgozás során az amerikai Georgia Institute of Technology (Georgia Tech) egyetem által fejlesztett sim.I.am mobil robot szimulátort fogom használni.
\subsubsection{A sim.I.am könyvtérszerkezet bemutatása}
A sim.I.am
\subsection{A gyakorlati kivitelezés}
A gyakorlati kivitelezés részben beszámolok az általam épített robot tapasztalatairól.A robot programkódját \todo{itt majd megadni hogy miben írtam meg a kódot } Python/Matlab/C nyelven írtam. Az általam írt programot részletesen ismertetem a gyakorlati kivitelezés részben.
\subsection{Célkitűzés}
A szakdolgozat célja, hogy bemutassa egy autonóm mobil robot irányítástechnikájának az elméleti hátterét, figyelembe véve az inputokat, outputokat és a visszacsatolást.
\subsection{A szakdolgozat fő fejezeteinek tartalma}
A szakdolgozat első fejezete a bevezető rész. Ez a fejezet tartalmaz egy rövid összefoglalót a mobil robotok típusairól, egy kis ismertetőt a szakdolgozat elméleti kidolgozásához alkalmazott szimulátorról illetve gyakorlati megvalósításról és a szakdolgozat célkitűzését.
%\end{justify}
\clearpage
\section{A PID típusú szabályzó}
%itt irok a PID vezérlésről
\subsection{Egy egyszerű vezérlés}
%\begin{justify}
A vezérlés feladata, hogy az általunk irányított járművet, vagy adott esetben robotot, egy - általunk megadott - sebességen tartson. Azaz indulásnál felgyorsítson egészen a megadott sebességig majd ezt a sebességet tartsa egészen addig amíg eltérő jelzést, azaz újabb referenciaértéket nem kap.
Ezen információk rendelkezésre állása segít abban, hogy levezessem az alábbi egyenletet:
\begin{ceqn}
\begin{equation*}
\dot{v} = a \Rightarrow m \cdot \dot{v} = c \cdot u \Rightarrow \dot{v} = \frac{c}{m} \cdot u
\end{equation*}
\end{ceqn}
A célsebesség értékét $r$ jelöli és az eltérés mértékét - az angol error szó után - $e$ betűvel jelölöm. Ebből adódik, hogy: $e = r - v$.
A vezérlés gyakorlati megtervezése előtt, fontos rögzíteni azokat a
tulajdonságot melyekkel rendelkeznie kell:
\begin{itemize}
\item kis eltérési érték esetén ($e$) a korrekciónak ($u$) is kicsinek kell lennie
\item a célérték ($u$) nem "ugrálhat" nagy mértékben (azaz a hirtelen gyorsulás/lassítás nem haladhat meg egy megadott értéket)
\item a céltérték nem lehet az átviteli koefficiens ($c$) illetve a gépjármű vagy robot tömegének ($m$) a függvénye
\end{itemize}
Az utolsó pont valójában azt jelenti, hogy a robot vezérlője, a különböző paraméterek (mint például tömeg vagy átviteli veszteségek) ismerete nélkül is képes kell legyen egy megadott sebességen tartani a robotot.
Tehát ha az eltérés pozitív akkor a maximális bemeneti értéket határozok meg, ha az eltérés negatív (azaz a valós sebesség nagyobb mint a referencia sebesség) akkor minimális (negatív) bemeneti értékkel számolok, nulla eltérés esetén pedig a bemeneti érték is nulla.
%\end{justify}
\begin{equation}
u=
\begin{cases}
u_{max}, & \text{ha}\ e > 0 \\
-u_{max}, & \text{ha}\ e < 0 \\
0, & \text{ha}\ e = 0
\end{cases}
\end{equation}
%\begin{justify}
A két grafikon megmutatja, hogy pontosan mi a gond a fenti elképzeléssel.
%\end{justify}
\begin{figure}
\centering
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=0.99\textwidth]{Bev_PID_vez_1.PNG} % first figure itself
\caption{a robot sebességgörbéje}\label{fig:sebesseg_ido_norm_vezerl} % <==============
\end{minipage}\hfill
\begin{minipage}{0.45\textwidth}
\centering
\includegraphics[width=0.99\textwidth]{Bev_PID_vez_2.PNG} % second figure itself
\caption{a bemeneti jel értékei}\label{fig:bem_jel_norm_vezerl} % <==============
\end{minipage}
\end{figure}
\todo{Betenni a saját grafikonokat}
%\begin{justify}
A bal oldali grafikon mutatja a robot sebességét az eltelt idő függvényében. Ezen az látható hogy a robot egészen addig gyorsul amíg eléri a referencia értéket, majd ezt tartja. A problémát a bal jobb oldali ábra jelenti. Ez az ábra tartalmazza a bemeneti jel értékeit az eltelt idő függvényében. Ez a grafikon azt jelzi hogy a bemeneti érték folyamatosan 100\% és -100\% között ugrál.
Összefoglalásképp megállapítható, hogy az első próbálkozás a fent említett okok miatt nem járt sikerrel így el kellett vetnem.
%\end{justify}
\subsection{P szabályzó}
%\begin{justify}
Amint az láthattuk az első robotvezérlő modellem nem vált be. A probléma fő oka az volt, hogy az \textit{error}, azaz a referencia sebesség és valós sebesség eltérésének bármilyen értékére a bemeneti jel mely vezérli a robot sebességet azonnal maximális gyorsulással vagy maximális tolatással reagál.
%\end{justify}
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{Kepek/2.1_Bev_a_vezerlesbe/P_regulator.PNG}
\caption{A P szabályzó sebesség/idő görbéje}\label{fig:seb_ido_P_szab} % <==============
\end{figure}
\todo{betenni a saját P szabályzó grafikont}
%\begin{justify}
Ugyanakkor az ábrán azt is hamar észre lehet venni, hogy a valós sebesség nem éri el a referenciajelet. Ebben az esetben a modell matematikai leírása az alábbiak szerint alakul:
%\end{justify}
\begin{ceqn}
\begin{equation*}
\dot{v} = \dfrac{c}{m} \cdot u - \gamma \cdot v
\end{equation*}
\end{ceqn}
%\begin{justify}
A $\gamma$ ebben az esetben a légellenállási tényezőt jelöli és a sebesség függvénye. Ha jobban megvizsgáljuk ezt a képletet akkor hamar megállapíthatjuk hogy állandó sebesség esetén - azaz ha a rendszer nem gyorsul vagy lassul - a jármű soha nem tudja elérni a referenciaértéket ($r$).
%\end{justify}
Tehát:
\begin{ceqn}
\begin{equation*}
\dot{v} = 0 = \dfrac{c}{m} \cdot u - \gamma \cdot v
\end{equation*}
\end{ceqn}
Mivel tudjuk hogy a P szabályozó esetében $u = k(r-v)$, ezt behelyettesítve az alábbi egyenletet kapjuk:
\begin{ceqn}
\begin{equation*}
\dot{v} = 0 = \dfrac{c}{m} \cdot u - \gamma \cdot v = \dfrac{c}{m} \cdot k \cdot (r-v) - \gamma \cdot v \Rightarrow (c \cdot k + m \cdot \gamma) \cdot v = c \cdot k \cdot r
\end{equation*}
\end{ceqn}
Ebből pedig v-re rendezve kapjuk, hogy:
\begin{ceqn}
\begin{equation*}
v = \dfrac{c \cdot k}{c \cdot k + m \cdot \gamma} \cdot r
\end{equation*}
\end{ceqn}
A számlálóban és a nevezőben található tagok miatt könnyen megállapítható, hogy:
\begin{ceqn}
\begin{equation*}
v = \dfrac{c \cdot k}{c \cdot k + m \cdot \gamma} \cdot r < r
\end{equation*}
\end{ceqn}
Ezáltal azt is megállapíthatjuk, hogy a jelen esetben noha a P szabályzó garantálja a rendszer stabilitását de a referenciaérték elérése nem valósul meg, ezért a vezérlésen még kell fejleszteni.
\subsection{I szabályzó}
%\begin{justify}
Amint azt az előző fejezetben levezettem láthattuk, hogy a P szabályzó - noha stabilan tartja a rendszert és alkalmazása megszünteti a bemeneti jel nagymértékű és hirtelen változásait - mindig alacsonyabb marad mint a referenciaérték.
Ennek a képlete:
%\end{justify}
\begin{ceqn}
\begin{equation*}
u(t) = k_{p} \cdot e + k_{i} \cdot \int_{0}^{t} \cdot e(\tau) \cdot d\tau
\end{equation*}
\end{ceqn}
%\begin{justify}
Ezzel pedig amint azt az alábbi - most már PI szabályozóval kiegészített vezérlő - sebesség-idő grafikon is mutatja megoldottuk a sebességkülönbség gondját, a vezérlő most már úgy működik, ahogy terveztem.
%\end{justify}
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{Kepek/2.1_Bev_a_vezerlesbe/PI_regulator.PNG}
\caption{A PI szabályzó sebesség/idő görbéje}\label{fig:seb_ido_B}
\end{figure}
\begin{comment}
Ezen probléma megoldása érdekében megváltoztatom a bemeneti érték képletét az alábbi módon:
%\end{justify}
\begin{ceqn}
\begin{equation*}
u = k \cdot (r-v) + \gamma \cdot \dfrac{m}{c} \cdot v
\end{equation*}
\end{ceqn}
%\begin{justify}
Amint látható csupán annyin változtattam, hogy az egyenlethez hozzáadtam a $ \gamma \cdot \dfrac{m}{c} \cdot v$ tagot.
Ezáltal az eredeti egyenlet, mely az alábbiak szerint nézett ki:
%\end{justify}
\begin{ceqn}
\begin{equation*}
\dot{v} = \dfrac{c}{m} \cdot u - \gamma \cdot v
\end{equation*}
\end{ceqn}
máris megváltozik, és azt az egyenletet kapom amit célként fogalmaztam meg, azaz:
\begin{ceqn}
\begin{equation*}
\dot{v} = 0 = \dfrac{c}{m} \cdot u + \gamma \cdot v - \gamma \cdot v \Rightarrow v = r
\end{equation*}
\end{ceqn}
Könnyen észrevehető, hogy az új bemeneti képlet segített abban, hogy a légellenállás hatását megszüntesse, ezáltal a valós sebesség most már eléri a referencia sebességet.
\end{comment}
\subsection{D szabályzó}
%\begin{justify}
Végezetül kiegészítettem az egyenletet a differenciáló taggal mely amellett, hogy fokozza a folyamat stabilitását, egyúttal csökkenti az integráló tag túllendülését is. Mivel ugyanakkor a jel vagy jelek differenciálása erősíti a zajt kerülni kell a túl magas erősítés instabillá teheti a vezérlést.
%\end{justify}
\subsection{PID szabályzó}
A differenciáló tag kiegészítésével most már teljessé vált a PID szabályzóm:
\begin{ceqn}
\begin{equation*}
u(t) = k_{P} \cdot e + k_{I} \cdot \int_{0}^{t} \cdot e(\tau) \cdot d\tau + k_{D} \cdot \dfrac{de(t)}{dt}
\end{equation*}
\end{ceqn}
%\begin{justify}
A PID szabályzó három (arányos, integráló és deriváló) tagja immár megfelelő módon sza-bályozzák a robot sebességét.
%\end{justify}
\clearpage
\section{A robot hajtása}
%itt majd irok a differenciál meghajtásrol, a szükséges adatokról: kerék átmérő stb
%\begin{justify}
Ahhoz, hogy megtervezhessük egy robot vezérlését tudnunk kell, hogy az adott robot hogyan "viselkedik". Mindenekelőtt ismernünk kell a robot meghajtását. Alapvetően ez az egyik legfontosabb paraméter, mely nagyban meghatározza a robot haladási és kanyarodási tulajdonságait. A kerekes mobil robotok esetében több típusú meghajtás és kerékelrendezés is létezik.
%\end{justify}
\subsection{A differenciális meghajtású robot}
%\begin{justify}
Ahhoz, hogy vezérelni tudjunk egy differenciális meghajtású robotot, rendelkeznünk kell pár alapvető fizikai tulajdonságával.
Mindenképp ismernünk kell a robot hajtókerekeinek az átmérőjét ($R$)és a robot nyomtávolságát ($L$) is.
%\end{justify}
\begin{wrapfigure}{r}{0.4\textwidth}
\centering
\includegraphics[width=0.25\textwidth]{Kepek/3.1_Dif_robot/robot_sajat.png}
\caption{\label{fig:diff hajtasu robot}Differenciális meghajtású robot.}
\end{wrapfigure}
Ahhoz, hogy a vezérlés irányítani tudja a robotot a bemeneti jelet - mely jelenleg a sebesség - valahogy össze kell kötnünk a robot pozíciójával és haladási irányával. Ebben pedig a differenciális meghajtású robot kinematikája segít:
\begin{ceqn}
\begin{equation*}
\begin{gathered}
\dot{x} = \dfrac{R}{2} \cdot (v_{R} + v_{L}) \cdot \cos(\phi) \\
\dot{y} = \dfrac{R}{2} \cdot (v_{R} + v_{L}) \cdot \sin(\phi) \\
\dot{\phi}= \dfrac{R}{L} \cdot (v_{R} - v_{L})
\end{gathered}
\end{equation*}
\end{ceqn}
%\begin{justify}
Ezen egyenletek segítségével kerekek sebességéből ($v_{R}$,$v_{L}$) ki tudom számolni a robot helyzet- ($\dot{x}$, $\dot{y}$) és irányváltoztatását ($\dot{\phi}$).
Fontos itt megjegyezni, hogy a kerekek sebességét nehézkes lenne megadni, ezért mindenképp egy általánosabb, könnyebben értelmezhető paramétert kell választanom:
\begin{ceqn}
\begin{equation*}
\begin{gathered}
\dot{x} = v \cdot \cos(\phi) \\
\dot{y} = v \cdot \sin(\phi) \\
\dot{\phi}= \omega
\end{gathered}
\end{equation*}
\end{ceqn}
A kanyarodást ugyanúgy mint a differenciális meghajtású robotok esetében $\dot{\phi}$ görög betűvel jelölöm. Az egyenlet jobb oldalán pedig a robot sebességét $v$ illetve szögsebességét - mely megegyezik az irányváltással azaz a szögsebességgel - $\omega$ jelöli.
A két egyenletet behelyettesítve egymással jutok el végül ahhoz az egyenlethez mely segít a kerekek sebességének a pontos kiszámolásában:
\begin{ceqn}
\begin{equation*}
\begin{gathered}
v_{R} = \dfrac{2 \cdot v + \omega \cdot L}{2R} \\
v_{L} = \dfrac{2 \cdot v - \omega \cdot L}{2R}
\end{gathered}
\end{equation*}
\end{ceqn}
Ez utóbbi két egyenlet így már lehetővé teszi, hogy általánosabb, könnyebben értelmezhető paraméterekből azaz a $v$-vel jelölt sebességből és $\omega$-val jelölt szögsebességből ki tudjam számolni a két kerék sebességét.
%\end{justify}
\clearpage
\section{A mobil robotok érzékelői}
%\begin{justify}
A mobil robotok navigációjához nélkülözhetetlenek az érzékelők vagy más szóval a szenzorok amelyeket a robotot a saját helyzetéről és illetve a környezetéről tájékoztatják. Ezáltal az érzékelőket két nagy csoportba sorolhatjuk:
\begin{itemize}
\item belső érzékelők: ezen csoport tartalmazza azon érzékelőket mely a robot állapotáról adnak információkat, azaz sebesség, gyorsulás, orientáció
\item külső érzékelők: ebben a csoportba tartoznak azok a szenzorok melyek a robot pozíció-járól, környezetéről azaz információt adnak a külvilágról, esetleges akadályokról
\end{itemize}
%\end{justify}
%\begin{justify}
A szenzorokat továbbá megkülönböztethetjük még aszerint, hogy a aktívak vagy passzívak. Az aktív szenzorok előnyei, hogy jellemzően több adatot szolgáltatnak mint a passzív szenzorok, ugyanakkor a hátrányuk az, hogy magasabb a fogyasztásuk és több szenzor együttes alkalmazása esetén interferencia léphet fel.
%\end{justify}
\subsection{Belső érzékelők}
%\begin{justify}
Mint azt már az előző bekezdésben említettem a belső érzékelők jellemzően a robot saját állapotáról adnak információt. A robot navigáláshoz létszükséges információk például a robot haladási sebessége és iránya.
Az általam épített robotnál az egyik leggyakrabban használt sebességérzékelőt, az odo-métert alkalmaztam. Ennek a működési elvéről bővebben a következő bekezdésben írok.
%\end{justify}
\subsubsection{Az optikai inkrementális kódadó}
%\begin{justify}
A mobil robot kerekeinek a forgásának a meghatározására az egyik leggyakrabban alkalmazott megoldás az optikai inkrementális kódadó vagy másik nevén optométer. A vevő érzékeli ezeket a jeleket és elektromos jelekké alakítja.
%\end{justify}
\begin{figure}[h]
\centering
\includegraphics[width=0.7\textwidth]{Kepek/4.1.1_Optometer/odometer1.png}
\caption{A forgójeladó elvi működése.}\label{fig:seb_ido_C}
\end{figure}
%\begin{justify}
A 7. ábrán látható forgójeladó esetében a fényforrást egy LED biztosítja és a tárcsa ellentétes oldalán pedig egy fototranzisztor érzékeli a tárcsa rovátkáin, résein átjutó fényt.
%\end{justify}
\begin{wrapfigure}{l}{0.4\textwidth}
\centering
\includegraphics[width=0.35\textwidth]{Kepek/4.1.1_Optometer/Absolute_optometer.jpg}
\caption{Egy abszolút forgójeladó tárcsája.}\label{fig:optometer}
\end{wrapfigure}
Sokszor nagyon fontos hogy pontosan ismerjük a gép vagy kerék pontos pozícióját akkor is ha például a robotot kikapcsoltuk és újraindítjuk. Ennek a képlete:
\begin{ceqn}
\begin{equation*}
D_{c} = \dfrac{D_{r} + D_{l}}{2}
\end{equation*}
\end{ceqn}
A robot helyzetét meghatározó egyenletrendszerbe behelyettesítve kapom meg az új egyenleteket melyek már a forgójeladó értékeik alapján számítja ki a robot új pozícióját:
%\begin{cases} 3x + 5y + z \\ 7x – 2y + 4z \\ -6x + 3y + 2z
%\end{cases}
\begin{equation*}
\begin{cases}
x^\prime = x + D_{c} \cdot \cos(\phi) \\
y^\prime = y + D_{c} \cdot \sin(\phi) \\
\phi^\prime = \phi + \dfrac{D_{r} + D_{l}}{L}
\end{cases}
\end{equation*}
A forgójeladóból kapott értékek természetesen nem a megtett távolságról adnak információt, hanem arról, hogy a robot elindítása óta (pontosabban a forgójeladó bekapcsolása óta) a forgójeladó fototranzisztora hányszor érzékelte a fénynyaláb átvilágítását a tárcsa rovátkáin. Mivel pontosan tudjuk, hogy a tárcsán összesen hány rovátka van, minden adat rendelkezésünkre áll hogy kiszámolhassuk a kerék által megtett távolságot:
\[ D = 2 \cdot \pi \cdot R \cdot \dfrac{\Delta \text{számláló}}{N}\]
\begin{align*}
\text{Ahol:}\quad
\Delta \text{számláló} &= \text{a forgójeladó által mért számláló értékének a változása}\\
R &= \text{a mobil robot kerekének a sugara}\\
N &= \text{a forgójeladó tárcsáján levő összes rovátka}
\end{align*}
Fontos megjegyezni azonban hogy a forgójeladó önmagában nem alkalmas a robot pozíciójának a meghatározásához.
Az általam épített robot esetében egy saját készítésű, egyszerű infravörös jeladóval és érzékelővel működő forgójeladót alkalmaztam, melyről részletesen a gyakorlati megvalósítás fejezetben értekezek.
\subsection{Külső szenzorok}
%\begin{justify}
A külső érzékelők feladata, hogy a robot környezetéről adjanak információt.
%\end{justify}
\subsection{Infravörös-fényt érzékelő berendezés}
A robotikában távolságméréshez az egyik leggyakrabban alkalmazott szenzor az infravörös távolságmérő.
A működési elvük alapján ...
Amint azt már a bevezetésben leírtam, a sim.I.am környezetben leprogramozott \textit{Quickbot} virtuális robot öt infravörös távolságmérővel rendelkezik. Ezekből három a robot elején található és kettő pedig a robot jobb illetve bal oldalán. Amint azt az alábbi ábra is mutatja, robot "orrához" képest $90^{\circ}$, $45^{\circ}$, $0^{\circ}$, $-45^{\circ}$, $-90^{\circ}$ foknál lettek elhelyezve.
\begin{figure}[h]
\centering
\includegraphics[width=0.5\textwidth]{Kepek/Infra_voros/quicbot.jpg}
\caption{A Quickbot robot infravörös érzékelői}\label{fig:seb_ido_D}
\end{figure}
\clearpage
\section{Navigáció}
%ide egy rövid osszefolglaó rész hogy, hogyan miert van szukseg kulonboző viselkedésekre, milyenek vannak es a robot hogyan valtogat ezek között; folyamatábrát is kell alkalmazni
\blindtext
\subsection{Viselkedés típusok}
\blindtext
\subsubsection{Célhoz tartó algoritmus}
\blindtext
\subsubsection{Akadálykerülő algoritmus}
\blindtext
\subsubsection{Falkövető algoritmus}
\blindtext
\clearpage
\section{Gyakorlati megvalósítás}
%ezzel itt most nem tudom mi legyen, kellene csinálni valami saját robotot is, mely egyszerűbb mint a szimulacio, arduino board, kevesebb erzekelo, stb
\blindtext
\subsection{A differenciálhajtású mobil robot felépítése}
\blindtext
\subsection{Az alkalmazott aktuátor}
\blindtext
\subsection{Az alkalmazott mikrokontroller}
\blindtext
\subsection{Az alkalmazott szenzorok}
\blindtext
\subsubsection{Ultrahangos távolságmérő}
\blindtext
\subsection{Az alkalmazott algoritmus}
\blindtext
\clearpage
\section{Gyakorlati megvalósítás}
%ezzel itt most nem tudom mi legyen, kellene csinálni valami saját robotot is, mely egyszerűbb mint a szimulacio, arduino board, kevesebb erzekelo, stb
\blindtext
\clearpage
\section{Összehasonlítás, kifejtés, vagy valami hasonló}
\blindtext
\clearpage
\section*{Egyéb}
\blindtext
\clearpage
\section*{Referenciák}
\subsection*{Mindenképp betenni}
\url{https://hu.wikipedia.org/wiki/PID_szab%C3%A1lyoz%C3%B3} \\
- ide még mindenképp jönnek a tanár slidejai
\subsection*{Esetleges, egyáltalán nem biztos}
\url{http://hadmernok.hu/kulonszamok/robothadviseles7/kucsera_rw7.html}
\todo{A nem magyar idézetjeleket magyarosítani}
\clearpage
\listoftodos
\end{document}