Testing S.C. on Larger Graphs

To test S.C. on a larger graph, the Manhattan 3500 simulated dataset will be utilized. Using this pose graph, several false loop closure constraints will be added to see well S.C. can handle faults when confronted with a much larger search space.

Man3500

Fig 1 :: True Manhattan wold 3500 ground truth


In Figure 2, the Manhattan 3500 pose graph with 80 locrmw@rmw:~/Documents/git/wvupng/core/source/gtsam/build$ ./examples/maxMixExample -g collect1.gtsam –measWeight 10 –mixWeight 0.2 –writeENU ally clustered false loop closure constraints can be seen. Utilizing this graph we will begin test switchable constraints.

man35_100 photo man35Faulty_zps1npeiktb.png

Fig 2 :: Faulty Manhattan wold 3500 pose graph


The first thing we can look at is the total graph error ( $\chi^2$ ) for both optimization routines. The $\chi^2$ values for $L_2$ and switch factors can be seen in Table 1.

Optimization Routine $\mathcal{X}^2$
$L_2$ 17980.3
Switch Factor 221.5


Next, we can visualize the distribution of the magnitude of the optimized weighting parameter, which is provided in Figure 3 as a histogram. From this figure, it can be seen that there is a very clear delineation between what the optimizers believes to be clean observables and those it believes to be faulty. Additionally, it should be noted that the optimizer substantially de-weighted 80 observables, which is the number of faulty constraints that were added to the graph ( currently faults are added randomly to the graph and I do not keep track of their location, so, unfortunately, I can not provided the precision or recall of the weighting scheme today. I’ll re-write the code tomorrow to look into it. ).

switchFreq photo swFreq_zpsxnmzlb2s.png

Fig 3 :: Switch Constraint Weighting Histogram



Testing Accuracy of Covariance Estimate

Now that we have switchable constraints working in GTSAM, we need to evaluate the accuracy of its covariance estimate. To do this we will use the measure, which was introduced in this paper, shown below,

where $P_1$ is the true covariance, which is calculated as $P_1 = E[(x-\hat{x})(x-\hat{x})^T]$, and $P_2$ is the covariance provided by the estimator.

Testing On Simple Graph

Using the simple graph that contains one false loop closure between the second and fourth nodes, as depicted in Figure 4, we will evaluate the accuracy of the covariance estimate for $L_2$ and switch constraints.

incorrectOdo photo odometryTestCorrect_zpsgtdn0vsr.png

Fig 4 :: Simple Graph With One False Loop Closure Constraint


In Figure 5, the discrepancy between the true covariance and the estimated covariance for both estimators, with respect to the metric described above, can be seen. From this figure, it seems as though, in general, $L_2$ is providing a better estimate of the covariance; however, this is only one test case.

incorrectOdo photo odometryTestCorrect_zpsgtdn0vsr.png

Fig 5 :: Covariance recovery accuracy


Will be continued tomorrow…