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

Function TEST

test/Test_Example_Marginalization.cpp:36–284  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34#include "gtest/gtest.h"
35
36TEST(Example, Marginalization)
37{
38 ceres::Solver::Options FGOptions;
39 FGOptions.trust_region_strategy_type = ceres::TrustRegionStrategyType::DOGLEG;
40 FGOptions.dogleg_type = ceres::DoglegType::SUBSPACE_DOGLEG;
41
42 /** set uncertainty */
43 libRSF::Vector3 NoisePosVec, NoiseRotVec;
44 NoisePosVec.fill(STDDEV_POS);
45 NoiseRotVec.fill(STDDEV_ROT);
46
47 libRSF::Vector6 NoisePoseVec;
48 NoisePoseVec << NoisePosVec , NoiseRotVec;
49
50 /** create noise models */
51 libRSF::GaussianDiagonal<3> GaussPos, GausRot;
52 GaussPos.setStdDevSharedDiagonal(STDDEV_POS);
53 GausRot.setStdDevSharedDiagonal(STDDEV_ROT);
54
55 libRSF::GaussianDiagonal<6> GaussPose;
56 GaussPose.setStdDevDiagonal(NoisePoseVec);
57
58 /** create desired states */
59 libRSF::Vector3 PosVec0, PosVec1;
60 PosVec0 << 0, 0, 0;
61 PosVec1 << 1, 0.5, 0.25;
62
63 libRSF::Quaternion Quat0, Quat1;
64 Quat0.setIdentity();
65 Quat1 = Quat0 * (Eigen::AngleAxisd(1, libRSF::Vector3::UnitX())
66 * Eigen::AngleAxisd(0, libRSF::Vector3::UnitY())
67 * Eigen::AngleAxisd(0, libRSF::Vector3::UnitZ()));
68
69 libRSF::Vector4 RotVec0, RotVec1;
70 RotVec0 << Quat0.vec(), Quat0.w();
71 RotVec1 << Quat1.vec(), Quat1.w();
72
73 libRSF::Vector7 PoseVec0, PoseVec1;
74 PoseVec0 << PosVec0, Quat0.vec(), Quat0.w();
75 PoseVec1 << PosVec1, Quat1.vec(), Quat1.w();
76
77 /** create state objects as GT */
78 libRSF::Data StatePos0 (libRSF::DataType::Point3, 0.0);
79 StatePos0.setMean(PosVec0);
80 libRSF::Data StatePos1 (libRSF::DataType::Point3, 1.0);
81 StatePos1.setMean(PosVec1);
82
83 libRSF::Data StateRot0 (libRSF::DataType::Quaternion, 0.0);
84 StateRot0.setMean(RotVec0);
85 libRSF::Data StateRot1 (libRSF::DataType::Quaternion, 1.0);
86 StateRot1.setMean(RotVec1);
87
88 /** calculate relative transformations */
89 libRSF::Vector3 PosVecRel = PosVec1 - PosVec0;
90 libRSF::Quaternion QuatRel = Quat0.conjugate()*Quat1;
91
92 libRSF::Vector7 PoseVecRel;
93 PoseVecRel << Quat0.conjugate()*PosVecRel, QuatRel.vec(), QuatRel.w();

Callers

nothing calls this directly

Calls 13

MaxAbsErrorFunction · 0.85
addStateMethod · 0.80
solveMethod · 0.80
computeCovarianceMethod · 0.80
getElementMethod · 0.80
marginalizeStateMethod · 0.80
getNameValueStringMethod · 0.80
getCovarianceMatrixMethod · 0.80
setStdDevDiagonalMethod · 0.45
setMeanMethod · 0.45
addElementMethod · 0.45

Tested by

no test coverage detected