changed gfx and TeX

This commit is contained in:
2016-02-12 20:48:38 +01:00
parent 6b02336277
commit 2b6a207a8e
9 changed files with 8587 additions and 745 deletions

View File

@@ -3,64 +3,78 @@
% introduction
Evaluation took place within all floors (0 to 3) of the
faculty building, each of which about \SI{77}{\meter} x \SI{55}{\meter} in size.
%
We conducted 4 distinct walks, for testing short distances, long distances, critical sections
and ignoring the shortest-path suggested by the system. Each path is backed by ground truth information
to enable error calculation. This ground truth is measured by recording a timestamp at a marked spot
on the walking route. During the walk, the pedestrian has to click a button on the smartphone
application when passing a marker. Between two consecutive points, a constant movement speed is assumed.
Thus, the ground truth might not be \SI{100}{\percent} accurate, but good enough to conduct error measurements.
All walks were conducted using a Google Nexus 6 and a Samsung Galaxy S5.
and ignoring the shortest-path suggested by the system.
Due to an inhouse exhibition during that time, many places were crowded and \docWIFI{} signals
are attenuated more than usual.
Each acquired path is backed by ground truth information to enable error calculation.
This ground truth is measured by recording a timestamp at a marked spot on the walking route.
During the walk, the pedestrian had to click a button on the smartphone application
when passing a marker. Between two consecutive points, a constant movement speed is assumed.
Thus, the ground truth might not be \SI{100}{\percent} accurate, but fair enough to conduct
error measurements. All walks were conducted using a Google Nexus 6 and a Samsung Galaxy S5.
As the Samsung Galaxy S5's \docWIFI{} can not be limited to the \SI{2.4}{\giga\hertz} band only, its scans take much
longer than those of the Google Nexus 6: \SI{3500}{\milli\second} vs. \SI{600}{\milli\second}. Also, the Nexus' barometer sensor
provides readings more frequent and far more accurate than the Galaxy does. This results in a much better
localisation for the Nexus smartphone.
As the Samsung Galaxy S5's \docWIFI{} can not be limited to the \SI{2.4}{\giga\hertz} band only,
its scans take much longer than those of the Google Nexus 6:
\SI{3500}{\milli\second} vs. \SI{600}{\milli\second}.
Also, the Nexus' barometer sensor provides readings both more frequent and far more accurate than
the Galaxy does. This results in a much better localisation of the Nexus smartphone.
Despite being fast enough to run in realtime on the smartphone itself, computation was done offline using
the condensation algorithm with \SI{7500}{} particles as realization of the recursive density estimation \cite{todo}
and the weighted arithmetic mean of those for the state estimation.
the condensation algorithm with \SI{7500}{} particles as realization of the recursive density estimation \cite{todo}.
The weighted arithmetic mean of the particles was used as state estimation.
As mentioned earlier, the position of all \docAP{}s (about 5 per floor) is known beforhand.
Due to legal terms, we are not allowed to depict their positions and therefore omit this information within the figures.
Additionally we used three \docIBeacon{}s for slight enhancements in some areas.
The empirically chosen values for \docWIFI{} were $P_{0_{\text{wifi}}} = \SI{-46}{\dBm}, \mPLE_{\text{wifi}} = \SI{2.7}{}$,
and $\mPLE_{\text{ib}} = \SI{1.5}{}$ for the \docIBeacon{}s, respectively. Due to omitting a time-consuming calibration
process for those values, the sensor readings are considered somewhat faulty.
and $\mPLE_{\text{ib}} = \SI{1.5}{}$ for the \docIBeacon{}s, respectively.
%
Due to omitting a time-consuming calibration process for those values we expect the localistation
process to perform generally worse compared to fingerpring methods \todo{cite}. However,
incorporating prior knowledge will often compensate for those poorly chosen system parameters.
As uncertainties we used $\sigma_\text{wifi} = \sigma_\text{ib} = 8.0$, both growing with each measurement's age.
While the pressure change was assumed to be \SI{0.105}{$\frac{\text{\hpa}}{\text{\meter}}$}, all other barometer-parameters
are determined automatically (see \ref{sec:sensBaro}). The step size for the transition was configured to be \SI{70}{\centimeter}
with an allowed derivation of \SI{10}{\percent}. The heading deviation in \refeq{eq:transSimple} was \SI{25}{\degree}.
\commentByFrank{describe what was evaluated: 2 phones (differences), 4 paths, building, several floors, ibeacons, access points}
As we start with a uniformation distribution for $\mStateVec_0$ (random position and heading), the first few estimations
are omitted from the error calculation to allow the system to somewhat settle its initial state. Even though, the error
during the follwing few seconds is expected to be much higher than the error when starting with a well known initial
position and heading.
The follwing evaluations will depict the improvements prior path knowledge is able to provide
even when other system parameters are badly chosen.
Just adding importance-factors described in \ref{sec:wallAvoidance} and \ref{sec:doorDetection}
to the simple transition \refeq{eq:transSimple} addresses only minor local errors
% like not sticking too close to walls. In most cases this lead only to slight improvements
and is therefore not further evaluated.
%
\commentByFrank{bergwerk\_path3\_galaxy}
As we start with a uniformation distribution for $\mStateVec_0$, the first few estimations
are omitted from the error calculation to allow the system to settle its initial state.
Adding the importance factors described in \ref{sec:wallAvoidance} and \ref{sec:doorDetection}
to the simple transition \refeq{eq:transSimple} addresses only minor local errors like not
sticking too close to walls. In most cases this lead only to minor, if any, improvements
and is therefore not fruther evaluated.
\begin{figure}
\input{gfx/eval/paths}
\caption{The four paths that were part of the evaluation.
Starting positions are marked with black circles.
For a better visualisation they were slightly shifted to avoid overlapping.}
\label{fig:paths}
\end{figure}
\commentByFrank{verlassen vom shortest path fuehrt zu weniger verbesserung, aber es wird nach wie vor besser als ohne!}
\commentByFrank{in den ersten paar sec ist die pfad-info teils hinderlich, da die genaue position noch sehr unklar ist und sich erst einstellen muss.
deshalb geht der fehler hier oft leicht hoch}
\begin{figure}
%\includegraphics{eval/bergwerk_path2_nexus_shortest}
\end{figure}
% error development over time while walking along a path
\begin{figure}
\input{gfx/eval/error_timed_nexus}
\caption{Development of the error while walking along path 1 (upper) and path 4 (lower) using the Google Nexus 6.
Path 4 shows increasing errors for our methods when leaving the shortest path and when facing multimodalities between two
staircases at the end.}
Path 4 shows increasing errors for our methods when leaving the shortest path (3) and when facing multimodalities between two
staircases just before the destination (9).}
\label{fig:errorTimedNexus}
\end{figure}

View File

@@ -0,0 +1,4 @@
1210 470 1060
1060.18 4520 0
180 2970 1060
1070 470 1060

File diff suppressed because it is too large Load Diff

View File

@@ -5,23 +5,39 @@ set multiplot layout 2,1
set format y "\\footnotesize{%.1f m}"
set format x "\\footnotesize{%.0f s}"
set key horizontal
set yrange[0:16]
set yrange[0:17]
set xrange[0:91]
set xtics nomirror
set ytics nomirror
set key samplen 1.0 spacing 0.8 width -13
set key opaque box samplen 1.0 spacing 0.8 width -13
set lmargin 4.6
set tmargin 0.3
set rmargin 0.4
set bmargin 1.2
set object 1 rectangle from 0,0 to 20,17 fs solid noborder fc rgb "#eeeeee" behind
set label 1 "\\footnotesize{setup-phase}" at 9,1 rotate by 90 front
set object 1 rectangle from 0,0 to 13,17 fs solid noborder fc rgb "#eeeeee" behind # standing
set label 1 "\\footnotesize{1}" at 6.5,2 center rotate by 0 front
set object 2 rectangle from 13,0 to 34,17 fs solid noborder fc rgb "#dddddd" behind # walk towards stair
set label 2 "\\footnotesize{2}" at 23.5,13 center rotate by 0 front
set object 3 rectangle from 34,0 to 45,17 fs solid noborder fc rgb "#eeeeee" behind # walk down the stair
set label 3 "\\footnotesize{3}" at 39.5,13 center rotate by 0 front
set object 4 rectangle from 45,0 to 62,17 fs solid noborder fc rgb "#dddddd" behind # walk straight
set label 4 "\\footnotesize{4}" at 53.5,13 center rotate by 0 front
set object 5 rectangle from 62,0 to 78,17 fs solid noborder fc rgb "#eeeeee" behind # change side of floor
set label 5 "\\footnotesize{5}" at 70,13 center rotate by 0 front
set object 6 rectangle from 78,0 to 90,17 fs solid noborder fc rgb "#dddddd" behind # walk straight
set label 6 "\\footnotesize{6}" at 84.5,8 center rotate by 0 front
plot \
"data/err_bergwerk_path1_nexus_simple.dat" using ($1/100) with lines title "\\footnotesize{simple}\\hspace{-1.5mm}" lc rgb "#000000", \
"data/err_bergwerk_path1_nexus_multi.dat" using ($1/100) with lines title "\\footnotesize{multi}\\hspace{-1.5mm}" lc rgb "#0000cc", \
"data/err_bergwerk_path1_nexus_shortest.dat" using ($1/100) with lines title "\\footnotesize{shortest}\\hspace{-1.5mm}" lc rgb "#cc0000", \
"data/err_bergwerk_path1_nexus_simple.dat" using ($0/2):($1/100) with lines title "\\footnotesize{simple}\\hspace{-1.5mm}" lc rgb "#000000", \
"data/err_bergwerk_path1_nexus_multi.dat" using ($0/2):($1/100) with lines title "\\footnotesize{multi}\\hspace{-1.5mm}" lc rgb "#0000cc", \
"data/err_bergwerk_path1_nexus_shortest.dat" using ($0/2):($1/100) with lines title "\\footnotesize{shortest}\\hspace{-1.5mm}" lc rgb "#cc0000", \
#plot \
# "data/err_bergwerk_path2_nexus_simple.dat" using ($1/100) with lines title "raw" lc rgb "#000000", \
@@ -33,18 +49,47 @@ plot \
# "data/err_bergwerk_path3_nexus_multi.dat" using ($1/100) with lines title "multi-path", \
# "data/err_bergwerk_path3_nexus_shortest.dat" using ($1/100) with lines title "shortest-path", \
set object 1 rectangle from 0,0 to 20,15 fs solid noborder fc rgb "#eeeeee" behind
set label 1 "\\footnotesize{setup-phase}" at 9,1 rotate by 90 front
set object 2 rectangle from 40,0 to 60,15 fs solid noborder fc rgb "#eeeeee" behind
set label 2 "\\footnotesize{ignoring}" at 46,7.4 rotate by 90 front
set label 3 "\\footnotesize{path}" at 52,7.4 rotate by 90 front
#set object 3 rectangle from 106,0 to 116,15 fs solid noborder fc rgb "#eeeeee" behind
set object 4 rectangle from 128,0 to 138,15 fs solid noborder fc rgb "#eeeeee" behind
set label 4 "\\footnotesize{multimodality}" at 142,4.4 rotate by 90 front
#set object 1 rectangle from 0,0 to 20,15 fs solid noborder fc rgb "#eeeeee" behind
#set label 1 "\\footnotesize{setup-phase}" at 9,1 rotate by 90 front
#set object 2 rectangle from 40,0 to 60,15 fs solid noborder fc rgb "#eeeeee" behind
#set label 2 "\\footnotesize{ignoring}" at 46,7.4 rotate by 90 front
#set label 3 "\\footnotesize{path}" at 52,7.4 rotate by 90 front
#set object 4 rectangle from 128,0 to 138,15 fs solid noborder fc rgb "#eeeeee" behind
#set label 4 "\\footnotesize{multimodality}" at 142,4.4 rotate by 90 front
set object 1 rectangle from 0,0 to 14,15 fs solid noborder fc rgb "#eeeeee" behind # standing
set label 1 "\\footnotesize{1}" at 7,2 center rotate by 0 front
set object 2 rectangle from 14,0 to 40,15 fs solid noborder fc rgb "#dddddd" behind # walking down the way
set label 2 "\\footnotesize{2}" at 27,11 center rotate by 0 front
set object 3 rectangle from 40,0 to 51,15 fs solid noborder fc rgb "#eeeeee" behind # ignoring the shortest path
set label 3 "\\footnotesize{3}" at 45.5,11 center rotate by 0 front
set object 4 rectangle from 51,0 to 65,15 fs solid noborder fc rgb "#dddddd" behind # stairwell
set label 4 "\\footnotesize{4}" at 58,11 center rotate by 0 front
set object 5 rectangle from 65,0 to 74,15 fs solid noborder fc rgb "#eeeeee" behind # exit stairwell
set label 5 "\\footnotesize{5}" at 69.5,11 center rotate by 0 front
set object 6 rectangle from 74,0 to 105,15 fs solid noborder fc rgb "#dddddd" behind # floor
set label 6 "\\footnotesize{6}" at 89.5,11 center rotate by 0 front
set object 7 rectangle from 105,0 to 116,15 fs solid noborder fc rgb "#eeeeee" behind # stair down to f1
set label 7 "\\footnotesize{7}" at 110.5,11 center rotate by 0 front
set object 8 rectangle from 116,0 to 130,15 fs solid noborder fc rgb "#dddddd" behind # floor
set label 8 "\\footnotesize{8}" at 123,11 center rotate by 0 front
set object 9 rectangle from 130,0 to 142,15 fs solid noborder fc rgb "#eeeeee" behind # stair down to f0
set label 9 "\\footnotesize{9}" at 136,11 center rotate by 0 front
set object 10 rectangle from 142,0 to 150,15 fs solid noborder fc rgb "#dddddd" behind # end
set label 10 "\\footnotesize{10}" at 146,11 center rotate by 0 front
unset key
set yrange[0:13]
set xrange[0:150]
set xrange[0:151]
plot \
"data/err_bergwerk_path4_nexus_simple.dat" using ($0/2):($1/100) with lines title "\\footnotesize{simple}\\hspace{-1.5mm}" lc rgb "#000000", \
"data/err_bergwerk_path4_nexus_multi.dat" using ($0/2):($1/100) with lines title "\\footnotesize{multi}\\hspace{-1.5mm}" lc rgb "#0000cc", \

View File

@@ -83,24 +83,24 @@
\gplgaddtomacro\gplbacktext{%
\csname LTb\endcsname%
\put(475,2279){\makebox(0,0)[r]{\strut{}\footnotesize{0.0 m}}}%
\put(475,2490){\makebox(0,0)[r]{\strut{}\footnotesize{2.0 m}}}%
\put(475,2700){\makebox(0,0)[r]{\strut{}\footnotesize{4.0 m}}}%
\put(475,2911){\makebox(0,0)[r]{\strut{}\footnotesize{6.0 m}}}%
\put(475,3121){\makebox(0,0)[r]{\strut{}\footnotesize{8.0 m}}}%
\put(475,3332){\makebox(0,0)[r]{\strut{}\footnotesize{10.0 m}}}%
\put(475,3542){\makebox(0,0)[r]{\strut{}\footnotesize{12.0 m}}}%
\put(475,3753){\makebox(0,0)[r]{\strut{}\footnotesize{14.0 m}}}%
\put(475,3963){\makebox(0,0)[r]{\strut{}\footnotesize{16.0 m}}}%
\put(475,2477){\makebox(0,0)[r]{\strut{}\footnotesize{2.0 m}}}%
\put(475,2675){\makebox(0,0)[r]{\strut{}\footnotesize{4.0 m}}}%
\put(475,2873){\makebox(0,0)[r]{\strut{}\footnotesize{6.0 m}}}%
\put(475,3071){\makebox(0,0)[r]{\strut{}\footnotesize{8.0 m}}}%
\put(475,3270){\makebox(0,0)[r]{\strut{}\footnotesize{10.0 m}}}%
\put(475,3468){\makebox(0,0)[r]{\strut{}\footnotesize{12.0 m}}}%
\put(475,3666){\makebox(0,0)[r]{\strut{}\footnotesize{14.0 m}}}%
\put(475,3864){\makebox(0,0)[r]{\strut{}\footnotesize{16.0 m}}}%
\put(607,2059){\makebox(0,0){\strut{}\footnotesize{0 s}}}%
\put(1078,2059){\makebox(0,0){\strut{}\footnotesize{20 s}}}%
\put(1548,2059){\makebox(0,0){\strut{}\footnotesize{40 s}}}%
\put(2019,2059){\makebox(0,0){\strut{}\footnotesize{60 s}}}%
\put(2489,2059){\makebox(0,0){\strut{}\footnotesize{80 s}}}%
\put(2960,2059){\makebox(0,0){\strut{}\footnotesize{100 s}}}%
\put(3430,2059){\makebox(0,0){\strut{}\footnotesize{120 s}}}%
\put(3901,2059){\makebox(0,0){\strut{}\footnotesize{140 s}}}%
\put(4371,2059){\makebox(0,0){\strut{}\footnotesize{160 s}}}%
\put(4842,2059){\makebox(0,0){\strut{}\footnotesize{180 s}}}%
\put(1072,2059){\makebox(0,0){\strut{}\footnotesize{10 s}}}%
\put(1538,2059){\makebox(0,0){\strut{}\footnotesize{20 s}}}%
\put(2003,2059){\makebox(0,0){\strut{}\footnotesize{30 s}}}%
\put(2469,2059){\makebox(0,0){\strut{}\footnotesize{40 s}}}%
\put(2934,2059){\makebox(0,0){\strut{}\footnotesize{50 s}}}%
\put(3399,2059){\makebox(0,0){\strut{}\footnotesize{60 s}}}%
\put(3865,2059){\makebox(0,0){\strut{}\footnotesize{70 s}}}%
\put(4330,2059){\makebox(0,0){\strut{}\footnotesize{80 s}}}%
\put(4795,2059){\makebox(0,0){\strut{}\footnotesize{90 s}}}%
}%
\gplgaddtomacro\gplfronttext{%
\csname LTb\endcsname%
@@ -110,7 +110,12 @@
\csname LTb\endcsname%
\put(4251,3812){\makebox(0,0)[r]{\strut{}\footnotesize{shortest}\hspace{-1.5mm}}}%
\csname LTb\endcsname%
\put(819,2384){\rotatebox{90}{\makebox(0,0)[l]{\strut{}\footnotesize{setup-phase}}}}%
\put(910,2477){\makebox(0,0){\strut{}\footnotesize{1}}}%
\put(1701,3567){\makebox(0,0){\strut{}\footnotesize{2}}}%
\put(2445,3567){\makebox(0,0){\strut{}\footnotesize{3}}}%
\put(3097,3567){\makebox(0,0){\strut{}\footnotesize{4}}}%
\put(3865,3567){\makebox(0,0){\strut{}\footnotesize{5}}}%
\put(4540,3071){\makebox(0,0){\strut{}\footnotesize{6}}}%
}%
\gplgaddtomacro\gplbacktext{%
\csname LTb\endcsname%
@@ -122,20 +127,26 @@
\put(475,1560){\makebox(0,0)[r]{\strut{}\footnotesize{10.0 m}}}%
\put(475,1819){\makebox(0,0)[r]{\strut{}\footnotesize{12.0 m}}}%
\put(607,44){\makebox(0,0){\strut{}\footnotesize{0 s}}}%
\put(1172,44){\makebox(0,0){\strut{}\footnotesize{20 s}}}%
\put(1736,44){\makebox(0,0){\strut{}\footnotesize{40 s}}}%
\put(2301,44){\makebox(0,0){\strut{}\footnotesize{60 s}}}%
\put(2866,44){\makebox(0,0){\strut{}\footnotesize{80 s}}}%
\put(3430,44){\makebox(0,0){\strut{}\footnotesize{100 s}}}%
\put(3995,44){\makebox(0,0){\strut{}\footnotesize{120 s}}}%
\put(4560,44){\makebox(0,0){\strut{}\footnotesize{140 s}}}%
\put(1168,44){\makebox(0,0){\strut{}\footnotesize{20 s}}}%
\put(1729,44){\makebox(0,0){\strut{}\footnotesize{40 s}}}%
\put(2290,44){\makebox(0,0){\strut{}\footnotesize{60 s}}}%
\put(2851,44){\makebox(0,0){\strut{}\footnotesize{80 s}}}%
\put(3412,44){\makebox(0,0){\strut{}\footnotesize{100 s}}}%
\put(3973,44){\makebox(0,0){\strut{}\footnotesize{120 s}}}%
\put(4533,44){\makebox(0,0){\strut{}\footnotesize{140 s}}}%
}%
\gplgaddtomacro\gplfronttext{%
\csname LTb\endcsname%
\put(861,394){\rotatebox{90}{\makebox(0,0)[l]{\strut{}\footnotesize{setup-phase}}}}%
\put(1906,1223){\rotatebox{90}{\makebox(0,0)[l]{\strut{}\footnotesize{ignoring}}}}%
\put(2075,1223){\rotatebox{90}{\makebox(0,0)[l]{\strut{}\footnotesize{path}}}}%
\put(4616,834){\rotatebox{90}{\makebox(0,0)[l]{\strut{}\footnotesize{multimodality}}}}%
\put(803,523){\makebox(0,0){\strut{}\footnotesize{1}}}%
\put(1364,1690){\makebox(0,0){\strut{}\footnotesize{2}}}%
\put(1883,1690){\makebox(0,0){\strut{}\footnotesize{3}}}%
\put(2234,1690){\makebox(0,0){\strut{}\footnotesize{4}}}%
\put(2556,1690){\makebox(0,0){\strut{}\footnotesize{5}}}%
\put(3117,1690){\makebox(0,0){\strut{}\footnotesize{6}}}%
\put(3706,1690){\makebox(0,0){\strut{}\footnotesize{7}}}%
\put(4057,1690){\makebox(0,0){\strut{}\footnotesize{8}}}%
\put(4421,1690){\makebox(0,0){\strut{}\footnotesize{9}}}%
\put(4702,1690){\makebox(0,0){\strut{}\footnotesize{10}}}%
}%
\gplbacktext
\put(0,0){\includegraphics{error_timed_nexus}}%

View File

@@ -0,0 +1,12 @@
unset xtics
unset ytics
unset ztics
unset border
set ticslevel 0
set object 1 polygon from 1000,4200,1060 to 1000,5200,1060 to 1700,5200,1060 to 1700,4200,1060 fs solid noborder fc rgb "#cccccc" behind
splot \
"data/floors.dat" with lines lc rgb "#aaaaaa" notitle,\
"data/est_bergwerk_path1_nexus_multi.dat" skip 10 with lines lw 2 lc rgb "#000000" notitle,\
"data/est_bergwerk_path4_nexus_multi.dat" skip 10 with lines lw 2 lc rgb "#009900" notitle,\

7527
tex/gfx/eval/paths.eps Normal file

File diff suppressed because it is too large Load Diff

29
tex/gfx/eval/paths.gp Normal file
View File

@@ -0,0 +1,29 @@
set terminal epslatex size 3.5,2.5
set output "paths.tex"
#set hidden3d front
unset xtics
unset ytics
unset ztics
unset border
set view 67,40
unset key
set key opaque box horizontal maxcols 12 at screen 0.24,0.3 width -2.5 samplen 1.0
set multiplot layout 1,1 scale 2.3,2.3 offset 0,-0.030
set view equal xy
set zrange [-300:1600]
splot \
"data/floors.dat" with lines lc rgb "#aaaaaa" dashtype 3 notitle,\
"data/path1.dat" using (column(1)+70):(column(2)-60):3 with lines lw 3.0 dashtype 3 lc rgb "#000000" title "path 1", \
"data/path2.dat" using (column(1)+60):(column(2)+60):3 with lines lw 1.5 lc rgb "#999900" title "path 2",\
"data/path3.dat" using (column(1)-30):(column(2)+90):3 with lines lw 1.5 lc rgb "#000066" title "path 3",\
"data/path4.dat" using (column(1)-70):(column(2)-60):3 with lines lw 1.5 lc rgb "#006600" title "path 4",\
"data/startpoints_moved.dat" with points notitle pt 7 ps 1.0 lc rgb "#000000",\

107
tex/gfx/eval/paths.tex Normal file
View File

@@ -0,0 +1,107 @@
% GNUPLOT: LaTeX picture with Postscript
\begingroup
\makeatletter
\providecommand\color[2][]{%
\GenericError{(gnuplot) \space\space\space\@spaces}{%
Package color not loaded in conjunction with
terminal option `colourtext'%
}{See the gnuplot documentation for explanation.%
}{Either use 'blacktext' in gnuplot or load the package
color.sty in LaTeX.}%
\renewcommand\color[2][]{}%
}%
\providecommand\includegraphics[2][]{%
\GenericError{(gnuplot) \space\space\space\@spaces}{%
Package graphicx or graphics not loaded%
}{See the gnuplot documentation for explanation.%
}{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
\renewcommand\includegraphics[2][]{}%
}%
\providecommand\rotatebox[2]{#2}%
\@ifundefined{ifGPcolor}{%
\newif\ifGPcolor
\GPcolorfalse
}{}%
\@ifundefined{ifGPblacktext}{%
\newif\ifGPblacktext
\GPblacktexttrue
}{}%
% define a \g@addto@macro without @ in the name:
\let\gplgaddtomacro\g@addto@macro
% define empty templates for all commands taking text:
\gdef\gplbacktext{}%
\gdef\gplfronttext{}%
\makeatother
\ifGPblacktext
% no textcolor at all
\def\colorrgb#1{}%
\def\colorgray#1{}%
\else
% gray or color?
\ifGPcolor
\def\colorrgb#1{\color[rgb]{#1}}%
\def\colorgray#1{\color[gray]{#1}}%
\expandafter\def\csname LTw\endcsname{\color{white}}%
\expandafter\def\csname LTb\endcsname{\color{black}}%
\expandafter\def\csname LTa\endcsname{\color{black}}%
\expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
\expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
\expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
\expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
\expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
\expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
\expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
\expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
\expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
\else
% gray
\def\colorrgb#1{\color{black}}%
\def\colorgray#1{\color[gray]{#1}}%
\expandafter\def\csname LTw\endcsname{\color{white}}%
\expandafter\def\csname LTb\endcsname{\color{black}}%
\expandafter\def\csname LTa\endcsname{\color{black}}%
\expandafter\def\csname LT0\endcsname{\color{black}}%
\expandafter\def\csname LT1\endcsname{\color{black}}%
\expandafter\def\csname LT2\endcsname{\color{black}}%
\expandafter\def\csname LT3\endcsname{\color{black}}%
\expandafter\def\csname LT4\endcsname{\color{black}}%
\expandafter\def\csname LT5\endcsname{\color{black}}%
\expandafter\def\csname LT6\endcsname{\color{black}}%
\expandafter\def\csname LT7\endcsname{\color{black}}%
\expandafter\def\csname LT8\endcsname{\color{black}}%
\fi
\fi
\setlength{\unitlength}{0.0500bp}%
\ifx\gptboxheight\undefined%
\newlength{\gptboxheight}%
\newlength{\gptboxwidth}%
\newsavebox{\gptboxtext}%
\fi%
\setlength{\fboxrule}{0.5pt}%
\setlength{\fboxsep}{1pt}%
\begin{picture}(5040.00,3600.00)%
\gplgaddtomacro\gplbacktext{%
}%
\gplgaddtomacro\gplfronttext{%
\csname LTb\endcsname%
\put(750,970){\makebox(0,0)[r]{\strut{}path 1}}%
\csname LTb\endcsname%
\put(750,750){\makebox(0,0)[r]{\strut{}path 2}}%
\csname LTb\endcsname%
\put(750,530){\makebox(0,0)[r]{\strut{}path 3}}%
\csname LTb\endcsname%
\put(750,310){\makebox(0,0)[r]{\strut{}path 4}}%
\csname LTb\endcsname%
\put(750,970){\makebox(0,0)[r]{\strut{}path 1}}%
\csname LTb\endcsname%
\put(750,750){\makebox(0,0)[r]{\strut{}path 2}}%
\csname LTb\endcsname%
\put(750,530){\makebox(0,0)[r]{\strut{}path 3}}%
\csname LTb\endcsname%
\put(750,310){\makebox(0,0)[r]{\strut{}path 4}}%
}%
\gplbacktext
\put(0,0){\includegraphics{paths}}%
\gplfronttext
\end{picture}%
\endgroup