From e82a01b574592ef0ba8e2fcddf71a60db4c5c096 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Wed, 16 Dec 2015 11:14:50 +0100 Subject: [PATCH] document update' --- marsrover/document/Makefile | 7 +- .../document/{dev.tex => evaluation.tex} | 0 marsrover/document/map.tex | 29 --------- marsrover/document/marsrover.bib | 22 +++++++ marsrover/document/marsrover.tex | 8 ++- .../document/{req.tex => requirements.tex} | 0 marsrover/document/robot.tex | 64 +++++++++++++++++++ 7 files changed, 96 insertions(+), 34 deletions(-) rename marsrover/document/{dev.tex => evaluation.tex} (100%) delete mode 100644 marsrover/document/map.tex create mode 100644 marsrover/document/marsrover.bib rename marsrover/document/{req.tex => requirements.tex} (100%) create mode 100644 marsrover/document/robot.tex diff --git a/marsrover/document/Makefile b/marsrover/document/Makefile index 47cf1a5..8dd1783 100644 --- a/marsrover/document/Makefile +++ b/marsrover/document/Makefile @@ -1,6 +1,7 @@ LATEX:=latex +BIBTEX:=bibtex DOCUMENT:=marsrover -SOURCES:=map.tex req.tex dev.tex +SOURCES:=requirements.tex robot.tex evaluation.tex .SECONDARY: $(addsuffix .fmt,$(DOCUMENT)) .PHONY: clean @@ -10,9 +11,11 @@ all: $(DOCUMENT).pdf %.pdf: %.dvi dvipdfm $< -%.dvi: %.tex %.fmt $(SOURCES) +%.dvi: %.tex %.fmt %.bib $(SOURCES) $(LATEX) $(basename $@) $(LATEX) $(basename $@) + $(BIBTEX) $(basename $@) + $(LATEX) $(basename $@) %.fmt: preamble.tex $(LATEX) -ini -jobname="$(basename $@)" "&$(LATEX) $<\dump" diff --git a/marsrover/document/dev.tex b/marsrover/document/evaluation.tex similarity index 100% rename from marsrover/document/dev.tex rename to marsrover/document/evaluation.tex diff --git a/marsrover/document/map.tex b/marsrover/document/map.tex deleted file mode 100644 index 686e483..0000000 --- a/marsrover/document/map.tex +++ /dev/null @@ -1,29 +0,0 @@ -\section{Robot architecture} -\subsection{Mapping of the sensors and actuators} -The actuators are all plugged into the master brick to achieve the maximum -safety in case the \emph{Bluetooth} connection fails between the master and the -slave and one of the actuators is moving. All the safety-critical sensors for -movement are placed on the master brick too. All other sensors are placed on -the slave brick. Any increased latency on those sensors will not danger the -safety. The final mapping is described in \autoref{tab:mapping}. - -\begin{table}[H] - \centering - \begin{tabular}{lll} - \toprule - & Master Brick & Slave Brick\\ - \midrule - \multirow{2}{*}{Actuators} & Left motor\\ - & Right motor & \\ - & Measurement motor\\ - \midrule - \multirow{4}{*}{Sensors} & Left light sensor & Color sensor\\ - & Right light sensor & Front ultrasone sensor\\ - & Back ultrasone sensor & Left touch sensor\\ - & Gyro sensor & Right touch sensor\\ - \bottomrule - \end{tabular} - \caption{Proposed mapping of the sensors and actuators}\label{tab:mapping} -\end{table} - -\subsection{Design patterns} diff --git a/marsrover/document/marsrover.bib b/marsrover/document/marsrover.bib new file mode 100644 index 0000000..7dc3519 --- /dev/null +++ b/marsrover/document/marsrover.bib @@ -0,0 +1,22 @@ + +@article{brooks_robust_1986, + title = {A robust layered control system for a mobile robot}, + volume = {2}, + url = {http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1087032}, + number = {1}, + urldate = {2015-12-16}, + journal = {Robotics and Automation, IEEE Journal of}, + author = {Brooks, Rodney}, + year = {1986}, + pages = {14--23}, + file = {01087032.pdf:/home/mart/.zotero/zotero/ofn8ivnf.default/zotero/storage/RRTSK9H5/01087032.pdf:application/pdf} +} + +@misc{lejos_team_lejos_2015, + title = {{LeJOS} {EV}3 {API} {Documentation}}, + url = {http://www.lejos.org/ev3/docs/}, + urldate = {2015-12-16}, + author = {LeJOS Team}, + month = nov, + year = {2015} +} \ No newline at end of file diff --git a/marsrover/document/marsrover.tex b/marsrover/document/marsrover.tex index 17addd5..0ca8aef 100644 --- a/marsrover/document/marsrover.tex +++ b/marsrover/document/marsrover.tex @@ -3,7 +3,9 @@ \maketitle \tableofcontents \newpage -\input{req.tex} -\input{map.tex} -\input{dev.tex} +\input{requirements.tex} +\input{robot.tex} +\input{evaluation.tex} +\bibliographystyle{ieeetr} +\bibliography{marsrover} \end{document} diff --git a/marsrover/document/req.tex b/marsrover/document/requirements.tex similarity index 100% rename from marsrover/document/req.tex rename to marsrover/document/requirements.tex diff --git a/marsrover/document/robot.tex b/marsrover/document/robot.tex new file mode 100644 index 0000000..5140b15 --- /dev/null +++ b/marsrover/document/robot.tex @@ -0,0 +1,64 @@ +\section{Robot architecture} +\subsection{Tools} +\emph{LeJOS}\cite{lejos_team_lejos_2015} + +\subsection{Design patterns} +\subsubsection{Leader-Follower} +Ultimately we want to only program one robot. The fact that the one robot +contains multiple control bricks is something that needs to be abstracted away +from. As will be discussed in Section~\ref{sec:mapping} the first brick, from +now on \textit{Leader}, has the direct control over all the motors. However the +second brick, from now on \textit{Follower}, controls no motors. Both the +\textit{Leader} and the \textit{Follower} control $4$ sensors. Because of this +configuration the \textit{Follower} only needs to send its sensor data to the +\textit{Leader}. There is no need to communicate anything back since the +\textit{Follower} can not respond in any physical way. An option could be to +distribute the processing power but due to the strength of the bricks and the +limitation of the bluetooth this is very hard or even impossible to achieve. + +\subsubsection{Subsumption} +As the higher level architecture we use a slightly adapted version of the +subsumption architecture first described by Brooks\cite{brooks_robust_1986}. +We use the pre-implemented architecture from the \emph{LeJOS} where with the +use of a \texttt{suppressed} flag in every behaviour we can start and interrupt +the behaviour. Our version is a little bit adapted from the original +subsumption behaviour because in our implementation the robot can finish the +designated task even if the behaviour does not want control anymore. For +example when the left light sensor detects that the robot is driving of the +planet a right turn of $90$ degrees may be initiated. This right turn will be +completed even when the left light sensor is not detecting a dangerous value. +The suppressed flag can take three states. \texttt{IDLE}, \texttt{IN\_ACTION} +and \texttt{SUPPRESSED}. By default all behaviours have the \texttt{IDLE} +state. When a behaviour is started the state will change to \texttt{IN\_ACTION} +and when a behaviour finished the state will be reset to \texttt{IDLE}. When a +behaviour needs to be interrupted the state is set to \texttt{SUPPRESSED} and +since the behaviour is always monitoring the state it will shutdown as soon as +possible and reset the state. + +\subsection{Mapping of the sensors and actuators}\label{sec:mapping} +The actuators are all plugged into the master brick to achieve the maximum +safety in case the \emph{Bluetooth} connection fails between the master and the +slave and one of the actuators is moving. All the safety-critical sensors for +movement are placed on the master brick too. All other sensors are placed on +the slave brick. Any increased latency on those sensors will not danger the +safety. The final mapping is described in \autoref{tab:mapping}. + +\begin{table}[H] + \centering + \begin{tabular}{lll} + \toprule + & Master Brick & Slave Brick\\ + \midrule + \multirow{2}{*}{Actuators} & Left motor\\ + & Right motor & \\ + & Measurement motor\\ + \midrule + \multirow{4}{*}{Sensors} & Left light sensor & Color sensor\\ + & Right light sensor & Front ultrasone sensor\\ + & Back ultrasone sensor & Left touch sensor\\ + & Gyro sensor & Right touch sensor\\ + \bottomrule + \end{tabular} + \caption{Proposed mapping of the sensors and actuators}\label{tab:mapping} +\end{table} + -- 2.20.1