summary refs log tree commit diff
path: root/Chapters/chapter2.tex
blob: f04861292a3e635f42149651d34ab6c849aa4c79 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
\chapter{Trenowanie sieci i zbieranie danych}
W celu autonomicznej jazdy wytrenowałem konwolucyjną sieć neuronową (CNN)
przetwarzającą obraz z kamery bezpośrednio w porządaną prędkość liniową
oraz obrotową. Takie podejście pozwala szybko zbierać dane uczące, wystarczy
tylko nagrać obraz z kamery oraz prędkość nadaną przez kierowcę.
\begin{figure}[h]
  \centering
  \fbox{
  \scalebox{0.5}{\includegraphics*[viewport=0 1300 600 2200]{img/model.png}}
  }
\end{figure}
\begin{figure}
  \centering
  \fbox{
  \scalebox{0.5}{\includegraphics*[viewport=0 0000 600 1300]{img/model.png}}
  }
  \label{model}
  \caption{Architektura sieci}
\end{figure}

Wersja sterująca w symulatorze powstała, żeby odrzucić modele, które nie radzą
sobie w tak prostych warunkach. Dodatkowo zbieranie danych oraz testowanie
modelu jest łatwiejsze, ponieważ nie wymaga przygotowywania sprzętu, oraz
opuszczenie toru przez model jest nieszkodliwe w porównaniu do opuszczenia
drogi przez fizycznego łazika.

Architektura sieci pochodzi z rozwiązania chauffeur w konkursie udacity self driving car\footnote
{ Repozytorium dostępne pod\href{https://github.com/udacity/self-driving-car/tree/master/steering-models/community-models}
{https://github.com/udacity/self-driving-car/tree/master/steering-models/community-models}},
ale została zaadaptowana do interfejsu symulatora oraz łazika (oprócz obrotu
potrafi też zadać prędkość). Konwersja z rosbaga (format nagrań ROSa) do 
naszego formatu oraz sam symulator zostały wykonane przez innych członków projektu.


\section{Trening na symulatorze}
Nagrania do nauki na symulatorze zostały wykonane przeze mnie i dwóch innych
uczestników projektu. Łączna długość nagrań wynosi około 50 minut, z czego 5
minut zostało przeznaczone na zbiór walidacyjny, a reszta była zbiorem uczącym.

Obrazy pochodzą z 3 kamer, jedna skierowana na wprost, a pozostałe były obrócone
o 20 stopni względem środkowej. Podczas uczenia wykorzystywany był obraz ze wszystkich
trzech kamer. Dla kamery środkowej porządanym wynikiem były nagrane dane z sterowania,
natomiast dla kamery lewej wynik był nieznacznie zaburzony w prawo, i analogicznie 
dla trzeciej kamery.
Dodatkowo obraz z kamery środkowej był dodany w postaci symetrycznego odbicia
ze zmienionym kierunkiem skrętu.

\section{Trening z nagrań łazika}
Do treningu zostało wykorzystane około 150GB nagrań z łazika, zawierających
obraz z kamery oraz informacje o sterowaniu, jest to kilkanaście objazdów
po podziemnym garażu. Na większości ujęć widać kratkę zazwyczaj zgodną z kierunkiem
jazdy, ale zakręcjącą pod kątem prostym. Około 6GB danych zostało wykorzystanych jako
zbiór walidacyjny.

Nagrania pochodzą z jednej fizycznej kamery. Dla każdego ujęcia zostało
dodane jego odbicie lustrzane z przeciwnym kątem skrętu.