IT++
4.3.1
Toggle main menu visibility
itpp
comm
multilateration.h
Go to the documentation of this file.
1
28
29
#ifndef MULTILATERATION_H
30
#define MULTILATERATION_H
31
32
#include <
itpp/itbase.h
>
33
#include <itpp/itexports.h>
34
35
namespace
itpp
36
{
37
38
class
Algorithm;
39
struct
Point;
40
85
class
ITPP_EXPORT
Multilateration
86
{
87
public
:
89
enum
Type
{
MULTI_FAILURE
= -1,
90
MULTI_SPHERICAL
,
91
MULTI_HYPERBOLIC
,
92
MULTI_HYBRID
93
};
95
Multilateration
() :
96
algo_(NULL), nb_fails_part(0), nb_fails_pos(0), type_(
MULTI_FAILURE
), method_(
itpp
::bvec()), bs_pos_(NULL), nb_bs_(0)
97
{}
98
99
106
Multilateration
(
const
itpp::bvec &method,
107
const
itpp::mat &bs_pos
108
) :
109
algo_(NULL), nb_fails_part(0), nb_fails_pos(0), type_(
MULTI_FAILURE
), method_(
itpp
::bvec()), bs_pos_(NULL), nb_bs_(0) {
110
setup
(method, bs_pos);
111
}
112
113
virtual
~Multilateration
();
115
124
void
setup
(
const
itpp::bvec &method,
125
const
itpp::mat &bs_pos
126
) {
127
if
((
false
== set_bs_pos(bs_pos)) || (
false
== set_method(method))) {
128
it_error
(
"cannot init multilateration"
);
129
}
130
}
131
132
142
bool
get_pos
(itpp::vec &ms_pos,
143
const
itpp::vec &measures
144
) {
145
return
get_pos
(ms_pos, measures._data());
146
}
147
148
152
bool
get_pos
(itpp::vec &ms_pos,
153
const
itpp::mat &measures
154
) {
155
return
get_pos
(ms_pos, measures._data());
156
}
157
158
unsigned
int
get_nb_fails_part
()
const
{
159
return
nb_fails_part;
160
}
161
162
unsigned
int
get_nb_fails_pos
()
const
{
163
return
nb_fails_pos;
164
}
165
166
void
reset_err_counters
() {
167
nb_fails_part = 0;
168
nb_fails_pos = 0;
169
}
170
171
Type
get_type
()
const
{
172
return
type_;
173
}
174
175
double
get_crlb(
const
vec &ms_pos,
176
double
sigma2
177
);
178
private
:
180
bool
get_pos(itpp::vec &ms_pos,
const
double
*measures);
182
bool
set_method(
const
itpp::bvec &method);
184
bool
set_bs_pos(
const
itpp::mat &bs_pos);
186
bool
hybrid2spherical(Point *bs_pos,
double
*meas);
187
bool
partition(
unsigned
int
**subsets_idx,
unsigned
int
*subsets_nb,
const
Point *bs_pos,
unsigned
int
nb_bs,
unsigned
int
subset_len);
189
bool
get_ml_pos(Point *ms_pos,
const
Point *bs_pos,
unsigned
int
nb_bs,
const
unsigned
int
*subsets_idx,
unsigned
int
subsets_nb,
unsigned
int
subset_len);
191
bool
get_bs_pos_subset(Point *bs_pos_subset,
const
Point *bs_pos,
unsigned
int
nb_bs,
const
unsigned
int
*subset_idx,
unsigned
int
subset_len);
193
bool
prod
(
double
*out,
const
double
*AT,
const
unsigned
int
*d,
unsigned
int
cols,
unsigned
int
rows);
194
Algorithm *algo_;
195
unsigned
int
nb_fails_part;
196
unsigned
int
nb_fails_pos;
197
Type type_;
198
itpp::bvec method_;
199
Point *bs_pos_;
200
unsigned
int
nb_bs_;
201
};
202
203
}
204
205
#endif
itpp::Multilateration
Multilateration class for 3D indoor localization
Definition
multilateration.h:86
itpp::Multilateration::get_pos
bool get_pos(itpp::vec &ms_pos, const itpp::mat &measures)
Computes the mobile station position for hyperbolic multilateration.
Definition
multilateration.h:152
itpp::Multilateration::Type
Type
Multilateration types as detected from user input (method binary vector)
Definition
multilateration.h:89
itpp::Multilateration::MULTI_FAILURE
@ MULTI_FAILURE
the algorithm has failed
Definition
multilateration.h:89
itpp::Multilateration::MULTI_HYPERBOLIC
@ MULTI_HYPERBOLIC
hyperbolic multilateration
Definition
multilateration.h:91
itpp::Multilateration::MULTI_HYBRID
@ MULTI_HYBRID
hybrid multilateration
Definition
multilateration.h:92
itpp::Multilateration::MULTI_SPHERICAL
@ MULTI_SPHERICAL
spherical multilateration
Definition
multilateration.h:90
itpp::Multilateration::get_pos
bool get_pos(itpp::vec &ms_pos, const itpp::vec &measures)
Computes the mobile station position for spherical and hybrid multilateration.
Definition
multilateration.h:142
itpp::Multilateration::get_nb_fails_part
unsigned int get_nb_fails_part() const
Gets the number of failures of the partitioning algorithm used internally by the ML-estimator.
Definition
multilateration.h:158
itpp::Multilateration::Multilateration
Multilateration(const itpp::bvec &method, const itpp::mat &bs_pos)
Multilateration class constructor
Definition
multilateration.h:106
itpp::Multilateration::Multilateration
Multilateration()
Multilateration class default constructor
Definition
multilateration.h:95
itpp::Multilateration::get_type
Type get_type() const
Gets the type of the multilateration method currently used by the ML-estimator.
Definition
multilateration.h:171
itpp::Multilateration::setup
void setup(const itpp::bvec &method, const itpp::mat &bs_pos)
Setup function for specifying the multilateration method and the base station positions.
Definition
multilateration.h:124
itpp::Multilateration::get_nb_fails_pos
unsigned int get_nb_fails_pos() const
Gets the number of failures of the positioning algorithm used internally by the ML-estimator.
Definition
multilateration.h:162
itpp::Multilateration::reset_err_counters
void reset_err_counters()
Resets the error counters (number of failures for the partitioning and positioning algorithms).
Definition
multilateration.h:166
it_error
#define it_error(s)
Abort unconditionally.
Definition
itassert.h:126
itpp::prod
T prod(const Vec< T > &v)
The product of all elements in the vector.
Definition
matfunc.h:195
itbase.h
Include file for the IT++ base module.
itpp
itpp namespace
Definition
itmex.h:37
Generated by
1.17.0