41 template<
class BaseOptimizerParameters>
58 : baseOptimizerParams(baseOptimizerParams) {
92 <<
"setMaxIterations: changing the max nr of iters might lead to less accurate solutions and is not recommended! " 94 maxIterations = maxIter;
104 relativeCostTol = value;
124 for (
size_t i = 0; i < knownIn.size(); i++){
125 knownInliers.push_back(knownIn[i]);
127 std::sort(knownInliers.begin(), knownInliers.end());
135 for (
size_t i = 0; i < knownOut.size(); i++){
136 knownOutliers.push_back(knownOut[i]);
138 std::sort(knownOutliers.begin(), knownOutliers.end());
145 && std::fabs(muStep - other.
muStep) <= tol
147 && knownOutliers == other.knownOutliers;
151 void print(
const std::string& str)
const {
152 std::cout << str <<
"\n";
155 std::cout <<
"lossType: Geman McClure" <<
"\n";
158 std::cout <<
"lossType: Truncated Least-squares" <<
"\n";
161 throw std::runtime_error(
"GncParams::print: unknown loss type.");
163 std::cout <<
"maxIterations: " << maxIterations <<
"\n";
164 std::cout <<
"muStep: " << muStep <<
"\n";
165 std::cout <<
"relativeCostTol: " << relativeCostTol <<
"\n";
166 std::cout <<
"weightsTol: " << weightsTol <<
"\n";
167 std::cout <<
"verbosity: " << verbosity <<
"\n";
168 for (
size_t i = 0; i < knownInliers.size(); i++)
169 std::cout <<
"knownInliers: " << knownInliers[i] <<
"\n";
170 for (
size_t i = 0; i < knownOutliers.size(); i++)
171 std::cout <<
"knownOutliers: " << knownOutliers[i] <<
"\n";
172 baseOptimizerParams.print(
"Base optimizer params: ");
BaseOptimizerParameters::OptimizerType OptimizerType
For each parameter, specify the corresponding optimizer: e.g., GaussNewtonParams -> GaussNewtonOptimi...
Definition: GncParams.h:45
void setWeightsTol(double value)
Set the maximum difference between the weights and their rounding in {0,1} to stop iterating...
Definition: GncParams.h:108
bool equals(const GncParams &other, double tol=1e-9) const
Equals.
Definition: GncParams.h:142
IndexVector knownInliers
Slots in the factor graph corresponding to measurements that we know are outliers.
Definition: GncParams.h:80
Verbosity verbosity
Verbosity level.
Definition: GncParams.h:74
GncLossType lossType
any other specific GNC parameters:
Definition: GncParams.h:69
std::vector< T, typename internal::FastDefaultVectorAllocator< T >::type > FastVector
Definition: FastVector.h:34
GncParams()
Default constructor.
Definition: GncParams.h:62
double muStep
Multiplicative factor to reduce/increase the mu in gnc.
Definition: GncParams.h:71
double relativeCostTol
If relative cost change is below this threshold, stop iterating.
Definition: GncParams.h:72
BaseOptimizerParameters baseOptimizerParams
GNC parameters.
Definition: GncParams.h:67
double weightsTol
If the weights are within weightsTol from being binary, stop iterating (only for TLS) ...
Definition: GncParams.h:73
FastVector< uint64_t > IndexVector
Slots in the factor graph corresponding to measurements that we know are inliers. ...
Definition: GncParams.h:79
GncParams(const BaseOptimizerParameters &baseOptimizerParams)
Constructor.
Definition: GncParams.h:57
size_t maxIterations
Maximum number of iterations.
Definition: GncParams.h:70
void setKnownInliers(const IndexVector &knownIn)
Definition: GncParams.h:123
void setLossType(const GncLossType type)
Set the robust loss function to be used in GNC (chosen among the ones in GncLossType).
Definition: GncParams.h:85
void setMuStep(const double step)
Set the graduated non-convexity step: at each GNC iteration, mu is updated as mu <- mu * muStep...
Definition: GncParams.h:98
void setVerbosityGNC(const Verbosity value)
Set the verbosity level.
Definition: GncParams.h:113
A nonlinear optimizer that uses the Levenberg-Marquardt trust-region scheme.
void setMaxIterations(const size_t maxIter)
Set the maximum number of iterations in GNC (changing the max nr of iters might lead to less accurate...
Definition: GncParams.h:90
void setKnownOutliers(const IndexVector &knownOut)
Definition: GncParams.h:134
GncLossType
Choice of robust loss function for GNC.
Definition: GncParams.h:36
Definition: chartTesting.h:28
void setRelativeCostTol(double value)
Set the maximum relative difference in mu values to stop iterating.
Definition: GncParams.h:103
void print(const std::string &str) const
Print.
Definition: GncParams.h:151
Definition: GncParams.h:42
Verbosity
Verbosity levels.
Definition: GncParams.h:48