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

Function main

examples/Example_FG_Pseudorange.cpp:74–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72#ifndef TESTMODE // only compile main if not used in test context
73
74int main(int ArgC, char** ArgV)
75{
76 (void)ArgC;
77 google::InitGoogleLogging(ArgV[0]);
78
79 double Time, TimeFirst = 0.0, TimeOld = 0.0;
80
81 libRSF::Vector1 StdDev, StdDevCCE;
82 StdDev << STDDEV_RANGE;
83 StdDevCCE << STDDEV_CCE;
84
85 ceres::Solver::Options SolverOptions;
86 SolverOptions.trust_region_strategy_type = ceres::TrustRegionStrategyType::DOGLEG;
87 SolverOptions.dogleg_type = ceres::DoglegType::SUBSPACE_DOGLEG;
88 SolverOptions.num_threads = std::thread::hardware_concurrency();
89 SolverOptions.minimizer_progress_to_stdout = true;
90
91 libRSF::FactorGraph SimpleGraph;
92 libRSF::SensorDataSet RangeMeasurements;
93 libRSF::StateList RangeList, ConstValList;
94 libRSF::GaussianDiagonal<1> NoiseModelRange, NoiseModelCCE;
95 NoiseModelRange.setStdDevDiagonal(StdDev);
96 NoiseModelCCE.setStdDevDiagonal(StdDevCCE);
97
98 /** construct a set of range Measurements */
99 CreateData(RangeMeasurements);
100
101 /** loop over timestamps */
102 RangeMeasurements.getTimeFirst(PSEUDORANGE_MEASUREMENT, TimeFirst);
103 Time = TimeFirst;
104 do
105 {
106 /** add position variables to graph */
107 SimpleGraph.addState(POSITION_STATE, libRSF::DataType::Point2, Time);
108
109 /** add offset variables to graph */
110 SimpleGraph.addState(OFFSET_STATE, libRSF::DataType::ClockError, Time);
111
112 RangeList.add(POSITION_STATE, Time);
113 RangeList.add(OFFSET_STATE, Time);
114
115 /** add constant value model*/
116 if (Time > TimeFirst)
117 {
118 ConstValList.add(OFFSET_STATE, TimeOld);
119 ConstValList.add(OFFSET_STATE, Time);
120 SimpleGraph.addFactor<libRSF::FactorType::ConstVal1>(ConstValList, NoiseModelCCE);
121 ConstValList.clear();
122 }
123
124 /** loop over measurements */
125 for (int nMeasurement = RangeMeasurements.countElement(PSEUDORANGE_MEASUREMENT, Time); nMeasurement > 0; nMeasurement--)
126 {
127 SimpleGraph.addFactor<libRSF::FactorType::Pseudorange2>(RangeList, RangeMeasurements.getElement(PSEUDORANGE_MEASUREMENT, Time, nMeasurement-1), NoiseModelRange);
128 }
129 RangeList.clear();
130
131 TimeOld = Time;

Callers

nothing calls this directly

Calls 13

addStateMethod · 0.80
addMethod · 0.80
countElementMethod · 0.80
getElementMethod · 0.80
getTimeNextMethod · 0.80
getNameValueStringMethod · 0.80
solveMethod · 0.80
printReportMethod · 0.80
computeCovarianceMethod · 0.80
CreateDataFunction · 0.70
setStdDevDiagonalMethod · 0.45
getTimeFirstMethod · 0.45

Tested by

no test coverage detected