restrict pointer access via methods

release/4.3a0
Varun Agrawal 2024-10-15 08:40:20 -04:00
parent 1b422d5c98
commit ec8714a548
2 changed files with 14 additions and 11 deletions

View File

@ -125,8 +125,8 @@ TEST( GaussianFactorGraphSystem, multiply_getb)
TEST(PCGSolver, dummy) { TEST(PCGSolver, dummy) {
LevenbergMarquardtParams params; LevenbergMarquardtParams params;
params.linearSolverType = LevenbergMarquardtParams::Iterative; params.linearSolverType = LevenbergMarquardtParams::Iterative;
auto pcg = std::make_shared<PCGSolverParameters>(); auto pcg = std::make_shared<PCGSolverParameters>(
pcg->preconditioner_ = std::make_shared<DummyPreconditionerParameters>(); std::make_shared<DummyPreconditionerParameters>());
params.iterativeParams = pcg; params.iterativeParams = pcg;
NonlinearFactorGraph fg = example::createReallyNonlinearFactorGraph(); NonlinearFactorGraph fg = example::createReallyNonlinearFactorGraph();
@ -145,9 +145,8 @@ TEST(PCGSolver, dummy) {
TEST(PCGSolver, blockjacobi) { TEST(PCGSolver, blockjacobi) {
LevenbergMarquardtParams params; LevenbergMarquardtParams params;
params.linearSolverType = LevenbergMarquardtParams::Iterative; params.linearSolverType = LevenbergMarquardtParams::Iterative;
auto pcg = std::make_shared<PCGSolverParameters>(); auto pcg = std::make_shared<PCGSolverParameters>(
pcg->preconditioner_ = std::make_shared<BlockJacobiPreconditionerParameters>());
std::make_shared<BlockJacobiPreconditionerParameters>();
params.iterativeParams = pcg; params.iterativeParams = pcg;
NonlinearFactorGraph fg = example::createReallyNonlinearFactorGraph(); NonlinearFactorGraph fg = example::createReallyNonlinearFactorGraph();
@ -166,8 +165,8 @@ TEST(PCGSolver, blockjacobi) {
TEST(PCGSolver, subgraph) { TEST(PCGSolver, subgraph) {
LevenbergMarquardtParams params; LevenbergMarquardtParams params;
params.linearSolverType = LevenbergMarquardtParams::Iterative; params.linearSolverType = LevenbergMarquardtParams::Iterative;
auto pcg = std::make_shared<PCGSolverParameters>(); auto pcg = std::make_shared<PCGSolverParameters>(
pcg->preconditioner_ = std::make_shared<SubgraphPreconditionerParameters>(); std::make_shared<SubgraphPreconditionerParameters>());
params.iterativeParams = pcg; params.iterativeParams = pcg;
NonlinearFactorGraph fg = example::createReallyNonlinearFactorGraph(); NonlinearFactorGraph fg = example::createReallyNonlinearFactorGraph();

View File

@ -60,13 +60,15 @@ TEST( PCGsolver, verySimpleLinearSystem) {
//pcg->setVerbosity("ERROR"); //pcg->setVerbosity("ERROR");
// With Dummy preconditioner // With Dummy preconditioner
pcg->preconditioner_ = std::make_shared<gtsam::DummyPreconditionerParameters>(); pcg->setPreconditionerParams(
std::make_shared<gtsam::DummyPreconditionerParameters>());
VectorValues deltaPCGDummy = PCGSolver(*pcg).optimize(simpleGFG); VectorValues deltaPCGDummy = PCGSolver(*pcg).optimize(simpleGFG);
EXPECT(assert_equal(exactSolution, deltaPCGDummy, 1e-7)); EXPECT(assert_equal(exactSolution, deltaPCGDummy, 1e-7));
//deltaPCGDummy.print("PCG Dummy"); //deltaPCGDummy.print("PCG Dummy");
// With Block-Jacobi preconditioner // With Block-Jacobi preconditioner
pcg->preconditioner_ = std::make_shared<gtsam::BlockJacobiPreconditionerParameters>(); pcg->setPreconditionerParams(
std::make_shared<gtsam::BlockJacobiPreconditionerParameters>());
// It takes more than 1000 iterations for this test // It takes more than 1000 iterations for this test
pcg->setMaxIterations(1500); pcg->setMaxIterations(1500);
VectorValues deltaPCGJacobi = PCGSolver(*pcg).optimize(simpleGFG); VectorValues deltaPCGJacobi = PCGSolver(*pcg).optimize(simpleGFG);
@ -111,13 +113,15 @@ TEST(PCGSolver, simpleLinearSystem) {
//pcg->setVerbosity("ERROR"); //pcg->setVerbosity("ERROR");
// With Dummy preconditioner // With Dummy preconditioner
pcg->preconditioner_ = std::make_shared<gtsam::DummyPreconditionerParameters>(); pcg->setPreconditionerParams(
std::make_shared<gtsam::DummyPreconditionerParameters>());
VectorValues deltaPCGDummy = PCGSolver(*pcg).optimize(simpleGFG); VectorValues deltaPCGDummy = PCGSolver(*pcg).optimize(simpleGFG);
EXPECT(assert_equal(expectedSolution, deltaPCGDummy, 1e-5)); EXPECT(assert_equal(expectedSolution, deltaPCGDummy, 1e-5));
//deltaPCGDummy.print("PCG Dummy"); //deltaPCGDummy.print("PCG Dummy");
// With Block-Jacobi preconditioner // With Block-Jacobi preconditioner
pcg->preconditioner_ = std::make_shared<gtsam::BlockJacobiPreconditionerParameters>(); pcg->setPreconditionerParams(
std::make_shared<gtsam::BlockJacobiPreconditionerParameters>());
VectorValues deltaPCGJacobi = PCGSolver(*pcg).optimize(simpleGFG); VectorValues deltaPCGJacobi = PCGSolver(*pcg).optimize(simpleGFG);
EXPECT(assert_equal(expectedSolution, deltaPCGJacobi, 1e-5)); EXPECT(assert_equal(expectedSolution, deltaPCGJacobi, 1e-5));
//deltaPCGJacobi.print("PCG Jacobi"); //deltaPCGJacobi.print("PCG Jacobi");