Skip to content
Snippets Groups Projects
Commit f1023c7f authored by Phuc Tran Truong's avatar Phuc Tran Truong
Browse files

Add odroid setup instructions to main doc

parent c20f4d5f
Branches
No related merge requests found
doc/mainDocument/img/emmc.png

421 KiB

doc/mainDocument/img/emmcAdapter.png

449 KiB

......@@ -8,7 +8,7 @@
\usepackage[inline]{enumitem}
\usepackage[hidelinks]{hyperref}
\usepackage{tabularx} %used for better table formatting see: https://en.wikibooks.org/wiki/LaTeX/Tables#The_tabularx_package
\usepackage[table]{xcolor}
\usepackage[table,dvipsnames]{xcolor}
\usepackage{graphicx} %pictures, photos
\usepackage{subfiles} %split doc into multiple .tex subfiles
\graphicspath{ {./img/} }
......@@ -22,7 +22,7 @@
\usepackage{pdflscape}
%\geometry{scale = 0.5} %for class diagram???
\usepackage{listings}
\usepackage{xcolor}
%%% GLOSSARY %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{../glossary.tex}
......@@ -59,9 +59,9 @@
extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8
%frame=single, % adds a frame around the code
keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible)
keywordstyle=\color{blue}, % keyword style
keywordstyle=\color{MidnightBlue}, % keyword style
language=Python, % the language of the code
%morekeywords={*,...}, % if you want to add more keywords to the set
morekeywords={echo, set, type}, % if you want to add more keywords to the set
numbers=left, % where to put the line-numbers; possible values are (none, left, right)
numbersep=5pt, % how far the line-numbers are from the code
numberstyle=\tiny,%\color{mygray}, % the style that is used for the line-numbers
......@@ -70,7 +70,7 @@
showstringspaces=false, % underline spaces within strings only
showtabs=false, % show tabs within strings adding particular underscores
stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered
stringstyle=\color{mymauve}, % string literal style
stringstyle=\color{ForestGreen}, % string literal style
tabsize=2, % sets default tabsize to 2 spaces
title=\lstname % show the filename of files included with \lstinputlisting; also try caption instead of title
}
......@@ -114,10 +114,12 @@
\tableofcontents
\clearpage
% Struktur sollte mal bearbeitet werden
\subfile{sections/projektbeschreibung}
\subfile{sections/organisation}
\subfile{sections/ausbaustufen}
\subfile{sections/usecases}
\subfile{sections/setup}
\subfile{sections/kommunikation}
\subfile{sections/architektur}
\subfile{sections/modspez}
......
\documentclass[../mainDocument.tex]{subfiles}
\begin{document}
\section{Setup}
In diesem Abschnitt sollen die Schritte beschrieben werden, um das ODROID vollständig einzurichten. Auf das Speichermodul, die eMMC, muss das Betriebssystem Ubuntu 16.04 LTS gespielt werden. Das WLAN (eduroam) muss eingerichtet werden, um grundlegende Tools wie vim und git und die ROS Software Bibliotheken/Werkzeuge zu installieren und die Repositories der Gruppen zu klonen.
\subsection{ODROID und Ubuntu}
Um das ODROID nutzen zu können, müssen wir das Betriebssystem Ubuntu 16.04 LTS installieren. Dazu benötigen wir einen Computer, die eMMC und einen microSD-Adapter.
\begin{figure}
\centering
\begin{minipage}{.4\textwidth}
\centering
\includegraphics[width=2cm]{emmc}
\captionof{figure}{ODROID-XU3/XU4 eMMC 5.0 Modul, 32 GB}
\label{fig:test1}
\end{minipage}%
\hfill
\begin{minipage}{.4\textwidth}
\centering
\includegraphics[width=2cm]{emmcAdapter}
\captionof{figure}{eMMC/microSD Kartenleser-Adapter}
\label{fig:test2}
\end{minipage}
\end{figure}\\
Eine Anleitung zur Installation von Ubuntu auf dem ODROID XU4 gibt es hier:
\url{https://scroom.de/ubuntu-16-04-lts-auf-dem-odroid-xu4-installieren/}
Als erstes muss man die eMMC mittels microSD-Adapter an einen Computer anschließen. Diese muss man formatieren.
Dann muss man die für das ODROID passende Ubuntu Distribution von Hardkernel herunterladen:
\url{https://wiki.odroid.com/odroid-xu4/os_images/linux/ubuntu/ubuntu}
Dieses Image mittels unxz entpacken:
\lstinline{unxz ubuntu-16.04.3-4.14-minimal-odroid-xu4-20171213.img.xz}
Um nun Ubuntu auf das eMMC zu flashen, benutzt man am besten Etcher. Alternativ kann man diesen Vorgang auch mit Konsolenbefehlen durchführen. Diese findet man in der oben angegebenen Anleitung.
Für Linux Systeme gibt es Etcher als .AppImage Datei: \url{https://etcher.io}
Um diese auszuführen:
\begin{enumerate}
\item Das AppImage ausführbar machen:
\lstinline{chmod a+x etcher-1.3.1-x86_64.AppImage}
\item Das Programm ausführen:
\lstinline{./etcher-1.3.1-x86_64.AppImage}
\end{enumerate}
Dann wählt man das Ubuntu Image und die eMMC aus.
Nach dem Flashen kann man die eMMC vom Computer trennen und an das ODROID anschließen.
Dann sollte es booten.
Standardmäßig kann man sich mit dem Nutzernamen \textit{root} und dem Passwort \textit{odroid} anmelden.
Um das Passwort zu ändern, führt man den folgenden Befehl aus: \lstinline{sudo passwd}.
\subsection{WLAN (eduroam)}
Um eine WLAN-Verbindung herzustellen, benötigt man einen WLAN-Stickn oder ein WLAN-Modul. Wir gehen an dieser Stelle davon aus, dass diese nach dem Plug-and-Play-Prinzip funktionieren und hier keine Einrichtung nötig ist.
Man kann mittels \lstinline{ifconfig} und \lstinline{iwconfig} überprüfen, ob die WLAN-Schnittstelle vorhanden ist und wie sie heißt. Wir gehen von nun an davon aus, dass die Schnittstelle \textit{wlan0} heißt. Andernfalls muss man den Namen der Schnittstelle im Folgenden immer anpassen.
Der herkömmliche Weg, wie man sich mit einem WLAN-Netzwerk verbindet:
\begin{enumerate}
\item Mittels \lstinline{ifconfig wlan0} die WLAN-Karte anschalten.
\item Mit \lstinline{iwconfig wlan0 essid name key password} mit dem Netzwerk verbinden. Ersetze \textit{name} dem Namen des Netzwerks, \textit{password} mit dem Sicherheitsschlüssel des Netzwerks.
\item Mit \lstinline{dhclient wlan0} eine IP Adresse erhalten und mit dem WLAN- Netzwerk verbinden.
\end{enumerate}
Die WLAN-Verbindung kann man mittels \lstinline{iwconfig} oder \lstinline{ping www.hu-berlin.de} überprüfen.
Um sich mit dem eduroam zu verbinden, sind andere Schritte nötigt. Die Einrichtung wird in der folgenden Anleitung ausführlich beschrieben:
\url{https://www.cms.hu-berlin.de/de/dl/netze/wlan/config/eduroam/linux/eduroam-linux-wpa_supp.pdf}
Für die Einrichtung sind zwei Dateien nötig:
\begin{enumerate}
\item \href{http://www.cms.hu-berlin.de/dl/netze/wlan/config/eduroam/deutsche-telekom-root-ca-2.crt}{\texttt{deutsche-telekom-root-ca-2.crt}}
\item \href{http://www.cms.hu-berlin.de/dl/netze/wlan/config/eduroam/linux/wpa_supplicant.conf}{\texttt{wpa\_supplicant.conf}}
\end{enumerate}
Am besten lädt man diese mittels \lstinline{curl} oder \lstinline{wget} vorher mit einer WLAN-Verbindung zu Hause oder via Hotspot herunter. Z.B.:
\begin{itemize}
\item \lstinline{wget http://www.cms.hu-berlin.de/dl/netze/wlan/config/eduroam/deutsche-telekom-root-ca-2.crt}
\item \lstinline{curl -O http://www.cms.hu-berlin.de/dl/netze/wlan/config/eduroam/linux/wpa_supplicant.conf}
\end{itemize}
Alternativ lädt man diese Dateien mit einem anderen Computer herunter und kopiert diese (z.B. nach dem Flashvorgang) auf das ODROID. Ansonsten kann man die Dateien auf einen USB-Stick kopieren und diese auf das ODROID übertragen. Dazu führt man folgende Schritte durch:
\begin{enumerate}
\item Mit \lstinline{lsblk} herausfinden, wie der USB-Stick heißt. Die Partition sollte in etwa so aussehen wie \lstinline{/dev/sdb1}.
\item Mit \lstinline{sudo mkdir /media/usb} einen Mount Point (Einhängepunkt) erstellen.
\item Mit \lstinline{sudo mount /dev/sdb1 /media/usb} mounten.
\item Mit
\begin{itemize}
\item \lstinline{sudo mv /path/to/deutsche-telekom-root-ca-2.crt /etc/wpa_supplicant/}
\item \lstinline{sudo mv /path/to/wpa_supplicant.conf /etc/wpa_supplicant}
\end{itemize}
die beiden Dateien in den \lstinline{/etc/wpa_supplicant} Ordner bewegen (oder mit \lstinline{cp} kopieren). Dabei muss \lstinline{/path/to} durch den entsprechenden Pfad zu den Dateien ersetzt werden.
\item Mit \lstinline{sudo umount /media/usb} unmounten.
\end{enumerate}
Nun muss man \lstinline{wpa_supplicant.conf} bearbeiten. Am einfachsten ist es, diese Datei schon vorher auf einem Computer zu bearbeiten. Ansonsten muss man \lstinline{vi /etc/wpa_supplicant/wpa_supplicant.conf} ausführen. Außer \lstinline{vi} ist standardmäßig kein anderer Editor auf dem ODROID installiert. Ansonsten kann man sich schon vorher via Hotspot oder zu Hause mittels \lstinline{sudo apt install vim} den Editor \lstinline{vim} installieren. Hier ist eine Anleitung, wie man \lstinline{vi} verwendet: \url{https://www.suse.com/de-de/documentation/sles10/book_sle_reference/data/sec.suse.vim.html}.
In der \lstinline{wpa_supplicant.conf} muss man \textit{YourNameHere} durch die HU E-Mail Adresse ersetzen, also etwas wie \textit{foobar@informatik.hu-berlin.de}. \textit{YourPasswordHere} kann man durch das entsprechende Passwort ersetzen. Allerdings steht das Passwort in der Datei als Klartext und ist für jeden sichtbar, der auf die Datei als root User zugreifen kann. Alternativ kann man die Passwortzeile löschen oder auskommentieren. Dann muss man das Passwort jedes Mal eingeben, wenn man sich mit eduroam verbinden will.
Um die Verbindung zu testen, führt man nun folgende Befehle aus:
\begin{enumerate}
\item \lstinline{sudo service network-manager stop}, um eventuelle automatische Konfigurationsversuche zu vermeiden
\item \lstinline{sudo wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -d}
\end{enumerate}
Falls die Passwortzeile gelöscht wurde, muss man nun in einer neuen Konsole Ctrl+Alt+F2
\lstinline{sudo wpa_cli} ausführen. Nach kurzer Zeit sollte eine Zeile angezeigt werden, die sagt, dass für eduroam ein Passwort nötig ist. Dann gibt man \lstinline{password 0 YourPassword} ein, wobei \textit{YourPassword} durch das entsprechende HU Passwort ersetzt werden muss. Falls die Eingabe akzeptiert wird, dann sollte eine Zeile angezeigt werden, die sagt, dass die Verbindung erfolgreich war. Aus diesem interaktiven Modus kommt man mittels \lstinline{q} heraus.
Nun kann man die WLAN-Verbindung wie zuvor mittels \lstinline{iwconfig} oder \lstinline{ping www.hu-berlin.de} überprüfen. Falls dies noch nicht funktioniert, führt man noch folgende Befehle aus, um eine neue IP Adresse zu erhalten und sich mit dem WLAN-Netzwerk zu verbinden.:
\begin{enumerate}
\item \lstinline{dhclient wlan0 -r}
\item \lstinline{dhclient wlan0}
\end{enumerate}
Um die Änderungen permanent zu machen, bearbeiten wir \lstinline{/etc/network/interfaces}. Die Einstellungen für das WLAN-Interface sollten wie folgt aussehen:
\begin{lstlisting}
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
\end{lstlisting}
Beim nächsten Hochfahren des ODROIDs muss man, falls die Passwortzeile gelöscht wurde, den Befehl \lstinline{sudo wpa_cli} ausführen und wie zuvor beschrieben das Passwort eingeben, um sich mit dem eduroam zu verbinden.
\subsection{Essentials}
Nun da das ODROID eine Internetverbindung hat, sollte man es updaten: \lstinline{sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade}
Anschließend sollte \lstinline{git} installiert werden, damit die Repositories der Gruppen mit der Software geklont werden können: \lstinline{sudo apt install git-all}
Der Befehl, um ein Repository zu klonen, sieht dann z.B. so aus:\\
\lstinline{git clone https://gitlab.informatik.hu-berlin.de/adapt/ws17-HF/Gruppe-A.git}\\
Beim Klonen, Pullen, Pushen usw. wird jedes Mal der Nutzername und das Passwort abgefragt.
\subsection{ROS}
Für das Semesterprojekt wird ROS (Robot Operating System) verwendet. Konkret wird die ROS Version Lunar Loggerhead verwendet. Eine ausführliche Anleitung zur Installation gibt es hier: \url{http://wiki.ros.org/lunar/Installation/Ubuntu}
Um sich die Arbeit etwas einfacher zu machen, sollte man das ODROID mit dem eduroam verbinden und diesen dann mit einem normalen Computer (mit GUI und eduroam-Verbindung) per \lstinline{ssh} steuern. Dann ist es möglich, die Befehle der Anleitung zu kopieren und einzufügen, statt diese manuell einzutippen. Die IP-Adresse des ODROIDs erfährt man mit \lstinline{ifconfig wlan0}. Anschließend kann man sich mit \lstinline{ssh root@10.42.43.1} verbinden. Die IP-Adresse muss hier entsprechend angepasst werden. Mit \lstinline{scp} ist es außerdem möglich, Daten zu übertragen.
Bsp.: \lstinline{scp foobar.txt root@10.42.43.1:/some/remote/directory}
\begin{enumerate}
\item Den ODROID so einstellen, dass er Software von packags.ros.org akzeptiert:\\
\lstinline{sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'}
\item Die Schlüssel einstellen:\\
\lstinline{sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key}\\ \lstinline{421C365BD9FF1F717815A3895523BAEEB01FA116}
\item Den Debian Package Index aktualisieren: \lstinline{sudo apt-get update}
\item ROS-Base installieren: \lstinline{sudo apt-get install ros-lunar-ros-base}
\item \lstinline{rosdep} initialisieren:\\
\lstinline{sudo rosdep init}\\
\lstinline{rosdep update}
\item Die Umgebung einrichten, damit ROS Umgebungsvariablen automatisch zur Bash Session hinzugefügt werden:\\
\lstinline{echo "source /opt/ros/lunar/setup.bash" >> ~/.bashrc}\\
\lstinline{source ~/.bashrc}
\item Werkzeuge und andere Abhängigkeiten zum Bauen von ROS Packages installieren:\\
\lstinline{sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential}
\end{enumerate}
Alle weiteren Schritte mit ROS werden in den ROS Tutorials beschrieben:\\
\url{http://wiki.ros.org/ROS/Tutorials}
\subsection{AdHoc Netzwerk}
Man kann die ODROIDs über ein gemeinsames WLAN-Netzwerk kommunizieren lassen. In einem Szenario, wo echte Autos in Kolonne fahren sollen, ist so ein WLAN-Netzwerk jedoch meist nicht vorhanden.
Für die drahtlose Kommunikation zwischen den ODROIDs verwenden wir daher ein AdHoc Netzwerk.
Dafür empfiehlt es sich, ein Skript zu erstellen.
\begin{lstlisting}
IFACE="wlan0"
sudo service network-manager stop
sudo ifconfig $IFACE down
sudo iw $IFACE set type ibss
sudo ifconfig $IFACE up
sudo iw $IFACE ibss join SPHAF 2432
sudo ifconfig $IFACE 10.42.43.1
\end{lstlisting}
Dies nennen wir \lstinline{connectAdHoc.sh}. Mittels \lstinline{chmod u+x connectAdHoc.sh} macht man das Skript ausführbar und kann es dann mit \lstinline{./connectAdHoc.sh} ausführen.
Mit \lstinline{iwconfig} kann man überprüfen, ob alles funktioniert hat.
Mit dem Skript wird ein AdHoc Netzwerk mit dem Namen \textit{SPHAF} (SemesterProjekt HochAutonomes Fahren) auf dem Kanal 5 erstellt und das ODROID erhält die IP-Adresse 10.42.43.1. Für jeden Teilnehmer führt man das Skript durch. Dabei sollte jeder Teilnehmer am AdHoc Netzwerk eine eigene IP-Adresse erhalten. Die letzte Zeile sollte also für jeden Teilnehmer angepasst werden.
Nun kann man mit \lstinline{crontab} (\url{https://wiki.ubuntuusers.de/Cron/}) einstellen, dass das Skript jedes Mal direkt beim Neustart (vor dem Login-Vorgang) ausgeführt wird. Dies ist insbesondere dann hilfreich, wenn das ODROID auf dem Auto montiert ist und keine Tastatur angeschlossen ist.
Dazu muss man nun \lstinline{crontab -e} ausführen und die folgende Zeile einfügen: \lstinline{@reboot /root/connectAdHoc}.
Falls das AdHoc Netzwerk steht, kann man sich mittels \lstinline{ssh root@10.42.43.1} mit dem ODROID verbinden.
\end{document}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment