merged
This commit is contained in:
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.csv filter=lfs diff=lfs merge=lfs -text
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1,2 +1,6 @@
|
||||
build/
|
||||
measurements/error
|
||||
measurements/error
|
||||
output/
|
||||
|
||||
__pycache__/
|
||||
.vscode/
|
||||
@@ -39,9 +39,9 @@ double ftmEval(SensorMode UseSensor, const Timestamp& currentTime, const Point3&
|
||||
if (ftmDist > 0)
|
||||
{
|
||||
//double sigma = wifi.getFtmDistStd()*wifi.getFtmDistStd(); // 3.5; // TODO
|
||||
double sigma = 3;
|
||||
double sigma = 8;
|
||||
|
||||
if (false && ftmKalmanFilters != nullptr)
|
||||
if (ftmKalmanFilters != nullptr)
|
||||
{
|
||||
Kalman& kalman = ftmKalmanFilters->at(mac);
|
||||
ftmDist = kalman.predictAndUpdate(currentTime, ftmDist);
|
||||
@@ -66,7 +66,7 @@ double ftmEval(SensorMode UseSensor, const Timestamp& currentTime, const Point3&
|
||||
else
|
||||
{
|
||||
// RSSI
|
||||
double sigma = 5;
|
||||
double sigma = 8;
|
||||
|
||||
double x = Distribution::Normal<double>::getProbability(rssiDist, sigma, apDist);
|
||||
result *= x;
|
||||
|
||||
141
code/Settings.h
141
code/Settings.h
@@ -12,7 +12,8 @@ namespace Settings {
|
||||
const std::string plotDataDir = "../plots/data/";
|
||||
const std::string outputDir = "../output/";
|
||||
|
||||
const bool UseKalman = true;
|
||||
const bool UseKalman = false;
|
||||
const bool UseRSSI = false;
|
||||
|
||||
/** describes one dataset (map, training, parameter-estimation, ...) */
|
||||
|
||||
@@ -328,25 +329,143 @@ namespace Settings {
|
||||
"path11",
|
||||
mapDir + "shl_nuc_2.xml",
|
||||
{
|
||||
dataDir + "Pixel2/path11/1688129692555.csv",
|
||||
dataDir + "Pixel2/path11/1841800940572.csv",
|
||||
dataDir + "Pixel3/path11/3833358280134.csv",
|
||||
dataDir + "Pixel3/path11/3997838116311.csv",
|
||||
//dataDir + "Pixel2/path11/1688129692555.csv",
|
||||
//dataDir + "Pixel2/path11/1841800940572.csv",
|
||||
//dataDir + "Pixel3/path11/3833358280134.csv",
|
||||
//dataDir + "Pixel3/path11/3997838116311.csv",
|
||||
dataDir + "Pixel3/path11/5137884187509.csv",
|
||||
//dataDir + "Pixel3/path11/6613042236545.csv", NUC 6 im Gang
|
||||
//dataDir + "Pixel3/path11/11657691328657.csv", // NUC 6 im 3OG
|
||||
},
|
||||
{
|
||||
// NUC, ID Pos X Y Z offset loss kalman stddev
|
||||
{ NUC1, {1, { 7, 6, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 1 I.2.14
|
||||
{ NUC5, {5, { 54, 46, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 5 I.2.37
|
||||
{ NUC6, {6, { 46, 37, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 6 I.2.03
|
||||
{ NUC7, {7, { 27, 45, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 7 I.2.28
|
||||
{ NUC8, {8, { 16, 36, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 8 I.2.10
|
||||
//{ NUC1, {1, { 7, 6, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 1 I.2.14
|
||||
//{ NUC5, {5, { 54, 46, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 5 I.2.37
|
||||
//{ NUC6, {6, { 46, 37, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 6 I.2.03
|
||||
//{ NUC7, {7, { 27, 45, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 7 I.2.28
|
||||
//{ NUC8, {8, { 16, 36, 0.8}, 0.00, 2.500, 3.0f} }, // NUC 8 I.2.10
|
||||
|
||||
|
||||
/*NUC1 x = "67" y = "33"
|
||||
NUC2 x = "27" y = "49.600002"
|
||||
NUC3 x = "15" y = "32.400002"
|
||||
NUC4 x = "14.6" y = "4.4000001"
|
||||
|
||||
NUC5 x = "52.200001" y = "49.5"
|
||||
NUC6 x = "39" y = "33"
|
||||
NUC7 x = "5" y = "49.799999"
|
||||
NUC8 x = "2" y = "21.5"*/
|
||||
|
||||
|
||||
{ NUC1, {1, { 67 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 1
|
||||
{ NUC2, {2, { 27 , 49.6, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 2
|
||||
{ NUC3, {3, { 15 , 32.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 3
|
||||
{ NUC4, {4, { 14.6, 4.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 4
|
||||
{ NUC5, {5, { 52.2, 49.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 5
|
||||
{ NUC6, {6, { 38 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 6 im Juschi Lab
|
||||
//{ NUC6, {6, { 38.1, 40 , 0.8}, 0.00, 3.000, 3.0f} }, // NUC 6 aufn Gang
|
||||
//{ NUC6, {6, { 38 , 33 , 3.4+0.8}, -2.00, 3.000, 3.0f} }, // NUC 6 3OG
|
||||
{ NUC7, {7, { 5 , 49.8, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 7
|
||||
{ NUC8, {8, { 2 , 21.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 8
|
||||
},
|
||||
{ 100, 101, 102, 103, 104, 105, 104, 103, 102, 101, 100 },
|
||||
true
|
||||
};
|
||||
|
||||
|
||||
// 20 Path: SHL Path I; NUCs steht in den Räumen; Neue gen7 NUCs mit interner Antenne
|
||||
const DataSetup Path20 = {
|
||||
"path20",
|
||||
mapDir + "shl_nuc_3.xml",
|
||||
{
|
||||
dataDir + "Pixel2/path20/17706322854245.csv",
|
||||
dataDir + "Pixel2/path20/17818434531611.csv",
|
||||
dataDir + "Pixel2/path20/18373053262232.csv",
|
||||
dataDir + "Pixel2/path20/18507853186546.csv",
|
||||
|
||||
dataDir + "Pixel3/path20/16666156600490.csv",
|
||||
dataDir + "Pixel3/path20/16779582215695.csv",
|
||||
dataDir + "Pixel3/path20/16926680479359.csv",
|
||||
dataDir + "Pixel3/path20/17037535703892.csv",
|
||||
},
|
||||
{
|
||||
// NUC, ID Pos X Y Z offset loss kalman stddev
|
||||
{ NUC1, {1, { 67 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 1
|
||||
{ NUC2, {2, { 27 , 49.6, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 2
|
||||
{ NUC3, {3, { 15 , 32.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 3
|
||||
{ NUC4, {4, { 14.6, 4.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 4
|
||||
{ NUC5, {5, { 52.2, 49.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 5
|
||||
{ NUC6, {6, { 38 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 6
|
||||
{ NUC7, {7, { 5 , 49.8, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 7
|
||||
{ NUC8, {8, { 2 , 21.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 8
|
||||
},
|
||||
{ 100, 101, 102, 103, 104, 103, 102, 101, 100 },
|
||||
true
|
||||
};
|
||||
|
||||
// 21 Path: SHL Path großes L; NUCs steht in den Räumen; Neue gen7 NUCs mit interner Antenne
|
||||
const DataSetup Path21 = {
|
||||
"path21",
|
||||
mapDir + "shl_nuc_3.xml",
|
||||
{
|
||||
dataDir + "Pixel2/path21/17368267427912.csv",
|
||||
dataDir + "Pixel2/path21/17527721931557.csv",
|
||||
dataDir + "Pixel2/path21/18001426901565.csv",
|
||||
dataDir + "Pixel2/path21/18177010770775.csv",
|
||||
|
||||
dataDir + "Pixel3/path21/15786943753685.csv",
|
||||
dataDir + "Pixel3/path21/16075928276171.csv",
|
||||
dataDir + "Pixel3/path21/16268193326887.csv",
|
||||
dataDir + "Pixel3/path21/16424251083631.csv",
|
||||
},
|
||||
{
|
||||
// NUC, ID Pos X Y Z offset loss kalman stddev
|
||||
{ NUC1, {1, { 67 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 1
|
||||
{ NUC2, {2, { 27 , 49.6, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 2
|
||||
{ NUC3, {3, { 15 , 32.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 3
|
||||
{ NUC4, {4, { 14.6, 4.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 4
|
||||
{ NUC5, {5, { 52.2, 49.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 5
|
||||
{ NUC6, {6, { 38 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 6
|
||||
{ NUC7, {7, { 5 , 49.8, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 7
|
||||
{ NUC8, {8, { 2 , 21.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 8
|
||||
},
|
||||
{ 100, 101, 102, 103, 104, 105, 104, 103, 102, 101, 100 },
|
||||
true
|
||||
};
|
||||
|
||||
|
||||
|
||||
// 22 Path: SHL Komplexer Pfad von Balzer zu Deinzer zu Pool Raum und Gang; NUCs steht in den Räumen; Neue gen7 NUCs mit interner Antenne
|
||||
const DataSetup Path22 = {
|
||||
"path21",
|
||||
mapDir + "shl_nuc_3.xml",
|
||||
{
|
||||
dataDir + "Pixel2/path22/20823227234371.csv",
|
||||
dataDir + "Pixel2/path22/21041583616592.csv",
|
||||
dataDir + "Pixel2/path22/21254258832883.csv",
|
||||
dataDir + "Pixel2/path22/21408875875733.csv",
|
||||
|
||||
dataDir + "Pixel3/path22/23431410568618.csv",
|
||||
dataDir + "Pixel3/path22/20083784919629.csv",
|
||||
dataDir + "Pixel3/path22/20307809441061.csv",
|
||||
dataDir + "Pixel3/path22/23631432228949.csv",
|
||||
},
|
||||
{
|
||||
// NUC, ID Pos X Y Z offset loss kalman stddev
|
||||
{ NUC1, {1, { 67 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 1
|
||||
{ NUC2, {2, { 27 , 49.6, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 2
|
||||
{ NUC3, {3, { 15 , 32.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 3
|
||||
{ NUC4, {4, { 14.6, 4.4, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 4
|
||||
{ NUC5, {5, { 52.2, 49.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 5
|
||||
{ NUC6, {6, { 38 , 33 , 0.8}, -2.00, 3.000, 3.0f} }, // NUC 6
|
||||
{ NUC7, {7, { 5 , 49.8, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 7
|
||||
{ NUC8, {8, { 2 , 21.5, 0.8}, -2.00, 3.000, 3.0f} }, // NUC 8
|
||||
},
|
||||
{ 200, 201, 203, 104, 204, 205, 206, 207, 206, 208, 209, 210, 211, 212 },
|
||||
true
|
||||
};
|
||||
} data;
|
||||
|
||||
static DataSetup CurrentPath = data.Path10;
|
||||
static DataSetup CurrentPath = data.Path22;
|
||||
}
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ struct MyPFTransRandom : public SMC::ParticleFilterTransition<MyState, MyControl
|
||||
Distribution::Uniform<float> dHeading;
|
||||
|
||||
MyPFTransRandom()
|
||||
: dStepSize(1.5f, 0.2f), dHeading(0, 2*M_PI)
|
||||
: dStepSize(0.7f, 0.5f), dHeading(0, 2*M_PI)
|
||||
{}
|
||||
|
||||
void transition(std::vector<SMC::Particle<MyState>>& particles, const MyControl* control) override {
|
||||
@@ -288,7 +288,7 @@ struct MyPFEval : public SMC::ParticleFilterEvaluation<MyState, MyObservation> {
|
||||
kalmanFilters = nullptr;
|
||||
}
|
||||
|
||||
double prob = ftmEval(SensorMode::FTM, observation.currentTime, p.state.pos.pos, observation.ftm, kalmanFilters);
|
||||
double prob = ftmEval(Settings::UseRSSI ? SensorMode::RSSI : SensorMode::FTM, observation.currentTime, p.state.pos.pos, observation.ftm, kalmanFilters);
|
||||
|
||||
if (assignProps)
|
||||
p.weight = prob;
|
||||
|
||||
@@ -526,14 +526,19 @@ static CombinedStats<float> run(Settings::DataSetup setup, int walkIdx, std::str
|
||||
case 1: color = K::GnuplotColor::fromRGB(0, 255, 0); break;
|
||||
case 2: color = K::GnuplotColor::fromRGB(0, 0, 255); break;
|
||||
case 3: color = K::GnuplotColor::fromRGB(255, 255, 0); break;
|
||||
case 6: color = K::GnuplotColor::fromRGB(0, 255, 255); break;
|
||||
default: color = K::GnuplotColor::fromRGB(255, 0, 0); break;
|
||||
}
|
||||
|
||||
|
||||
//float rssiDist = LogDistanceModel::rssiToDistance(-40, 2.5, wifi2.getRSSI());
|
||||
//plot.addDistanceCircle(apPos.xy(), rssiDist, color);
|
||||
|
||||
plot.addDistanceCircle(apPos.xy(), wifi2.getFtmDist(), color);
|
||||
float plotDist = wifi2.getFtmDist();
|
||||
if (Settings::UseRSSI)
|
||||
{
|
||||
float pathLoss = Settings::CurrentPath.nuc(wifi2.getAP().getMAC()).rssi_pathloss;
|
||||
float rssiDist = LogDistanceModel::rssiToDistance(-40, pathLoss, wifi2.getRSSI());
|
||||
plotDist = rssiDist;
|
||||
}
|
||||
|
||||
plot.addDistanceCircle(apPos.xy(), plotDist, color);
|
||||
}
|
||||
|
||||
|
||||
@@ -561,6 +566,7 @@ static CombinedStats<float> run(Settings::DataSetup setup, int walkIdx, std::str
|
||||
plot.showParticles(pf.getParticles());
|
||||
plot.setCurEst(estPos);
|
||||
plot.setGroundTruth(Point3(gtPos.x, gtPos.y, 0.1));
|
||||
plot.setTitle(Settings::UseRSSI ? "RSSI" : "FTM");
|
||||
|
||||
plot.addEstimationNode(estPos);
|
||||
//plot.setActivity((int)act.get());
|
||||
@@ -569,10 +575,14 @@ static CombinedStats<float> run(Settings::DataSetup setup, int walkIdx, std::str
|
||||
//plot.splot.getView().setEqualXY(true);
|
||||
|
||||
plot.plot();
|
||||
std::this_thread::sleep_for(100ms);
|
||||
//std::this_thread::sleep_for(100ms);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//std::cin.get();
|
||||
|
||||
|
||||
printErrorStats(errorStats);
|
||||
|
||||
std::ofstream plot_out;
|
||||
@@ -698,7 +708,10 @@ int main(int argc, char** argv)
|
||||
//Settings::data.Path8,
|
||||
//Settings::data.Path9,
|
||||
//Settings::data.Path10,
|
||||
Settings::data.Path11
|
||||
//Settings::data.Path11
|
||||
//Settings::data.Path20,
|
||||
//Settings::data.Path21,
|
||||
Settings::data.Path22,
|
||||
};
|
||||
|
||||
for (Settings::DataSetup setupToRun : setupsToRun)
|
||||
@@ -749,8 +762,6 @@ int main(int argc, char** argv)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//std::vector<std::array<float, 3>> error;
|
||||
//std::ofstream error_out;
|
||||
//error_out.open(Settings::errorDir + evaluationName + "_error_path1" + ".csv", std::ios_base::app);
|
||||
|
||||
@@ -119,7 +119,7 @@ static void plotDensity(Plotty& plot, std::vector<std::pair<Point2, double>>& de
|
||||
|
||||
for (auto it = density.begin(); ; std::advance(it, 2))
|
||||
{
|
||||
if (it > density.end())
|
||||
if (it >= density.end())
|
||||
break;
|
||||
|
||||
auto p = *it;
|
||||
@@ -179,28 +179,15 @@ static CombinedStats<float> run(Settings::DataSetup setup, int walkIdx, std::str
|
||||
plot.plot();
|
||||
|
||||
// wifi
|
||||
std::array<Kalman, 4> ftmKalmanFilters{
|
||||
Kalman(1, setup.NUCs.at(Settings::NUC1).kalman_measStdDev, kalman_procNoiseDistStdDev, kalman_procNoiseVelStdDev),
|
||||
Kalman(2, setup.NUCs.at(Settings::NUC2).kalman_measStdDev, kalman_procNoiseDistStdDev, kalman_procNoiseVelStdDev),
|
||||
Kalman(3, setup.NUCs.at(Settings::NUC3).kalman_measStdDev, kalman_procNoiseDistStdDev, kalman_procNoiseVelStdDev),
|
||||
Kalman(4, setup.NUCs.at(Settings::NUC4).kalman_measStdDev, kalman_procNoiseDistStdDev, kalman_procNoiseVelStdDev)
|
||||
};
|
||||
|
||||
std::array<Point2, 4> apPositions{
|
||||
Settings::CurrentPath.NUCs.at(Settings::NUC1).position.xy(),
|
||||
Settings::CurrentPath.NUCs.at(Settings::NUC2).position.xy(),
|
||||
Settings::CurrentPath.NUCs.at(Settings::NUC3).position.xy(),
|
||||
Settings::CurrentPath.NUCs.at(Settings::NUC4).position.xy(),
|
||||
};
|
||||
|
||||
std::vector<WiFiMeasurement> obs;
|
||||
|
||||
Timestamp lastTimestamp = Timestamp::fromMS(0);
|
||||
|
||||
const float sigma = 3.5;
|
||||
const int movAvgWnd = 15;
|
||||
std::array<MovingAVG<float>, 4> movAvgsFtm{ {movAvgWnd,movAvgWnd,movAvgWnd,movAvgWnd} };
|
||||
std::array<MovingAVG<float>, 4> movAvgsRssi{ {movAvgWnd,movAvgWnd,movAvgWnd,movAvgWnd} };
|
||||
//const float sigma = 3.5;
|
||||
//const int movAvgWnd = 15;
|
||||
//std::array<MovingAVG<float>, 4> movAvgsFtm{ {movAvgWnd,movAvgWnd,movAvgWnd,movAvgWnd} };
|
||||
//std::array<MovingAVG<float>, 4> movAvgsRssi{ {movAvgWnd,movAvgWnd,movAvgWnd,movAvgWnd} };
|
||||
|
||||
std::vector<float> errorValuesFtm, errorValuesRssi;
|
||||
std::vector<int> timestamps;
|
||||
|
||||
@@ -52,10 +52,10 @@ template<typename T>
|
||||
void printErrorStats(std::ostream& stream, const CombinedStats<T>& errorStats)
|
||||
{
|
||||
stream << "Walk error:" << "\n";
|
||||
stream << "[m] " << std::setw(10) << "mean" << std::setw(10) << "stdDev" << std::setw(10) << "median" << "\n";
|
||||
stream << "[m] " << std::setw(10) << "mean" << std::setw(10) << "stdDev" << std::setw(10) << "median" << std::setw(10) << "count" << "\n";
|
||||
|
||||
stream << "FTM " << std::setw(10) << errorStats.ftm.getAvg() << std::setw(10) << errorStats.ftm.getStdDev() << std::setw(10) << errorStats.ftm.getMedian() << "\n";
|
||||
stream << "RSSI " << std::setw(10) << errorStats.rssi.getAvg() << std::setw(10) << errorStats.rssi.getStdDev() << std::setw(10) << errorStats.rssi.getMedian() << "\n";
|
||||
stream << "FTM " << std::setw(10) << errorStats.ftm.getAvg() << std::setw(10) << errorStats.ftm.getStdDev() << std::setw(10) << errorStats.ftm.getMedian() << std::setw(10) << errorStats.ftm.getCount() << "\n";
|
||||
stream << "RSSI " << std::setw(10) << errorStats.rssi.getAvg() << std::setw(10) << errorStats.rssi.getStdDev() << std::setw(10) << errorStats.rssi.getMedian() << std::setw(10) << errorStats.rssi.getCount() << "\n";
|
||||
stream << std::endl;
|
||||
}
|
||||
|
||||
|
||||
317
map/shl_nuc_2.xml
Normal file
317
map/shl_nuc_2.xml
Normal file
@@ -0,0 +1,317 @@
|
||||
<map width="70" depth="50">
|
||||
<earthReg>
|
||||
<correspondences/>
|
||||
</earthReg>
|
||||
<floors>
|
||||
<floor atHeight="0" height="3.4000001" name="2. Stock">
|
||||
<outline>
|
||||
<polygon name="base" method="0" outdoor="false">
|
||||
<point x="1.2" y="43.100002"/>
|
||||
<point x="0.60000002" y="43.100002"/>
|
||||
<point x="0.60000002" y="50.200001"/>
|
||||
<point x="76.900002" y="50.200001"/>
|
||||
<point x="76.900002" y="41.299999"/>
|
||||
<point x="68.099998" y="41.299999"/>
|
||||
<point x="68.099998" y="31.6"/>
|
||||
<point x="18" y="31.6"/>
|
||||
<point x="18" y="0.69999999"/>
|
||||
<point x="1.2" y="0.69999999"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="52.400002" y="40.799999"/>
|
||||
<point x="59.100002" y="40.799999"/>
|
||||
<point x="59.100002" y="42.799999"/>
|
||||
<point x="52.400002" y="42.799999"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="12.1" y="40.799999"/>
|
||||
<point x="22.9" y="40.799999"/>
|
||||
<point x="22.9" y="42.799999"/>
|
||||
<point x="12.1" y="42.799999"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="14.5" y="6.2000003"/>
|
||||
<point x="18" y="6.2000003"/>
|
||||
<point x="18" y="11"/>
|
||||
<point x="14.5" y="11"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="12.1" y="46.600002"/>
|
||||
<point x="17.1" y="46.600002"/>
|
||||
<point x="17.1" y="50.200001"/>
|
||||
<point x="12.1" y="50.200001"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="61.5" y="46.600002"/>
|
||||
<point x="66.300003" y="46.600002"/>
|
||||
<point x="66.300003" y="50.200001"/>
|
||||
<point x="61.5" y="50.200001"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="12.3" y="31.6"/>
|
||||
<point x="13.900001" y="31.6"/>
|
||||
<point x="13.900001" y="39.299999"/>
|
||||
<point x="12.3" y="39.299999"/>
|
||||
</polygon>
|
||||
<polygon name="luft" method="1" outdoor="false">
|
||||
<point x="10" y="40.799999"/>
|
||||
<point x="1.2" y="40.799999"/>
|
||||
<point x="1.2" y="42.799999"/>
|
||||
<point x="10" y="42.799999"/>
|
||||
</polygon>
|
||||
</outline>
|
||||
<obstacles>
|
||||
<wall material="6" type="1" x1="1.2" y1="42.799999" x2="1.2" y2="0.69999999" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="10" y1="0.69999999" x2="10" y2="24.1" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.95299143" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.32905987" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.23504275" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="10" y1="7.2000003" x2="1.2" y2="7.2000003" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="10" y1="25.9" x2="10" y2="40.799999" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.92991221" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.13133337" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="1.2" y1="40.799999" x2="10" y2="40.799999" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="10" y1="25.9" x2="8.1999998" y2="25.9" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.77777749" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="8.1999998" y1="25.9" x2="1.2" y2="25.9" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.87212861" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="10" y1="24.1" x2="1.2" y2="24.1" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="5.0999999" y1="43.100002" x2="0.60000002" y2="43.100002" thickness="0.30000001"/>
|
||||
<wall material="0" type="1" x1="10.2" y1="44.5" x2="3.9000001" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.52380949" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.11111109" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="3.9000001" y1="44.5" x2="3.9000001" y2="50.200001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.81355965" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="7.5" y1="50.200001" x2="7.5" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.18644036" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="10.5" y1="48.100002" x2="10.5" y2="44.5" thickness="0.30000001"/>
|
||||
<wall material="1" type="1" x1="10.5" y1="49.100002" x2="10.5" y2="50.200001" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="0.60000002" y1="50.200001" x2="0.60000002" y2="43.100002" thickness="0.30000001"/>
|
||||
<wall material="1" type="1" x1="1.2" y1="0.69999999" x2="18" y2="0.69999999" thickness="0.15000001"/>
|
||||
<wall material="6" type="1" x1="18" y1="0.69999999" x2="18" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="18" y1="25.9" x2="12.2" y2="25.9" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="12.7" x2="18" y2="12.7" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="11" x2="14.400001" y2="11" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="14.400001" y1="11" x2="14.400001" y2="6.2000003" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="6.2000003" x2="18" y2="6.2000003" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="12.7" x2="12.2" y2="6.2000003" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.030303001" width="1.3" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="12.2" y1="13" x2="12.2" y2="25.9" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.068702258" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.95419854" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="6" type="1" x1="18" y1="31.6" x2="76.900002" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="6" type="1" x1="76.900002" y1="31.6" x2="76.900002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="6" type="1" x1="76.900002" y1="50.200001" x2="0.60000002" y2="50.200001" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="52.400002" y1="42.799999" x2="59.100002" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="59.100002" y1="42.799999" x2="59.100002" y2="40.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="59.100002" y1="40.799999" x2="52.400002" y2="40.799999" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="4.3000002" y1="25.9" x2="4.3000002" y2="24.1" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="8.1999998" y1="24.1" x2="8.1999998" y2="25.9" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.88888943" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="10.5" y1="44.5" x2="17.1" y2="44.5" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.59090918" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.93939406" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.030303003" width="1.3" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="12.3" y1="46.600002" x2="12.3" y2="44.5" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.3" y1="46.600002" x2="17.1" y2="46.600002" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="14.7" y1="44.5" x2="14.7" y2="46.600002" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="17.1" y1="50.200001" x2="17.1" y2="44.5" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="17.4" y1="44.5" x2="23" y2="44.5" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="23" y1="44.5" x2="23" y2="50.200001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.89473718" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="25.5" y1="50.200001" x2="25.5" y2="44.5" thickness="0.30000001"/>
|
||||
<wall material="0" type="1" x1="25.5" y1="44.5" x2="50.700001" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.11507935" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.21349037" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.28968251" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.40476194" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.51984131" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.63888896" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.73746985" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.82936513" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.88095617" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="29.1" y1="44.5" x2="29.1" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="31.5" y1="44.5" x2="31.5" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="33.900002" y1="44.5" x2="33.900002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="36.299999" y1="44.5" x2="36.299999" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="39.299999" y1="44.5" x2="39.299999" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="42.299999" y1="44.5" x2="42.299999" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="44.600002" y1="44.5" x2="44.600002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="50.700001" y1="44.5" x2="50.700001" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="51.100002" y1="50.200001" x2="51.100002" y2="44.5" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="51.100002" y1="44.5" x2="61" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.93939412" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.4949494" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="56.600002" y1="44.5" x2="56.600002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="61" y1="44.5" x2="61" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="61.5" y1="50.200001" x2="61.5" y2="44.5" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="61.5" y1="44.5" x2="64.400002" y2="44.5" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.86206847" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="61.5" y1="46.600002" x2="66.400002" y2="46.600002" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="66.400002" y1="46.600002" x2="66.400002" y2="44.5" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="64.400002" y1="46.600002" x2="64.400002" y2="44.5" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="70.5" y1="44.5" x2="70.5" y2="50.200001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.8308323" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="68.099998" y1="48.400002" x2="68.099998" y2="44.5" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="76.900002" y1="44.5" x2="68.400002" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.82352942" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.65882331" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<line material="0" type="3" x1="12.1" y1="42.799999" x2="12.1" y2="40.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="12.1" y1="40.799999" x2="22.9" y2="40.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="22.9" y1="40.799999" x2="22.9" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="22.9" y1="42.799999" x2="12.1" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="12.3" y1="39.299999" x2="12.3" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="13.900001" y1="39.299999" x2="13.900001" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="13.900001" y1="39.299999" x2="68.099998" y2="39.299999" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.97601473" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.79966301" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.70069867" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.56931776" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.5523302" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.42435426" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.38229868" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.35549262" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.31180814" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.010910105" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="25.5" y1="39.299999" x2="25.5" y2="31.6" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.15584378" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="31.5" y1="39.299999" x2="31.5" y2="31.6" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.15584378" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="33.900002" y1="39.299999" x2="33.900002" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="36.299999" y1="39.299999" x2="36.299999" y2="31.6" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.15584378" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="42.299999" y1="39.299999" x2="42.299999" y2="31.6" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="42.299999" y1="34.900002" x2="44.100002" y2="34.900002" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.83333194" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="44.100002" y1="31.6" x2="44.100002" y2="39.299999" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="50.600002" y1="39.299999" x2="50.600002" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="56" y1="39.299999" x2="56" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="47.100002" y1="50.200001" x2="47.100002" y2="44.5" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="1.2" y1="15.400001" x2="10" y2="15.400001" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="68.099998" y1="41.299999" x2="76.900002" y2="41.299999" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="68.099998" y1="39.299999" x2="68.099998" y2="31.6" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="68.099998" y1="41.299999" x2="68.099998" y2="39.299999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="5.0999999" y1="42.799999" x2="10" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="10" y1="40.799999" x2="10" y2="42.799999" thickness="0.15000001"/>
|
||||
<wall material="3" type="1" x1="12.2" y1="0.69999999" x2="12.2" y2="5.9000001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.13643573" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<door material="4" type="1" x1="10" y1="25.9" x2="11" y2="25.9" height="2.0999999" swap="false"/>
|
||||
<wall material="4" type="1" x1="11" y1="25.9" x2="12.2" y2="25.9" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="13.900001" y1="31.6" x2="18" y2="31.6" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="10.2" y1="44.5" x2="10.2" y2="50.200001" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.81355965" width="1" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="3" type="1" x1="17.4" y1="44.5" x2="17.4" y2="50.200001" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="5.0999999" y1="42.799999" x2="5.0999999" y2="44.5" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.35294235" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="3" type="1" x1="25" y1="44.5" x2="25" y2="50.200001" thickness="0.2"/>
|
||||
<wall material="1" type="1" x1="66.400002" y1="44.5" x2="68.099998" y2="44.5" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.8823545" width="1.3" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="3" type="1" x1="12.2" y1="5.9000001" x2="18" y2="5.9000001" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="12.2" y1="13" x2="18" y2="13" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="68.400002" y1="44.5" x2="68.400002" y2="50.200001" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.84210497" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="68.099998" y1="50.200001" x2="68.099998" y2="49.299999" thickness="0.25"/>
|
||||
</obstacles>
|
||||
<underlays>
|
||||
<underlay x="-13.15" y="-18.049999" sx="0.025403051" sy="0.025403051" name="" file="../IndoorMap/maps/stock2.png"/>
|
||||
</underlays>
|
||||
<pois>
|
||||
<poi name="I.2.43" type="0" x="73.5" y="47.400002"/>
|
||||
<poi name="I.2.42" type="0" x="69.200005" y="47.400002"/>
|
||||
<poi name="I.2.13" type="0" x="15.1" y="3.3"/>
|
||||
<poi name="I.2.14" type="0" x="5.4000001" y="4.0999999"/>
|
||||
<poi name="I.2.15" type="0" x="5.2000003" y="11.7"/>
|
||||
<poi name="I.2.11" type="0" x="14.900001" y="17.200001"/>
|
||||
<poi name="I.2.16" type="0" x="5.9000001" y="25"/>
|
||||
<poi name="I.2.17" type="0" x="2.3" y="25"/>
|
||||
<poi name="I.2.18" type="0" x="4.9000001" y="30.300001"/>
|
||||
<poi name="I.2.19" type="0" x="5.3000002" y="37.299999"/>
|
||||
<poi name="I.2.20" type="0" x="1.9" y="47"/>
|
||||
<poi name="I.2.21" type="0" x="5.3000002" y="47.700001"/>
|
||||
<poi name="I.2.22" type="0" x="8.4000006" y="47.400002"/>
|
||||
<poi name="HLS 3" type="0" x="12.7" y="45.5"/>
|
||||
<poi name="I.2.25" type="0" x="15.2" y="45.200001"/>
|
||||
<poi name="I.2.26" type="0" x="19.6" y="47.200001"/>
|
||||
<poi name="I.2.28" type="0" x="26.5" y="47.200001"/>
|
||||
<poi name="I.2.29" type="0" x="29.5" y="46.900002"/>
|
||||
<poi name="I.2.30" type="0" x="31.800001" y="47.5"/>
|
||||
<poi name="I.2.31" type="0" x="34.400002" y="47.200001"/>
|
||||
<poi name="I.2.32" type="0" x="37.100002" y="47.200001"/>
|
||||
<poi name="I.2.33" type="0" x="40.299999" y="46.200001"/>
|
||||
<poi name="I.2.34" type="0" x="42.700001" y="47.5"/>
|
||||
<poi name="I.2.35" type="0" x="44.900002" y="47"/>
|
||||
<poi name="I.2.36" type="0" x="47.799999" y="47.100002"/>
|
||||
<poi name="I.2.37" type="0" x="53.900002" y="47.400002"/>
|
||||
<poi name="I.2.38" type="0" x="58.5" y="47.400002"/>
|
||||
<poi name="I.2.1" type="0" x="62" y="35.700001"/>
|
||||
<poi name="I.2.2" type="0" x="53.299999" y="35.400002"/>
|
||||
<poi name="I.2.3" type="0" x="47.200001" y="35.400002"/>
|
||||
<poi name="I.2.4" type="0" x="42.900002" y="37"/>
|
||||
<poi name="I.2.5" type="0" x="42.799999" y="33.200001"/>
|
||||
<poi name="I.2.6" type="0" x="39.200001" y="35.5"/>
|
||||
<poi name="I.2.7" type="0" x="34.600002" y="35.600002"/>
|
||||
<poi name="I.2.8" type="0" x="31.800001" y="35.600002"/>
|
||||
<poi name="I.2.9" type="0" x="28.4" y="35.600002"/>
|
||||
<poi name="I.2.10" type="0" x="19.300001" y="35.400002"/>
|
||||
</pois>
|
||||
<gtpoints>
|
||||
<gtpoint id="100" x="71.800003" y="44" z="0"/>
|
||||
<gtpoint id="101" x="55.600002" y="44" z="0"/>
|
||||
<gtpoint id="102" x="42.200001" y="44" z="0"/>
|
||||
<gtpoint id="103" x="35" y="40" z="0"/>
|
||||
<gtpoint id="104" x="11" y="40" z="0"/>
|
||||
<gtpoint id="105" x="11" y="12" z="0"/>
|
||||
<gtpoint id="200" x="24" y="38" z="0"/>
|
||||
<gtpoint id="201" x="15" y="38" z="0"/>
|
||||
<gtpoint id="203" x="15" y="40" z="0"/>
|
||||
<gtpoint id="204" x="11" y="43.600002" z="0"/>
|
||||
<gtpoint id="205" x="35.200001" y="43.600002" z="0"/>
|
||||
<gtpoint id="206" x="45.200001" y="39.799999" z="0"/>
|
||||
<gtpoint id="207" x="45" y="33" z="0"/>
|
||||
<gtpoint id="208" x="57.600002" y="40" z="0"/>
|
||||
<gtpoint id="209" x="57.600002" y="32.600002" z="0"/>
|
||||
<gtpoint id="210" x="66.400002" y="32.600002" z="0"/>
|
||||
<gtpoint id="211" x="66.400002" y="42" z="0"/>
|
||||
<gtpoint id="212" x="60" y="42" z="0"/>
|
||||
</gtpoints>
|
||||
<accesspoints>
|
||||
<accesspoint name="NUC7" mac="XX:XX:XX:XX:XX:XX" x="27" y="45" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC5" mac="XX:XX:XX:XX:XX:XX" x="53.5" y="46" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC6" mac="XX:XX:XX:XX:XX:XX" x="46" y="37" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC8" mac="XX:XX:XX:XX:XX:XX" x="16" y="36" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC1" mac="XX:XX:XX:XX:XX:XX" x="7" y="6" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
</accesspoints>
|
||||
<beacons/>
|
||||
<fingerprints/>
|
||||
<stairs/>
|
||||
<elevators/>
|
||||
</floor>
|
||||
</floors>
|
||||
</map>
|
||||
320
map/shl_nuc_3.xml
Normal file
320
map/shl_nuc_3.xml
Normal file
@@ -0,0 +1,320 @@
|
||||
<map width="70" depth="50">
|
||||
<earthReg>
|
||||
<correspondences/>
|
||||
</earthReg>
|
||||
<floors>
|
||||
<floor atHeight="0" height="3.4000001" name="2. Stock">
|
||||
<outline>
|
||||
<polygon name="base" method="0" outdoor="false">
|
||||
<point x="1.2" y="43.100002"/>
|
||||
<point x="0.60000002" y="43.100002"/>
|
||||
<point x="0.60000002" y="50.200001"/>
|
||||
<point x="76.900002" y="50.200001"/>
|
||||
<point x="76.900002" y="41.299999"/>
|
||||
<point x="68.099998" y="41.299999"/>
|
||||
<point x="68.099998" y="31.6"/>
|
||||
<point x="18" y="31.6"/>
|
||||
<point x="18" y="0.69999999"/>
|
||||
<point x="1.2" y="0.69999999"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="52.400002" y="40.799999"/>
|
||||
<point x="59.100002" y="40.799999"/>
|
||||
<point x="59.100002" y="42.799999"/>
|
||||
<point x="52.400002" y="42.799999"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="12.1" y="40.799999"/>
|
||||
<point x="22.9" y="40.799999"/>
|
||||
<point x="22.9" y="42.799999"/>
|
||||
<point x="12.1" y="42.799999"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="14.5" y="6.2000003"/>
|
||||
<point x="18" y="6.2000003"/>
|
||||
<point x="18" y="11"/>
|
||||
<point x="14.5" y="11"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="12.1" y="46.600002"/>
|
||||
<point x="17.1" y="46.600002"/>
|
||||
<point x="17.1" y="50.200001"/>
|
||||
<point x="12.1" y="50.200001"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="61.5" y="46.600002"/>
|
||||
<point x="66.300003" y="46.600002"/>
|
||||
<point x="66.300003" y="50.200001"/>
|
||||
<point x="61.5" y="50.200001"/>
|
||||
</polygon>
|
||||
<polygon name="new" method="1" outdoor="false">
|
||||
<point x="12.3" y="31.6"/>
|
||||
<point x="13.900001" y="31.6"/>
|
||||
<point x="13.900001" y="39.299999"/>
|
||||
<point x="12.3" y="39.299999"/>
|
||||
</polygon>
|
||||
<polygon name="luft" method="1" outdoor="false">
|
||||
<point x="10" y="40.799999"/>
|
||||
<point x="1.2" y="40.799999"/>
|
||||
<point x="1.2" y="42.799999"/>
|
||||
<point x="10" y="42.799999"/>
|
||||
</polygon>
|
||||
</outline>
|
||||
<obstacles>
|
||||
<wall material="6" type="1" x1="1.2" y1="42.799999" x2="1.2" y2="0.69999999" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="10" y1="0.69999999" x2="10" y2="24.1" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.95299143" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.32905987" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.23504275" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="10" y1="7.2000003" x2="1.2" y2="7.2000003" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="10" y1="25.9" x2="10" y2="40.799999" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.92991221" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.13133337" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="1.2" y1="40.799999" x2="10" y2="40.799999" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="10" y1="25.9" x2="8.1999998" y2="25.9" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.77777749" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="8.1999998" y1="25.9" x2="1.2" y2="25.9" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.87212861" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="10" y1="24.1" x2="1.2" y2="24.1" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="5.0999999" y1="43.100002" x2="0.60000002" y2="43.100002" thickness="0.30000001"/>
|
||||
<wall material="0" type="1" x1="10.2" y1="44.5" x2="3.9000001" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.52380949" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.11111109" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="3.9000001" y1="44.5" x2="3.9000001" y2="50.200001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.81355965" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="7.5" y1="50.200001" x2="7.5" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.18644036" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="10.5" y1="48.100002" x2="10.5" y2="44.5" thickness="0.30000001"/>
|
||||
<wall material="1" type="1" x1="10.5" y1="49.100002" x2="10.5" y2="50.200001" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="0.60000002" y1="50.200001" x2="0.60000002" y2="43.100002" thickness="0.30000001"/>
|
||||
<wall material="1" type="1" x1="1.2" y1="0.69999999" x2="18" y2="0.69999999" thickness="0.15000001"/>
|
||||
<wall material="6" type="1" x1="18" y1="0.69999999" x2="18" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="18" y1="25.9" x2="12.2" y2="25.9" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="12.7" x2="18" y2="12.7" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="11" x2="14.400001" y2="11" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="14.400001" y1="11" x2="14.400001" y2="6.2000003" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="6.2000003" x2="18" y2="6.2000003" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.2" y1="12.7" x2="12.2" y2="6.2000003" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.030303001" width="1.3" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="12.2" y1="13" x2="12.2" y2="25.9" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.068702258" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.95419854" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="6" type="1" x1="18" y1="31.6" x2="76.900002" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="6" type="1" x1="76.900002" y1="31.6" x2="76.900002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="6" type="1" x1="76.900002" y1="50.200001" x2="0.60000002" y2="50.200001" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="52.400002" y1="42.799999" x2="59.100002" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="59.100002" y1="42.799999" x2="59.100002" y2="40.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="59.100002" y1="40.799999" x2="52.400002" y2="40.799999" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="4.3000002" y1="25.9" x2="4.3000002" y2="24.1" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="8.1999998" y1="24.1" x2="8.1999998" y2="25.9" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.88888943" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="10.5" y1="44.5" x2="17.1" y2="44.5" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.59090918" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.93939406" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.030303003" width="1.3" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="12.3" y1="46.600002" x2="12.3" y2="44.5" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="12.3" y1="46.600002" x2="17.1" y2="46.600002" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="14.7" y1="44.5" x2="14.7" y2="46.600002" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="17.1" y1="50.200001" x2="17.1" y2="44.5" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="17.4" y1="44.5" x2="23" y2="44.5" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="23" y1="44.5" x2="23" y2="50.200001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.89473718" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="25.5" y1="50.200001" x2="25.5" y2="44.5" thickness="0.30000001"/>
|
||||
<wall material="0" type="1" x1="25.5" y1="44.5" x2="50.700001" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.11507935" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.21349037" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.28968251" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.40476194" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.51984131" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.63888896" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.73746985" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.82936513" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.88095617" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="29.1" y1="44.5" x2="29.1" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="31.5" y1="44.5" x2="31.5" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="33.900002" y1="44.5" x2="33.900002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="36.299999" y1="44.5" x2="36.299999" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="39.299999" y1="44.5" x2="39.299999" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="42.299999" y1="44.5" x2="42.299999" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="44.600002" y1="44.5" x2="44.600002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="50.700001" y1="44.5" x2="50.700001" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="51.100002" y1="50.200001" x2="51.100002" y2="44.5" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="51.100002" y1="44.5" x2="61" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.93939412" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
<door type="1" material="2" x01="0.4949494" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="56.600002" y1="44.5" x2="56.600002" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="61" y1="44.5" x2="61" y2="50.200001" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="61.5" y1="50.200001" x2="61.5" y2="44.5" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="61.5" y1="44.5" x2="64.400002" y2="44.5" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.86206847" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="61.5" y1="46.600002" x2="66.400002" y2="46.600002" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="66.400002" y1="46.600002" x2="66.400002" y2="44.5" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="64.400002" y1="46.600002" x2="64.400002" y2="44.5" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="70.5" y1="44.5" x2="70.5" y2="50.200001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.8308323" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="68.099998" y1="48.400002" x2="68.099998" y2="44.5" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="76.900002" y1="44.5" x2="68.400002" y2="44.5" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.82352942" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.65882331" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<line material="0" type="3" x1="12.1" y1="42.799999" x2="12.1" y2="40.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="12.1" y1="40.799999" x2="22.9" y2="40.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="22.9" y1="40.799999" x2="22.9" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="22.9" y1="42.799999" x2="12.1" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="12.3" y1="39.299999" x2="12.3" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="13.900001" y1="39.299999" x2="13.900001" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="13.900001" y1="39.299999" x2="68.099998" y2="39.299999" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.97601473" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.79966301" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.70069867" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.56931776" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.5523302" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.42435426" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.38229868" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
<door type="1" material="2" x01="0.35549262" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.31180814" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
<door type="1" material="2" x01="0.010910105" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="25.5" y1="39.299999" x2="25.5" y2="31.6" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.15584378" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="31.5" y1="39.299999" x2="31.5" y2="31.6" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.15584378" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="0" type="1" x1="33.900002" y1="39.299999" x2="33.900002" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="36.299999" y1="39.299999" x2="36.299999" y2="31.6" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.15584378" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="42.299999" y1="39.299999" x2="42.299999" y2="31.6" thickness="0.25"/>
|
||||
<wall material="1" type="1" x1="42.299999" y1="34.900002" x2="44.100002" y2="34.900002" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.83333194" width="0.89999998" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="44.100002" y1="31.6" x2="44.100002" y2="39.299999" thickness="0.25"/>
|
||||
<wall material="0" type="1" x1="50.600002" y1="39.299999" x2="50.600002" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="56" y1="39.299999" x2="56" y2="31.6" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="47.100002" y1="50.200001" x2="47.100002" y2="44.5" thickness="0.15000001"/>
|
||||
<wall material="0" type="1" x1="1.2" y1="15.400001" x2="10" y2="15.400001" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="68.099998" y1="41.299999" x2="76.900002" y2="41.299999" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="68.099998" y1="39.299999" x2="68.099998" y2="31.6" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="68.099998" y1="41.299999" x2="68.099998" y2="39.299999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="5.0999999" y1="42.799999" x2="10" y2="42.799999" thickness="0.15000001"/>
|
||||
<line material="0" type="3" x1="10" y1="40.799999" x2="10" y2="42.799999" thickness="0.15000001"/>
|
||||
<wall material="3" type="1" x1="12.2" y1="0.69999999" x2="12.2" y2="5.9000001" thickness="0.15000001">
|
||||
<door type="1" material="2" x01="0.13643573" width="0.89999998" height="2.0999999" io="true" lr="false"/>
|
||||
</wall>
|
||||
<door material="4" type="1" x1="10" y1="25.9" x2="11" y2="25.9" height="2.0999999" swap="false"/>
|
||||
<wall material="4" type="1" x1="11" y1="25.9" x2="12.2" y2="25.9" thickness="0.15000001"/>
|
||||
<wall material="1" type="1" x1="13.900001" y1="31.6" x2="18" y2="31.6" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="10.2" y1="44.5" x2="10.2" y2="50.200001" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.81355965" width="1" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="3" type="1" x1="17.4" y1="44.5" x2="17.4" y2="50.200001" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="5.0999999" y1="42.799999" x2="5.0999999" y2="44.5" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.35294235" width="0.89999998" height="2.0999999" io="false" lr="false"/>
|
||||
</wall>
|
||||
<wall material="3" type="1" x1="25" y1="44.5" x2="25" y2="50.200001" thickness="0.2"/>
|
||||
<wall material="1" type="1" x1="66.400002" y1="44.5" x2="68.099998" y2="44.5" thickness="0.25">
|
||||
<door type="1" material="2" x01="0.8823545" width="1.3" height="2.0999999" io="false" lr="true"/>
|
||||
</wall>
|
||||
<wall material="3" type="1" x1="12.2" y1="5.9000001" x2="18" y2="5.9000001" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="12.2" y1="13" x2="18" y2="13" thickness="0.2"/>
|
||||
<wall material="3" type="1" x1="68.400002" y1="44.5" x2="68.400002" y2="50.200001" thickness="0.2">
|
||||
<door type="1" material="2" x01="0.84210497" width="0.89999998" height="2.0999999" io="true" lr="true"/>
|
||||
</wall>
|
||||
<wall material="1" type="1" x1="68.099998" y1="50.200001" x2="68.099998" y2="49.299999" thickness="0.25"/>
|
||||
</obstacles>
|
||||
<underlays>
|
||||
<underlay x="-13.15" y="-18.049999" sx="0.025403051" sy="0.025403051" name="" file="../IndoorMap/maps/stock2.png"/>
|
||||
</underlays>
|
||||
<pois>
|
||||
<poi name="I.2.43" type="0" x="73.5" y="47.400002"/>
|
||||
<poi name="I.2.42" type="0" x="69.200005" y="47.400002"/>
|
||||
<poi name="I.2.13" type="0" x="15.1" y="3.3"/>
|
||||
<poi name="I.2.14" type="0" x="5.4000001" y="4.0999999"/>
|
||||
<poi name="I.2.15" type="0" x="5.2000003" y="11.7"/>
|
||||
<poi name="I.2.11" type="0" x="14.900001" y="17.200001"/>
|
||||
<poi name="I.2.16" type="0" x="5.9000001" y="25"/>
|
||||
<poi name="I.2.17" type="0" x="2.3" y="25"/>
|
||||
<poi name="I.2.18" type="0" x="4.9000001" y="30.300001"/>
|
||||
<poi name="I.2.19" type="0" x="5.3000002" y="37.299999"/>
|
||||
<poi name="I.2.20" type="0" x="1.9" y="47"/>
|
||||
<poi name="I.2.21" type="0" x="5.3000002" y="47.700001"/>
|
||||
<poi name="I.2.22" type="0" x="8.4000006" y="47.400002"/>
|
||||
<poi name="HLS 3" type="0" x="12.7" y="45.5"/>
|
||||
<poi name="I.2.25" type="0" x="15.2" y="45.200001"/>
|
||||
<poi name="I.2.26" type="0" x="19.6" y="47.200001"/>
|
||||
<poi name="I.2.28" type="0" x="26.5" y="47.200001"/>
|
||||
<poi name="I.2.29" type="0" x="29.5" y="46.900002"/>
|
||||
<poi name="I.2.30" type="0" x="31.800001" y="47.5"/>
|
||||
<poi name="I.2.31" type="0" x="34.400002" y="47.200001"/>
|
||||
<poi name="I.2.32" type="0" x="37.100002" y="47.200001"/>
|
||||
<poi name="I.2.33" type="0" x="40.299999" y="46.200001"/>
|
||||
<poi name="I.2.34" type="0" x="42.700001" y="47.5"/>
|
||||
<poi name="I.2.35" type="0" x="44.900002" y="47"/>
|
||||
<poi name="I.2.36" type="0" x="47.799999" y="47.100002"/>
|
||||
<poi name="I.2.37" type="0" x="53.900002" y="47.400002"/>
|
||||
<poi name="I.2.38" type="0" x="58.5" y="47.400002"/>
|
||||
<poi name="I.2.1" type="0" x="62" y="35.700001"/>
|
||||
<poi name="I.2.2" type="0" x="53.299999" y="35.400002"/>
|
||||
<poi name="I.2.3" type="0" x="47.200001" y="35.400002"/>
|
||||
<poi name="I.2.4" type="0" x="42.900002" y="37"/>
|
||||
<poi name="I.2.5" type="0" x="42.799999" y="33.200001"/>
|
||||
<poi name="I.2.6" type="0" x="39.200001" y="35.5"/>
|
||||
<poi name="I.2.7" type="0" x="34.600002" y="35.600002"/>
|
||||
<poi name="I.2.8" type="0" x="31.800001" y="35.600002"/>
|
||||
<poi name="I.2.9" type="0" x="28.4" y="35.600002"/>
|
||||
<poi name="I.2.10" type="0" x="19.300001" y="35.400002"/>
|
||||
</pois>
|
||||
<gtpoints>
|
||||
<gtpoint id="100" x="71.800003" y="44" z="0"/>
|
||||
<gtpoint id="101" x="55.600002" y="44" z="0"/>
|
||||
<gtpoint id="102" x="42.200001" y="44" z="0"/>
|
||||
<gtpoint id="103" x="35" y="40" z="0"/>
|
||||
<gtpoint id="104" x="11" y="40" z="0"/>
|
||||
<gtpoint id="105" x="11" y="12" z="0"/>
|
||||
<gtpoint id="200" x="24" y="38" z="0"/>
|
||||
<gtpoint id="201" x="15" y="38" z="0"/>
|
||||
<gtpoint id="203" x="15" y="40" z="0"/>
|
||||
<gtpoint id="204" x="11" y="43.600002" z="0"/>
|
||||
<gtpoint id="205" x="35.200001" y="43.600002" z="0"/>
|
||||
<gtpoint id="206" x="45.200001" y="39.799999" z="0"/>
|
||||
<gtpoint id="207" x="45" y="33" z="0"/>
|
||||
<gtpoint id="208" x="57.600002" y="40" z="0"/>
|
||||
<gtpoint id="209" x="57.600002" y="32.600002" z="0"/>
|
||||
<gtpoint id="210" x="66.400002" y="32.600002" z="0"/>
|
||||
<gtpoint id="211" x="66.400002" y="42" z="0"/>
|
||||
<gtpoint id="212" x="60" y="42" z="0"/>
|
||||
</gtpoints>
|
||||
<accesspoints>
|
||||
<accesspoint name="NUC2" mac="XX:XX:XX:XX:XX:XX" x="27" y="49.600002" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC5" mac="XX:XX:XX:XX:XX:XX" x="52.200001" y="49.5" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC6" mac="XX:XX:XX:XX:XX:XX" x="39" y="33" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC3" mac="XX:XX:XX:XX:XX:XX" x="15" y="32.400002" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC8" mac="XX:XX:XX:XX:XX:XX" x="2" y="21.5" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC1" mac="XX:XX:XX:XX:XX:XX" x="67" y="33" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC4" mac="XX:XX:XX:XX:XX:XX" x="14.6" y="4.4000001" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
<accesspoint name="NUC7" mac="XX:XX:XX:XX:XX:XX" x="5" y="49.799999" z="2" mdl_txp="0" mdl_exp="0" mdl_waf="0"/>
|
||||
</accesspoints>
|
||||
<beacons/>
|
||||
<fingerprints/>
|
||||
<stairs/>
|
||||
<elevators/>
|
||||
</floor>
|
||||
</floors>
|
||||
</map>
|
||||
6
measurements/data/Pixel2/.gitignore
vendored
Normal file
6
measurements/data/Pixel2/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
path6/
|
||||
path7/
|
||||
path8/
|
||||
path9/
|
||||
path10/
|
||||
path11/
|
||||
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
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
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
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
BIN
measurements/data/Pixel2/path20/17706322854245.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path20/17706322854245.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path20/17818434531611.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path20/17818434531611.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path20/18373053262232.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path20/18373053262232.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path20/18507853186546.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path20/18507853186546.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path21/17368267427912.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path21/17368267427912.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path21/17527721931557.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path21/17527721931557.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path21/18001426901565.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path21/18001426901565.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path21/18177010770775.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path21/18177010770775.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path22/20823227234371.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path22/20823227234371.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path22/21041583616592.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path22/21041583616592.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path22/21254258832883.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path22/21254258832883.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel2/path22/21408875875733.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel2/path22/21408875875733.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
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
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
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
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
2
measurements/data/Pixel3/.gitignore
vendored
Normal file
2
measurements/data/Pixel3/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
path10/
|
||||
path11/
|
||||
BIN
measurements/data/Pixel3/path20/16666156600490.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path20/16666156600490.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path20/16779582215695.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path20/16779582215695.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path20/16926680479359.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path20/16926680479359.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path20/17037535703892.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path20/17037535703892.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path21/15786943753685.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path21/15786943753685.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path21/16075928276171.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path21/16075928276171.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path21/16268193326887.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path21/16268193326887.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path21/16424251083631.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path21/16424251083631.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path22/20083784919629.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path22/20083784919629.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path22/20307809441061.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path22/20307809441061.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path22/23431410568618.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path22/23431410568618.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
BIN
measurements/data/Pixel3/path22/23631432228949.csv
(Stored with Git LFS)
Normal file
BIN
measurements/data/Pixel3/path22/23631432228949.csv
(Stored with Git LFS)
Normal file
Binary file not shown.
|
20
measurements/data/Readme.txt
Normal file
20
measurements/data/Readme.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
Mi, 13.11.2019
|
||||
|
||||
Path 10 & Path 11
|
||||
shl_nuc_2.xml
|
||||
Path 10 I gelaufen im I Gebäude (GT Punkt 100 - 104 und zurück)
|
||||
Path 11 L gelaufen im I Gebäude (GT Punkt 100 - 105 und zurück)
|
||||
|
||||
Jeweils zweimal mit Pixel 2 und 3.
|
||||
Gen7 NUCs wurden verwendet.
|
||||
NUC 6-8 interne Antenne.
|
||||
NUC 5 2dbi Antenne.
|
||||
NUC 1 2dbi Antenne
|
||||
|
||||
Bei Pixel 2 war die Tür zu Balzer Lab offen, bei P3 nicht.
|
||||
|
||||
|
||||
|
||||
Path20: 8 NUCs Langes I 2x Toni 2x Markus
|
||||
Path21: 8 NUCs L 2x Toni 2x Markus
|
||||
Path22: 8 NUCs Komplexer Pfad von Balzer zu Deinzer zu Pool Raum und raus 2x Toni 2x Markus
|
||||
@@ -28,6 +28,7 @@
|
||||
\usepackage{siunitx}
|
||||
\usepackage{array}
|
||||
\usepackage{multirow}
|
||||
\usepackage{xfrac}
|
||||
|
||||
%\updates{yes} % If there is an update available, un-comment this line
|
||||
|
||||
@@ -94,7 +95,7 @@ $^{2}$ \quad University of Siegen - Pattern Recognition Group; marcin.grzegorzek
|
||||
\input{chapters/3_ftm}
|
||||
|
||||
\input{chapters/4_ftmloc}
|
||||
|
||||
3x3 Bilder Grid mit spannenden Situationen erklären und mit Video Upload untermalen
|
||||
\input{chapters/8_experiments}
|
||||
|
||||
\input{chapters/9_conclusion}
|
||||
|
||||
@@ -15,3 +15,8 @@
|
||||
\subitem Particle Filtering macht bla und blub und ist bla und blieb - Hier: Ganz simples Bewegungsmodell für PF, damit Vergleichbarkeit gegeben bleibt.
|
||||
\item Klassische Lokalisierungssysteme nutzen meist Particle Filter mit RSSI haben Genauigkeiten von xx und FTM verspricht hier besser Genauigkeiten weil... und hat die und die Vorteile.. deswegen soll diese Arbeit den grundlegenden Mehrwert von FTM gegenüber RSSI untersuchen.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\etal{Ibrahim} lays the required groundwork to use the still experimental FTM standard and verifies the general accuracy \cite{ibrahim2018verification}.
|
||||
\etal{Yu} present a system using FTM measurements and multisensor multi-pattern-based dead reckoning based on a Unscented Kalman filter sensor fusion \cite{yu2019robust}.
|
||||
\etal{Xu} \cite{xu2019locating}.
|
||||
@@ -1,31 +1,163 @@
|
||||
%\section{Wi-Fi Range Measurements}
|
||||
%\label{sec:ftm}
|
||||
%
|
||||
%Ganz grundsätzlich zwei drei Sätze dazu. Distanzen sind gut für Lokalisierung weil... Kurz die Unterschiede der Beiden.
|
||||
%
|
||||
%\subsection{Fine Timing Measurement}
|
||||
%\begin{itemize}
|
||||
% \item New IEEE 802.11mc standard to measure round trip time from client to access point.
|
||||
% \item Theory, protocol.
|
||||
% \item Expected error behavior
|
||||
%\end{itemize}
|
||||
%
|
||||
%
|
||||
%FTM defines a protocol to measure the round trip time between an initiator and a responder, e.g. a smartphone based client and access point.
|
||||
%For data privacy reasons the responder is always passive and only the initiator can trigger time measurements.
|
||||
%
|
||||
%\subsection{Received Signal Strength Indication}
|
||||
%
|
||||
%Klassisch RSSI mit Log Distance Modell...
|
||||
%steckt die rssi in das log distance modell und bekommt eine distanz raus. baby easy
|
||||
%
|
||||
%\subsection{Measurement Pre-Filtering}
|
||||
%
|
||||
%<zeige fehlerplots mit range messungen>
|
||||
%
|
||||
%wenn man sich die messungen nun ansithet, dann... argumentiere kalmanfilter über diese range messungsplots und begründe warum er die messdaten stabiler macht.
|
||||
%kalman auf rssi ist erstmal nicht so klug weil kalman linear und rssi nicht linear sind. in LOS konditionen ist rssi logritmisch und in NLOS ganz was anders... nicht-linear halt
|
||||
%in den späteren evaluatieren werden wir uns aber dennoch raw vs pre-filtering ansehen, um ein bessere gefühl dafür zu bekommen was es in welcher situation bringt
|
||||
%
|
||||
%Filter measurements per AP with simple Kalman filter before localization
|
||||
%
|
||||
%RSSI leichter messbar und einfach gegegeben, aber abhänigi von umgebung - coarsely quantized
|
||||
%RTT deutlich komplexer zu messen, daher eigener FTM Standard. Super-resolution?!
|
||||
|
||||
|
||||
|
||||
\section{Wi-Fi Range Measurements}
|
||||
\label{sec:ftm}
|
||||
|
||||
Ganz grundsätzlich zwei drei Sätze dazu. Distanzen sind gut für Lokalisierung weil... Kurz die Unterschiede der Beiden.
|
||||
|
||||
\subsection{Fine Timing Measurement}
|
||||
\begin{itemize}
|
||||
\item New IEEE 802.11mc standard to measure round trip time from client to access point.
|
||||
\item Theory, protocol.
|
||||
\item Expected error behavior
|
||||
\end{itemize}
|
||||
|
||||
|
||||
FTM defines a protocol to measure the round trip time between an initiator and a responder, e.g. a smartphone based client and access point.
|
||||
For data privacy reasons the responder is always passive and only the initiator can trigger time measurements.
|
||||
A obvious approach to estimate a location is to measure the distance between the current unknown position and a known position.
|
||||
Given multiple measurements to different reference points an absolute position in a local coordinate system can be found.
|
||||
With ideal distance measurements it is straightforward to calculate the current position.
|
||||
However, in the present of noise and imperfect measurements estimating a accurate position is a challenging problem.
|
||||
|
||||
\subsection{Received Signal Strength Indication}
|
||||
% TODO dBm vs dB??
|
||||
|
||||
Klassisch RSSI mit Log Distance Modell...
|
||||
steckt die rssi in das log distance modell und bekommt eine distanz raus. baby easy
|
||||
Received Signal Strength Indication (RSSI) is a measure of the received RF power and is obtained by the radio hardware at the antenna connector using an analog-to-digital converter.
|
||||
It is usually expressed in \si{\dBm} and quantified to integer values.
|
||||
For indoor localization RSSI is often used to deduce the distance from a smartphone to the access point, because it is virtually always available on common devices.
|
||||
|
||||
\subsection{Measurement Pre-Filtering}
|
||||
The \docLogDistance{} model is commonly used to predict the received signal strength $P_i$ from an AP $i$ at a given distance $d_i$.
|
||||
Which is formally given with
|
||||
\begin{equation}
|
||||
P_i = \mTXP - 10 \mPLE \log_{10}{\frac{\mMdlDist_i}{\mMdlDist_0}} + \mathcal{X}_{\sigma_i} \text{,}
|
||||
\label{eq:logDistModel}
|
||||
\end{equation}
|
||||
where $\mTXP$ denotes the sending power in \si{\dBm} of the AP at reference distance $\mMdlDist_0$ (usually \SI{1}{\meter}), $\mPLE$ is the path loss exponent, which value needs to be empirically chosen for the given environment.
|
||||
The added zero-mean Gaussian random variable $\mathcal{X}_{\sigma_i}$ with a variance of $\sigma^2_i \si{\dBm}$ models signal fading and random channel noise.
|
||||
Hence, the measured RSSI is assumed to follow a normal distribution $P_i \sim \mathcal{N}(P_i^*, \sigma_i^2)$, where $P_i^*$ is the expected RSSI and $\sigma_i^2$ is the variance of the measurement.
|
||||
%, both given in \si{\dBm}.
|
||||
|
||||
<zeige fehlerplots mit range messungen>
|
||||
The \docLogDistance{} model can be reformulated to compute the distance $d_i$ based on the measured RSSI $P_i$ and assuming $d_0=\SI{1}{\meter}$ with
|
||||
\begin{equation}
|
||||
\log_{10}{d_i} = \frac{\mTXP-P_i}{10\mPLE} + \frac{\mathcal{X}_{\sigma_i}}{10\mPLE }
|
||||
\end{equation}
|
||||
\begin{equation}
|
||||
% d_i = 10^{(\mTXP-P_i) / 10\mPLE} + 10^{\mathcal{X}_{\sigma^2_i}/10\mPLE}
|
||||
d_i = 10^{\sfrac{(\mTXP-P_i + \mathcal{X}_{\sigma_i})}{10\mPLE}}
|
||||
\end{equation}
|
||||
|
||||
wenn man sich die messungen nun ansithet, dann... argumentiere kalmanfilter über diese range messungsplots und begründe warum er die messdaten stabiler macht.
|
||||
kalman auf rssi ist erstmal nicht so klug weil kalman linear und rssi nicht linear sind. in LOS konditionen ist rssi logritmisch und in NLOS ganz was anders... nicht-linear halt
|
||||
in den späteren evaluatieren werden wir uns aber dennoch raw vs pre-filtering ansehen, um ein bessere gefühl dafür zu bekommen was es in welcher situation bringt
|
||||
Since $\mathcal{X}_{\sigma_i}$ is a Gaussian random variable, the logarithm of $d_i$ is normally distributed as well.
|
||||
Consequently, the distance $d_i$ follows a log-normal distribution, $\ln{d_i} \sim \mathcal{N}(d_i^*, \sigma_{i,d}^2)$, where $d_i=\ln(10) \frac{P_0 - P_i}{10\mPLE}$ is the expected distance and $\sigma_{i,d}^2=\left( \frac{\ln(10)\sigma_i}{10\mPLE} \right)^2$ is the variance of the distance.
|
||||
|
||||
Filter measurements per AP with simple Kalman filter before localization
|
||||
In free space the value of the path loss exponent is $\mPLE=2$.
|
||||
In indoor scenarios $\mPLE$ accounts for the architecture around the AP, thus a single global factor is chosen for the whole building.
|
||||
%This restricts the \docLogDistance{} model to a uniform view on the complete environment and does not allow to differentiate between different types of materials, and ignores which walls are actually transmitted the signal.
|
||||
|
||||
This restricts the \docLogDistance{} model to a uniform view on the whole environment and does not take the actual propagation path of the signal into account.
|
||||
Therefore, the model does not consider the actual signal propagation path and thus makes it impossible to differentiate between different types of obstacles or wall materials.
|
||||
|
||||
In order to take walls into account the model must include the power loss of every traversed wall, which results in the wall-attenuation factor model \cite{TODO}.
|
||||
Often the dampening factors of walls are unknown and hard to measure.
|
||||
Additionally, the computation of the wall-attenuation factor model requires costly intersection tests with the geometry of the environment which can be intractable to perform on a regular smartphone.
|
||||
|
||||
Another approach is to take measurements at known positions distributed throughout the building.
|
||||
These fingerprints can then be used in the localization phase to obtain the current position with a nearest neighbour search.
|
||||
Given the current RSSI value the most likely position is the one which is closest to other similar RSSI fingerprints.
|
||||
This method includes the characteristics of the environment into the prerecorded fingerprints.
|
||||
Recording the fingerprints is a time-consuming and tedious process for large buildings and needs to be redone whenever the environment changes significantly.
|
||||
|
||||
%While fingerprinting can increase the accuracy of the localization computing the distance from the RSSI directly is easier to deploy.
|
||||
|
||||
%However, RSSI values are often coarsely quantized, depend heavily on the environment, differ from device to device, and are affected by the interferences.
|
||||
|
||||
%- free space loss
|
||||
%- walls
|
||||
%, also dynamic obstacles like persons can interfere with the signal.
|
||||
|
||||
|
||||
\subsection{Fine Timing Measurement}
|
||||
Time-based distance measurements are intuitively based on the delay the signal took to travel from the sender to the receiver.
|
||||
Multiplied by the propagation speed of light results in the distance between the two nodes.
|
||||
The propagation speed of the signal depends on the propagation medium and is slower in media with higher relative permittivity compared to air, like concrete walls.
|
||||
However, for most indoor environments the signal propagation speed can be assumed to be constant, as the total travel distance in non-air media is usually negligible short compared to the travel distance in air \cite{marcaletti2014filtering}.
|
||||
For that reason, time-based distance measurements are assumed to be more robust compared to received power measurements, because the propagation path and interaction with the environment is inherent in the measurement.
|
||||
|
||||
A straightforward method to measure the propagation delay of a signal is time of arrival (ToA), where the propagation time of the signal is computed from absolute time values measured at the transmitter and receiver.
|
||||
This method is used famously in satellite navigation, \eg GPS.
|
||||
While being precise, ToA requires costly high precision synchronized clocks, which are not suitable for indoor localization.
|
||||
|
||||
Two way ranging (TWR) eliminates the requirement for synchronized clocks.
|
||||
\ieeWifiFTM{} defines the fine timing measurement (FTM) protocol, which implements the TWR method for standard conform WiFi devices.
|
||||
This made time-based distance measurements broadly available for WiFi based systems and relevant for smartphone based indoor localization.
|
||||
Instead of using absolute time, the round trip time is measured based on time differences at the sender and receiver.
|
||||
As successive time measurements are only done at one site synchronized clocks are not required.
|
||||
By definition the responder (\eg AP) is passive while the FTM initiator (\eg smartphone) actively requests FTM measurements.
|
||||
The FTM protocol is shown in \figref{TODO}.
|
||||
|
||||
The procedure starts with an initial FTM request frame send by the initiator, which can be rejected or accepted by the responder.
|
||||
If the responder agrees to the request it sends an acknowledge frame.
|
||||
Following, the responder stores the current time $t_1$, which represents the start of the measurement, and sends a FTM frame.
|
||||
At the initiator the time $t_2$ is recored as soon as the incoming signal is detected at the antenna.
|
||||
After receiving the FTM frame the initiator prepares a ACK frame and sends it to the responder.
|
||||
However, to account for the signal processing delay of the initiator's hardware it is necessary to record an additional timestamp $t_3$ when the ACK frame is transmitted. % TODO detail wie wird t_3-t_2 übertragen?
|
||||
|
||||
When the ACK frame is received at the responder at time $t_4$ the responder can calculate the round trip time of the signal by subtracting $t_1$ from $t_4$.
|
||||
To exclude the processing delay of the initiator the difference between $t_2$ and $t_3$ is subtracted from the total round trip time, which results in the propagation delay of the signal
|
||||
\begin{equation}
|
||||
\text{ToF} = (t_4-t_1) - (t_3-t_2) % TODO besseres Symbol als RTT
|
||||
\end{equation}
|
||||
|
||||
While RF power is relatively simple to measure, obtaining accurate ToF values at a small resolution like nanoseconds needs much more caution, as the measurements are sensitive to noise.
|
||||
Relatively small deviations from the real time value result in a vast error in the distance estimate, \eg a measurement error of \SI{10}{ns} results in a distance error of \SI{3}{m}.
|
||||
For this reason the above outlined procedure is repeated multiple times to reduce the impact of noise.
|
||||
In fact, a single FTM measurement consists of many FTM-ACK exchanges and the final value $ToF^*$ is the average over the $n$ measurements
|
||||
\begin{equation}
|
||||
ToF^* = \frac{1}{n} \sum_{k=1}^{n} \left[ (t_{4,k}-t_{1,k}) - (t_{3,k}-t_{2,k}) \right]
|
||||
\end{equation}
|
||||
|
||||
After calculating the average ToF the responder transfers the result to the initiator where the result can be processed by an application.
|
||||
|
||||
The accuracy of distance estimate depends on the ability of the hardware to detect the line-of-sight signal, or direct path.
|
||||
In an indoor environment it is very common that a signal will reach the receiver from different paths with different lengths.
|
||||
The prime example is a signal which reaches the receiver via a direct line-of-sight propagation plus two reflected paths of the same length.
|
||||
As the reflected paths have the same length and phase they constructively interfere at the receiver resulting in a higher receiving power compared to the direct connection.
|
||||
The difficulty in such multipath scenarios is to distinguish the direct path from the reflected paths \cite{ibrahim2018verification}, or that the direct path signal gets undetected because of interference \cite{TODO}.
|
||||
Also, if the delay of the reflected paths is near the time resolution of the hardware, the multipath components will degrade the precision of the time of arrival estimate.
|
||||
This results in an over-estimate of the propagation time of the signal, and consequently in the range estimate.
|
||||
The limiting factor is the sampling rate of the receiving hardware, which is defined by the channel bandwidth.
|
||||
Hence, the time resolution is proportional to the inverse of the bandwidth.
|
||||
|
||||
|
||||
In \ieeWifiN the channel bandwidth is \SI{20}{Mhz} in the \SI{2.4}{GHz} range which results in a sampling rate of one sample every \SI{50}{ns}, or one sample every \SI{12.5}{ns} for \SI{80}{Mhz} channels in the \ieeWifiAC \SI{5}{GHz} range.
|
||||
Assuming that the receiver recognizes the signal at the first sample of the preamble the smallest possible resolution of the range estimate is \SI{15}{m} for \SI{20}{Mhz} bandwidth, and \SI{3.74}{m} for \SI{80}{Mhz}.
|
||||
To allow much finer resolution the receiver uses super resolution methods to allow sub-sample resolution \cite{TODO}.
|
||||
|
||||
%Therefore, time-based distance estimates can greatly differ from the ideal euclidean distance.
|
||||
|
||||
|
||||
Error sources:
|
||||
multipath propagation, noise, finite sample rate
|
||||
|
||||
|
||||
@@ -13,11 +13,30 @@
|
||||
\item die messungen kommen immer gleichzeitig von ftm und rssi. dadurch ist die sampelrate die gleiche und wir können besser vergleichen
|
||||
\end{itemize}
|
||||
|
||||
\subsection{FTM Evaluation}
|
||||
|
||||
Mapping zwischen AP-MAC und Position ist gegeben.
|
||||
In Android Q könnte man LCI am Ap hinterlegen um die AP-Pos dynamisch zu erfragen.
|
||||
Praktische Einschräkungen: Da Wifi Scans nur selten möglich sind, können neue FTM APs nicht leicht erkannt werden.
|
||||
AUßerdem muss per Reflection ScanResults für bereits bekannte APs MAC erzeugt werden.
|
||||
Für eine parktische Anwendung wäre es nochtwenig, dass neue APs automatisch on the fly erkannt werden können.
|
||||
|
||||
\subsection{Ftm range meas performance}
|
||||
\begin{itemize}
|
||||
\item Distanzmessungen FTM mit Antenne / ohne Antenne
|
||||
\item Distanzmessungen FTM neuer NUCS / alte NUCS
|
||||
\item RSSI Werte noch erwähnen
|
||||
\item AP position strategy
|
||||
\item DoP plot
|
||||
\item wieviel APs sichtbar sind, wie kommen die Ranges, welche Parameter machen was und bedeuten was
|
||||
\item Einfluss der Wände; warum starke Abschwächungen
|
||||
\item Welche Platzierung wäre besser; Warum nicht möglich?
|
||||
\item Daher Proabilistic Ansatz weil viele Messungen fehlen oder stark schwanken
|
||||
\item Mehr APs bringen was?
|
||||
\item Bildergrid und Video
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Localization performance}
|
||||
\begin{itemize}
|
||||
\item Location error per method (multilateration, prob, particle filter)
|
||||
\item Wie gut geht der PF? Parameter und Szenarien
|
||||
\item RSSI vs FTM; wo ist FTM besser wo schlechter?; Verhält es sich ähnlich?
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Results for Multilateration}
|
||||
|
||||
@@ -2974,3 +2974,43 @@ address = {{Rothenburg, Germany}},
|
||||
publisher={IEEE}
|
||||
}
|
||||
|
||||
|
||||
@inproceedings{ibrahim2018verification,
|
||||
title={Verification: Accuracy evaluation of WiFi fine time measurements on an open platform},
|
||||
author={Ibrahim, Mohamed and Liu, Hansi and Jawahar, Minitha and Nguyen, Viet and Gruteser, Marco and Howard, Richard and Yu, Bo and Bai, Fan},
|
||||
booktitle={Proceedings of the 24th Annual International Conference on Mobile Computing and Networking},
|
||||
pages={417--427},
|
||||
year={2018},
|
||||
organization={ACM}
|
||||
}
|
||||
|
||||
@article{yu2019robust,
|
||||
title={A Robust Dead Reckoning Algorithm Based on Wi-Fi FTM and Multiple Sensors},
|
||||
author={Yu, Yue and Chen, Ruizhi and Chen, Liang and Guo, Guangyi and Ye, Feng and Liu, Zuoya},
|
||||
journal={Remote Sensing},
|
||||
volume={11},
|
||||
number={5},
|
||||
pages={504},
|
||||
year={2019},
|
||||
publisher={Multidisciplinary Digital Publishing Institute}
|
||||
}
|
||||
|
||||
@article{xu2019locating,
|
||||
title={Locating Smartphones Indoors Using Built-In Sensors and Wi-Fi Ranging With an Enhanced Particle Filter},
|
||||
author={Xu, Shihao and Chen, Ruizhi and Yu, Yue and Guo, Guangyi and Huang, Lixiong},
|
||||
journal={IEEE Access},
|
||||
volume={7},
|
||||
pages={95140--95153},
|
||||
year={2019},
|
||||
publisher={IEEE}
|
||||
}
|
||||
|
||||
|
||||
@inproceedings{marcaletti2014filtering,
|
||||
title={Filtering noisy 802.11 time-of-flight ranging measurements},
|
||||
author={Marcaletti, Andreas and Rea, Maurizio and Giustiniano, Domenico and Lenders, Vincent and Fakhreddine, Aymen},
|
||||
booktitle={Proceedings of the 10th ACM International on Conference on emerging Networking Experiments and Technologies},
|
||||
pages={13--20},
|
||||
year={2014},
|
||||
organization={ACM}
|
||||
}
|
||||
@@ -148,5 +148,4 @@
|
||||
%\newcommand{\mEdge}{\ensuremath{e}}
|
||||
|
||||
|
||||
\newcommand{\landau}[1]{\ensuremath{ \mathcal{O}\left( #1 \right) }}
|
||||
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
\usepackage{xspace}
|
||||
\newcommand{\eg}{e.\,g.\@\xspace}
|
||||
\newcommand{\ie}{i.\,e.\@\xspace}
|
||||
\newcommand{\eg} {e.\,g.\@\xspace}
|
||||
\newcommand{\ie} {i.\,e.\@\xspace}
|
||||
\newcommand{\qq} [1]{``#1''}
|
||||
\newcommand{\figref}[1]{fig.~\ref{#1}}
|
||||
\newcommand{\etal} [1]{#1~et~al.\@\xspace}
|
||||
|
||||
\DeclareSIUnit{\belmilliwatt}{Bm}
|
||||
\DeclareSIUnit{\dBm}{\deci\belmilliwatt}
|
||||
|
||||
\newcommand{\ieeWifiFTM}{\mbox{IEEE 802.11-2016}\xspace}
|
||||
\newcommand{\ieeWifiN} {\mbox{IEEE 802.11n}\xspace}
|
||||
\newcommand{\ieeWifiAC} {\mbox{IEEE 802.11ac}\xspace}
|
||||
|
||||
% keyword macros
|
||||
\newcommand{\docIBeacon}{iBeacon}
|
||||
|
||||
Reference in New Issue
Block a user