MCPcopy Create free account
hub / github.com/TUC-ProAut/libRSF / TEST

Function TEST

test/Test_Example_FG_Generic.cpp:39–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37#define POSITION_STATE "Position2D"
38
39TEST(Example, FG_Generic)
40{
41 /** create our own graph object */
42 libRSF::FactorGraph SimpleGraph;
43
44 /** set the solver options for ceres */
45 ceres::Solver::Options SolverOptions;
46 SolverOptions.trust_region_strategy_type = ceres::TrustRegionStrategyType::DOGLEG;
47 SolverOptions.dogleg_type = ceres::DoglegType::SUBSPACE_DOGLEG;
48 SolverOptions.num_threads = std::thread::hardware_concurrency();
49 SolverOptions.minimizer_progress_to_stdout = true;
50
51 /** add states to graph */
52 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, 0);
53 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, 1);
54 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, 2);
55 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, 3);
56
57 /** set initial values values */
58 libRSF::Vector2 StateVect;
59 StateVect << 10, 10;
60 SimpleGraph.getStateData().getElement(POSITION_STATE, 0.0).setMean(StateVect * 1);
61 SimpleGraph.getStateData().getElement(POSITION_STATE, 1.0).setMean(StateVect * 2);
62 SimpleGraph.getStateData().getElement(POSITION_STATE, 2.0).setMean(StateVect * 3);
63 SimpleGraph.getStateData().getElement(POSITION_STATE, 3.0).setMean(StateVect * 4);
64
65 /** output initialization */
66 std::cout << std::endl << "Initial Values:" << std::endl;
67 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 0.0).getNameValueString() << std::endl;
68 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 1.0).getNameValueString() << std::endl;
69 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 2.0).getNameValueString() << std::endl;
70 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 3.0).getNameValueString() << std::endl;
71
72 /** construct relative noise model */
73 libRSF::Vector2 NoiseVect;
74 NoiseVect << 1.0, 1.0;
75 libRSF::GaussianDiagonal<2> NoiseRelative;
76 NoiseRelative.setStdDevDiagonal(NoiseVect);
77
78 /** add constant value factors to graph */
79 SimpleGraph.addFactor<libRSF::FactorType::ConstVal2>(libRSF::StateID(POSITION_STATE, 0.0), libRSF::StateID(POSITION_STATE, 1.0), NoiseRelative);
80 SimpleGraph.addFactor<libRSF::FactorType::ConstVal2>(libRSF::StateID(POSITION_STATE, 1.0), libRSF::StateID(POSITION_STATE, 2.0), NoiseRelative);
81 SimpleGraph.addFactor<libRSF::FactorType::ConstVal2>(libRSF::StateID(POSITION_STATE, 2.0), libRSF::StateID(POSITION_STATE, 3.0), NoiseRelative);
82
83 /** construct absolute noise model */
84 libRSF::Matrix22 CovMat;
85 CovMat << 1.0, 0.25,
86 0.25, 4.0;
87 libRSF::GaussianFull<2> NoisePrior;
88 NoisePrior.setCovarianceMatrix(CovMat);
89
90 /** add absolute measurement factor*/
91 libRSF::Data AbsoluteMeasurement(libRSF::DataType::Point2, 1.0);
92 AbsoluteMeasurement.setMean(StateVect * 4.2);
93 SimpleGraph.addFactor<libRSF::FactorType::Prior2>(libRSF::StateID(POSITION_STATE, 1.0), AbsoluteMeasurement, NoisePrior);
94
95 std::cout << std::endl << "Measurement:" << std::endl;
96 std::cout << AbsoluteMeasurement.getNameValueString() << std::endl;

Callers

nothing calls this directly

Calls 12

DataClass · 0.85
MaxAbsErrorFunction · 0.85
addStateMethod · 0.80
getElementMethod · 0.80
getNameValueStringMethod · 0.80
solveMethod · 0.80
computeCovarianceMethod · 0.80
printReportMethod · 0.80
setMeanMethod · 0.45
setStdDevDiagonalMethod · 0.45
setCovarianceMatrixMethod · 0.45
addElementMethod · 0.45

Tested by

no test coverage detected