1

I am quite new the LaTeX and unfortunatelly I started with a quite big task. I am writing my thesis in LaTeX ...

Could you please help me with the following question?

I have an image and right next to it to the right some text warped around it. My problem is that the text near the image is not justified. All the document is justified, but not the texts near the images. Also, could you please let me know how could I raise the image a little bit?

There is a lot of empty space between the image and text above it...

My code:

    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}


A kerekek forgási sebessége határozza meg a robot haladási sebességét ($v_{L}$) és ($v_{R}$) és hogy milyen irányba halad.

Thank you in advance for your help!

Please see my starting code (not an MWE):

\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{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.

enter image description here

  • 2
    An MWE should be executable. It should start with \documentclass and end with \end{document}, but it should only contain enough code to show the problem. Do NOT copy the entire document! That being said, what is with the \end{justify}? Wrapfig doesn't need it. – John Kormylo Nov 19 '17 at 17:13
  • If I don't add the \end{justify} to my text, the text will not be justified. – hunsnowboarder Nov 19 '17 at 17:21
  • So add it later, or start a new \begin{justify}. Actually, I am not familiar with the justify environment. What package is it from? – John Kormylo Nov 19 '17 at 17:50
  • you should almost never need justify (I have never needed it in 30 years of tex) use, tex justifies by default. – David Carlisle Nov 19 '17 at 17:53
  • @JohnKormylo it's from ragged2e (but hard to guess any reason to use it here) – David Carlisle Nov 19 '17 at 18:10
1

Based on the MWE in your question several latex issues with thesis you get an justified wraped text around figure 6 with simple delete the wrong call of \usepackage[document]{ragged2e} in your preamble.

Please see this code snippet (I added the imho better way to display an image with figure):

\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{Differenciális meghajtású robot.}\label{fig:diff hajtasu robot}
\end{wrapfigure}
%\begin{figure}[!ht]
%\centering
%\includegraphics[width=0.25\textwidth]{Kepek/3.1_Dif_robot/robot_sajat.png}
%\caption{Differenciális meghajtású robot.}\label{fig:diff hajtasu robot}
%\end{figure}


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:

and its result:

wraped figure

Please see both red lines: they marked the actual problem with wrapping. The image should be higher (so that the first red line vanished) and the second red line should contain text.

Compare it with the result if I comment wrapfigure and uncomment figure:

enter image description here

The complete 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}

% for hungarian blindtext
\makeatletter
\def\blindtext@hungarian{}
\blind@addtext{hungarian}{%
\def\blindtext@text{%
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\blindtext@endsentence
A vezérelt robotok esetében mindenképp szükség van emberi 
üzemeltetésre\blindtext@endsentence Ezek jellemzően olyan robotok 
melyek \blindmarkup{all letters of the alphabet} teljes mértékben 
függnek az emberi irányítástól, önállóan semmilyen feladatot, 
tevékenységet nem végeznek\blindtext@endsentence 
Vezérelt robotokat gyakran alkalmaznak orvosi műtétek során illetve 
katonai akciók, bombák hatástalanítása alkalmából\blindtext@endsentence
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\blindtext@endsentence 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\blindmarkup{like this}, 
földművelés\blindtext@endsentence
}% \blindtext@text
}
\makeatother




\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}}

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.

%\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}[ht]
\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}[ht]
\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{Differenciális meghajtású robot.}\label{fig:diff hajtasu robot}
%\end{wrapfigure}
\begin{figure}[!ht]
\centering
\includegraphics[width=0.25\textwidth]{Kepek/3.1_Dif_robot/robot_sajat.png}
\caption{Differenciális meghajtású robot.}\label{fig:diff hajtasu robot}
\end{figure}


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}[ht]
\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 \ref{fig:seb_ido_C}. á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}
\begin{figure}
\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{figure}

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}[ht]
\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}

One example how you have to play with the options of environment wrapfigure. If you use the code

% \begin{wrapfigure}[number of narrow lines]{placement}[overhang in margins]{width of figure}〈figure〉\end{wrapfigure}
%\begin{wrapfigure}{r}{0.4\textwidth}
\begin{wrapfigure}[8]{r}{0.4\textwidth} % <===================

you defined that the length of the figure seems to be 8 lines (number of narrow lines). That results in the better result:

better result

Please compare this result with the first one you got with standard command \begin{wrapfigure}{r}{0.4\textwidth}!

For me this is the best you can get out of the given situation. For each other wrapped figure you have to redo testing the several numbers for manually finding a better result.

That do only, after the text is fixed.

Then start with figure 1, test the best parameters to wrap it, then go to figure 2, ...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.