edited
parent
f10dad2e39
commit
7b0356cbea
|
@ -447,11 +447,11 @@ class GTSAM_EXPORT GncOptimizer {
|
||||||
return weights;
|
return weights;
|
||||||
}
|
}
|
||||||
case GncLossType::TLS: { // use eq (14) in GNC paper
|
case GncLossType::TLS: { // use eq (14) in GNC paper
|
||||||
double upperbound = (mu + 1) / mu * barcSq_.maxCoeff();
|
|
||||||
double lowerbound = mu / (mu + 1) * barcSq_.minCoeff();
|
|
||||||
for (size_t k : unknownWeights) {
|
for (size_t k : unknownWeights) {
|
||||||
if (nfg_[k]) {
|
if (nfg_[k]) {
|
||||||
double u2_k = nfg_[k]->error(currentEstimate); // squared (and whitened) residual
|
double u2_k = nfg_[k]->error(currentEstimate); // squared (and whitened) residual
|
||||||
|
double upperbound = (mu + 1) / mu * barcSq_[k];
|
||||||
|
double lowerbound = mu / (mu + 1) * barcSq_[k];
|
||||||
weights[k] = std::sqrt(barcSq_[k] * mu * (mu + 1) / u2_k) - mu;
|
weights[k] = std::sqrt(barcSq_[k] * mu * (mu + 1) / u2_k) - mu;
|
||||||
if (u2_k >= upperbound || weights[k] < 0) {
|
if (u2_k >= upperbound || weights[k] < 0) {
|
||||||
weights[k] = 0;
|
weights[k] = 0;
|
||||||
|
|
Loading…
Reference in New Issue