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

Function TEST

test/Test_Example_FG_Range.cpp:36–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34#include "gtest/gtest.h"
35
36TEST(Example, FG_Range)
37{
38 libRSF::Vector1 StdDev;
39 StdDev << STDDEV_RANGE;
40
41 ceres::Solver::Options SolverOptions;
42 SolverOptions.trust_region_strategy_type = ceres::TrustRegionStrategyType::DOGLEG;
43 SolverOptions.dogleg_type = ceres::DoglegType::SUBSPACE_DOGLEG;
44 SolverOptions.num_threads = std::thread::hardware_concurrency();
45 SolverOptions.minimizer_progress_to_stdout = true;
46
47 libRSF::FactorGraph SimpleGraph;
48 libRSF::SensorDataSet RangeMeasurements;
49 libRSF::StateList PositionList;
50 libRSF::GaussianDiagonal<1> NoiseModel;
51 NoiseModel.setStdDevDiagonal(StdDev);
52
53 /** construct a set of range Measurements */
54 CreateData(RangeMeasurements);
55
56 /** add position variables to graph */
57 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, 0);
58 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, 1);
59 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, 2);
60
61 /** loop over timestamps */
62 double Time = 0.0;
63 RangeMeasurements.getTimeFirst(RANGE_MEASUREMENT, Time);
64 do
65 {
66 PositionList.add(POSITION_STATE, Time);
67 /** loop over measurements */
68 for (int nMeasurement = RangeMeasurements.countElement(RANGE_MEASUREMENT, Time); nMeasurement > 0; nMeasurement--)
69 {
70 SimpleGraph.addFactor<libRSF::FactorType::Range2>(PositionList, RangeMeasurements.getElement(RANGE_MEASUREMENT, Time, nMeasurement-1), NoiseModel);
71 }
72 PositionList.clear();
73 }
74 while(RangeMeasurements.getTimeNext(RANGE_MEASUREMENT, Time, Time));
75
76 /** output initialization */
77 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 0.0).getNameValueString() << std::endl;
78 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 1.0).getNameValueString() << std::endl;
79 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 2.0).getNameValueString() << std::endl;
80
81 /** solve graph */
82 SimpleGraph.solve(SolverOptions);
83 SimpleGraph.printReport();
84
85 /** output result */
86 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 0.0).getNameValueString() << std::endl;
87 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 1.0).getNameValueString() << std::endl;
88 std::cout << SimpleGraph.getStateData().getElement(POSITION_STATE, 2.0).getNameValueString() << std::endl;
89
90 /** load expected results - point2*/
91 libRSF::SensorDataSet Expected;
92 Expected.addElement(libRSF::Data("point2 0.0 0.0 0.0 0.0 0.0 0.0 0.0"));
93 Expected.addElement(libRSF::Data("point2 1.0 1.0 0.0 0.0 0.0 0.0 0.0"));

Callers

nothing calls this directly

Calls 15

DataClass · 0.85
MaxAbsErrorFunction · 0.85
addStateMethod · 0.80
addMethod · 0.80
countElementMethod · 0.80
getElementMethod · 0.80
getTimeNextMethod · 0.80
getNameValueStringMethod · 0.80
solveMethod · 0.80
printReportMethod · 0.80
CreateDataFunction · 0.50
setStdDevDiagonalMethod · 0.45

Tested by

no test coverage detected