Merge pull request #611 from borglab/jing/subgraph
Added test for subgraph preconditioner in shonan and refined error messagerelease/4.3a0
commit
0b045fdc59
|
|
@ -383,7 +383,7 @@ Subgraph SubgraphBuilder::operator()(const GaussianFactorGraph &gfg) const {
|
|||
const vector<size_t> tree = buildTree(gfg, forward_ordering, weights);
|
||||
if (tree.size() != n - 1) {
|
||||
throw std::runtime_error(
|
||||
"SubgraphBuilder::operator() failure: tree.size() != n-1");
|
||||
"SubgraphBuilder::operator() failure: tree.size() != n-1, might be caused by disconnected graph");
|
||||
}
|
||||
|
||||
// Downweight the tree edges to zero.
|
||||
|
|
|
|||
|
|
@ -91,6 +91,27 @@ TEST(ShonanAveraging3, checkOptimality) {
|
|||
EXPECT(!kShonan.checkOptimality(random));
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST(ShonanAveraging3, checkSubgraph) {
|
||||
// Create parameter with solver set to SUBGRAPH
|
||||
auto params = ShonanAveragingParameters3(
|
||||
gtsam::LevenbergMarquardtParams::CeresDefaults(), "SUBGRAPH");
|
||||
ShonanAveraging3::Measurements measurements;
|
||||
|
||||
// The toyExample.g2o has 5 vertices, from 0-4
|
||||
// The edges are: 1-2, 2-3, 3-4, 3-1, 1-4, 0-1,
|
||||
// which can build a connected graph
|
||||
auto subgraphShonan = fromExampleName("toyExample.g2o", params);
|
||||
|
||||
// Create initial random estimation
|
||||
Values initial;
|
||||
initial = subgraphShonan.initializeRandomly(kRandomNumberGenerator);
|
||||
|
||||
// Run Shonan with SUBGRAPH solver
|
||||
auto result = subgraphShonan.run(initial, 3, 3);
|
||||
EXPECT_DOUBLES_EQUAL(1e-11, subgraphShonan.cost(result.first), 1e-4);
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
TEST(ShonanAveraging3, tryOptimizingAt3) {
|
||||
const Values randomRotations = kShonan.initializeRandomly(kRandomNumberGenerator);
|
||||
|
|
|
|||
Loading…
Reference in New Issue