%% This LaTeX-file was created by <pantec> Tue Apr 15 01:41:19 1997
%% LyX 0.10 (C) 1995 1996 by Matthias Ettrich and the LyX Team

%% Don't edit this file unless you are sure what you are doing.
\documentclass[11pt,a4paper,oneside,onecolumn,german]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage[dvips]{epsfig}

%%
%% BEGIN The lyx specific LaTeX commands.
%%

\makeatletter
\def\LyX{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\spacefactor1000}%
\newcommand{\lyxtitle}[1] {\thispagestyle{empty}
\global\@topnum\z@
\section*{\LARGE \centering \sffamily \bfseries \protect#1 }
}
\newcommand{\lyxline}[1]{
{#1 \vspace{1ex} \hrule width \columnwidth \vspace{1ex}}
}
\newenvironment{lyxbibliography}
{
\begin{thebibliography}{99}}
{\end{thebibliography}}
\def\lxq{"}
\newenvironment{lyxcode}
{\list{}{
\rightmargin\leftmargin
\raggedright
\itemsep 0pt
\parsep 0pt
\ttfamily
}%
\item[]
}
{\endlist}
\newcommand{\lyxlabel}[1]{#1 \hfill}
\newenvironment{lyxlist}[1]
{\begin{list}{}
{\settowidth{\labelwidth}{#1}
\setlength{\leftmargin}{\labelwidth}
\addtolength{\leftmargin}{\labelsep}
\renewcommand{\makelabel}{\lyxlabel}}}
{\end{list}}
\newcommand{\lyxletterstyle}{
\setlength\parskip{0.7em}
\setlength\parindent{0pt}
}
\newcommand{\lyxaddress}[1]{
\par {\raggedright #1 
\vspace{1.4em}
\noindent\par}
}
\newcommand{\lyxrightaddress}[1]{
\par {\raggedleft \begin{tabular}{l}\ignorespaces
#1
\end{tabular}
\vspace{1.4em}
\par}
}
\newcommand{\lyxformula}[1]{
\begin{eqnarray*}
#1
\end{eqnarray*}
}
\newcommand{\lyxnumberedformula}[1]{
\begin{eqnarray}
#1
\end{eqnarray}
}
\makeatother

%%
%% END The lyx specific LaTeX commands.
%%

\pagestyle{headings}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}

%% Begin LyX user specified preamble:


%% End LyX user specified preamble.
\begin{document}


\vspace*{\fill}
\lyxtitle{Praktikum \\
\rmfamily \Huge \glqq{}Autonome Roboter\grqq{} \sffamily \LARGE \\
\mdseries \large Hilfsprogramme zur Ansteuerung und Simulation
des Khepera-Roboters \\
\small Thomas Pantzer 1997\bfseries }
\vspace*{\fill}

\tableofcontents


\section{'khepera' -- Steuerprogramm mit XForms-Bibliothek}


\subsection{Features}

\begin{itemize}

\item Anzeige der Infrarot- und Ambientlichtsensoren als Bargraph

\item Anzeige der Lichtschranke und des Kontaktwiderstandswertes im Greifer

\item Anzeige der LCC-Kamera als Bargraph

\item Alle Effektoren des Roboters können interaktiv bedient werden

\item berechnet X,Y-Position aus Impulszählern an den Rädern des Roboters

\item X - Oberfläche, mit Maus bedienbar

\item kann Roboter (und/oder Simulator) über Netzwerksockets ansprechen

\item steuert bis zu 4 Roboter gleichzeitig

\item kann mit SNNS modellierte Feed-Forward-Netze einlesen

\end{itemize}


\subsection{Kommandozeilenoptionen}

\begin{itemize}

\item -H \em hostname\\
\em der Hostname auf dem der Simulator läuft

\item -D \em device \em \\
Dateiname der Gerätedatei, muß mit einer Ziffer enden, bei mehreren
zu steuernden Robotern wird diese Ziffer inkrementiert.

\item -P \em portnummer \em \\
Portnummer für Socketoperationen, default ist 55555

\item -R \em \(<\)Anzahl der Roboter\(>\) \em \\
nur Werte zwischen 1..4 sind zulässig, Roboter müssen vorher angeschlossen
und betriebsbereit sein, Schnittstellennamen (Gerätedateien) müssen
aufeinanderfolgende Endziffern im Namen haben (z.B. ttyS0, ttyS1,
ttyS2 ...)

\end{itemize}


\subsection{Programmiermodell eines neuronalen Netzes}

\begin{itemize}

\item drei Objekttypen, \em t\_Net, t\_Neuron, t\_Synapse\em 

\item wichtige Methoden: \em Work,Connect, Cut,ReadInput,Activation\em 

\item Methode zur Darstellung: \em Show\em 

\item Organisation in verketteten Listen

\item rekursive Funktion um Aktivierung eines Neurons zu Berechnen

\item Zeitschrittvariable zur Realisierung rekurrenter Netze

\end{itemize}

\vspace{0.30cm}
{\centering \epsfig{file=neuron-impl.eps, width=0.7\textwidth} \par}
\vspace{0.30cm}


\subsection{Objekt RobotContext}

\begin{itemize}

\item stellt Datenstruktur für einen Roboter zur Verfügung

\item enthält ein Objekt des Typs \em t\_World\em 

\item wichtige Methoden: \\
\em Move, Turn, Stop, WaitFinalMove, Grip, Release, Lift, SetOrientation,
UpdateSensors, GetMotorSpeed, SetWheelCounter, ReadWheelCounter, TurnWheelsCount,
ReadImage\em 

\item kann X,Y - Koordinaten aus Radzählern berechnen (nicht sehr zuverlässig)

\item noch nicht alle steuerbaren Funktionen des Roboters implementiert

\end{itemize}


\subsection{User Callback Routinen}

\begin{itemize}

\item Programm läuft in einer Schleife

\item User-Callback-Prozedur wird immer wieder angesprungen

\item sollte so schnell wie möglich beendet sein um anderen Programmteilen
wie zum Beispiel Tastaturabfrage oder Bildschirmaufbau (falls nicht
von X schon erledigt) auch eine Chance auf Ausführung zu geben.

\end{itemize}


\subsection{Graphische Ausgabe im X-Fenster}

\begin{itemize}

\item Objekte t\_Path, t\_World

\item t\_Path ist verkettete Liste von X,Y-Koordinaten + Flags

\item t\_World hält die größten (kleinsten) XY-Werte und die Größe der Welt


\item xforms-Bibliothek bietet \em canvas , \em (virtueller Bildschirm)


\item Makros erleichtern das Zeichnen und Textausgabe in ein X-Fenster (in
ein \em canvas\em )

\item Graphikausgaberoutine wird immer ausgeführt wenn das betreffende X-Fenster
neu gezeichnet werden muß, d.h. alle Befehle um einen Bildschirm vollständig
zu zeichnen müssen in dieser Prozedure aufgerufen werden.

\end{itemize}


\section{'sim' -- Simulator und Steuerprogramm}


\subsection{Features}

\begin{itemize}

\item Anzeige der Infrarot- und Ambientlichtsensoren

\item Anzeige der Motorgeschwindigkeit

\item X - Oberfläche, mit Maus bedienbar

\item kann als Simulator oder zur Steuerung eines echten Roboters benutzt
werden

\item Programmdokumentation im Postscriptformat

\item kann als Simulator für andere Programme dienen

\item Möglichkeit zur Modellierung einer Miniwelt

\item Beispieletexte für regelbasierte und neuronale Steuerung des Roboters

\item erweiterter Simulator \em sim-hp \em 

\end{itemize}


\subsection{Kommandozeilenoptionen}

\begin{itemize}

\item Option '-p' \hfill{} pipeline Modus der Simulator öffnet einen Socket
um anderen Prozessen Zugriff auf einen virtuellen Roboter zu geben.

\end{itemize}


\subsection{User Callback Routinen}

wie bei khepera Ausführung einer User-Callback-Routine die vom Nutzer
mit Programmtext zu füllen ist


\subsection{Graphische Ausgabe im X-Fenster}

Makros erleichtern die Ausgabe in einen Bereich des X-Fenster


\subsection{Programmstart}

benötigt Datei \em .simrc \em und Unterverzeichnisse \em WORLD \em und
\em ROBOT \em im aktuellen Verzeichnis


\section{Anhang}


\subsection{Pfadnamen}


\subsubsection{Ausführbare Dateien}

\begin{enumerate}

\item milab: /home/public/kurs207/bin

\item hppool: /public/mai92cxm/bin

\end{enumerate}


\subsubsection{Programmpacket 'SIM'}

\begin{enumerate}

\item milab: 

\begin{enumerate}

\item /home/public/kurs207/src/SIM \hfill{} Originalversion mit regelbasiertem
Beispiel

\item /home/public/kurs207/src/SIM.2\hfill{} Originalversion mit neuronalem
Beispiel

\item /home/public/kurs207/src/sim-hp\hfill{}erweiterte Version mit Sockets,
Radzähleruntersützung im Simulator und kleineren Bugfixes ;-)

\end{enumerate}

\item hppool:

\begin{enumerate}

\item /public/mai92cxm/src/sim-hp

\end{enumerate}

\end{enumerate}


\subsubsection{Programmpacket 'khepera'}

\begin{enumerate}

\item milab: /home/public/kurs207/src/khepera

\item hppool: /public/mai92cxm/src/khepera

\end{enumerate}


\subsubsection{vortrainierte Beispielnetzwerke (Feed-Forward)}

\begin{enumerate}

\item milab: /home/public/kurs207/snns

\item hppool: /home/mai92cxm/snns

\end{enumerate}


\subsection{Definition der Softwareschnittstelle zum Roboter (Kopien)}

\end{document}
