final software version for offline competition

This commit is contained in:
toni
2016-09-23 00:42:46 +02:00
parent a7c83d4d5f
commit dec24df08a
25 changed files with 7654 additions and 302 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.6.1, 2016-06-16T18:15:36. -->
<!-- Written by QtCreator 4.0.3, 2016-09-21T13:13:17. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@@ -40,6 +40,7 @@
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
@@ -65,15 +66,17 @@
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="CMakeProjectManager.CMakeBuildConfiguration.InitialArgument"></value>
<value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++</value>
<value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/toni/Documents/programme/localization/IPIN2016/build-code-Desktop-Default</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -86,10 +89,10 @@
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -108,15 +111,16 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="CMakeProjectManager.CMakeBuildConfiguration.InitialArgument">-DCMAKE_BUILD_TYPE=Debug</value>
<value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/toni/Documents/programme/localization/IPIN2016/build-code-Desktop-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -129,10 +133,10 @@
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -151,15 +155,16 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="CMakeProjectManager.CMakeBuildConfiguration.InitialArgument">-DCMAKE_BUILD_TYPE=Release</value>
<value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=Release</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/toni/Documents/programme/localization/IPIN2016/build-code-Desktop-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -172,10 +177,10 @@
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -194,15 +199,16 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<value type="QString" key="CMakeProjectManager.CMakeBuildConfiguration.InitialArgument">-DCMAKE_BUILD_TYPE=RelWithDebInfo</value>
<value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=RelWithDebInfo</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/toni/Documents/programme/localization/IPIN2016/build-code-Desktop-Release with Debug Information</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -215,10 +221,10 @@
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -237,15 +243,16 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
<value type="QString" key="CMakeProjectManager.CMakeBuildConfiguration.InitialArgument">-DCMAKE_BUILD_TYPE=MinSizeRel</value>
<value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
<valuelist type="QVariantList" key="CMake.Configuration">
<value type="QString">CMAKE_BUILD_TYPE:STRING=MinSizeRel</value>
</valuelist>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/toni/Documents/programme/localization/IPIN2016/build-code-Desktop-Minimum Size Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -258,10 +265,10 @@
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
<value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
@@ -295,6 +302,7 @@
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
@@ -336,6 +344,7 @@
<value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">IPIN2016</value>
<value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
<value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
<value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory.default">/home/toni/Documents/programme/localization/IPIN2016/build-code-Desktop-Default</value>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">IPIN2016</value>

View File

@@ -19,6 +19,9 @@ ENDIF()
INCLUDE_DIRECTORIES(
../
../../
../../../
../../../../
)
@@ -38,7 +41,7 @@ FILE(GLOB SOURCES
./*/*.cpp
./*/*/*.cpp
./*/*/*/*.cpp
../Indoor/lib/tinyxml/tinyxml2.cpp
../../../../Indoor/lib/tinyxml/tinyxml2.cpp
)
@@ -65,6 +68,13 @@ ADD_DEFINITIONS(
)
# allow OMP
find_package(OpenMP)
if (OPENMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()
# build a binary file
ADD_EXECUTABLE(

View File

@@ -19,6 +19,8 @@
#include <KLib/math/filter/particles/ParticleFilter.h>
#include "filter/WiFi.h"
struct Plotti {
K::Gnuplot gp;
@@ -32,6 +34,8 @@ struct Plotti {
K::GnuplotSplotElementPoints pParticles;
K::GnuplotSplotElementColorPoints pColorPoints;
K::GnuplotSplotElementLines gtPath;
K::GnuplotSplotElementLines estPath;
K::GnuplotSplotElementLines estPathSmoothed;
Plotti() {
gp << "set xrange[0-50:70+50]\nset yrange[0-50:50+50]\nset ticslevel 0\n";
@@ -44,7 +48,8 @@ struct Plotti {
splot.add(&pStairs); pStairs.setColorHex("#000000");
splot.add(&pInterest); pInterest.setPointSize(2); pInterest.setColorHex("#ff0000");
splot.add(&gtPath); gtPath.setLineWidth(2); gtPath.setColorHex("#000000");
splot.add(&estPath); estPath.setLineWidth(2); estPath.setColorHex("#00ff00");
splot.add(&estPathSmoothed); estPathSmoothed.setLineWidth(2); estPathSmoothed.setColorHex("#0000ff");
}
void addLabel(const int idx, const Point3 p, const std::string& str, const int fontSize = 10) {
@@ -80,21 +85,35 @@ struct Plotti {
gtPath.add(gp);
}
// estimated path
void addEstimationNode(const Point3 pos){
K::GnuplotPoint3 est(pos.x, pos.y, pos.z);
estPath.add(est);
}
// void debugWiFi(const WiFiModelX& model, const APScan& scan, const float curTS) {
// estimated path
void addEstimationNodeSmoothed(const Point3 pos){
K::GnuplotPoint3 est(pos.x, pos.y, pos.z);
estPathSmoothed.add(est);
}
// pColorPoints.clear();
// const float step = 2.0;
// float z = 0;
// for (float x = -20; x < 90; x += step) {
// for (float y = -10; y < 60; y += step) {
// double prob = model.getProbability(scan, Point3(x,y,z), curTS);
// pColorPoints.add(K::GnuplotPoint3(x,y,z), prob);
// }
// }
// }
void debugWiFi(const WiFiModelX& model, const WiFiMeasurements& scan, const float curTS) {
pColorPoints.clear();
const float step = 2.0;
float z = 0;
for (float x = -20; x < 200; x += step) {
for (float y = -10; y < 200; y += step) {
const Point3 pt(x,y,z);
double prob = model.getProbability(scan, pt, Timestamp::fromSec(curTS));
pColorPoints.add(K::GnuplotPoint3(x,y,z), prob);
}
}
}
template <typename Node> void debugProb(Grid<Node>& grid, std::function<double(const MyObs&, const Point3& pos)> func, const MyObs& obs) {
@@ -208,6 +227,39 @@ struct Plotti {
gp.flush();
}
void saveToFile(std::ofstream& stream){
gp.draw(splot);
stream << "set terminal x11 size 2000,1500\n";
stream << gp.getBuffer();
stream << "pause -1\n";
gp.flush();
}
void printSingleFloor(const std::string& path, const int floorNum) {
gp << "set terminal png size 1280,720\n";
gp << "set output '" << path << "_" << floorNum <<".png'\n";
gp << "set view 0,0\n";
gp << "set zrange [" << (floorNum * 4) - 2 << " : " << (floorNum * 4) + 2 << "]\n";
gp << "set autoscale xy\n";
}
void printSideView(const std::string& path, const int degree) {
gp << "set terminal png size 1280,720\n";
gp << "set output '" << path << "_deg" << degree <<".png'\n";
gp << "set view 90,"<< degree << "\n";
gp << "set autoscale xy\n";
gp << "set autoscale z\n";
}
void printOverview(const std::string& path) {
gp << "set terminal png size 1280,720\n";
gp << "set output '" << path << "_overview" << ".png'\n";
gp << "set view 75,60\n";
gp << "set autoscale xy\n";
gp << "set autoscale z\n";
}
};
#endif // PLOTTI_H

View File

@@ -82,6 +82,4 @@ struct GPS {
#endif // STRUCTS_H

View File

@@ -0,0 +1,20 @@
E0:91:53:1B:36:F0,25.9334,38.9436,-0.0524627,-39.1386,3.49982,-9.36092
00:0B:86:27:35:80,10.4727,31.8167,-2.71109,-35.0022,3.44592,-10.3489
00:0B:86:27:35:90,90.3394,15.4303,2.04479,-49.8716,2.68872,-6.04702
00:0B:86:27:3E:E0,6.17818,4.15351,0.139055,-35,3.4997,-5.7909
00:90:4C:91:00:00,83.9248,11.7224,12.29,-49.9992,2.82737,-7.04282
B8:A3:86:65:E3:20,4.69674,5.5026,0.464426,-40.543,3.49904,-7.30668
1A:FE:34:9D:0D:20,31.2992,33.9625,0.145345,-41.5356,3.49953,-4.3978
72:77:81:A4:9E:30,28.7311,38.3731,6.2193,-49.9932,3.21405,-5.31385
A0:2B:B8:6E:F8:00,-5.31735,104.568,4.70765,-49.9934,2.06603,-9.35664
00:80:2F:17:A2:B0,25.0241,36.8684,-0.150894,-45.8281,3.43221,-7.33956
00:0B:86:27:3E:D0,36.061,33.8152,0.0645585,-40.771,3.49971,-6.54765
00:80:2F:19:26:70,27.4261,37.3301,0.866323,-49.9991,3.08838,-5.47872
82:B6:BE:58:5C:50,62.9964,33.7411,0.140919,-49.9989,2.72436,-9.15091
00:0B:86:27:36:C0,53.7462,27.6526,-0.0873488,-36.7065,3.27317,-5.56178
00:0B:86:27:32:E0,63.4623,32.099,-0.0429999,-49.9917,2.4404,-9.97059
00:0B:86:27:35:10,34.2176,6.17748,-0.0693621,-41.6553,3.49999,-6.08537
00:0B:86:27:3E:80,18.4034,22.1678,1.00951,-38.4197,3.49124,-9.24767
00:0B:86:27:37:B0,30.3648,26.754,1.16354,-42.6981,3.4995,-5.50056
00:0B:86:27:45:B0,57.2717,7.33425,-0.164426,-39.1558,3.49748,-7.04232
F8:8E:85:CF:2D:D0,39.8152,108.911,11.3717,-49.9954,2.12391,-7.82796

View File

@@ -0,0 +1,133 @@
04:BD:88:0D:9B:A0,214.378,59.8349,-4.39663,-46.6016,2.10851,-1.99032
1C:65:9D:6A:7D:30,122.755,75.7127,-0.110118,-49.9998,2.91062,-0.386257
04:BD:88:0D:D0:80,118.211,45.4233,10.423,-35.0017,3.43328,-6.92199
62:6D:C7:27:B7:60,119.496,64.0401,-2.88946,-42.1221,2.85472,-3.99463
C8:BE:19:62:A3:E0,96.1187,84.3896,3.9973,-35.0055,2.98134,-2.70863
00:12:17:49:7E:90,93.3295,93.3709,11.9974,-35.0002,2.48209,-7.32168
24:DE:C6:61:B2:70,52.3967,77.2715,3.90902,-35.0016,3.08409,-1.19813
04:BD:88:50:43:70,130.005,54.107,-0.00540396,-49.9837,1.8371,-6.9551
00:12:17:49:7E:A0,123.406,62.3925,14.0466,-45.6587,3.21297,-0.00168633
00:18:E7:DA:7F:20,125.466,46.1327,10.4264,-49.3228,2.68111,-1.92762
04:BD:88:50:4A:30,129.904,73.8747,-3.41909,-49.9796,2.25125,-3.09197
04:BD:88:0D:9F:00,130.35,57.4257,4.55298,-35.003,3.36798,-5.53225
04:BD:88:50:38:20,127.285,104.478,-0.380571,-41.2844,2.33703,-3.1488
04:BD:88:0D:9F:10,128.104,56.6187,5.50136,-37.9741,3.24012,-6.54794
04:BD:88:50:48:80,69.6526,3.04814,-0.000448067,-40.3957,2.59139,-4.31169
04:BD:88:0D:72:C0,127.869,78.8776,-0.255026,-49.9348,2.68001,-0.756667
00:1C:F0:62:62:D0,134.013,66.6918,8.91396,-35.7719,3.49942,-1.36856
04:BD:88:50:4D:E0,62.0733,9.79976,-2.95398,-49.9807,2.37476,-5.22889
00:13:EF:74:06:20,56.9621,6.33708,31.1861,-42.6515,2.79413,-2.35615
04:BD:88:50:3D:C0,141.226,56.7454,1.2621,-35.002,2.99213,-5.93712
04:BD:88:50:4A:20,128.428,74.9341,1.16055,-42.8032,2.8994,-2.80893
04:BD:88:50:4B:60,157.182,71.1934,7.01438,-48.4553,1.865,-11.0567
04:BD:88:0D:B3:40,35.6647,-25.3662,3.98375,-49.9831,1.91541,-0.877453
04:BD:88:50:3D:D0,145.06,49.5471,1.07102,-35.0031,3.0624,-7.21522
04:BD:88:50:43:60,131.5,51.6265,-4.86944,-37.957,2.95518,-3.53852
00:1F:F3:C4:C8:C0,73.6514,16.9333,10.6067,-42.6721,3.49909,-1.81325
04:BD:88:50:4B:70,149.253,69.6315,12.0018,-46.693,1.4728,-6.50942
04:BD:88:0D:B3:50,85.0855,32.5164,3.97938,-49.9982,2.29552,-2.71004
04:BD:88:50:3D:00,185.468,70.2744,14.4805,-40.5078,1.03565,-9.87018
04:BD:88:0D:6E:E0,121.157,61.9996,13.7546,-40.2715,3.41487,-0.980417
04:BD:88:50:4E:60,117.834,52.7936,-0.0048793,-35.1553,2.93496,-5.92663
04:BD:88:0D:99:00,123.013,82.4264,7.42219,-49.9983,2.67541,-0.308817
24:DE:C6:61:B6:80,70.7065,74.5002,-2.33092,-49.6957,2.25398,-1.11385
04:BD:88:0D:DC:80,61.289,90.2208,4.0259,-35.0062,3.04417,-2.63175
04:BD:88:50:38:30,121.912,71.8626,-1.78283,-49.9971,2.26707,-9.99155
04:BD:88:50:49:80,84.2751,25.0538,1.49222,-40.4254,2.83503,-7.602
04:BD:88:0D:6E:F0,120.821,61.1164,13.5875,-38.2404,3.44374,-2.61839
04:BD:88:50:40:60,129.763,12.3819,7.93683,-35.1282,3.06737,-4.26669
04:BD:88:0D:A5:E0,135.237,28.245,4.02208,-49.9997,2.50191,-2.87061
24:DE:C6:61:B7:00,67.1349,74.3687,-9.99796,-49.156,2.35183,-0.89355
04:BD:88:0D:A5:F0,134.781,29.0858,4.00298,-43.1381,2.48746,-6.84854
04:BD:88:50:4D:A0,90.3609,16.8601,2.3904,-35.008,3.47571,-5.64231
00:07:40:8B:7A:30,42.0218,92.7284,5.43893,-49.9913,2.35867,-0.201366
24:DE:C6:61:B7:C0,66.3967,63.7506,-0.250435,-49.9809,2.04389,-3.82128
70:73:CB:B6:58:30,80.3016,18.3201,10.8602,-49.9581,2.84485,-5.15359
24:DE:C6:61:B7:D0,105.209,52.0633,-0.350371,-35.0012,2.28654,-8.43184
04:BD:88:50:4B:80,89.3476,3.92014,1.30161,-35.0026,3.23554,-6.60991
04:BD:88:0D:AC:30,-4.2106,22.489,-9.56091,-49.979,1.45268,-4.58033
24:DE:C6:61:B8:10,88.1564,35.3913,0.342312,-35.0049,2.77558,-8.7812
04:BD:88:0D:D8:40,61.9292,11.7163,0.744604,-44.5367,3.05007,-1.24771
04:BD:88:0D:5B:B0,79.5373,22.6322,10.8227,-40.7107,3.11971,-8.14276
04:BD:88:0D:95:90,79.0245,22.721,13.0689,-40.4332,3.49855,-3.18497
04:BD:88:50:4D:B0,90.1575,17.3069,-0.446496,-35.0196,3.08851,-5.95266
04:BD:88:50:40:70,129.27,13.4976,8.12434,-37.7665,2.42516,-7.36279
04:BD:88:50:40:00,131.354,15.5469,5.16526,-49.6713,2.26854,-5.5807
00:90:4C:49:00:20,38.3657,91.0812,-12.2644,-49.9936,2.19976,-0.636317
00:07:40:9F:14:70,49.965,-38.0442,-2.40538,-49.9979,2.07355,-0.56936
04:BD:88:0D:B4:60,76.7,68.0342,-6.78332,-49.9848,2.61085,-1.2733
04:BD:88:0D:F6:20,70.1452,63.9766,-10.3678,-49.9798,2.55316,-0.902064
04:BD:88:0D:F7:E0,63.8286,87.5842,-2.79041,-49.9764,2.29822,-0.000814016
04:BD:88:50:46:50,66.9395,18.0641,1.3915,-42.7413,3.32566,-0.433864
04:BD:88:50:40:10,131.763,14.5722,6.305,-49.2889,2.42529,-7.48766
04:BD:88:0D:D9:50,80.3704,92.1215,25.988,-49.9934,1.19493,-5.75634
64:70:02:92:13:00,-0.692318,91.5478,10.4957,-49.9347,2.05727,-0.636378
04:BD:88:0D:95:80,78.7645,21.1212,13.9495,-37.8095,3.42004,-2.10601
04:BD:88:50:4D:40,68.7541,13.8713,12.0002,-47.6747,1.44208,-6.63998
5C:96:9D:66:34:30,34.4218,-73.6812,9.68786,-38.6282,2.58137,-0.543019
04:BD:88:0D:98:00,11.1829,53.3534,-8.10652,-47.8203,2.11338,-0.726475
04:BD:88:0D:5F:70,88.8169,34.2218,5.06589,-42.3359,2.17583,-11.7357
04:BD:88:0D:BF:10,55.7389,-36.1212,-11.0948,-49.9826,1.61311,-2.81289
04:BD:88:0D:D9:40,71.9179,91.9191,4.01933,-49.9987,2.00224,-5.32896
00:C0:CA:7D:C3:60,170.896,2.97641,1.13119,-49.886,2.10314,-0.154738
84:51:81:8B:B7:E0,120.723,53.3081,4.97545,-49.9991,2.61727,-6.60546
00:18:39:D3:AF:00,97.0356,16.5325,10.2935,-49.1876,2.7465,-1.11597
04:BD:88:0D:BF:00,78.559,60.5497,-7.47801,-49.7485,2.49862,-1.83014
70:73:CB:B6:58:40,78.278,20.7332,9.84987,-43.6191,3.46317,-6.18348
04:BD:88:0D:C0:A0,119.491,45.2099,14.1613,-41.7541,3.49007,-6.92284
04:BD:88:0D:D0:30,96.6917,22.6303,9.89707,-43.1401,2.83267,-6.64655
04:BD:88:0D:F6:30,10.6477,56.5952,-19.7491,-39.0774,2.4628,-1.19393
04:BD:88:0D:F7:F0,177.434,93.6494,-1.40187,-49.9772,1.74344,-1.44321
04:BD:88:0D:B4:70,77.7908,68.0696,-7.78729,-48.9825,2.32418,-6.59958
04:BD:88:50:3F:E0,69.6372,60.0201,-7.93029,-49.9863,2.69515,-0.0876285
04:BD:88:0D:59:D0,123.321,5.98932,19.0209,-35.0047,2.74303,-4.72328
04:BD:88:0E:0F:50,95.6385,21.351,14.9545,-38.7529,3.22616,-6.58033
04:BD:88:50:49:90,85.4624,25.1076,0.0974095,-48.9582,2.47627,-6.40795
00:1F:F3:C4:D6:80,86.3851,37.4918,14.3314,-48.0705,2.83077,-2.39407
04:BD:88:50:46:40,66.9296,17.4863,2.02436,-37.7021,3.43908,-1.70041
C0:C1:C0:18:4D:10,64.5807,62.2852,9.99459,-37.7211,3.33022,-0.0117366
00:1D:73:DE:30:10,31.7746,-25.6241,25.3286,-49.9877,2.04809,-0.467863
5C:96:9D:65:B1:60,50.3786,-12.1958,1.09019,-46.5651,2.49526,-0.735329
04:BD:88:0D:DB:70,71.6713,67.0077,1.47469,-35.0013,3.05828,-1.90065
04:BD:88:0D:C0:B0,119.157,45.3078,13.9462,-36.0302,3.49884,-7.89359
24:DE:C6:61:B6:A0,68.0411,69.5789,-0.983092,-47.9711,2.38076,-1.05341
04:BD:88:50:4B:B0,83.5287,11.165,-0.874307,-35.0013,2.8947,-7.73954
58:6D:8F:40:17:50,118.001,46.8434,7.226,-46.4102,2.61688,-7.25978
04:BD:88:0E:0F:40,95.3664,21.5758,13.1468,-43.7529,2.93255,-2.75834
04:BD:88:0D:59:C0,139.1,2.52001,11.9983,-35.0033,2.74426,-5.78839
04:BD:88:0D:CD:B0,90.3253,24.1403,6.40912,-46.2239,2.95668,-7.76077
28:CF:DA:B4:A4:E0,71.3841,17.3987,10.9198,-41.6981,3.49771,-2.76056
04:BD:88:0D:77:A0,128.963,11.7249,0.270389,-35.0045,3.02279,-7.00728
04:BD:88:0D:56:C0,86.07,18.664,4.00711,-37.366,3.33351,-5.39645
28:CF:DA:B4:A4:F0,75.1324,16.4766,9.31253,-37.9139,3.49779,-6.13855
04:BD:88:0D:77:B0,127.311,12.5711,-0.192137,-35.007,2.65978,-8.72069
04:BD:88:0D:56:D0,86.8781,19.3035,4.42533,-48.3854,2.65331,-7.36201
04:BD:88:0D:D0:20,96.158,22.032,10.5687,-36.192,3.26348,-5.34901
04:BD:88:0D:AC:20,73.0754,64.3254,-7.0126,-44.5641,2.77401,-1.90436
00:12:17:49:7E:00,75.4399,-1.60531,34.4457,-36.5552,3.1258,-1.1407
04:BD:88:0D:D9:A0,101.618,41.7706,11.2442,-36.6078,3.03085,-5.12036
04:BD:88:0D:CD:A0,90.3729,22.0323,4.27899,-40.6529,2.99745,-5.85436
04:BD:88:0D:D9:B0,101.345,44.3782,11.9903,-40.6434,2.56346,-8.32296
00:14:BF:B2:32:90,82.2126,2.34229,11.9962,-43.0968,2.86363,-2.2501
04:BD:88:0D:D0:90,117.927,45.0786,10.1503,-40.8122,2.92621,-8.37503
04:BD:88:0D:5B:A0,79.3198,21.7946,10.245,-42.0873,2.99351,-4.19679
04:BD:88:0D:6C:F0,108.571,54.5004,4.25067,-45.2783,2.15997,-10.3004
04:BD:88:50:4E:70,117.341,54.2166,-0.025421,-41.0344,2.5103,-5.99929
32:CD:A7:94:50:30,123.023,44.722,9.34927,-49.9657,2.85353,-3.46767
04:BD:88:0D:F1:80,64.0574,16.8605,8.00059,-49.98,2.8813,-0.81782
F4:EC:38:BA:9F:00,85.0672,43.6407,4.00242,-43.7068,2.74683,-6.03561
04:BD:88:0D:5F:60,88.3708,35.3684,4.16747,-39.8495,2.42562,-11.3923
38:2C:4A:67:E7:E0,73.7221,66.6399,-6.41874,-45.0438,2.76172,-0.207669
04:BD:88:0D:6C:E0,108.264,52.6367,4.27121,-39.1143,2.67789,-8.81927
04:BD:88:50:46:80,113.13,171.087,4.05088,-35.0641,2.39484,-7.82784
24:DE:C6:61:B5:60,84.6697,86.3409,-7.22591,-35.0078,2.67631,-4.07704
04:BD:88:0D:DB:60,70.4842,66.2288,-2.97031,-35.0111,3.16627,-0.953721
04:BD:88:50:4B:90,93.0154,7.40264,-0.265897,-36.6803,2.55107,-8.24377
04:BD:88:0D:C3:00,118.044,9.02218,5.36992,-46.0305,2.56256,-2.13349
04:BD:88:0D:C4:C0,120.738,62.6373,10.2858,-37.6953,3.35918,-3.82192
04:BD:88:0D:DC:90,41.1354,117.319,6.7466,-35.0025,2.63455,-2.74291
04:BD:88:0D:99:10,103.997,105.754,12.3157,-49.1102,2.33931,-0.190116
04:BD:88:50:4B:A0,79.0666,12.1056,0.821342,-35.0021,3.35455,-5.52112
04:BD:88:0D:C4:D0,118.331,63.0411,10.267,-35.4286,3.48023,-6.31238
00:13:10:92:8E:C0,71.949,16.5233,12.0261,-40.8699,3.49904,-1.18502
04:BD:88:0D:C3:10,116.698,9.70811,8.00064,-42.1061,2.32084,-5.88028

View File

@@ -0,0 +1,60 @@
00:13:C3:44:D6:E0,18.0702,76.4523,10.549,-35.0014,2.93199,-6.27181
06:27:22:0B:36:30,40.1241,47.7622,21.7446,-49.9913,2.44201,-6.72851
00:1A:A1:5C:F9:60,29.439,69.7044,6.73497,-35.0024,3.00487,-4.59787
00:13:C3:44:D8:E0,45.7304,75.6823,10.4813,-35.0008,2.71693,-9.96737
00:14:69:F2:39:C0,15.9948,74.5817,3.99626,-49.9958,1.44476,-10.4591
00:13:C3:44:B0:70,31.7924,45.3754,10.553,-37.1094,3.13311,-6.59345
8C:0C:A3:29:7D:60,14.653,72.9748,3.99988,-35.0888,1.29455,-15.65
90:F6:52:FF:CD:70,33.9192,76.0892,4.00254,-35.0109,3.37856,-5.2131
00:12:17:DE:2B:00,-38.7018,5.33146,11.1404,-49.9991,1.78626,-1.67534
06:27:22:0B:C4:60,11.9001,10.4882,10.0396,-36.3239,2.7002,-6.14787
2A:A4:3C:04:99:A0,5.2489,33.3503,-7.11783,-35.0009,3.18547,-0.916387
F8:1E:DF:FA:D1:D0,16.3958,24.5382,17.8596,-39.2878,3.09384,-5.82037
00:27:22:0B:C4:60,12.3254,10.9224,9.55549,-35.0005,2.82285,-7.5039
00:14:1C:DD:F3:40,50.4348,12.935,15.6604,-43.4289,2.27774,-6.98219
0A:18:D6:04:29:60,123.026,46.6534,-4.1658,-49.9872,1.88507,-0.226678
00:1A:A1:5C:F6:50,117.809,25.2796,3.56561,-35.0019,2.41297,-1.42737
04:18:D6:04:26:40,19.0649,-0.893982,-4.02479,-48.2036,1.9101,-2.76744
00:27:22:0B:36:30,34.5967,49.8676,19.958,-47.9794,2.9979,-6.47409
C0:C1:C0:5A:A0:50,33.3971,21.3792,7.56039,-44.2523,2.71674,-3.47578
00:15:6D:E4:7D:10,33.3023,95.0565,15.3638,-35.0018,3.22822,-1.75908
00:13:C3:44:D9:B0,19.4742,14.0811,4.00824,-35.0073,2.86109,-7.32064
D4:C9:EF:54:65:40,30.8112,16.7518,17.7033,-35.0033,3.2996,-3.78139
84:1B:5E:3F:88:60,46.7823,75.066,4.72317,-49.9985,2.00389,-4.43731
80:49:71:16:5E:C0,33.4434,36.517,8.91344,-49.6736,2.52377,-4.82025
00:27:22:4A:1F:60,20.2303,122.245,22.5083,-49.9956,1.84772,-0.463619
00:1D:A2:C9:27:50,-2.9687,47.6667,5.1596,-38.9358,2.87797,-0.757473
00:14:1C:DD:F6:70,16.4238,14.1287,15.5029,-35.0018,2.84835,-6.56431
00:27:22:0B:C4:30,29.5108,45.6983,20.0469,-49.9946,2.21772,-6.35757
00:90:4C:5F:00:20,22.9083,18.3212,10.9642,-49.9856,2.33844,-6.80419
00:14:1C:DD:F1:E0,16.5423,75.5931,15.5193,-35.0007,2.88951,-7.85462
02:CA:FF:EE:BA:B0,-27.1346,-9.59034,17.5316,-49.937,1.90515,-1.25176
C8:BC:C8:C1:95:50,53.5559,119.893,8.55838,-49.9982,1.87476,-2.08567
C8:D7:19:09:37:80,26.8558,92.7132,4.52568,-35.0011,3.08478,-5.42009
00:14:1C:DD:FA:A0,34.365,45.422,15.0598,-35.0073,3.03597,-7.88405
00:13:C3:44:EE:F0,22.4794,17.9141,9.03903,-35.0007,2.93753,-5.31065
00:17:59:FB:19:50,48.0488,76.0151,15.3844,-44.9409,2.07276,-6.31787
00:14:1C:DD:FC:40,32.9535,68.3393,12.1693,-35.0004,2.80755,-4.49933
06:27:22:0B:C4:30,22.8095,43.7261,12.2014,-44.9756,2.76435,-6.04689
00:27:22:0B:C4:20,-49.7517,111.983,3.14062,-49.997,1.41224,-3.29481
06:25:BC:8A:8D:80,39.6838,18.0742,4.00581,-35.0322,3.27146,-4.73644
00:14:69:F2:3B:80,24.188,13.5991,1.95709,-35.0005,2.9343,-6.53056
00:25:BC:8A:8D:80,39.345,17.8098,4.00397,-35.0139,3.24465,-4.6729
46:33:4C:34:96:E0,26.1628,24.6621,2.45785,-49.967,2.30937,-3.2212
74:EA:3A:A0:52:80,51.5625,11.8496,0.275973,-35.0084,3.28797,-4.57739
C2:9F:DB:1C:91:A0,-44.4874,28.7275,11.6671,-42.7231,2.23332,-1.9024
06:27:22:0B:C4:20,92.5088,94.0343,-5.20496,-49.9992,1.62169,-2.46994
00:13:C3:44:D6:70,46.6571,13.3471,10.2139,-35.003,2.93862,-11.0769
00:14:69:F2:35:50,31.7231,43.772,3.77775,-39.4755,2.80505,-5.33444
00:1A:6D:9B:9A:20,40.2208,71.44,4.29996,-35.0008,3.13437,-4.57072
00:13:C3:44:B5:60,46.2441,13.2052,4.01291,-35.0053,2.72518,-7.25024
00:19:56:AC:7B:00,35.2686,22.2504,6.86353,-35.0018,3.0237,-4.76125
00:13:80:43:D1:50,33.9398,20.2003,12.0034,-35.0036,3.02282,-2.67427
00:14:69:F2:31:40,31.0475,84.9883,4.22095,-42.0396,2.75453,-6.99953
00:13:C3:44:C7:20,33.6595,41.0793,7.10509,-36.1616,2.59204,-8.10245
0A:18:D6:04:25:C0,75.1088,1.41437,-5.43817,-49.9996,1.69289,-1.80604
00:14:1C:DE:93:A0,44.9431,14.5584,-2.87313,-39.2836,2.85206,-6.0478
04:18:D6:04:25:C0,53.4704,25.9522,1.20447,-49.9989,2.14101,-1.20614
00:27:22:0B:35:80,32.3521,52.3023,3.99926,-48.3477,1.42975,-9.12723
00:13:C3:44:D8:20,17.0173,76.4053,4.28259,-35.0038,2.74942,-10.1883
06:27:22:0B:35:80,32.5252,54.1553,3.05857,-49.9546,1.41625,-8.55129

View File

@@ -0,0 +1,101 @@
FF:FF:FF:FF:00:30,61.3255,49.1117,12.8065,-35.0008,2.5384,-6.55057
FF:FF:FF:FF:01:29,29.8202,26.1079,20.1286,-49.9995,2.82248,-0.145847
FF:FF:FF:FF:00:68,51.0567,18.1168,9.0434,-35.0187,3.49819,-9.93346
FF:FF:FF:FF:01:61,61.5426,26.656,5.23509,-35.0278,3.49998,-10.5933
FF:FF:FF:FF:01:13,50.8348,19.6734,13.0748,-45.0079,3.49432,-1.70386
FF:FF:FF:FF:00:87,58.733,8.075,5.03149,-35.9899,3.49952,-10.8467
FF:FF:FF:FF:00:26,23.6657,16.9525,5.25899,-35,3.29068,-9.69726
FF:FF:FF:FF:00:64,40.4603,-4.60327,12.0001,-35.007,3.30027,-2.15189
FF:FF:FF:FF:01:67,37.2653,18.5164,16.5336,-49.3521,3.44172,-1.76764
FF:FF:FF:FF:01:06,44.6022,-5.20636,12.0101,-35.1878,3.49929,-0.343725
FF:FF:FF:FF:01:34,41.6675,22.512,9.73085,-49.9978,3.4997,-4.30721
FF:FF:FF:FF:00:17,48.8877,-13.306,16.0022,-36.1515,2.92935,-2.45048
FF:FF:FF:FF:01:10,29.7338,26.4258,23.9674,-38.9589,3.49963,-5.43652
FF:FF:FF:FF:01:71,40.2638,28.4951,22.9366,-38.9438,2.23165,-14.6617
FF:FF:FF:FF:00:34,75.3005,29.2538,3.99767,-35.0035,3.09486,-0.832926
FF:FF:FF:FF:01:65,31.5907,43.052,19.9942,-47.3626,2.43991,-2.29432
FF:FF:FF:FF:00:90,-61.1276,22.543,20.7044,-49.8111,1.75582,-0.337521
FF:FF:FF:FF:00:16,44.8759,-8.18405,16.0004,-35.0026,3.48937,-1.28285
FF:FF:FF:FF:00:45,37.3255,15.7237,23.1597,-49.9664,3.45164,-2.89579
FF:FF:FF:FF:01:21,50.092,26.9431,21.8817,-35.0372,3.49929,-6.15205
FF:FF:FF:FF:01:51,55.6082,24.6096,19.1434,-35.0004,3.09284,-4.76922
FF:FF:FF:FF:01:22,33.5701,26.5572,22.695,-35.0033,2.39651,-14.9836
FF:FF:FF:FF:00:46,51.9681,8.92208,4.93606,-35.0062,3.44907,-11.4138
FF:FF:FF:FF:00:51,55.6536,33.4605,3.99827,-36.1021,3.38589,-1.08473
FF:FF:FF:FF:01:19,42.1772,3.33725,8.05093,-36.2824,3.49993,-8.39715
FF:FF:FF:FF:01:48,33.5646,26.6701,22.3995,-35.0039,2.25191,-15.7439
FF:FF:FF:FF:00:99,51.6486,28.6696,15.9935,-49.5486,3.0511,-0.584962
FF:FF:FF:FF:01:14,52.3689,26.4285,18.5044,-36.3501,3.49948,-5.60479
FF:FF:FF:FF:01:23,30.3933,26.5188,22.0665,-45.7997,2.68648,-6.73393
FF:FF:FF:FF:01:40,52.0377,26.4407,24.2133,-41.5633,3.49894,-5.42151
FF:FF:FF:FF:00:47,24.3982,16.974,5.28612,-35.0009,3.33422,-8.67
FF:FF:FF:FF:01:57,20.0917,-1.92616,20.0011,-35.0084,3.3683,-1.02511
FF:FF:FF:FF:01:45,43.3059,1.44429,8.00549,-35.0176,3.49998,-9.14345
FF:FF:FF:FF:00:08,47.6738,21.7745,4.80425,-45.169,2.75624,-1.76925
FF:FF:FF:FF:01:16,31.5916,23.5406,15.9988,-46.5109,2.52192,-5.85123
FF:FF:FF:FF:01:44,59.6713,24.2997,26.3772,-38.4904,3.49907,-2.44965
FF:FF:FF:FF:00:07,39.9031,45.1725,15.9918,-46.5745,2.96254,-0.195176
FF:FF:FF:FF:01:15,33.816,26.6505,24.6709,-35.0411,3.34374,-10.7747
FF:FF:FF:FF:00:24,40.5597,16.8742,25.9081,-49.9799,3.49916,-0.00550805
FF:FF:FF:FF:01:79,55.6672,23.8436,4.01151,-42.32,3.40306,-7.73111
FF:FF:FF:FF:01:18,60.4541,23.5074,28.0572,-37.1776,3.49948,-3.20076
FF:FF:FF:FF:00:43,15.3138,-44.063,9.83808,-41.7184,2.43117,-0.00026139
FF:FF:FF:FF:01:69,21.7512,-2.37511,-19.6113,-49.9837,2.15097,-0.000342212
FF:FF:FF:FF:01:08,15.4733,16.3318,16.0031,-44.95,2.61319,-6.05641
FF:FF:FF:FF:01:27,1.36324,34.7171,20.1489,-35.1078,2.8743,-0.423486
FF:FF:FF:FF:00:94,63.1968,25.996,5.2847,-35.9412,3.49993,-3.70427
FF:FF:FF:FF:01:70,35.4791,28.4217,23.0721,-35.0009,2.93582,-11.7367
FF:FF:FF:FF:01:35,41.9945,22.5251,10.5587,-49.9896,3.4996,-4.97646
FF:FF:FF:FF:01:64,37.161,48.9912,21.0677,-35.8962,3.49994,-8.10018
FF:FF:FF:FF:01:25,55.2976,24.9868,19.5005,-35.0035,2.96912,-6.85054
FF:FF:FF:FF:01:47,50.1213,27.3851,22.7135,-35.0086,3.43343,-5.27027
FF:FF:FF:FF:00:21,42.6089,15.8034,23.7548,-49.9977,2.67163,-4.30658
FF:FF:FF:FF:00:50,71.9575,40.3268,15.9927,-49.9863,1.35871,-9.15773
FF:FF:FF:FF:01:49,30.3275,26.4448,21.4412,-47.6343,2.41318,-8.09468
FF:FF:FF:FF:00:71,0.831536,-5.34977,20.0126,-43.6724,2.32186,-1.12729
FF:FF:FF:FF:00:13,40.1764,-30.8187,20.0027,-35.004,2.84513,-1.004
FF:FF:FF:FF:01:68,41.3841,9.60216,20.0002,-49.9846,3.49977,-2.62543
FF:FF:FF:FF:00:04,29.2682,-15.2735,16.0026,-35.038,2.99774,-3.51901
FF:FF:FF:FF:00:65,43.7648,27.4297,8.00249,-35.0015,2.77887,-9.44508
FF:FF:FF:FF:00:35,46.6445,71.8687,12.0157,-35.0196,2.79189,-2.1425
FF:FF:FF:FF:01:72,30.0851,28.9715,21.5068,-35.0002,2.58584,-6.1347
FF:FF:FF:FF:00:96,63.5721,26.041,5.31246,-38.328,3.49978,-1.36387
FF:FF:FF:FF:01:11,35.7941,30.3036,25.3933,-42.6625,3.06023,-5.5328
FF:FF:FF:FF:00:10,39.0899,55.4821,15.9913,-45.5138,2.66811,-1.61757
FF:FF:FF:FF:01:09,21.337,18.7888,16.9388,-49.9198,2.62881,-3.8303
FF:FF:FF:FF:01:05,26.0588,18.4117,16.0091,-47.9079,2.48883,-2.45525
FF:FF:FF:FF:00:93,30.2106,63.7146,16.4056,-35.0029,2.95634,-2.04168
FF:FF:FF:FF:00:60,-68.2546,41.3555,19.3967,-48.3603,1.91815,-1.82882
FF:FF:FF:FF:00:09,47.6367,60.1411,15.9965,-36.826,3.00483,-1.52924
FF:FF:FF:FF:01:46,51.2882,22.3053,9.20142,-35.0003,3.39486,-9.84389
FF:FF:FF:FF:01:73,54.1249,16.4094,4.27109,-43.3027,3.49996,-7.77886
FF:FF:FF:FF:00:36,47.2464,50.9547,16.0034,-35.0008,3.42789,-0.153835
FF:FF:FF:FF:00:56,37.9049,2.95165,8.00579,-35.0458,2.97445,-8.98925
FF:FF:FF:FF:01:26,43.5824,2.79313,8.00019,-35.0126,2.84525,-11.329
FF:FF:FF:FF:01:60,47.757,35.0984,11.9932,-45.6897,1.1362,-9.47875
FF:FF:FF:FF:00:67,37.9418,3.57521,8.00547,-35.0106,2.99568,-9.18844
FF:FF:FF:FF:01:43,49.171,27.3086,11.9517,-35.0414,3.49992,-8.14544
FF:FF:FF:FF:00:25,51.5967,8.96885,4.82255,-35.0012,3.44641,-12.7841
FF:FF:FF:FF:01:62,61.8046,24.6624,5.34482,-37.4709,3.49995,-7.51762
FF:FF:FF:FF:00:12,36.1314,7.31808,4.00517,-35.0422,2.96786,-14.3049
FF:FF:FF:FF:00:52,46.1982,57.9144,15.9848,-35.0031,2.92728,-2.89102
FF:FF:FF:FF:00:49,55.5027,60.6269,15.9932,-35.0023,3.18631,-1.20988
FF:FF:FF:FF:01:42,31.8036,23.5235,15.9984,-46.8514,2.77668,-4.5452
FF:FF:FF:FF:00:66,42.0519,21.9564,-0.00522796,-35.0022,1.8355,-10.5922
FF:FF:FF:FF:00:05,33.5066,31.3112,8.96058,-37.2085,3.4105,-3.26688
FF:FF:FF:FF:01:30,57.3403,24.1377,5.40282,-37.1963,3.49977,-10.0038
FF:FF:FF:FF:00:54,44.1486,28.1293,8.00134,-35.0275,2.7215,-9.59048
FF:FF:FF:FF:01:52,46.018,2.23849,8.00049,-35.0048,2.82059,-10.6605
FF:FF:FF:FF:01:17,47.533,24.2954,11.9735,-38.7352,3.49961,-5.3735
FF:FF:FF:FF:00:55,42.4996,22.5314,-3.82074e-05,-35.0041,1.86698,-10.089
FF:FF:FF:FF:01:31,34.5379,31.231,19.145,-41.7621,3.21528,-0.00058413
FF:FF:FF:FF:01:41,33.9805,26.6361,24.6389,-35.4263,3.31241,-7.56465
FF:FF:FF:FF:00:48,51.1195,24.8872,3.94769,-37.5513,3.49986,-7.68639
FF:FF:FF:FF:01:24,46.3338,28.237,8.00239,-35.0015,2.79479,-10.0347
FF:FF:FF:FF:00:27,50.9023,24.6375,3.76086,-39.2458,3.4995,-6.92521
FF:FF:FF:FF:01:20,51.1002,22.0841,9.14745,-35.0026,3.41654,-8.99681
FF:FF:FF:FF:00:40,30.3214,-10.3777,16.0046,-48.4109,2.48731,-2.01044
FF:FF:FF:FF:01:39,49.9374,19.2717,12.9782,-46.553,3.44212,-1.22435
FF:FF:FF:FF:00:53,39.4442,49.9108,12.2648,-35.011,3.42754,-0.000203297
FF:FF:FF:FF:01:50,47.1049,28.1215,8.00045,-35.0063,2.77865,-9.59834
FF:FF:FF:FF:00:57,51.1749,18.5591,9.48191,-35.212,3.49933,-9.38768

View File

@@ -13,19 +13,27 @@
#include <Indoor/grid/walk/v2/modules/WalkModuleSpread.h>
#include <Indoor/grid/walk/v2/modules/WalkModuleFavorZ.h>
#include <Indoor/grid/walk/v2/modules/WalkModuleButterActivity.h>
#include <Indoor/grid/walk/v2/modules/WalkModuleButterActivityPercent.h>
#include <Indoor/grid/walk/v2/modules/WalkModulePreventVisited.h>
#include <KLib/math/filter/smoothing/BackwardFilterTransition.h>
#include <Indoor/grid/factory/v2/GridNodeImportance.h>
#include "WiFi.h"
#include "../Scaler.h"
#include "Structs.h"
#include <omp.h>
//struct MyWalkState : public WalkState, public WalkStateHeading, public WalkStateRelativePressure {
// MyWalkState(const GridPoint& gp, const Heading head, const float relativePressure) : WalkState(gp), WalkStateHeading(head, 0), WalkStateRelativePressure(relativePressure) {;}
//};
const bool barometer = true;
struct MyNode : public GridPoint, public GridNode, public GridNodeImportance {
MyNode() : GridPoint() {;}
MyNode(const int x, const int y, const int z) : GridPoint(x,y,z) {;}
};
@@ -104,11 +112,12 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
WalkModuleSpread<MyNode, MyState> modSpread;
WalkModuleFavorZ<MyNode, MyState> modFavorZ;
WalkModuleButterActivity<MyNode, MyState> modButterAct;
WalkModuleButterActivityPercent<MyNode, MyState, MyControl> modButterActPerc;
//WalkModulePreventVisited<MyNode, MyState> modPreventVisited;
PFTrans(Grid<MyNode>& grid, MyControl* ctrl) : grid(grid), modHead(ctrl, 4.5f) {//, modPressure(ctrl, 0.100) {
PFTrans(Grid<MyNode>& grid, MyControl* ctrl) : grid(grid), modHead(ctrl, 4.5f), modButterActPerc(ctrl) {//, modPressure(ctrl, 0.100) {
walker.addModule(&modHead);
//walker.addModule(&modSpread); // might help in some situations! keep in mind!
@@ -116,28 +125,58 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
//walker.addModule(&modHeadUgly);
walker.addModule(&modImportance);
walker.addModule(&modFavorZ);
walker.addModule(&modButterAct);
//walker.addModule(&modButterAct);
if(barometer){
walker.addModule(&modButterActPerc);
}
//walker.addModule(&modWifi);
//walker.addModule(&modPreventVisited);
}
virtual void transition(std::vector<K::Particle<MyState>>& particles, const MyControl* control) override {
Distribution::Normal<float> distStep(1, 0.15);
float tmpSum1 = 0;
float tmpSum2 = 0;
int tmpCnt = 0;
Distribution::Normal<float> distStep(1, 0.35);
Distribution::Normal<float> distUpDown(1, 0.5);
for (K::Particle<MyState>& p : particles) {
tmpSum1 += p.state.relPres;
p.state.positionOld = p.state.position; //GridPoint(p.state.position.x_cm, p.state.position.y_cm, p.state.position.z_cm);
const float var = distStep.draw();
const float dist = control->numSteps * var * 0.76; // 75cm + variance for every detected step
const float varUpDown = distUpDown.draw();
float dist = control->numSteps * var * 0.78; // 75cm + variance for every detected step
MyNode node = grid.getNodeFor(p.state.position);
if(barometer){
/** Hier steckt noch viel Optimierungspotential drinnen! Richtige Distanz für den richtigen Bereich.*/
if(node.getType() == 2){
//wenn die wahrscheinlichkeit vom aufzug gering, dann sollen die partikel die noch drin sind auch stehen bleiben.
//TODO: varianz der erkennung eines fahrstuhls kleiner machen. ggf. die andere methode mit "harten" grenzen...
dist = 3 * varUpDown * (control->barometer.actProbs.elevatorDown > control->barometer.actProbs.elevatorUp ? control->barometer.actProbs.elevatorDown : control->barometer.actProbs.elevatorUp); //multiply with prob of elevator?
}
/** stell sicher, das er die treppe läuft, auch wenn kein step erkannt wurde*/
if(node.getType() == 1){
dist = control->numSteps * 0.4 + 0.6; // * varUpDown * (control->barometer.actProbs.stairsDown > control->barometer.actProbs.stairsUp ? control->barometer.actProbs.stairsDown : control->barometer.actProbs.stairsUp); //* wahrscheinlichkeit treppe
}
}
//we activity is stairchange, but particle is not changing, set dist to zero
// if(control->barometer.act == ActivityButterPressure::Activity::DOWN || control->barometer.act == ActivityButterPressure::Activity::DOWN){
//
// != type_stair
//float diff = p.state.positionOld.inMeter().z - p.state.position.inMeter().z;
// if(diff == 0){
// dist = 0.0;
// }
// }
//activity
p.state.act = control->barometer.act;
// --------- OLD
// transfer from state to walkstate
@@ -154,8 +193,39 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
// update the particle in-place
p.state = walker.getDestination(grid, p.state, dist);
tmpSum2 += p.state.relPres;
++tmpCnt;
// update the baromter
//TODO: hier muss zwischen Aufzug und Treppe unterschieden werden.
if(control->barometer.resetRelPressure){
p.state.hPa = 0.0;
}
float deltaZ_cm = p.state.positionOld.inMeter().z - p.state.position.inMeter().z;
p.state.hPa += deltaZ_cm * 0.105f;
//which activity was performed by the particle? This is used in the smoothing procedure!
//walking updwards with node = stairs => stairs up
if(node.getType() == 1){
if(deltaZ_cm < 0.0f){MyState::Activity::STAIRS_UP;}
if(deltaZ_cm > 0.0f){MyState::Activity::STAIRS_DOWN;}
}
//same for elevators
if(node.getType() == 2){
if(deltaZ_cm < 0.0f){MyState::Activity::ELEVATOR_UP;}
if(deltaZ_cm > 0.0f){MyState::Activity::ELEVATOR_DOWN;}
}
//no step = no walking.
else if(control->numSteps == 0){
p.state.act = MyState::Activity::STANDING;
}
//walking is the only option left
else{
p.state.act = MyState::Activity::WALKING;
}
//save the measured activities
p.state.refActProbs = control->barometer.actProbs;
p.state.refTurnAngle = control->turnAngle;
}
@@ -166,18 +236,236 @@ struct PFTrans : public K::ParticleFilterTransition<MyState, MyControl> {
};
/**
* smoothing transition starting at T with t, t-1,...0
* @param particles_new p_t (Forward Filter) p2
* @param particles_old p_t+1 (Smoothed Particles from Step before) p1
* q(p1 | p2) is calculated
*/
struct BFTrans : public K::BackwardFilterTransition<MyState> {
Grid<MyNode>& grid;
BFTrans(Grid<MyNode>& grid) : grid(grid) {;}
virtual std::vector<std::vector<double>> transition(std::vector<K::Particle<MyState>>const& particles_new,
std::vector<K::Particle<MyState>>const& particles_old ) override {
std::vector<std::vector<double>> predictionProbabilities;
omp_set_dynamic(0); // Explicitly disable dynamic teams
omp_set_num_threads(7);
#pragma omp parallel for shared(predictionProbabilities)
for (int i = 0; i < particles_old.size(); ++i) {
std::vector<double> innerVector;
auto p1 = &particles_old[i];
for(int j = 0; j < particles_new.size(); ++j){
auto p2 = &particles_new[j];
const double distance_m = p2->state.position.getDistanceInMeter(p1->state.position);
double muDistance = 0.8;
double sigmaDistance = 0.5;
double muFloor = 0.0;
double sigmaFloor = 0.2;
//jedem partikel seine aktivity die er zum zeitpunt t ausgeführt hat speichern.
//wenn echte aktivität treppen laufen war, der partikel aber stehen gebliebn ist, wird dieser niedrig bewertet.
double actProb = 1.0;
switch (p2->state.act) {
case MyState::Activity::ELEVATOR_DOWN :
muDistance = 0.0;
sigmaDistance = 0.3;
muFloor = 3.0;
sigmaFloor = 1.0;
actProb = p1->state.refActProbs.elevatorDown;
break;
case MyState::Activity::STAIRS_DOWN:
muDistance = 0.5;
sigmaDistance = 0.3;
muFloor = 0.5;
actProb = p1->state.refActProbs.stairsDown;
break;
case MyState::Activity::STAIRS_UP:
muDistance = 0.4;
sigmaDistance = 0.2;
muFloor = -0.5;
actProb = p1->state.refActProbs.stairsUp;
break;
case MyState::Activity::STANDING:
muDistance = 0.0;
sigmaDistance = 0.2;
muFloor = 0.0;
actProb = p1->state.refActProbs.stay;
break;
case MyState::Activity::WALKING:
muDistance = 0.8;
sigmaDistance = 0.5;
muFloor = 0.0;
actProb = p1->state.refActProbs.stay;
break;
case MyState::Activity::ELEVATOR_UP :
muDistance = 0.0;
sigmaDistance = 0.3;
muFloor = -3.0;
sigmaFloor = 1.0;
actProb = p1->state.refActProbs.elevatorUp;
break;
default:
muDistance = 0.8;
sigmaDistance = 0.5;
muFloor = 0.0;
actProb = p1->state.refActProbs.stay;
break;
}
const double distProb = Distribution::Normal<double>::getProbability(muDistance, sigmaDistance, distance_m);
// is the heading change similiar to the measurement?
// QUATSCH! Ich brauch das Heading zwischen Punkt p1 und p2 und nicht die differenz.
double diffRad = p2->state.heading.direction.getSignedDiff(p1->state.heading.direction);
double diffDeg = Angle::radToDeg(diffRad);
double angularChange = Angle::radToDeg(p2->state.refTurnAngle);
const double headingProb = Distribution::Normal<double>::getProbability(angularChange, 5.0, diffDeg);
//check how near we are to the measurement
double diffZ = (p2->state.position.z_cm - p1->state.position.z_cm) / 100.0;
const double floorProb = Distribution::Normal<double>::getProbability(muFloor, sigmaFloor, diffZ);
//combine the probabilities
double prob = distProb * headingProb * floorProb * actProb;
innerVector.push_back(prob);
}
#pragma omp critical
predictionProbabilities.push_back(innerVector);
}
return predictionProbabilities;
}
};
struct PFEval : public K::ParticleFilterEvaluation<MyState, MyObs> {
WiFiModelX model;
Scaler scaler;
Grid<MyNode>& grid;
PFEval(Scaler scaler, WiFiModelX wifiModel) : scaler(scaler), model(wifiModel) {
PFEval(Scaler scaler, WiFiModelX wifiModel, Grid<MyNode>& grid) : scaler(scaler), model(wifiModel), grid(grid) {
}
/** probability for WIFI */
inline double getWIFI(const MyObs& observation, const Point3 pos_m) const {
// if(observation.act == ActivityButterPressure::Activity::UP || observation.act == ActivityButterPressure::Activity::DOWN){
// return 1.0;
// }
return model.getProbability(observation.wifis, pos_m, Timestamp::fromSec(observation.curTS));
// //get the probabiliy for different z values. rebase particel to this value
// //eventl. hier nur die z koordinate des aktuellen partikel nehmen und die position der estimation
// double prob_1_p = model.getProbability(observation.wifis, Point3(pos_m.x, pos_m.y, pos_m.z + 4), Timestamp::fromSec(observation.curTS));
// double prob_05_p = model.getProbability(observation.wifis, Point3(pos_m.x, pos_m.y, pos_m.z + 2), Timestamp::fromSec(observation.curTS));
// double prob_025_p = model.getProbability(observation.wifis, Point3(pos_m.x, pos_m.y, pos_m.z + 1), Timestamp::fromSec(observation.curTS));
// double prob_0 = model.getProbability(observation.wifis, Point3(pos_m.x, pos_m.y, pos_m.z ), Timestamp::fromSec(observation.curTS));
// double prob_025_n = model.getProbability(observation.wifis, Point3(pos_m.x, pos_m.y, pos_m.z - 1), Timestamp::fromSec(observation.curTS));
// double prob_05_n = model.getProbability(observation.wifis, Point3(pos_m.x, pos_m.y, pos_m.z - 2), Timestamp::fromSec(observation.curTS));
// double prob_1_n = model.getProbability(observation.wifis, Point3(pos_m.x, pos_m.y, pos_m.z - 4), Timestamp::fromSec(observation.curTS));
// // if positiv -> upstairs (not like barometer ;))
// double diff = pos_m.z - posOld_m.z;
// if(diff > 3){
// return prob_1_p;
// }
// else if(diff > 1.5){
// return prob_05_p;
// }
// else if(diff > 0.5){
// return prob_025_p;
// }
// else if (diff > -0.5){
// return prob_0;
// }
// else if (diff > -1.5){
// return prob_025_n;
// }
// else if (diff > -3){
// return prob_05_n;
// }
// else{
// return prob_1_n;
// }
// if(prob_1_p > prob_05_p && prob_1_p > prob_025_p && prob_1_p > prob_0 && prob_1_p > prob_025_n && prob_1_p > prob_05_n && prob_1_p > prob_1_n){
// point.z_cm += 400;
// return prob_1_p;
// }
// else if(prob_1_n > prob_05_p && prob_1_n > prob_025_p && prob_1_n > prob_0 && prob_1_n > prob_025_n && prob_1_n > prob_05_n){
// point.z_cm += 400;
// return prob_1_p;
// }
// else if (prob_05_p > prob_025_p && prob_05_p > prob_0 && prob_05_p > prob_025_n && prob_05_p > prob_05_n && prob_05_p > prob_1_n){
// point.z_cm += 50;
// return prob_05_p;
// }
// else if (prob_025_p > prob_0 && prob_025_p > prob_025_n && prob_025_p > prob_05_n && prob_025_p > prob_1_n){
// point.z_cm += 25;
// return prob_025_p;
// }
// else if (prob_0 > prob_025_n && prob_0 > prob_05_n && prob_0 > prob_1_n){
// point.z_cm += 0;
// return prob_0;
// }
// else if (prob_025_n > prob_05_n && prob_025_n > prob_1_n){
// point.z_cm -= 25;
// return prob_025_n;
// }
// else if (prob_05_n > prob_1_n){
// point.z_cm -= 50;
// return prob_05_n;
// }
// else{
// point.z_cm -= 400;
// return prob_1_n;
// }
}
/** probability for GPS */
@@ -196,26 +484,141 @@ struct PFEval : public K::ParticleFilterEvaluation<MyState, MyObs> {
}
//Old just for non probabilistic activity
inline double getBaro(const MyObs& observation, const GridPoint point, const GridPoint pointOld) const{
MyNode node = grid.getNodeFor(point);
MyNode nodeOld = grid.getNodeFor(pointOld);
float diff = nodeOld.z_cm - node.z_cm;
if(observation.act == ActivityButterPressure::Activity::UP){
if(node.getType() == MyNode::TYPE_STAIR || node.getType() == MyNode::TYPE_ELEVATOR){
if(diff < 0.0f){
return 0.79;
}
else{
return 0.01;
}
}else{
return 0.01;
}
}
else if(observation.act == ActivityButterPressure::Activity::DOWN){
if(node.getType() == MyNode::TYPE_STAIR || node.getType() == MyNode::TYPE_ELEVATOR){
if(diff > 0.0f){
return 0.79;
}
else{
return 0.01;
}
}else{
return 0.01;
}
}
else{
return 1.0;
}
}
inline double getBaroPercent(const MyObs& observation, const GridPoint point, const GridPoint pointOld) const{
MyNode node = grid.getNodeFor(point);
MyNode nodeOld = grid.getNodeFor(pointOld);
float deltaZ_cm = nodeOld.z_cm - node.z_cm;
//floor and doors
if(node.getType() == 0 || node.getType() == 3){
return observation.actProbs.stay;
}
//stairs
if(node.getType() == 1){
// //Wenn partikel noch auf treppe, dann sollte das hier etwas höher sein, wenn aber nicht mehr... sehr sehr klein!
// if (observation.act == ActivityButterPressure::Activity::STAY){
// return observation.actProbs.stay * 0.5;
// }
if (deltaZ_cm > 0){return observation.actProbs.stairsDown;}
if (deltaZ_cm < 0){return observation.actProbs.stairsUp;}
return 0.8 * observation.actProbs.stairsDown > observation.actProbs.stairsUp ? observation.actProbs.stairsDown : observation.actProbs.stairsUp;
}
//elevators
if(node.getType() == 2){
// //Wenn partikel noch im aufzug, dann sollte das hier etwas höher sein, wenn aber nicht mehr... sehr sehr klein!
// if (observation.act == ActivityButterPressure::Activity::STAY){
// return observation.actProbs.stay * 0.5;
// }
if (deltaZ_cm > 0){return observation.actProbs.elevatorDown;}
if (deltaZ_cm < 0){return observation.actProbs.elevatorUp;}
return 0.8 * observation.actProbs.elevatorDown > observation.actProbs.elevatorUp ? observation.actProbs.elevatorDown : observation.actProbs.elevatorUp;
}
return 1.0;
}
inline double getBaroPressure(const MyObs& observation, const float hPa) const{
//TODO: would it be better to print only a distribution if the relPressure was reset?
float diff = observation.hPa - observation.referencePressure;
return Distribution::Normal<double>::getProbability(hPa, 0.10, diff);
}
/** probability for ALL sensors */
inline double getALL(const MyObs& observation, const Point3 pos_m) const {
inline double getALL(const MyObs& observation, GridPoint& point, const GridPoint pointOld, const float hPa) const {
Point3 pos_m = point.inMeter();
Point3 posOld_m = pointOld.inMeter();
const double pWifi = getWIFI(observation, pos_m);
const double pGps = getGPS(observation, pos_m);
if(!barometer){
return pWifi*pGps;
}
const double pBaro = getBaro(observation, point, pointOld);
const double pBaroPercent = getBaroPercent(observation, point, pointOld);
const double pBaroPressure = getBaroPressure(observation, hPa);
_assertNotNAN(pBaroPercent, "pups");
_assertNotNAN(pGps,"pups");
_assertNotNAN(pWifi, "pups");
_assertNot0(pBaroPressure,"pBaroPressure is null");
_assertNot0(pBaroPercent,"pBaroPercent is null");
return pWifi*pGps*pBaroPercent*pBaroPressure;
}
virtual double evaluation(std::vector<K::Particle<MyState>>& particles, const MyObs& observation) override {
double sum = 0;
for (K::Particle<MyState>& p : particles) {
const double prob = getALL(observation, p.state.position.inMeter());
const double prob = getALL(observation, p.state.position, p.state.positionOld, p.state.hPa);
p.weight = prob;
sum += prob;
sum += (prob);
}
if(sum == 0.0){
return 1.0;
}
return sum;
}

View File

@@ -15,6 +15,7 @@
#include <Indoor/grid/walk/v2/modules/WalkModulePreventVisited.h>
#include <Indoor/sensors/pressure/ActivityButterPressure.h>
#include <Indoor/sensors/pressure/ActivityButterPressurePercent.h>
struct MyState : public WalkState, public WalkStateHeading, public WalkStateSpread, public WalkStateFavorZ {
@@ -25,12 +26,20 @@ struct MyState : public WalkState, public WalkStateHeading, public WalkStateSpre
// CURRENTLY OBSOLETE (did not work as expected)
float relPres; // current pressure relative to t0
ActivityButterPressure::Activity act;
float hPa = 0;
GridPoint positionOld;
MyState() : WalkState(GridPoint(0,0,0)), WalkStateHeading(Heading(0), 0) {;}
enum Activity {ELEVATOR_DOWN, STAIRS_DOWN, WALKING, STANDING, STAIRS_UP, ELEVATOR_UP};
MyState(GridPoint pos) : WalkState(pos), WalkStateHeading(Heading(0), 0) {;}
Activity act = STANDING;
ActivityButterPressurePercent::ActivityProbabilities refActProbs = ActivityButterPressurePercent::ActivityProbabilities(0.01f, 0.01f, 0.96f, 0.01f, 0.01f);
float refTurnAngle = 0;
MyState() : WalkState(GridPoint(0,0,0)), WalkStateHeading(Heading(0), 0), positionOld(0,0,0), hPa(0) {;}
MyState(GridPoint pos) : WalkState(pos), WalkStateHeading(Heading(0), 0), positionOld(0,0,0), hPa(0) {;}
MyState& operator += (const MyState& o) {
this->position += o.position;
@@ -106,6 +115,8 @@ struct MyControl {
// sensor type 3
ActivityButterPressure::Activity act = ActivityButterPressure::STAY;
ActivityButterPressurePercent::ActivityProbabilities actProbs = ActivityButterPressurePercent::ActivityProbabilities(0.01f, 0.01f, 0.96f, 0.01f, 0.01f);
bool resetRelPressure;
} barometer;
@@ -116,6 +127,10 @@ struct MyObs {
float curTS;
WiFiMeasurements wifis;
GPS gps;
ActivityButterPressure::Activity act;
ActivityButterPressurePercent::ActivityProbabilities actProbs = ActivityButterPressurePercent::ActivityProbabilities(0.01f, 0.01f, 0.96f, 0.01f, 0.01f);
double hPa;
double referencePressure;
};

View File

@@ -1,10 +1,12 @@
#include "FileReader.h"
#include <iostream>
#include "filter/Structs.h"
#include "Plotti.h"
#include "Structs.h"
#include <chrono>
#include "filter/WiFi.h"
#include "filter/Logic.h"
@@ -24,12 +26,22 @@
#include <Indoor/sensors/imu/StepDetection.h>
#include <Indoor/sensors/pressure/RelativePressure.h>
#include <Indoor/sensors/pressure/PressureTendence.h>
#include <Indoor/sensors/pressure/ActivityButterPressure.h>
#include <Indoor/sensors/pressure/ActivityButterPressurePercent.h>
#include <Indoor/math/MovingAVG.h>
#include <Indoor/math/FixedFrequencyInterpolator.h>
#include <Indoor/data/Timestamp.h>
#include "Optimizer.h"
#include "Scaler.h"
#include <KLib/math/filter/particles/ParticleFilter.h>
#include <KLib/math/filter/particles/ParticleFilterHistory.h>
#include <KLib/math/filter/particles/ParticleFilterInitializer.h>
#include <KLib/math/filter/smoothing/BackwardSimulation.h>
#include <KLib/math/filter/smoothing/CondensationBackwardFilter.h>
#include <KLib/math/filter/smoothing/sampling/ParticleTrajectorieSampler.h>
#include <KLib/math/filter/smoothing/sampling/CumulativeSampler.h>
#include <KLib/math/filter/particles/estimation/ParticleFilterEstimationWeightedAverage.h>
#include <KLib/math/filter/particles/estimation/ParticleFilterEstimationRegionalWeightedAverage.h>
@@ -76,12 +88,12 @@ void testScaler() {
#include <Indoor/geo/Heading.h>
//frank
const std::string mapDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/";
const std::string dataDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/src/data/";
//const std::string mapDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/";
//const std::string dataDir = "/mnt/data/workspaces/IPIN2016/IPIN2016/competition/src/data/";
//toni
//const std::string mapDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/";
//const std::string dataDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/data/";
const std::string mapDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/";
const std::string dataDir = "/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/data/";
/** describes one dataset (map, training, parameter-estimation, ...) */
struct DataSetup {
@@ -91,6 +103,7 @@ struct DataSetup {
int minWifiOccurences;
VAPGrouper::Mode vapMode;
Scaler scaler;
int buildingNum;
};
/** all configured datasets */
@@ -104,20 +117,24 @@ struct Data {
dataDir + "car/logfile_CAR_R1_S3.txt",
dataDir + "car/logfile_CAR_R1_S3mini.txt", // s3 mini suckt hier genauso wie bei uns
dataDir + "car/logfile_CAR_R2_S3.txt",
dataDir + "car/logfile_CAR_R2_S4.txt"
dataDir + "car/logfile_CAR_R2_S4.txt",
dataDir + "eval/evaluation_logfile_06.txt", // s3
dataDir + "eval/evaluation_logfile_09.txt" // s4
},
dataDir + "car/wifiParams.txt",
40,
VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO,
Scaler (1282, 818, 40.31320308, -3.48367648, -8.77680000, 0.05207600)
Scaler (1282, 818, 40.31320308, -3.48367648, -8.77680000, 0.05207600),
10
};
DataSetup UAH = {
mapDir + "UAH/UAH9.xml",
mapDir + "UAH/UAH13_rawObstacles.xml",
{
dataDir + "uah/logfile_UAH_R1_S3.txt",
@@ -125,14 +142,20 @@ struct Data {
dataDir + "uah/logfile_UAH_R2_S3.txt",
dataDir + "uah/logfile_UAH_R2_S4.txt",
dataDir + "uah/logfile_UAH_R4_S3.txt",
dataDir + "uah/logfile_UAH_R4_S4.txt"
dataDir + "uah/logfile_UAH_R4_S4.txt",
dataDir + "eval/evaluation_logfile_03.txt",
dataDir + "eval/evaluation_logfile_05.txt",
dataDir + "eval/evaluation_logfile_07.txt",
dataDir + "eval/evaluation_logfile_08.txt"
},
dataDir + "uah/wifiParams.txt",
40,
VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO,
Scaler (1869, 1869, 40.51312440, -3.34959080, -40.73112000, 0.07596002)
Scaler (1869, 1869, 40.51312440, -3.34959080, -40.73112000, 0.07596002),
20
};
@@ -143,19 +166,23 @@ struct Data {
{
dataDir + "uji-ti/logfile_UJITI_R1_NEXUS5.txt",
dataDir + "uji-ti/logfile_UJITI_R2_NEXUS5.txt",
dataDir + "eval/evaluation_logfile_01.txt",
dataDir + "eval/evaluation_logfile_04.txt"
},
dataDir + "uji-ti/wifiParams.txt",
15,
VAPGrouper::Mode::LAST_MAC_DIGIT_TO_ZERO,
Scaler (748, 1046, 39.99322125, -0.06862410, 29.57638723, 0.08556493)
Scaler (748, 1046, 39.99322125, -0.06862410, 29.57638723, 0.08556493),
40
};
DataSetup UJI_UB = {
mapDir + "UJI-UB/UJI-UB4.xml",
mapDir + "UJI-UB/UJI-UB5.xml",
{
dataDir + "uji-ub/logfile_UJIUB_R1n_S3.txt",
@@ -163,6 +190,7 @@ struct Data {
dataDir + "uji-ub/logfile_UJIUB_R2n_S3.txt",
dataDir + "uji-ub/logfile_UJIUB_R2r_S3.txt",
dataDir + "uji-ub/logfile_UJIUB_R3_S3.txt",
dataDir + "eval/evaluation_logfile_02.txt"
},
dataDir + "uji-ub/wifiParams.txt",
@@ -170,7 +198,9 @@ struct Data {
VAPGrouper::Mode::DISABLED,
// BEWARE! not all images have the same size!
Scaler (4362, 1959, 39.99380328, -0.07389222, 29.54974856, 0.01700000)
Scaler (4362, 1959, 39.99380328, -0.07389222, 29.54974856, 0.01700000),
30
};
@@ -243,17 +273,15 @@ void optimize(Floorplan::IndoorMap* map, Scaler& scaler, VAPGrouper::Mode vapMod
}
Floorplan::IndoorMap* MyState::map;
int main(int argc, char** argv) {
void run(DataSetup setup, int numFile, std::string folder) {
testScaler();
//testScaler();
// the dataset to use
DataSetup setup = data.UAH;
//DataSetup setup = data.UAH;
// load the floorplan
Floorplan::IndoorMap* map = Floorplan::Reader::readFromFile(setup.map);
@@ -263,24 +291,38 @@ int main(int argc, char** argv) {
//optimize(map, setup.scaler, setup.vapMode, setup.minWifiOccurences, setup.training, setup.wifiParams);
// testing
map->floors[0]->obstacles.clear();
//map->floors[0]->obstacles.clear();
// fetch previously optimized wifi paramters
WiFiModelX model(setup.vapMode);
model.read(setup.wifiParams, map);
// build the grid
// // build the grid
Grid<MyNode> grid(20);
GridFactory<MyNode> factory(grid);
factory.build(map);
// GridFactory<MyNode> factory(grid);
// factory.build(map);
// std::filebuf fb;
// fb.open (dataDir + "uah/grid13",std::ios::out);
// std::ostream os(&fb);
// grid.write(os);
// fb.close();
std::filebuf fb;
if (fb.open (dataDir + "uah/grid13",std::ios::in))
{
std::istream is(&fb);
grid.read(is);
}
fb.close();
Importance::addImportance(grid);
FileReader fr(setup.training[1]);
FileReader fr(setup.training[numFile]);
//partikel gehen nicht schnell genug nach oben oder unten
@@ -294,10 +336,19 @@ int main(int argc, char** argv) {
plot.addFloors(map);
plot.addOutline(map);
plot.addStairs(map);
plot.gp << "set autoscale xy\n";
//plot.addGrid(grid);
for (FileReader::TS<FileReader::Position> pos : fr.positions) {
Point3 p3 = setup.scaler.convert3D(pos.data.lat, pos.data.lon, pos.data.floorNr);
/** check if long/lat calculation is correct just to be sure :)*/
IPIN pos2 = setup.scaler.toIPIN3(p3);
Assert::isNear(pos.data.lat, pos2.lat, 0.000000001, "lat not equal");
Assert::isNear(pos.data.lon, pos2.lon, 0.000000001, "lon not equal");
Assert::isNear(pos.data.floorNr, static_cast<float>(pos2.floorNr), 0.000000001f, "floorNr not equal");
plot.addGroundTruthNode(p3);
}
@@ -306,18 +357,19 @@ int main(int argc, char** argv) {
MyControl ctrl; ctrl.numSteps = 0;
MyObs obs;
int numParticles = 4000;
int numParticles = 8000;
int numBSParticles = 500;
PFEval* eval = new PFEval(setup.scaler, model);
PFEval* eval = new PFEval(setup.scaler, model, grid);
//std::unique_ptr<PFInit> init =
K::ParticleFilter<MyState, MyControl, MyObs> pf(numParticles, std::unique_ptr<PFInit>(new PFInit(grid)));
K::ParticleFilterHistory<MyState, MyControl, MyObs> pf(numParticles, std::unique_ptr<PFInit>(new PFInit(grid)));
pf.setTransition(std::unique_ptr<PFTrans>(new PFTrans(grid, &ctrl)));
pf.setEvaluation(std::unique_ptr<PFEval>(eval));
pf.setResampling(std::unique_ptr<K::ParticleFilterResamplingSimple<MyState>>(new K::ParticleFilterResamplingSimple<MyState>()));
//pf.setResampling(std::unique_ptr<K::ParticleFilterResamplingPercent<MyState>>(new K::ParticleFilterResamplingPercent<MyState>(0.04)));
pf.setNEffThreshold(1.0);
pf.setNEffThreshold(0.5);
//pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationWeightedAverage<MyState>>(new K::ParticleFilterEstimationWeightedAverage<MyState>()));
//pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationRegionalWeightedAverage<MyState>>(new K::ParticleFilterEstimationRegionalWeightedAverage<MyState>()));
@@ -325,6 +377,30 @@ int main(int argc, char** argv) {
//pf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationKernelDensity<MyState, 3>>(new K::ParticleFilterEstimationKernelDensity<MyState, 3>()));
/** Toni Smoothing Stuff */
//create the backward smoothing filter
K::BackwardSimulation<MyState> bf(numBSParticles);
//bf = new K::CondensationBackwardFilter<MyState>;
bf.setSampler( std::unique_ptr<K::CumulativeSampler<MyState>>(new K::CumulativeSampler<MyState>()));
bool smoothing_resample = false;
//bf->setNEffThreshold(1.0);
//Smoothing using Simple Trans
//bf.setEstimation(std::unique_ptr<K::ParticleFilterEstimationWeightedAverage<MyState>>(new K::ParticleFilterEstimationWeightedAverage<MyState>()));
//bf->setEstimation( std::unique_ptr<K::ParticleFilterEstimationRegionalWeightedAverage<MyState>>(new K::ParticleFilterEstimationRegionalWeightedAverage<MyState>()));
bf.setEstimation( std::unique_ptr<K::ParticleFilterEstimationOrderedWeightedAverage<MyState>>(new K::ParticleFilterEstimationOrderedWeightedAverage<MyState>(0.95f)));
if(smoothing_resample)
bf.setResampling( std::unique_ptr<K::ParticleFilterResamplingSimple<MyState>>(new K::ParticleFilterResamplingSimple<MyState>()) );
bf.setTransition(std::unique_ptr<BFTrans>( new BFTrans(grid)) );
//History of all estimated particles. Used for smoothing
std::vector<std::vector<K::Particle<MyState>>> pfHistory;
std::vector<Point3> smoothedEst;
std::vector<float> tsHistory;
std::vector<Point3> pathEst;
float lastUpdateMS = 0;
@@ -336,14 +412,41 @@ int main(int argc, char** argv) {
RelativePressure relBaro; relBaro.setCalibrationTimeframe( Timestamp::fromMS(5000) );
PressureTendence baroTend(Timestamp::fromSec(5));
ActivityButterPressure act;
ActivityButterPressurePercent actProbs;
K::Statistics<float> errorStats;
K::Statistics<float> errorStatsSmoothing;
struct TurnTest {
float rad = 0;
Point3 pos = Point3(81, 49, 0);
} tt;
//file writing for offline competition
long int t = static_cast<long int>(time(NULL));
std::ofstream compTrack3;
compTrack3.open ("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/ipin_" + std::to_string(numFile) + "_" + std::to_string(t) + ".csv");
compTrack3.setf(std::ios::fixed,std::ios::floatfield);
//compTrack3.precision(8);
std::ofstream compTrack4;
compTrack4.open ("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/ipinSmoothing_" + std::to_string(numFile) + "_" + std::to_string(t) + ".csv");
compTrack4.setf(std::ios::fixed,std::ios::floatfield);
std::ofstream errorFile;
errorFile.open ("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/error_" + std::to_string(numFile) + "_" + std::to_string(t) + ".csv");
std::ofstream errorFileSmoothing;
errorFileSmoothing.open ("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/errorSmoothing_" + std::to_string(numFile) + "_" + std::to_string(t) + ".csv");
MovingAVG<float> hPaRef(20);
MovingAVG<float> hPaCur(5);
bool newReferencePressureIsSet = false;
float pressureResetDelay = 0;
//Just for IPIN Competition
// parse each sensor-value within the offline data
for (const FileReader::Entry& e : fr.getEntries()) {
@@ -382,7 +485,53 @@ int main(int argc, char** argv) {
ctrl.barometer.tendence = baroTend.get();
/** toni activity */
ctrl.barometer.act = act.add(ts, fr.getBarometer()[e.idx].data);
std::pair<ActivityButterPressure::Activity, float> actAndBaro;
actAndBaro = act.add(ts, fr.getBarometer()[e.idx].data);
ctrl.barometer.act = actAndBaro.first;
obs.act = actAndBaro.first;
ctrl.barometer.actProbs = actProbs.add(ts, fr.getBarometer()[e.idx].data);
obs.actProbs = ctrl.barometer.actProbs;
//NOTE: the pressure value of actAndBaro was smoothed using a butterworth filter.
hPaCur.add(actAndBaro.second);
obs.hPa = hPaCur.get();
//do we need to reset the relative pressure? reset it,
//everytime we recognize a floor change. add a blocking window afterwards to prevent false detections
//NOTE: This is updated all 100 ms.
if(obs.act != ActivityButterPressure::Activity::STAY && ms - pressureResetDelay < 20000){
//call the reset just once.
if(!newReferencePressureIsSet){
obs.referencePressure = hPaRef.get();
newReferencePressureIsSet = true;
}
ctrl.barometer.resetRelPressure = false;
//TODO: ms instead of fixed number 10000 ms (10sec) should be good
}else if(ms - pressureResetDelay < 20000 && newReferencePressureIsSet){
//do nothing
}else{
newReferencePressureIsSet = false;
hPaRef.add(actAndBaro.second);
obs.referencePressure = hPaRef.get();
ctrl.barometer.resetRelPressure = true;
pressureResetDelay = ms;
}
/** baro for eval test */
// hPaHist.push_back(fr.getBarometer()[e.idx].data.hPa);
// float diff = 0.0f;
// if(hPaHist.size() > 22){
// const float front = (hPaHist.end()[-3] + hPaHist.end()[-2] + hPaHist.end()[-1]) / 3;
// const float back = (hPaHist.end()[-19] + hPaHist.end()[-20] + hPaHist.end()[-21]) / 3;;
// diff = front - back;
// }
}
@@ -392,19 +541,47 @@ int main(int argc, char** argv) {
// ((PFTrans*)pf.getTransition())->modWifi.obs = &obs;
Point3 mapPos = Point3(0,0,0);
if(!fr.getPositions().empty()){
FileReader::Position worldPos = path.get(e.ts);
//Point2 mapPos2 = setup.scaler.convert(worldPos.lat, worldPos.lon);
//Point3 mapPos = Point3(mapPos2.x, mapPos2.y, 0);
const Point3 mapPos = setup.scaler.convert3D(worldPos.lat, worldPos.lon, worldPos.floorNr);
mapPos = setup.scaler.convert3D(worldPos.lat, worldPos.lon, worldPos.floorNr);
}
MyState est = pf.update(&ctrl, obs);
Point3 estPos = est.position.inMeter();
//save the current estimation for later smoothing.
pfHistory.push_back(pf.getNonResamplingParticles());
tsHistory.push_back(ms);
pathEst.push_back(estPos);
//discrete floors
//estPos.z = static_cast<int>(estPos.z + 0.5);
//write into file in IPIN format
IPIN estIPIN = setup.scaler.toIPIN3(estPos);
//ts in sec, lat, long, floorID, buildingID
//we need to interpolate the results to exact 0.5 timestamps
compTrack3 << std::setprecision(1) << (std::llround(ts.sec()*2) / 2.0) << "," << std::setprecision(9) << estIPIN.lon << "," << estIPIN.lat << "," << static_cast<int>(estIPIN.floorNr + 0.5) << "," << setup.buildingNum << "\n";
plot.pInterest.clear();
/** check if ground truth is correctly printed
static int floor = 0;
if(floor < map->floors.size() + 1){
plot.printSingleFloor("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/", floor);
++floor;
}else{
plot.gp << "set terminal qt\n";
plot.gp << "set zrange [0 :" << floor << "]\n";
}
*/
static float angleSum = 0; angleSum += ctrl.turnAngle;
//plot.showAngle(1, ctrl.turnAngle);
plot.showAngle(2, angleSum + M_PI);
@@ -416,24 +593,29 @@ int main(int argc, char** argv) {
plot.setEst(estPos);
plot.setGT(mapPos);
plot.addParticles(pf.getParticles());
plot.gp << "set arrow 919 from " << tt.pos.x << "," << tt.pos.y << "," << tt.pos.z << " to "<< tt.pos.x << "," << tt.pos.y << "," << tt.pos.z+1 << "lw 3\n";
plot.addEstimationNode(estPos);
//plot.addParticles(pf.getParticles());
//plot.gp << "set arrow 919 from " << tt.pos.x << "," << tt.pos.y << "," << tt.pos.z << " to "<< tt.pos.x << "," << tt.pos.y << "," << tt.pos.z+1 << "lw 3\n";
plot.gp << "set label 1001 at screen 0.02, 0.98 'base:" << relBaro.getBaseAvg() << " sigma:" << relBaro.getSigma() << " cur:" << relBaro.getPressureRealtiveToStart() << " hPa " << -relBaro.getPressureRealtiveToStart()/0.10/4.0f << " floor'\n";
plot.gp << "set label 1002 at screen 0.02, 0.94 'tend:" << ((std::abs(baroTend.get()) > 0.06) ? "1" : "0") << " val: " << baroTend.get() << "'\n";
plot.gp << "set label 1002 at screen 0.98, 0.98 'act:" << ctrl.barometer.act << "'\n";
//plot.gp << "set label 1001 at screen 0.02, 0.98 'base:" << relBaro.getBaseAvg() << " sigma:" << relBaro.getSigma() << " cur:" << relBaro.getPressureRealtiveToStart() << " hPa " << -relBaro.getPressureRealtiveToStart()/0.10/4.0f << " floor'\n";
int minutes = static_cast<int>(ts.sec()) / 60;
plot.gp << "set label 1002 at screen 0.02, 0.94 'Time: " << minutes << ":" << static_cast<int>(static_cast<int>(ts.sec())%60) << "'\n";
//plot.gp << "set label 1002 at screen 0.98, 0.98 'act:" << ctrl.barometer.act << "'\n";
// error between GT and estimation
float err_m = mapPos.getDistance(estPos);
errorStats.add(err_m);
// debug
std::cout << err_m << std::endl;
std::cout << errorStats.asString() << std::endl;
std::cout << "ACHSENERKENNUNG AUF ACC FUER ROTATION??" << std::endl;
//std::cout << err_m << std::endl;
//std::cout << errorStats.asString() << std::endl;
//std::cout << "ACHSENERKENNUNG AUF ACC FUER ROTATION??" << std::endl;
errorFile << err_m << "\n";
plot.show();
usleep(1000*10);
usleep(100*100);
lastUpdateMS = ms;
@@ -442,54 +624,136 @@ int main(int argc, char** argv) {
ctrl.turnAngle = 0;
}
}
errorFile.close();
/*
K::Statistics<double> stats;
// Smoothing Part starts here
// ========================= //
bool smoothing = false;
//File
//std::ofstream statsout2("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/smoothed_" + runName + ".stats");
//stats.reset();
if(smoothing){
bf.reset();
for (FileReader::TS<FileReader::WiFis> scan : scans) {
MyState estBF;
//scan.data.groupVAPs();
//iterate thru all particle sets from T to t (currentParticleSetToSmoothAtTimeT)
for(long i = pfHistory.size() - 1; i >= 0 ; i -= 1){
estBF = bf.update(pfHistory[i]);
smoothedEst.push_back(estBF.position.inMeter());
}
plot.pColorPoints.clear();
std::reverse(smoothedEst.begin(), smoothedEst.end());
int itSize = bf.getbackwardParticles().size() - 1;
// ground truth
plot.pInterest.clear();
FileReader::Position worldPos = path.get(scan.ts);
Point2 mapPos2 = scaler.convert(worldPos.lat, worldPos.lon);
Point3 mapPos(mapPos2.x, mapPos2.y, 0);
for(unsigned int t = 0; t < smoothedEst.size(); ++t){
plot.pInterest.add(K::GnuplotPoint3(mapPos.x, mapPos.y, mapPos.z));
const Point3 curSmoothedEst = smoothedEst[t];
// update
stats.add( model.getProbability(scan, mapPos) );
Point3 mapPos = Point3(0,0,0);
if(!fr.getPositions().empty()){
FileReader::Position worldPos = path.get(tsHistory[t] / 1000.0);
mapPos = setup.scaler.convert3D(worldPos.lat, worldPos.lon, worldPos.floorNr);
}
const float step = 1.0;
float z = 0;
for (float x = -20; x < 90; x += step) {
for (float y = -10; y < 60; y += step) {
// error between GT and estimation
float err_m = mapPos.getDistance(curSmoothedEst);
errorStatsSmoothing.add(err_m);
double prob = model.getProbability(scan, Point3(x,y,z));
plot.pColorPoints.add(K::GnuplotPoint3(x,y,z), prob);
IPIN estIPINSmoothed = setup.scaler.toIPIN3(curSmoothedEst);
//ts in sec, lat, long, floorID, buildingID
//we need to interpolate the results to exact 0.5 timestamps
compTrack4 << std::setprecision(1) << (std::llround((tsHistory[t] / 1000.0) *2) / 2.0) << "," << std::setprecision(9) << estIPINSmoothed.lon << "," << estIPINSmoothed.lat << "," << static_cast<int>(estIPINSmoothed.floorNr + 0.5) << "," << setup.buildingNum << "\n";
// plot
plot.setEst(curSmoothedEst);
plot.setGT(mapPos);
plot.addEstimationNodeSmoothed(curSmoothedEst);
plot.addParticles(bf.getbackwardParticles()[itSize - t]);
//plot.show();
errorFileSmoothing << err_m << "\n";
// prevent gnuplot errors
//usleep(100*50);
}
}
errorFileSmoothing.close();
compTrack3.close();
compTrack4.close();
//Write the current plotti buffer into file
std::ofstream plotFile;
plotFile.open("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/gnu" + std::to_string(numFile) + "_" + std::to_string(t) + ".gp");
plot.saveToFile(plotFile);
plotFile.close();
for(int i = 0; i < map->floors.size(); ++i){
plot.printSingleFloor("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/image" + std::to_string(numFile) + "_" + std::to_string(t), i);
plot.show();
usleep(1000*50);
usleep(1000*10);
}
plot.printSideView("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/image" + std::to_string(numFile) + "_" + std::to_string(t), 90);
plot.show();
plot.printSideView("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/image" + std::to_string(numFile) + "_" + std::to_string(t), 0);
plot.show();
plot.printOverview("/home/toni/Documents/programme/localization/IPIN2016/competition/eval/"+ folder + "/image" + std::to_string(numFile) + "_" + std::to_string(t));
plot.show();
sleep(1);
}
std::cout << stats.asString() << std::endl;
*/
int main(int argc, char** argv) {
for(int i = 0; i < 11; ++i){
sleep(1000);
//Testing files
//run(data.UAH, 0, "UAHMAP");
//run(data.UAH, 1, "UAHMAP");
//run(data.UAH, 2, "UAHMAP");
//run(data.UAH, 3, "UAHMAP");
//run(data.UAH, 4, "UAHMAP");
//run(data.UAH, 5, "UAHMAP");
// run(data.UJI_UB, 0, "UJIBU");
// run(data.UJI_UB, 1, "UJIBU");
// run(data.UJI_UB, 2, "UJIBU");
// run(data.UJI_UB, 3, "UJIBU");
// run(data.UJI_UB, 4, "UJIBU");
// run(data.UJI_TI, 0, "UJITI");
// run(data.UJI_TI, 1, "UJITI");
// run(data.CAR, 0, "CAR");
// run(data.CAR, 1, "CAR");
// run(data.CAR, 2, "CAR");
// run(data.CAR, 3, "CAR");
//Evaluation files
// run(data.UJI_TI, 2, "EVAL"); // 1 no Baro
// run(data.UJI_UB, 5, "EVAL"); // 2
run(data.UAH, 6, "EVAL"); // 3
// run(data.UJI_TI, 3, "EVAL"); // 4 no Baro
// run(data.UAH, 7, "EVAL"); // 5
// run(data.CAR, 4, "EVAL"); // 6
// run(data.UAH, 8, "EVAL"); // 7
// run(data.UAH, 9, "EVAL"); // 8
// run(data.CAR, 5, "EVAL2"); // 9
}
}

View File

@@ -0,0 +1,284 @@
<map width="70" depth="50">
<floors>
<floor atHeight="0" height="4" name="0. Stock">
<outline>
<polygon name="new" method="0">
<point x="-0" y="40"/>
<point x="0" y="16"/>
<point x="21" y="16"/>
<point x="21" y="20"/>
<point x="44" y="20"/>
<point x="44" y="14"/>
<point x="7" y="14"/>
<point x="14" y="1"/>
<point x="56" y="1"/>
<point x="56" y="-0"/>
<point x="67" y="-0"/>
<point x="67" y="26"/>
<point x="65" y="26"/>
<point x="65" y="43"/>
<point x="51" y="43"/>
<point x="51" y="40"/>
</polygon>
<polygon name="new" method="0">
<point x="64" y="31"/>
<point x="64" y="21"/>
<point x="86" y="21"/>
<point x="86" y="31"/>
</polygon>
<polygon name="new" method="0">
<point x="-27" y="13"/>
<point x="-27" y="6"/>
<point x="46" y="6"/>
<point x="46" y="21"/>
<point x="-16" y="20"/>
</polygon>
<polygon name="new" method="0">
<point x="-16" y="20"/>
<point x="23" y="20"/>
<point x="84" y="28"/>
<point x="84" y="49"/>
<point x="30" y="49"/>
<point x="-15" y="47"/>
</polygon>
</outline>
<obstacles>
<line material="3" type="1" x1="12.6" y1="30" x2="12.6" y2="19.200001"/>
<line material="3" type="1" x1="12.6" y1="29.1" x2="13.400001" y2="29.1"/>
<line material="3" type="1" x1="14.8" y1="29.1" x2="14.8" y2="24.6"/>
<line material="3" type="1" x1="12.6" y1="24.6" x2="19.4" y2="24.6"/>
<line material="3" type="1" x1="16.800001" y1="29.1" x2="18.800001" y2="29.1"/>
<line material="3" type="1" x1="17.6" y1="29.1" x2="17.6" y2="24.6"/>
<line material="3" type="1" x1="19.700001" y1="29.1" x2="23.200001" y2="29.1"/>
<line material="3" type="1" x1="20.4" y1="29.1" x2="20.4" y2="17.200001"/>
<line material="3" type="1" x1="16.800001" y1="24.6" x2="16.800001" y2="17.200001"/>
<line material="3" type="1" x1="6.4000001" y1="17.200001" x2="20.800001" y2="17.200001"/>
<line material="3" type="1" x1="9" y1="22" x2="11.400001" y2="22"/>
<line material="3" type="1" x1="11.400001" y1="20" x2="11.400001" y2="22"/>
<line material="3" type="1" x1="11.400001" y1="20" x2="9" y2="20"/>
<line material="3" type="1" x1="9" y1="22" x2="9" y2="20"/>
<line material="3" type="1" x1="9" y1="24.800001" x2="9" y2="27.800001"/>
<line material="3" type="1" x1="9" y1="27.800001" x2="10.6" y2="27.800001"/>
<line material="3" type="1" x1="9" y1="24.800001" x2="10.6" y2="24.800001"/>
<line material="3" type="1" x1="10.6" y1="27.800001" x2="10.6" y2="24.800001"/>
<line material="3" type="1" x1="24.200001" y1="29.1" x2="27.6" y2="29.1"/>
<line material="3" type="1" x1="24.700001" y1="21.800001" x2="24.700001" y2="29.1"/>
<line material="3" type="1" x1="20.800001" y1="21.800001" x2="32.5" y2="21.800001"/>
<line material="3" type="1" x1="28.6" y1="27.4" x2="28.6" y2="21.800001"/>
<line material="3" type="1" x1="24.700001" y1="26.300001" x2="27.5" y2="26.300001"/>
<line material="3" type="1" x1="28.4" y1="29.1" x2="33" y2="29.1"/>
<line material="3" type="1" x1="14.2" y1="29.1" x2="15.8" y2="29.1"/>
<line material="3" type="1" x1="28.4" y1="29.1" x2="28.4" y2="28.4"/>
<line material="3" type="1" x1="28.4" y1="28.4" x2="32.5" y2="28.4"/>
<line material="3" type="1" x1="32.5" y1="20.700001" x2="32.5" y2="28.4"/>
<line material="3" type="1" x1="4.5999999" y1="17.200001" x2="4.5999999" y2="18.6"/>
<line material="3" type="1" x1="0.60000002" y1="17.200001" x2="4.5999999" y2="17.200001"/>
<line material="3" type="1" x1="0.60000002" y1="17.200001" x2="0.60000002" y2="39.200001"/>
<line material="3" type="1" x1="0.60000002" y1="39.200001" x2="53.200001" y2="39.200001"/>
<line material="3" type="1" x1="51.200001" y1="39.200001" x2="51.200001" y2="42"/>
<line material="3" type="1" x1="51.200001" y1="42" x2="64" y2="42"/>
<line material="3" type="1" x1="53.200001" y1="42" x2="53.200001" y2="39.200001"/>
<line material="3" type="1" x1="56.799999" y1="31.4" x2="56.799999" y2="42"/>
<line material="3" type="1" x1="55.200001" y1="31.800001" x2="56.799999" y2="31.800001"/>
<line material="3" type="1" x1="64" y1="42" x2="64" y2="29"/>
<line material="3" type="1" x1="64" y1="29" x2="56.799999" y2="29"/>
<line material="3" type="1" x1="50.400002" y1="31.800001" x2="53.400002" y2="31.800001"/>
<line material="3" type="1" x1="51.600002" y1="31.800001" x2="51.600002" y2="39.200001"/>
<line material="3" type="1" x1="50.200001" y1="36" x2="51.600002" y2="36"/>
<line material="3" type="1" x1="52.799999" y1="34.600002" x2="51.600002" y2="34.600002"/>
<line material="3" type="1" x1="52.799999" y1="34.600002" x2="52.799999" y2="31.800001"/>
<line material="3" type="1" x1="39.200001" y1="31.800001" x2="49.400002" y2="31.800001"/>
<line material="3" type="1" x1="40.799999" y1="32.400002" x2="40.799999" y2="31.800001"/>
<line material="3" type="1" x1="40.799999" y1="32.400002" x2="48.799999" y2="32.400002"/>
<line material="3" type="1" x1="48.799999" y1="31.800001" x2="48.799999" y2="39.200001"/>
<line material="3" type="1" x1="41" y1="39.200001" x2="41" y2="34.400002"/>
<line material="3" type="1" x1="36.799999" y1="34.400002" x2="39" y2="34.400002"/>
<line material="3" type="1" x1="40.200001" y1="34.400002" x2="41" y2="34.400002"/>
<line material="3" type="1" x1="36.799999" y1="39.200001" x2="36.799999" y2="31.800001"/>
<line material="3" type="1" x1="34.100002" y1="31.800001" x2="37.799999" y2="31.800001"/>
<line material="3" type="1" x1="24.4" y1="31.800001" x2="33.200001" y2="31.800001"/>
<line material="3" type="1" x1="23.4" y1="32" x2="20.200001" y2="32"/>
<line material="3" type="1" x1="20.5" y1="31.200001" x2="20.5" y2="39.200001"/>
<line material="3" type="1" x1="24.4" y1="31.800001" x2="24.4" y2="32.400002"/>
<line material="3" type="1" x1="24.4" y1="32.400002" x2="32.600002" y2="32.400002"/>
<line material="3" type="1" x1="32.600002" y1="32.400002" x2="32.600002" y2="39.200001"/>
<line material="3" type="1" x1="33.200001" y1="39.200001" x2="33.200001" y2="31.800001"/>
<line material="3" type="1" x1="7.4000001" y1="32" x2="18.800001" y2="32"/>
<line material="3" type="1" x1="10" y1="34" x2="10" y2="32"/>
<line material="3" type="1" x1="8.8000002" y1="39.200001" x2="8.8000002" y2="35.200001"/>
<line material="3" type="1" x1="10.8" y1="35.200001" x2="10.8" y2="39.200001"/>
<line material="3" type="1" x1="10" y1="35.200001" x2="10.8" y2="35.200001"/>
<line material="3" type="1" x1="6.5999999" y1="35.200001" x2="7.8000002" y2="35.200001"/>
<line material="3" type="1" x1="6.8000002" y1="39.200001" x2="6.8000002" y2="35.200001"/>
<line material="3" type="1" x1="4.5999999" y1="39.200001" x2="4.5999999" y2="31.800001"/>
<line material="3" type="1" x1="4.5999999" y1="35.200001" x2="5.8000002" y2="35.200001"/>
<line material="3" type="1" x1="4.5999999" y1="32" x2="5.8000002" y2="32"/>
<line material="3" type="1" x1="0.60000002" y1="34.200001" x2="3.4000001" y2="34.200001"/>
<line material="3" type="1" x1="0.60000002" y1="29.200001" x2="4.5999999" y2="29.200001"/>
<line material="3" type="1" x1="3.4000001" y1="30.6" x2="4.5999999" y2="30.6"/>
<line material="3" type="1" x1="4.5999999" y1="30.6" x2="4.5999999" y2="29.200001"/>
<line material="3" type="1" x1="3.4000001" y1="30.6" x2="3.4000001" y2="33.400002"/>
<line material="3" type="1" x1="0.60000002" y1="24.4" x2="4.5999999" y2="24.4"/>
<line material="3" type="1" x1="4.5999999" y1="26.800001" x2="4.5999999" y2="21.6"/>
<line material="3" type="1" x1="33.900002" y1="22.4" x2="33.900002" y2="21"/>
<line material="3" type="1" x1="35.600002" y1="21" x2="35.600002" y2="22.5"/>
<line material="3" type="1" x1="32.5" y1="20.700001" x2="36.799999" y2="20.700001"/>
<line material="3" type="1" x1="34.799999" y1="21" x2="34.799999" y2="29.1"/>
<line material="3" type="1" x1="34.100002" y1="29.1" x2="35.600002" y2="29.1"/>
<line material="3" type="1" x1="32.900002" y1="29.1" x2="32.900002" y2="21"/>
<line material="3" type="1" x1="32.900002" y1="21" x2="36.5" y2="21"/>
<line material="3" type="1" x1="32.900002" y1="27.700001" x2="33.799999" y2="27.700001"/>
<line material="3" type="1" x1="32.900002" y1="26.200001" x2="33.799999" y2="26.200001"/>
<line material="3" type="1" x1="33.799999" y1="26.200001" x2="33.799999" y2="26.700001"/>
<line material="3" type="1" x1="36.5" y1="27.5" x2="35.600002" y2="27.5"/>
<line material="3" type="1" x1="36.5" y1="29.200001" x2="36.5" y2="21"/>
<line material="3" type="1" x1="36.799999" y1="20.700001" x2="36.799999" y2="21.700001"/>
<line material="3" type="1" x1="36.799999" y1="21.700001" x2="47" y2="21.700001"/>
<line material="3" type="1" x1="44.700001" y1="22.1" x2="44.700001" y2="26.800001"/>
<line material="3" type="1" x1="44.700001" y1="26.800001" x2="41.799999" y2="26.800001"/>
<line material="3" type="1" x1="40.299999" y1="26.800001" x2="40.600002" y2="26.800001"/>
<line material="3" type="1" x1="40.600002" y1="26.800001" x2="40.600002" y2="22.1"/>
<line material="3" type="1" x1="36.799999" y1="22.1" x2="48.700001" y2="22.1"/>
<line material="3" type="1" x1="47" y1="21.700001" x2="47" y2="14.6"/>
<line material="3" type="1" x1="47" y1="14.6" x2="44.600002" y2="14.6"/>
<line material="3" type="1" x1="47" y1="21.1" x2="48.700001" y2="21.1"/>
<line material="3" type="1" x1="48.700001" y1="21.1" x2="48.700001" y2="29.5"/>
<line material="3" type="1" x1="40.700001" y1="29.200001" x2="48.700001" y2="29.200001"/>
<line material="3" type="1" x1="40.700001" y1="29.200001" x2="40.700001" y2="28.4"/>
<line material="3" type="1" x1="40.700001" y1="28.4" x2="48.700001" y2="28.4"/>
<line material="3" type="1" x1="36.5" y1="29.200001" x2="39.400002" y2="29.200001"/>
<line material="3" type="1" x1="39.400002" y1="26.800001" x2="39.400002" y2="29.200001"/>
<line material="3" type="1" x1="36.799999" y1="22.1" x2="36.799999" y2="28.9"/>
<line material="3" type="1" x1="36.799999" y1="28.9" x2="39.400002" y2="28.9"/>
<line material="3" type="1" x1="20.800001" y1="17.200001" x2="20.800001" y2="29.6"/>
<line material="3" type="1" x1="21" y1="32" x2="21" y2="39.200001"/>
<line material="3" type="1" x1="56.799999" y1="29" x2="56.799999" y2="29.6"/>
<line material="3" type="1" x1="56.799999" y1="24.800001" x2="66.200005" y2="24.800001"/>
<line material="3" type="1" x1="66.200005" y1="24.800001" x2="66.200005" y2="0.60000002"/>
<line material="3" type="1" x1="61.400002" y1="20.800001" x2="66.200005" y2="20.800001"/>
<line material="3" type="1" x1="56.799999" y1="24.800001" x2="56.799999" y2="20.800001"/>
<line material="3" type="1" x1="56.799999" y1="20.800001" x2="58" y2="20.800001"/>
<line material="3" type="1" x1="59" y1="20.800001" x2="60.400002" y2="20.800001"/>
<line material="3" type="1" x1="56.799999" y1="19" x2="56.799999" y2="17"/>
<line material="3" type="1" x1="56.799999" y1="17" x2="61.400002" y2="17"/>
<line material="3" type="1" x1="59.200001" y1="19" x2="59.200001" y2="17"/>
<line material="3" type="1" x1="62.600002" y1="17" x2="66.200005" y2="17"/>
<line material="3" type="1" x1="56.799999" y1="12.6" x2="56.799999" y2="15.6"/>
<line material="3" type="1" x1="56.799999" y1="15.6" x2="61.200001" y2="15.6"/>
<line material="3" type="1" x1="61.200001" y1="8.8000002" x2="61.200001" y2="15.6"/>
<line material="3" type="1" x1="56.799999" y1="10.400001" x2="56.799999" y2="8.8000002"/>
<line material="3" type="1" x1="56.799999" y1="8.8000002" x2="61.200001" y2="8.8000002"/>
<line material="3" type="1" x1="56.400002" y1="9.1999998" x2="56.799999" y2="9.1999998"/>
<line material="3" type="1" x1="61.200001" y1="13" x2="66.200005" y2="13"/>
<line material="3" type="1" x1="58.799999" y1="6.8000002" x2="66.200005" y2="6.8000002"/>
<line material="3" type="1" x1="61.200001" y1="6.8000002" x2="61.200001" y2="7.2000003"/>
<line material="3" type="1" x1="56.799999" y1="7" x2="56.799999" y2="3.8"/>
<line material="3" type="1" x1="56.799999" y1="2.6000001" x2="56.799999" y2="0.60000002"/>
<line material="3" type="1" x1="56.799999" y1="0.60000002" x2="66.200005" y2="0.60000002"/>
<line material="3" type="1" x1="52.600002" y1="8" x2="52.600002" y2="1.8000001"/>
<line material="3" type="1" x1="20.6" y1="1.8000001" x2="56.799999" y2="1.8000001"/>
<line material="3" type="1" x1="20.6" y1="4.8000002" x2="20.6" y2="13.2"/>
<line material="3" type="1" x1="21" y1="4.8000002" x2="21" y2="8.6000004"/>
<line material="3" type="1" x1="28.800001" y1="8.6000004" x2="21" y2="8.6000004"/>
<line material="3" type="1" x1="28.800001" y1="8.6000004" x2="28.800001" y2="8.1999998"/>
<line material="3" type="1" x1="28.800001" y1="8.1999998" x2="32.799999" y2="8.1999998"/>
<line material="3" type="1" x1="32.799999" y1="8.1999998" x2="32.799999" y2="12.8"/>
<line material="3" type="1" x1="32.799999" y1="12.8" x2="36.600002" y2="12.8"/>
<line material="3" type="1" x1="36.600002" y1="9.1999998" x2="36.600002" y2="12.8"/>
<line material="3" type="1" x1="34" y1="9.1999998" x2="36.600002" y2="9.1999998"/>
<line material="3" type="1" x1="34" y1="8.1999998" x2="34" y2="9.1999998"/>
<line material="3" type="1" x1="34" y1="8.1999998" x2="37.200001" y2="8.1999998"/>
<line material="3" type="1" x1="37.200001" y1="8.6000004" x2="37.200001" y2="8.1999998"/>
<line material="3" type="1" x1="37.200001" y1="8.6000004" x2="40.799999" y2="8.6000004"/>
<line material="3" type="1" x1="40.799999" y1="11.6" x2="40.799999" y2="8.6000004"/>
<line material="3" type="1" x1="40.400002" y1="9.4000006" x2="40.400002" y2="11.6"/>
<line material="3" type="1" x1="40.400002" y1="11.6" x2="40.799999" y2="11.6"/>
<line material="3" type="1" x1="37" y1="9.4000006" x2="40.400002" y2="9.4000006"/>
<line material="3" type="1" x1="37" y1="9.4000006" x2="37" y2="12.8"/>
<line material="3" type="1" x1="37" y1="12.8" x2="44.600002" y2="12.8"/>
<line material="3" type="1" x1="44.600002" y1="13.2" x2="44.600002" y2="12.8"/>
<line material="3" type="1" x1="20.6" y1="13.2" x2="44.600002" y2="13.2"/>
<line material="3" type="1" x1="28.800001" y1="1.8000001" x2="28.800001" y2="6.5999999"/>
<line material="3" type="1" x1="28.800001" y1="6.5999999" x2="32.400002" y2="6.5999999"/>
<line material="3" type="1" x1="32.400002" y1="5.8000002" x2="32.400002" y2="6.5999999"/>
<line material="3" type="1" x1="33.600002" y1="6.5999999" x2="36.600002" y2="6.5999999"/>
<line material="3" type="1" x1="35.400002" y1="6.5999999" x2="35.400002" y2="3"/>
<line material="3" type="1" x1="40.600002" y1="7.4000001" x2="40.600002" y2="1.8000001"/>
<line material="3" type="1" x1="41.799999" y1="7.4000001" x2="44.600002" y2="7.4000001"/>
<line material="3" type="1" x1="44.600002" y1="1.8000001" x2="44.600002" y2="10.2"/>
<line material="3" type="1" x1="42.400002" y1="8" x2="44.600002" y2="8"/>
<line material="3" type="1" x1="42.400002" y1="8" x2="42.400002" y2="7.4000001"/>
<line material="3" type="1" x1="44.600002" y1="11.2" x2="46" y2="11.2"/>
<line material="3" type="1" x1="46" y1="11.2" x2="46" y2="9.1999998"/>
<line material="3" type="1" x1="44.600002" y1="9.1999998" x2="54.600002" y2="9.1999998"/>
<line material="3" type="1" x1="48.600002" y1="10.400001" x2="50.400002" y2="10.400001"/>
<line material="3" type="1" x1="48.600002" y1="9.1999998" x2="48.600002" y2="18.800001"/>
<line material="3" type="1" x1="47.799999" y1="11.400001" x2="54" y2="11.400001"/>
<line material="3" type="1" x1="52.600002" y1="10.6" x2="52.600002" y2="11.400001"/>
<line material="3" type="1" x1="54" y1="10.6" x2="52.600002" y2="10.6"/>
<line material="3" type="1" x1="54" y1="16" x2="54" y2="10.6"/>
<line material="3" type="1" x1="48.600002" y1="17.200001" x2="54" y2="17.200001"/>
<line material="3" type="1" x1="48.600002" y1="18.800001" x2="54" y2="18.800001"/>
<line material="3" type="1" x1="54" y1="18.4" x2="54" y2="18.800001"/>
<line material="3" type="1" x1="20.6" y1="4.8000002" x2="21" y2="4.8000002"/>
<line material="3" type="1" x1="20.6" y1="2.8" x2="21" y2="2.8"/>
<line material="3" type="1" x1="20.6" y1="2.8" x2="20.6" y2="1.8000001"/>
<line material="3" type="1" x1="21" y1="2.8" x2="21" y2="1.8000001"/>
<door material="2" type="1" x1="3.4000001" y1="34.200001" x2="3.4000001" y2="33.400002" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="5.8000002" y1="35.200001" x2="6.5999999" y2="35.200001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="7.8000002" y1="35.200001" x2="8.8000002" y2="35.200001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="8.8000002" y1="35.200001" x2="10" y2="35.200001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="5.8000002" y1="32" x2="7.4000001" y2="32" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="18.800001" y1="32" x2="20.200001" y2="32" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="23.4" y1="32" x2="24.4" y2="32" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="34.100002" y1="31.800001" x2="33.200001" y2="31.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="37.799999" y1="31.800001" x2="39.200001" y2="31.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="39" y1="34.400002" x2="40.200001" y2="34.400002" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="49.400002" y1="31.800001" x2="50.400002" y2="31.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="53.400002" y1="31.800001" x2="55.200001" y2="31.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="56.799999" y1="31.4" x2="56.799999" y2="29.6" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="39.400002" y1="29.200001" x2="40.700001" y2="29.200001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="35.600002" y1="29.1" x2="36.5" y2="29.1" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="33" y1="29.1" x2="34.100002" y2="29.1" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="27.6" y1="29.1" x2="28.4" y2="29.1" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="23.200001" y1="29.1" x2="24.200001" y2="29.1" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="18.800001" y1="29.1" x2="19.700001" y2="29.1" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="15.8" y1="29.1" x2="16.800001" y2="29.1" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="13.400001" y1="29.1" x2="14.2" y2="29.1" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="19.4" y1="24.6" x2="20.4" y2="24.6" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="4.5999999" y1="17.200001" x2="6.4000001" y2="17.200001" height="2.0999999" swap="1"/>
<door material="2" type="1" x1="58" y1="20.800001" x2="59" y2="20.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="60.400002" y1="20.800001" x2="61.400002" y2="20.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="61.400002" y1="17" x2="62.600002" y2="17" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="54" y1="18.4" x2="54" y2="17.200001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="54" y1="17.200001" x2="54" y2="16" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="44.600002" y1="11.2" x2="44.600002" y2="12.8" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="40.600002" y1="11.6" x2="40.600002" y2="12.8" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="32.400002" y1="6.5999999" x2="33.600002" y2="6.5999999" height="2.0999999" swap="1"/>
<door material="2" type="1" x1="40.600002" y1="7.4000001" x2="41.799999" y2="7.4000001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="20.800001" y1="2.8" x2="20.800001" y2="4.8000002" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="52.600002" y1="9.1999998" x2="52.600002" y2="8" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="56.799999" y1="3.8" x2="56.799999" y2="2.6000001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="61.200001" y1="8.8000002" x2="61.200001" y2="7.2000003" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="56.400002" y1="9.1999998" x2="54.600002" y2="9.1999998" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="44.600002" y1="13.2" x2="44.600002" y2="14.6" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="34" y1="8.1999998" x2="32.799999" y2="8.1999998" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="27.5" y1="26.300001" x2="28.6" y2="26.300001" height="2.0999999" swap="1"/>
<door material="2" type="1" x1="28.6" y1="27.4" x2="28.6" y2="28.4" height="2.0999999" swap="1"/>
<door material="2" type="1" x1="41.799999" y1="26.800001" x2="40.600002" y2="26.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="40.299999" y1="26.800001" x2="39.400002" y2="26.800001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="4.5999999" y1="26.800001" x2="4.5999999" y2="29.200001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="4.5999999" y1="18.6" x2="4.5999999" y2="21.6" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="12.6" y1="19.200001" x2="12.6" y2="17.200001" height="2.0999999" swap="0"/>
<door material="2" type="1" x1="35.400002" y1="3" x2="35.400002" y2="1.8000001" height="2.0999999" swap="0"/>
</obstacles>
<underlays>
<underlay x="-0" y="0" sx="0.052076001" sy="0.052076001" name="" file="/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/CAR/CAR.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs/>
</floor>
</floors>
</map>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,512 @@
<map width="70" depth="50">
<floors>
<floor atHeight="0" height="4" name="0. Stock">
<outline>
<polygon name="new" method="0">
<point x="40" y="2"/>
<point x="68" y="2"/>
<point x="68" y="14"/>
<point x="74" y="14"/>
<point x="74" y="2"/>
<point x="102" y="2"/>
<point x="102" y="26"/>
<point x="108" y="2"/>
<point x="140" y="2"/>
<point x="140" y="34"/>
<point x="116" y="40"/>
<point x="140" y="40"/>
<point x="140" y="68"/>
<point x="128" y="68"/>
<point x="128" y="74"/>
<point x="140" y="74"/>
<point x="140" y="102"/>
<point x="116" y="102"/>
<point x="142" y="108"/>
<point x="142" y="142"/>
<point x="108" y="142"/>
<point x="102" y="118"/>
<point x="102" y="140"/>
<point x="74" y="140"/>
<point x="74" y="128"/>
<point x="68" y="128"/>
<point x="68" y="140"/>
<point x="40" y="140"/>
<point x="40" y="114"/>
<point x="34" y="120"/>
<point x="34" y="140"/>
<point x="2" y="140"/>
<point x="2" y="108"/>
<point x="22" y="108"/>
<point x="28" y="102"/>
<point x="2" y="102"/>
<point x="2" y="74"/>
<point x="14" y="74"/>
<point x="14" y="68"/>
<point x="2" y="68"/>
<point x="2" y="40"/>
<point x="26" y="40"/>
<point x="2" y="30"/>
<point x="2" y="2"/>
<point x="32" y="2"/>
<point x="40" y="26"/>
</polygon>
<polygon name="new" method="0">
<point x="124" y="50"/>
<point x="180" y="50"/>
<point x="180" y="90"/>
<point x="124" y="90"/>
</polygon>
<polygon name="new" method="0">
<point x="62" y="-22"/>
<point x="144" y="-22"/>
<point x="144" y="30"/>
<point x="62" y="30"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="-0" y="0" sx="0.075960018" sy="0.075960018" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UAH/UAH_N0.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="98.200005" y1="71.400002" z1="0" x2="96.700005" y2="72.900002" z2="1" w="1.4"/>
<part connect="0" x1="96.700005" y1="73.900002" z1="1" x2="95.700005" y2="72.900002" z2="1" w="1.4"/>
<part connect="0" x1="95.700005" y1="72.900002" z1="1" x2="94.300003" y2="71.5" z2="2" w="1.4"/>
<part connect="0" x1="93.300003" y1="71.5" z1="2" x2="94.300003" y2="70.5" z2="2" w="1.4"/>
<part connect="0" x1="94.300003" y1="70.5" z1="2" x2="95.800003" y2="69" z2="3" w="1.4"/>
<part connect="0" x1="95.800003" y1="69" z1="3" x2="96.800003" y2="68" z2="3" w="1.4"/>
<part connect="0" x1="96.800003" y1="69" z1="3" x2="98.200005" y2="70.400002" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="70.599998" y1="98.099998" z1="0" x2="69.099998" y2="96.599998" z2="1" w="1.4"/>
<part connect="0" x1="68.099998" y1="96.599998" z1="1" x2="69.099998" y2="95.599998" z2="1" w="1.4"/>
<part connect="0" x1="69.099998" y1="95.599998" z1="1" x2="70.5" y2="94.200005" z2="2" w="1.4"/>
<part connect="0" x1="70.5" y1="93.200005" z1="2" x2="71.5" y2="94.200005" z2="2" w="1.4"/>
<part connect="0" x1="71.5" y1="94.200005" z1="2" x2="73" y2="95.700005" z2="3" w="1.4"/>
<part connect="0" x1="74" y1="95.700005" z1="3" x2="73" y2="96.700005" z2="3" w="1.4"/>
<part connect="0" x1="73" y1="96.700005" z1="3" x2="71.599998" y2="98.099998" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="43.900002" y1="70.5" z1="0" x2="45.400002" y2="69" z2="1" w="1.4"/>
<part connect="0" x1="45.400002" y1="68" z1="1" x2="46.400002" y2="69" z2="1" w="1.4"/>
<part connect="0" x1="46.400002" y1="69" z1="1" x2="47.799999" y2="70.400002" z2="2" w="1.4"/>
<part connect="0" x1="48.799999" y1="70.400002" z1="2" x2="47.799999" y2="71.400002" z2="2" w="1.4"/>
<part connect="0" x1="47.799999" y1="71.400002" z1="2" x2="46.299999" y2="72.900002" z2="3" w="1.4"/>
<part connect="0" x1="46.299999" y1="73.900002" z1="3" x2="45.299999" y2="72.900002" z2="3" w="1.4"/>
<part connect="0" x1="45.299999" y1="72.900002" z1="3" x2="43.900002" y2="71.5" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="71.5" y1="43.799999" z1="0" x2="73" y2="45.299999" z2="1" w="1.4"/>
<part connect="0" x1="74" y1="45.299999" z1="1" x2="73" y2="46.299999" z2="1" w="1.4"/>
<part connect="0" x1="73" y1="46.299999" z1="1" x2="71.5" y2="47.799999" z2="2" w="1.4"/>
<part connect="0" x1="71.5" y1="48.799999" z1="2" x2="70.5" y2="47.799999" z2="2" w="1.4"/>
<part connect="0" x1="70.5" y1="47.799999" z1="2" x2="69" y2="46.299999" z2="3" w="1.4"/>
<part connect="0" x1="68" y1="46.299999" z1="3" x2="69" y2="45.299999" z2="3" w="1.4"/>
<part connect="0" x1="69" y1="45.299999" z1="3" x2="70.5" y2="43.799999" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="99.400002" y1="42.600002" z1="0" x2="96.700005" y2="45.299999" z2="2" w="1.5"/>
<part connect="0" x1="96.700005" y1="45.299999" z1="2" x2="95.599998" y2="46.400002" z2="2" w="1.5"/>
<part connect="0" x1="95.599998" y1="46.400002" z1="2" x2="92.800003" y2="49.200001" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="42.600002" y1="42.600002" z1="0" x2="45.400002" y2="45.400002" z2="2" w="1.5"/>
<part connect="0" x1="45.400002" y1="45.400002" z1="2" x2="46.400002" y2="46.400002" z2="2" w="1.5"/>
<part connect="0" x1="46.400002" y1="46.400002" z1="2" x2="49.200001" y2="49.200001" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="42.700001" y1="99.300003" z1="0" x2="45.400002" y2="96.599998" z2="2" w="1.5"/>
<part connect="0" x1="45.400002" y1="96.599998" z1="2" x2="46.5" y2="95.5" z2="2" w="1.5"/>
<part connect="0" x1="46.5" y1="95.5" z1="2" x2="49.200001" y2="92.800003" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="99.400002" y1="99.300003" z1="0" x2="96.700005" y2="96.599998" z2="2" w="1.5"/>
<part connect="0" x1="96.700005" y1="96.599998" z1="2" x2="95.599998" y2="95.5" z2="2" w="1.5"/>
<part connect="0" x1="95.599998" y1="95.5" z1="2" x2="92.900002" y2="92.800003" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="105.9" y1="110.8" z1="0" x2="104.2" y2="109.1" z2="2" w="1.1"/>
<part connect="0" x1="104.2" y1="108.3" z1="2" x2="102.1" y2="110.4" z2="2" w="1.1"/>
<part connect="0" x1="102.9" y1="110.4" z1="2" x2="104.6" y2="112.1" z2="4" w="1.1"/>
</stair>
<stair type="0">
<part connect="0" x1="110.9" y1="105.9" z1="0" x2="109.1" y2="104.1" z2="2" w="1.1"/>
<part connect="0" x1="108.3" y1="104.1" z1="2" x2="110.4" y2="102" z2="2" w="1.1"/>
<part connect="0" x1="110.4" y1="102.8" z1="2" x2="112.2" y2="104.6" z2="4" w="1.1"/>
</stair>
</stairs>
<elevators>
<elevator cx="40.200001" cy="73.5" width="2.3" depth="2" rotation="1.5707964"/>
<elevator cx="40.200001" cy="68.400002" width="2.3" depth="2" rotation="1.5707964"/>
<elevator cx="39.600002" cy="49" width="2.3" depth="2" rotation="2.1991148"/>
<elevator cx="49" cy="39.600002" width="2.3" depth="2" rotation="2.5132742"/>
<elevator cx="68.5" cy="40.200001" width="2.3" depth="2" rotation="3.1415927"/>
<elevator cx="73.599998" cy="40.200001" width="2.3" depth="2" rotation="3.1415927"/>
<elevator cx="102.5" cy="48.900002" width="2.3" depth="2" rotation="4.0840702"/>
<elevator cx="93.099998" cy="39.5" width="2.3" depth="2" rotation="3.7699115"/>
<elevator cx="101.9" cy="73.5" width="2.3" depth="2" rotation="4.712389"/>
<elevator cx="101.9" cy="68.400002" width="2.3" depth="2" rotation="4.712389"/>
<elevator cx="102.5" cy="93" width="2.3" depth="2" rotation="5.3407078"/>
<elevator cx="93.099998" cy="102.5" width="2.3" depth="2" rotation="5.6548667"/>
<elevator cx="68.5" cy="101.8" width="2.3" depth="2" rotation="0"/>
<elevator cx="73.599998" cy="101.8" width="2.3" depth="2" rotation="0"/>
<elevator cx="49" cy="102.4" width="2.3" depth="2" rotation="0.62831855"/>
<elevator cx="39.600002" cy="93" width="2.3" depth="2" rotation="0.94247788"/>
</elevators>
</floor>
<floor atHeight="4" height="4" name="1. Stock">
<outline>
<polygon name="new" method="0">
<point x="40" y="2"/>
<point x="68" y="2"/>
<point x="68" y="14"/>
<point x="74" y="14"/>
<point x="74" y="2"/>
<point x="102" y="2"/>
<point x="102" y="26"/>
<point x="108" y="2"/>
<point x="140" y="2"/>
<point x="140" y="34"/>
<point x="116" y="40"/>
<point x="140" y="40"/>
<point x="140" y="68"/>
<point x="128" y="68"/>
<point x="128" y="74"/>
<point x="140" y="74"/>
<point x="140" y="102"/>
<point x="116" y="102"/>
<point x="142" y="108"/>
<point x="142" y="142"/>
<point x="108" y="142"/>
<point x="102" y="118"/>
<point x="102" y="140"/>
<point x="74" y="140"/>
<point x="74" y="128"/>
<point x="68" y="128"/>
<point x="68" y="140"/>
<point x="40" y="140"/>
<point x="40" y="114"/>
<point x="34" y="120"/>
<point x="34" y="140"/>
<point x="2" y="140"/>
<point x="2" y="108"/>
<point x="22" y="108"/>
<point x="28" y="102"/>
<point x="2" y="102"/>
<point x="2" y="74"/>
<point x="14" y="74"/>
<point x="14" y="68"/>
<point x="2" y="68"/>
<point x="2" y="40"/>
<point x="26" y="40"/>
<point x="2" y="30"/>
<point x="2" y="2"/>
<point x="32" y="2"/>
<point x="40" y="26"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="-0" y="0" sx="0.075960018" sy="0.075960018" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UAH/UAH_N1.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="98.200005" y1="71.400002" z1="0" x2="96.700005" y2="72.900002" z2="1" w="1.4"/>
<part connect="0" x1="96.700005" y1="73.900002" z1="1" x2="95.700005" y2="72.900002" z2="1" w="1.4"/>
<part connect="0" x1="95.700005" y1="72.900002" z1="1" x2="94.300003" y2="71.5" z2="2" w="1.4"/>
<part connect="0" x1="93.300003" y1="71.5" z1="2" x2="94.300003" y2="70.5" z2="2" w="1.4"/>
<part connect="0" x1="94.300003" y1="70.5" z1="2" x2="95.800003" y2="69" z2="3" w="1.4"/>
<part connect="0" x1="95.800003" y1="69" z1="3" x2="96.800003" y2="68" z2="3" w="1.4"/>
<part connect="0" x1="96.800003" y1="69" z1="3" x2="98.200005" y2="70.400002" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="70.599998" y1="98.099998" z1="0" x2="69.099998" y2="96.599998" z2="1" w="1.4"/>
<part connect="0" x1="68.099998" y1="96.599998" z1="1" x2="69.099998" y2="95.599998" z2="1" w="1.4"/>
<part connect="0" x1="69.099998" y1="95.599998" z1="1" x2="70.5" y2="94.200005" z2="2" w="1.4"/>
<part connect="0" x1="70.5" y1="93.200005" z1="2" x2="71.5" y2="94.200005" z2="2" w="1.4"/>
<part connect="0" x1="71.5" y1="94.200005" z1="2" x2="73" y2="95.700005" z2="3" w="1.4"/>
<part connect="0" x1="74" y1="95.700005" z1="3" x2="73" y2="96.700005" z2="3" w="1.4"/>
<part connect="0" x1="73" y1="96.700005" z1="3" x2="71.599998" y2="98.099998" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="43.900002" y1="70.5" z1="0" x2="45.400002" y2="69" z2="1" w="1.4"/>
<part connect="0" x1="45.400002" y1="68" z1="1" x2="46.400002" y2="69" z2="1" w="1.4"/>
<part connect="0" x1="46.400002" y1="69" z1="1" x2="47.799999" y2="70.400002" z2="2" w="1.4"/>
<part connect="0" x1="48.799999" y1="70.400002" z1="2" x2="47.799999" y2="71.400002" z2="2" w="1.4"/>
<part connect="0" x1="47.799999" y1="71.400002" z1="2" x2="46.299999" y2="72.900002" z2="3" w="1.4"/>
<part connect="0" x1="46.299999" y1="73.900002" z1="3" x2="45.299999" y2="72.900002" z2="3" w="1.4"/>
<part connect="0" x1="45.299999" y1="72.900002" z1="3" x2="43.900002" y2="71.5" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="71.5" y1="43.799999" z1="0" x2="73" y2="45.299999" z2="1" w="1.4"/>
<part connect="0" x1="74" y1="45.299999" z1="1" x2="73" y2="46.299999" z2="1" w="1.4"/>
<part connect="0" x1="73" y1="46.299999" z1="1" x2="71.5" y2="47.799999" z2="2" w="1.4"/>
<part connect="0" x1="71.5" y1="48.799999" z1="2" x2="70.5" y2="47.799999" z2="2" w="1.4"/>
<part connect="0" x1="70.5" y1="47.799999" z1="2" x2="69" y2="46.299999" z2="3" w="1.4"/>
<part connect="0" x1="68" y1="46.299999" z1="3" x2="69" y2="45.299999" z2="3" w="1.4"/>
<part connect="0" x1="69" y1="45.299999" z1="3" x2="70.5" y2="43.799999" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="99.400002" y1="42.600002" z1="0" x2="96.700005" y2="45.299999" z2="2" w="1.5"/>
<part connect="0" x1="96.700005" y1="45.299999" z1="2" x2="95.599998" y2="46.400002" z2="2" w="1.5"/>
<part connect="0" x1="95.599998" y1="46.400002" z1="2" x2="92.800003" y2="49.200001" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="42.600002" y1="42.600002" z1="0" x2="45.400002" y2="45.400002" z2="2" w="1.5"/>
<part connect="0" x1="45.400002" y1="45.400002" z1="2" x2="46.400002" y2="46.400002" z2="2" w="1.5"/>
<part connect="0" x1="46.400002" y1="46.400002" z1="2" x2="49.200001" y2="49.200001" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="42.700001" y1="99.300003" z1="0" x2="45.400002" y2="96.599998" z2="2" w="1.5"/>
<part connect="0" x1="45.400002" y1="96.599998" z1="2" x2="46.5" y2="95.5" z2="2" w="1.5"/>
<part connect="0" x1="46.5" y1="95.5" z1="2" x2="49.200001" y2="92.800003" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="99.400002" y1="99.300003" z1="0" x2="96.700005" y2="96.599998" z2="2" w="1.5"/>
<part connect="0" x1="96.700005" y1="96.599998" z1="2" x2="95.599998" y2="95.5" z2="2" w="1.5"/>
<part connect="0" x1="95.599998" y1="95.5" z1="2" x2="92.900002" y2="92.800003" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="105.9" y1="110.8" z1="0" x2="104.2" y2="109.1" z2="2" w="1.1"/>
<part connect="0" x1="104.2" y1="108.3" z1="2" x2="102.1" y2="110.4" z2="2" w="1.1"/>
<part connect="0" x1="102.9" y1="110.4" z1="2" x2="104.6" y2="112.1" z2="4" w="1.1"/>
</stair>
<stair type="0">
<part connect="0" x1="110.9" y1="105.9" z1="0" x2="109.1" y2="104.1" z2="2" w="1.1"/>
<part connect="0" x1="108.3" y1="104.1" z1="2" x2="110.4" y2="102" z2="2" w="1.1"/>
<part connect="0" x1="110.4" y1="102.8" z1="2" x2="112.2" y2="104.6" z2="4" w="1.1"/>
</stair>
</stairs>
<elevators>
<elevator cx="40.200001" cy="73.5" width="2.3" depth="2" rotation="1.5707964"/>
<elevator cx="40.200001" cy="68.400002" width="2.3" depth="2" rotation="1.5707964"/>
<elevator cx="39.600002" cy="49" width="2.3" depth="2" rotation="2.1991148"/>
<elevator cx="49" cy="39.600002" width="2.3" depth="2" rotation="2.5132742"/>
<elevator cx="68.5" cy="40.200001" width="2.3" depth="2" rotation="3.1415927"/>
<elevator cx="73.599998" cy="40.200001" width="2.3" depth="2" rotation="3.1415927"/>
<elevator cx="102.5" cy="48.900002" width="2.3" depth="2" rotation="4.0840702"/>
<elevator cx="93.099998" cy="39.5" width="2.3" depth="2" rotation="3.7699115"/>
<elevator cx="101.9" cy="73.5" width="2.3" depth="2" rotation="4.712389"/>
<elevator cx="101.9" cy="68.400002" width="2.3" depth="2" rotation="4.712389"/>
<elevator cx="102.5" cy="93" width="2.3" depth="2" rotation="5.3407078"/>
<elevator cx="93.099998" cy="102.5" width="2.3" depth="2" rotation="5.6548667"/>
<elevator cx="68.5" cy="101.8" width="2.3" depth="2" rotation="0"/>
<elevator cx="73.599998" cy="101.8" width="2.3" depth="2" rotation="0"/>
<elevator cx="49" cy="102.4" width="2.3" depth="2" rotation="0.62831855"/>
<elevator cx="39.600002" cy="93" width="2.3" depth="2" rotation="0.94247788"/>
</elevators>
</floor>
<floor atHeight="8" height="4" name="2. Stock">
<outline>
<polygon name="new" method="0">
<point x="40" y="2"/>
<point x="68" y="2"/>
<point x="68" y="14"/>
<point x="74" y="14"/>
<point x="74" y="2"/>
<point x="102" y="2"/>
<point x="102" y="26"/>
<point x="108" y="2"/>
<point x="140" y="2"/>
<point x="140" y="34"/>
<point x="116" y="40"/>
<point x="140" y="40"/>
<point x="140" y="68"/>
<point x="128" y="68"/>
<point x="128" y="74"/>
<point x="140" y="74"/>
<point x="140" y="102"/>
<point x="116" y="102"/>
<point x="142" y="108"/>
<point x="142" y="142"/>
<point x="108" y="142"/>
<point x="102" y="118"/>
<point x="102" y="140"/>
<point x="74" y="140"/>
<point x="74" y="128"/>
<point x="68" y="128"/>
<point x="68" y="140"/>
<point x="40" y="140"/>
<point x="40" y="114"/>
<point x="34" y="120"/>
<point x="34" y="140"/>
<point x="2" y="140"/>
<point x="2" y="108"/>
<point x="22" y="108"/>
<point x="28" y="102"/>
<point x="2" y="102"/>
<point x="2" y="74"/>
<point x="14" y="74"/>
<point x="14" y="68"/>
<point x="2" y="68"/>
<point x="2" y="40"/>
<point x="26" y="40"/>
<point x="2" y="30"/>
<point x="2" y="2"/>
<point x="32" y="2"/>
<point x="40" y="26"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="-0" y="0" sx="0.075960018" sy="0.075960018" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UAH/UAH_N2.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="98.200005" y1="71.400002" z1="0" x2="96.700005" y2="72.900002" z2="1" w="1.4"/>
<part connect="0" x1="96.700005" y1="73.900002" z1="1" x2="95.700005" y2="72.900002" z2="1" w="1.4"/>
<part connect="0" x1="95.700005" y1="72.900002" z1="1" x2="94.300003" y2="71.5" z2="2" w="1.4"/>
<part connect="0" x1="93.300003" y1="71.5" z1="2" x2="94.300003" y2="70.5" z2="2" w="1.4"/>
<part connect="0" x1="94.300003" y1="70.5" z1="2" x2="95.800003" y2="69" z2="3" w="1.4"/>
<part connect="0" x1="95.800003" y1="69" z1="3" x2="96.800003" y2="68" z2="3" w="1.4"/>
<part connect="0" x1="96.800003" y1="69" z1="3" x2="98.200005" y2="70.400002" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="70.599998" y1="98.099998" z1="0" x2="69.099998" y2="96.599998" z2="1" w="1.4"/>
<part connect="0" x1="68.099998" y1="96.599998" z1="1" x2="69.099998" y2="95.599998" z2="1" w="1.4"/>
<part connect="0" x1="69.099998" y1="95.599998" z1="1" x2="70.5" y2="94.200005" z2="2" w="1.4"/>
<part connect="0" x1="70.5" y1="93.200005" z1="2" x2="71.5" y2="94.200005" z2="2" w="1.4"/>
<part connect="0" x1="71.5" y1="94.200005" z1="2" x2="73" y2="95.700005" z2="3" w="1.4"/>
<part connect="0" x1="74" y1="95.700005" z1="3" x2="73" y2="96.700005" z2="3" w="1.4"/>
<part connect="0" x1="73" y1="96.700005" z1="3" x2="71.599998" y2="98.099998" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="43.900002" y1="70.5" z1="0" x2="45.400002" y2="69" z2="1" w="1.4"/>
<part connect="0" x1="45.400002" y1="68" z1="1" x2="46.400002" y2="69" z2="1" w="1.4"/>
<part connect="0" x1="46.400002" y1="69" z1="1" x2="47.799999" y2="70.400002" z2="2" w="1.4"/>
<part connect="0" x1="48.799999" y1="70.400002" z1="2" x2="47.799999" y2="71.400002" z2="2" w="1.4"/>
<part connect="0" x1="47.799999" y1="71.400002" z1="2" x2="46.299999" y2="72.900002" z2="3" w="1.4"/>
<part connect="0" x1="46.299999" y1="73.900002" z1="3" x2="45.299999" y2="72.900002" z2="3" w="1.4"/>
<part connect="0" x1="45.299999" y1="72.900002" z1="3" x2="43.900002" y2="71.5" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="71.5" y1="43.799999" z1="0" x2="73" y2="45.299999" z2="1" w="1.4"/>
<part connect="0" x1="74" y1="45.299999" z1="1" x2="73" y2="46.299999" z2="1" w="1.4"/>
<part connect="0" x1="73" y1="46.299999" z1="1" x2="71.5" y2="47.799999" z2="2" w="1.4"/>
<part connect="0" x1="71.5" y1="48.799999" z1="2" x2="70.5" y2="47.799999" z2="2" w="1.4"/>
<part connect="0" x1="70.5" y1="47.799999" z1="2" x2="69" y2="46.299999" z2="3" w="1.4"/>
<part connect="0" x1="68" y1="46.299999" z1="3" x2="69" y2="45.299999" z2="3" w="1.4"/>
<part connect="0" x1="69" y1="45.299999" z1="3" x2="70.5" y2="43.799999" z2="4" w="1.4"/>
</stair>
<stair type="0">
<part connect="0" x1="99.400002" y1="42.600002" z1="0" x2="96.700005" y2="45.299999" z2="2" w="1.5"/>
<part connect="0" x1="96.700005" y1="45.299999" z1="2" x2="95.599998" y2="46.400002" z2="2" w="1.5"/>
<part connect="0" x1="95.599998" y1="46.400002" z1="2" x2="92.800003" y2="49.200001" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="42.600002" y1="42.600002" z1="0" x2="45.400002" y2="45.400002" z2="2" w="1.5"/>
<part connect="0" x1="45.400002" y1="45.400002" z1="2" x2="46.400002" y2="46.400002" z2="2" w="1.5"/>
<part connect="0" x1="46.400002" y1="46.400002" z1="2" x2="49.200001" y2="49.200001" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="42.700001" y1="99.300003" z1="0" x2="45.400002" y2="96.599998" z2="2" w="1.5"/>
<part connect="0" x1="45.400002" y1="96.599998" z1="2" x2="46.5" y2="95.5" z2="2" w="1.5"/>
<part connect="0" x1="46.5" y1="95.5" z1="2" x2="49.200001" y2="92.800003" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="99.400002" y1="99.300003" z1="0" x2="96.700005" y2="96.599998" z2="2" w="1.5"/>
<part connect="0" x1="96.700005" y1="96.599998" z1="2" x2="95.599998" y2="95.5" z2="2" w="1.5"/>
<part connect="0" x1="95.599998" y1="95.5" z1="2" x2="92.900002" y2="92.800003" z2="4" w="1.5"/>
</stair>
<stair type="0">
<part connect="0" x1="105.9" y1="110.8" z1="0" x2="104.2" y2="109.1" z2="2" w="1.1"/>
<part connect="0" x1="104.2" y1="108.3" z1="2" x2="102.1" y2="110.4" z2="2" w="1.1"/>
<part connect="0" x1="102.9" y1="110.4" z1="2" x2="104.6" y2="112.1" z2="4" w="1.1"/>
</stair>
<stair type="0">
<part connect="0" x1="110.9" y1="105.9" z1="0" x2="109.1" y2="104.1" z2="2" w="1.1"/>
<part connect="0" x1="108.3" y1="104.1" z1="2" x2="110.4" y2="102" z2="2" w="1.1"/>
<part connect="0" x1="110.4" y1="102.8" z1="2" x2="112.2" y2="104.6" z2="4" w="1.1"/>
</stair>
</stairs>
<elevators>
<elevator cx="40.200001" cy="73.5" width="2.3" depth="2" rotation="1.5707964"/>
<elevator cx="40.200001" cy="68.400002" width="2.3" depth="2" rotation="1.5707964"/>
<elevator cx="39.600002" cy="49" width="2.3" depth="2" rotation="2.1991148"/>
<elevator cx="49" cy="39.600002" width="2.3" depth="2" rotation="2.5132742"/>
<elevator cx="68.5" cy="40.200001" width="2.3" depth="2" rotation="3.1415927"/>
<elevator cx="73.599998" cy="40.200001" width="2.3" depth="2" rotation="3.1415927"/>
<elevator cx="102.5" cy="48.900002" width="2.3" depth="2" rotation="4.0840702"/>
<elevator cx="93.099998" cy="39.5" width="2.3" depth="2" rotation="3.7699115"/>
<elevator cx="101.9" cy="73.5" width="2.3" depth="2" rotation="4.712389"/>
<elevator cx="101.9" cy="68.400002" width="2.3" depth="2" rotation="4.712389"/>
<elevator cx="102.5" cy="93" width="2.3" depth="2" rotation="5.3407078"/>
<elevator cx="93.099998" cy="102.5" width="2.3" depth="2" rotation="5.6548667"/>
<elevator cx="68.5" cy="101.8" width="2.3" depth="2" rotation="0"/>
<elevator cx="73.599998" cy="101.8" width="2.3" depth="2" rotation="0"/>
<elevator cx="49" cy="102.4" width="2.3" depth="2" rotation="0.62831855"/>
<elevator cx="39.600002" cy="93" width="2.3" depth="2" rotation="0.94247788"/>
</elevators>
</floor>
<floor atHeight="12" height="4" name="3. Stock">
<outline>
<polygon name="new" method="0">
<point x="40" y="2"/>
<point x="68" y="2"/>
<point x="68" y="14"/>
<point x="74" y="14"/>
<point x="74" y="2"/>
<point x="102" y="2"/>
<point x="102" y="26"/>
<point x="108" y="2"/>
<point x="140" y="2"/>
<point x="140" y="34"/>
<point x="116" y="40"/>
<point x="140" y="40"/>
<point x="140" y="68"/>
<point x="128" y="68"/>
<point x="128" y="74"/>
<point x="140" y="74"/>
<point x="140" y="102"/>
<point x="116" y="102"/>
<point x="142" y="108"/>
<point x="142" y="142"/>
<point x="108" y="142"/>
<point x="102" y="118"/>
<point x="102" y="140"/>
<point x="74" y="140"/>
<point x="74" y="128"/>
<point x="68" y="128"/>
<point x="68" y="140"/>
<point x="40" y="140"/>
<point x="40" y="114"/>
<point x="34" y="120"/>
<point x="34" y="140"/>
<point x="2" y="140"/>
<point x="2" y="108"/>
<point x="22" y="108"/>
<point x="28" y="102"/>
<point x="2" y="102"/>
<point x="2" y="74"/>
<point x="14" y="74"/>
<point x="14" y="68"/>
<point x="2" y="68"/>
<point x="2" y="40"/>
<point x="26" y="40"/>
<point x="2" y="30"/>
<point x="2" y="2"/>
<point x="32" y="2"/>
<point x="40" y="26"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="-0" y="0" sx="0.075960018" sy="0.075960018" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UAH/UAH_N3.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs/>
<elevators/>
</floor>
</floors>
</map>

View File

@@ -0,0 +1,198 @@
<map width="70" depth="50">
<floors>
<floor atHeight="4" height="4" name="1. Stock">
<outline>
<polygon name="new" method="0">
<point x="48" y="36"/>
<point x="50" y="45"/>
<point x="48" y="53"/>
<point x="42" y="60"/>
<point x="64" y="82"/>
<point x="55" y="91"/>
<point x="49" y="85"/>
<point x="40" y="81"/>
<point x="24" y="81"/>
<point x="15" y="85"/>
<point x="9" y="91"/>
<point x="-0" y="82"/>
<point x="23" y="59"/>
<point x="26" y="59"/>
<point x="26" y="56"/>
<point x="22" y="56"/>
<point x="22" y="50"/>
<point x="28" y="50"/>
<point x="28" y="39"/>
<point x="22" y="39"/>
<point x="22" y="34"/>
<point x="26" y="34"/>
<point x="26" y="31"/>
<point x="23" y="31"/>
<point x="-1" y="7"/>
<point x="8" y="-2"/>
<point x="13" y="3"/>
<point x="24" y="8"/>
<point x="40" y="8"/>
<point x="51" y="3"/>
<point x="56" y="-2"/>
<point x="65" y="7"/>
<point x="42" y="30"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="-0" y="0" sx="0.085564934" sy="0.085564934" name="" file="/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/UJI-TI/UJITI_N1.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="37.900002" y1="43.700001" z1="0" x2="41" y2="43.700001" z2="2" w="1.8"/>
<part connect="0" x1="41.900002" y1="42.799999" z1="2" x2="41.900002" y2="46.700001" z2="2" w="1.8"/>
<part connect="0" x1="41" y1="45.799999" z1="2" x2="37.900002" y2="45.799999" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="6.4000001" y1="8.4000006" z1="0" x2="4.2000003" y2="6.2000003" z2="2" w="1.8"/>
<part connect="0" x1="4.2000003" y1="4.9000001" z1="2" x2="1.3000001" y2="7.8000002" z2="2" w="1.8"/>
<part connect="0" x1="2.6000001" y1="7.8000002" z1="2" x2="4.8000002" y2="10" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="57.5" y1="8.4000006" z1="0" x2="59.700001" y2="6.2000003" z2="2" w="1.8"/>
<part connect="0" x1="59.700001" y1="4.9000001" z1="2" x2="62.700001" y2="7.9000001" z2="2" w="1.8"/>
<part connect="0" x1="61.400002" y1="7.9000001" z1="2" x2="59.200001" y2="10.1" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="6.5" y1="81.099998" z1="0" x2="4.3000002" y2="83.300003" z2="2" w="1.8"/>
<part connect="0" x1="4.3000002" y1="84.599998" z1="2" x2="1.4" y2="81.700005" z2="2" w="1.8"/>
<part connect="0" x1="2.7" y1="81.700005" z1="2" x2="4.9000001" y2="79.5" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="57.5" y1="81.099998" z1="0" x2="59.700001" y2="83.300003" z2="2" w="1.8"/>
<part connect="0" x1="59.700001" y1="84.599998" z1="2" x2="62.600002" y2="81.700005" z2="2" w="1.8"/>
<part connect="0" x1="61.299999" y1="81.700005" z1="2" x2="59.100002" y2="79.5" z2="4" w="1.8"/>
</stair>
</stairs>
</floor>
<floor atHeight="8" height="4" name="2. Stock">
<outline>
<polygon name="new" method="0">
<point x="48" y="36"/>
<point x="50" y="45"/>
<point x="48" y="53"/>
<point x="42" y="60"/>
<point x="64" y="82"/>
<point x="55" y="91"/>
<point x="49" y="85"/>
<point x="40" y="81"/>
<point x="24" y="81"/>
<point x="15" y="85"/>
<point x="9" y="91"/>
<point x="-0" y="82"/>
<point x="23" y="59"/>
<point x="26" y="59"/>
<point x="26" y="56"/>
<point x="22" y="56"/>
<point x="22" y="50"/>
<point x="28" y="50"/>
<point x="28" y="39"/>
<point x="22" y="39"/>
<point x="22" y="34"/>
<point x="26" y="34"/>
<point x="26" y="31"/>
<point x="23" y="31"/>
<point x="-1" y="7"/>
<point x="8" y="-2"/>
<point x="13" y="3"/>
<point x="24" y="8"/>
<point x="40" y="8"/>
<point x="51" y="3"/>
<point x="56" y="-2"/>
<point x="65" y="7"/>
<point x="42" y="30"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0" y="0" sx="0.085564934" sy="0.085564934" name="" file="/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/UJI-TI/UJITI_N2.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="37.900002" y1="43.700001" z1="0" x2="41" y2="43.700001" z2="2" w="1.8"/>
<part connect="0" x1="41.900002" y1="42.799999" z1="2" x2="41.900002" y2="46.700001" z2="2" w="1.8"/>
<part connect="0" x1="41" y1="45.799999" z1="2" x2="37.900002" y2="45.799999" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="6.4000001" y1="8.4000006" z1="0" x2="4.2000003" y2="6.2000003" z2="2" w="1.8"/>
<part connect="0" x1="4.2000003" y1="4.9000001" z1="2" x2="1.3000001" y2="7.8000002" z2="2" w="1.8"/>
<part connect="0" x1="2.6000001" y1="7.8000002" z1="2" x2="4.8000002" y2="10" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="57.5" y1="8.4000006" z1="0" x2="59.700001" y2="6.2000003" z2="2" w="1.8"/>
<part connect="0" x1="59.700001" y1="4.9000001" z1="2" x2="62.700001" y2="7.9000001" z2="2" w="1.8"/>
<part connect="0" x1="61.400002" y1="7.9000001" z1="2" x2="59.200001" y2="10.1" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="6.5" y1="81.099998" z1="0" x2="4.3000002" y2="83.300003" z2="2" w="1.8"/>
<part connect="0" x1="4.3000002" y1="84.599998" z1="2" x2="1.4" y2="81.700005" z2="2" w="1.8"/>
<part connect="0" x1="2.7" y1="81.700005" z1="2" x2="4.9000001" y2="79.5" z2="4" w="1.8"/>
</stair>
<stair type="0">
<part connect="0" x1="57.5" y1="81.099998" z1="0" x2="59.700001" y2="83.300003" z2="2" w="1.8"/>
<part connect="0" x1="59.700001" y1="84.599998" z1="2" x2="62.600002" y2="81.700005" z2="2" w="1.8"/>
<part connect="0" x1="61.299999" y1="81.700005" z1="2" x2="59.100002" y2="79.5" z2="4" w="1.8"/>
</stair>
</stairs>
</floor>
<floor atHeight="12" height="4" name="3. Stock">
<outline>
<polygon name="new" method="0">
<point x="48" y="36"/>
<point x="50" y="45"/>
<point x="48" y="53"/>
<point x="42" y="60"/>
<point x="64" y="82"/>
<point x="55" y="91"/>
<point x="49" y="85"/>
<point x="40" y="81"/>
<point x="24" y="81"/>
<point x="15" y="85"/>
<point x="9" y="91"/>
<point x="-0" y="82"/>
<point x="23" y="59"/>
<point x="26" y="59"/>
<point x="26" y="56"/>
<point x="22" y="56"/>
<point x="22" y="50"/>
<point x="28" y="50"/>
<point x="28" y="39"/>
<point x="22" y="39"/>
<point x="22" y="34"/>
<point x="26" y="34"/>
<point x="26" y="31"/>
<point x="23" y="31"/>
<point x="-1" y="7"/>
<point x="8" y="-2"/>
<point x="13" y="3"/>
<point x="24" y="8"/>
<point x="40" y="8"/>
<point x="51" y="3"/>
<point x="56" y="-2"/>
<point x="65" y="7"/>
<point x="42" y="30"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0" y="0" sx="0.085564934" sy="0.085564934" name="" file="/mnt/data/workspaces/IPIN2016/IPIN2016/competition/maps/UJI-TI/UJITI_N3.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs/>
</floor>
</floors>
</map>

View File

@@ -0,0 +1,227 @@
<map width="70" depth="50">
<floors>
<floor atHeight="0" height="4" name="0. Stock">
<outline>
<polygon name="new" method="0">
<point x="0" y="0"/>
<point x="76" y="-0"/>
<point x="76" y="34"/>
<point x="0" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N0.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="22" y1="29.4" z1="0" x2="22" y2="27.1" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="27.1" z1="2" x2="22" y2="25.9" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="25.9" z1="2" x2="22" y2="23.700001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="20.4" y1="29.4" z1="0" x2="20.4" y2="27.1" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="27.1" z1="2" x2="20.4" y2="25.9" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="25.9" z1="2" x2="20.4" y2="23.700001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="3.8" y1="18" z1="0" x2="3.8" y2="20.200001" z2="2" w="1.2"/>
<part connect="0" x1="4.4000001" y1="20.800001" z1="2" x2="1.3000001" y2="20.800001" z2="2" w="1.2"/>
<part connect="0" x1="1.9" y1="20.200001" z1="2" x2="1.9" y2="18" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="22" y1="3.4000001" z1="0" x2="22" y2="5.9000001" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="5.9000001" z1="2" x2="22" y2="7.0999999" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="7.0999999" z1="2" x2="22" y2="9.6999998" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="20.4" y1="3.4000001" z1="0" x2="20.4" y2="5.9000001" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="5.9000001" z1="2" x2="20.4" y2="7.0999999" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="7.0999999" z1="2" x2="20.4" y2="9.6999998" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="64.400002" y1="17.200001" z1="0" x2="67.099998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="67.099998" y1="17.200001" z1="2" x2="68.599998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="68.599998" y1="17.200001" z1="2" x2="71.300003" y2="17.200001" z2="4" w="1.2"/>
</stair>
</stairs>
</floor>
<floor atHeight="4" height="4" name="1. Stock">
<outline>
<polygon name="new" method="0">
<point x="0" y="34"/>
<point x="0" y="-0"/>
<point x="76" y="-0"/>
<point x="76" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N1.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="3.8" y1="18" z1="0" x2="3.8" y2="20.200001" z2="2" w="1.2"/>
<part connect="0" x1="4.4000001" y1="20.800001" z1="2" x2="1.3000001" y2="20.800001" z2="2" w="1.2"/>
<part connect="0" x1="1.9" y1="20.200001" z1="2" x2="1.9" y2="18" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="64.400002" y1="17.200001" z1="0" x2="67.099998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="67.099998" y1="17.200001" z1="2" x2="68.599998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="68.599998" y1="17.200001" z1="2" x2="71.300003" y2="17.200001" z2="4" w="1.2"/>
</stair>
</stairs>
</floor>
<floor atHeight="8" height="4" name="2. Stock">
<outline>
<polygon name="new" method="0">
<point x="0" y="34"/>
<point x="0" y="0"/>
<point x="76" y="-0"/>
<point x="76" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N2.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
</stairs>
</floor>
<floor atHeight="12" height="4" name="3. Stock">
<outline>
<polygon name="new" method="0">
<point x="25" y="34"/>
<point x="25" y="0"/>
<point x="60" y="0"/>
<point x="60" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N3.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
</stairs>
</floor>
<floor atHeight="16" height="4" name="4. Stock">
<outline>
<polygon name="new" method="0">
<point x="25" y="0"/>
<point x="60" y="0"/>
<point x="60" y="34"/>
<point x="25" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N4.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
</stairs>
</floor>
<floor atHeight="20" height="4" name="5. Stock">
<outline>
<polygon name="new" method="0">
<point x="25" y="0"/>
<point x="60" y="0"/>
<point x="60" y="34"/>
<point x="25" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N5.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs/>
</floor>
</floors>
</map>

View File

@@ -0,0 +1,245 @@
<map width="70" depth="50">
<floors>
<floor atHeight="0" height="4" name="0. Stock">
<outline>
<polygon name="new" method="0">
<point x="0" y="0"/>
<point x="76" y="-0"/>
<point x="76" y="34"/>
<point x="0" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N0.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="22" y1="29.4" z1="0" x2="22" y2="27.1" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="27.1" z1="2" x2="22" y2="25.9" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="25.9" z1="2" x2="22" y2="23.700001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="20.4" y1="29.4" z1="0" x2="20.4" y2="27.1" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="27.1" z1="2" x2="20.4" y2="25.9" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="25.9" z1="2" x2="20.4" y2="23.700001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="3.8" y1="18" z1="0" x2="3.8" y2="20.200001" z2="2" w="1.2"/>
<part connect="0" x1="4.4000001" y1="20.800001" z1="2" x2="1.3000001" y2="20.800001" z2="2" w="1.2"/>
<part connect="0" x1="1.9" y1="20.200001" z1="2" x2="1.9" y2="18" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="22" y1="3.4000001" z1="0" x2="22" y2="5.9000001" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="5.9000001" z1="2" x2="22" y2="7.0999999" z2="2" w="1.2"/>
<part connect="0" x1="22" y1="7.0999999" z1="2" x2="22" y2="9.6999998" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="20.4" y1="3.4000001" z1="0" x2="20.4" y2="5.9000001" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="5.9000001" z1="2" x2="20.4" y2="7.0999999" z2="2" w="1.2"/>
<part connect="0" x1="20.4" y1="7.0999999" z1="2" x2="20.4" y2="9.6999998" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="64.400002" y1="17.200001" z1="0" x2="67.099998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="67.099998" y1="17.200001" z1="2" x2="68.599998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="68.599998" y1="17.200001" z1="2" x2="71.300003" y2="17.200001" z2="4" w="1.2"/>
</stair>
</stairs>
<elevators>
<elevator cx="39.600002" cy="14.6" width="2" depth="2" rotation="4.712389"/>
</elevators>
</floor>
<floor atHeight="4" height="4" name="1. Stock">
<outline>
<polygon name="new" method="0">
<point x="0" y="34"/>
<point x="0" y="-0"/>
<point x="76" y="-0"/>
<point x="76" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N1.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="3.8" y1="18" z1="0" x2="3.8" y2="20.200001" z2="2" w="1.2"/>
<part connect="0" x1="4.4000001" y1="20.800001" z1="2" x2="1.3000001" y2="20.800001" z2="2" w="1.2"/>
<part connect="0" x1="1.9" y1="20.200001" z1="2" x2="1.9" y2="18" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="64.400002" y1="17.200001" z1="0" x2="67.099998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="67.099998" y1="17.200001" z1="2" x2="68.599998" y2="17.200001" z2="2" w="1.2"/>
<part connect="0" x1="68.599998" y1="17.200001" z1="2" x2="71.300003" y2="17.200001" z2="4" w="1.2"/>
</stair>
</stairs>
<elevators>
<elevator cx="39.600002" cy="14.6" width="2" depth="2" rotation="4.712389"/>
</elevators>
</floor>
<floor atHeight="8" height="4" name="2. Stock">
<outline>
<polygon name="new" method="0">
<point x="0" y="34"/>
<point x="0" y="0"/>
<point x="76" y="-0"/>
<point x="76" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N2.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
</stairs>
<elevators>
<elevator cx="39.600002" cy="14.6" width="2" depth="2" rotation="4.712389"/>
</elevators>
</floor>
<floor atHeight="12" height="4" name="3. Stock">
<outline>
<polygon name="new" method="0">
<point x="25" y="34"/>
<point x="25" y="0"/>
<point x="60" y="0"/>
<point x="60" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N3.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
</stairs>
<elevators>
<elevator cx="39.600002" cy="14.6" width="2" depth="2" rotation="4.712389"/>
</elevators>
</floor>
<floor atHeight="16" height="4" name="4. Stock">
<outline>
<polygon name="new" method="0">
<point x="25" y="0"/>
<point x="60" y="0"/>
<point x="60" y="34"/>
<point x="25" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N4.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs>
<stair type="0">
<part connect="0" x1="38.299999" y1="20" z1="0" x2="38.299999" y2="17.300001" z2="2" w="1.2"/>
<part connect="0" x1="37.700001" y1="16.6" z1="2" x2="40.400002" y2="16.6" z2="2" w="1.4"/>
<part connect="0" x1="39.799999" y1="17.300001" z1="2" x2="39.799999" y2="20" z2="4" w="1.2"/>
</stair>
<stair type="0">
<part connect="0" x1="44.700001" y1="12.3" z1="0" x2="46.5" y2="12.3" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="11.7" z1="1" x2="47.100002" y2="12.900001" z2="1" w="1.2"/>
<part connect="0" x1="47.100002" y1="12.900001" z1="1" x2="47.100002" y2="14.1" z2="2" w="1.2"/>
<part connect="0" x1="47.700001" y1="14.7" z1="2" x2="46.5" y2="14.7" z2="2" w="1.2"/>
<part connect="0" x1="46.5" y1="14.7" z1="2" x2="44.700001" y2="14.7" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="15.3" z1="3" x2="44.100002" y2="14.1" z2="3" w="1.2"/>
<part connect="0" x1="44.100002" y1="14.1" z1="3" x2="44.100002" y2="12.900001" z2="4" w="1.2"/>
</stair>
</stairs>
<elevators>
<elevator cx="39.600002" cy="14.6" width="2" depth="2" rotation="4.712389"/>
</elevators>
</floor>
<floor atHeight="20" height="4" name="5. Stock">
<outline>
<polygon name="new" method="0">
<point x="25" y="0"/>
<point x="60" y="0"/>
<point x="60" y="34"/>
<point x="25" y="34"/>
</polygon>
</outline>
<obstacles/>
<underlays>
<underlay x="0.80000001" y="0" sx="0.017000001" sy="0.017000001" name="" file="/home/toni/Documents/programme/localization/IPIN2016/competition/src/competition/map/UJI-UB/UJIUB_N5.jpg"/>
</underlays>
<pois/>
<accesspoints/>
<beacons/>
<stairs/>
<elevators>
<elevator cx="39.600002" cy="14.6" width="2" depth="2" rotation="4.712389"/>
</elevators>
</floor>
</floors>
</map>

Binary file not shown.

View File

@@ -129,6 +129,9 @@
\input{misc/keywords}
\input{misc/functions}
\IEEEoverridecommandlockouts
\IEEEpubid{\makebox[\columnwidth]{\hfill 978-1-5090-2425-4/16/\$31.00~\copyright~2016 IEEE}
\hspace{\columnsep}\makebox[\columnwidth]{ }}
\begin{document}
%