From c0e5ce9ef9da661440d13e47953400d96be9ab54 Mon Sep 17 00:00:00 2001 From: Akshay Krishnan Date: Sat, 7 May 2022 18:28:54 -0700 Subject: [PATCH] wrapper updates --- gtsam/sfm/sfm.i | 30 ++++++++++++++----- .../examples/TranslationAveragingExample.py | 2 +- .../gtsam/tests/test_TranslationRecovery.py | 10 +++++-- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/gtsam/sfm/sfm.i b/gtsam/sfm/sfm.i index 66280037c..122a9b5a6 100644 --- a/gtsam/sfm/sfm.i +++ b/gtsam/sfm/sfm.i @@ -265,19 +265,33 @@ class MFAS { class TranslationRecoveryParams { gtsam::LevenbergMarquardtParams lmParams; gtsam::Values initial; + TranslationRecoveryParams(); }; class TranslationRecovery { - TranslationRecovery( + TranslationRecovery(const gtsam::TranslationRecoveryParams& lmParams); + TranslationRecovery(); // default params. + void addPrior(const gtsam::BinaryMeasurementsUnit3& relativeTranslations, + const double scale, + const gtsam::BinaryMeasurementsPoint3& betweenTranslations, + gtsam::NonlinearFactorGraph @graph, + const gtsam::SharedNoiseModel& priorNoiseModel) const; + void addPrior(const gtsam::BinaryMeasurementsUnit3& relativeTranslations, + const double scale, + const gtsam::BinaryMeasurementsPoint3& betweenTranslations, + gtsam::NonlinearFactorGraph @graph) const; + gtsam::NonlinearFactorGraph buildGraph( + const gtsam::BinaryMeasurementsUnit3& relativeTranslations) const; + gtsam::Values run( const gtsam::BinaryMeasurementsUnit3& relativeTranslations, - const gtsam::TranslationRecoveryParams& lmParams); - TranslationRecovery(const gtsam::BinaryMeasurementsUnit3& - relativeTranslations); // default params - gtsam::Values run(const gtsam::BinaryMeasurementsPoint3& betweenTranslations, - const double scale) const; + const double scale, + const gtsam::BinaryMeasurementsPoint3& betweenTranslations) const; // default empty betweenTranslations - // gtsam::Values run(const double scale) const; - gtsam::Values run() const; // default scale = 1.0 + gtsam::Values run(const gtsam::BinaryMeasurementsUnit3& relativeTranslations, + const double scale) const; + // default scale = 1.0, empty betweenTranslations + gtsam::Values run( + const gtsam::BinaryMeasurementsUnit3& relativeTranslations) const; }; } // namespace gtsam diff --git a/python/gtsam/examples/TranslationAveragingExample.py b/python/gtsam/examples/TranslationAveragingExample.py index 054b61126..92a7d04e3 100644 --- a/python/gtsam/examples/TranslationAveragingExample.py +++ b/python/gtsam/examples/TranslationAveragingExample.py @@ -123,7 +123,7 @@ def estimate_poses(i_iZj_list: gtsam.BinaryMeasurementsUnit3, w_iZj_inliers = filter_outliers(w_iZj_list) # Run the optimizer to obtain translations for normalized directions. - wtc_values = gtsam.TranslationRecovery(w_iZj_inliers).run() + wtc_values = gtsam.TranslationRecovery().run(w_iZj_inliers) wTc_values = gtsam.Values() for key in wRc_values.keys(): diff --git a/python/gtsam/tests/test_TranslationRecovery.py b/python/gtsam/tests/test_TranslationRecovery.py index 0fb0518b6..2875e897e 100644 --- a/python/gtsam/tests/test_TranslationRecovery.py +++ b/python/gtsam/tests/test_TranslationRecovery.py @@ -34,8 +34,10 @@ class TestTranslationRecovery(unittest.TestCase): def test_constructor(self): """Construct from binary measurements.""" - algorithm = gtsam.TranslationRecovery(gtsam.BinaryMeasurementsUnit3()) + algorithm = gtsam.TranslationRecovery() self.assertIsInstance(algorithm, gtsam.TranslationRecovery) + algorithm_params = gtsam.TranslationRecovery(gtsam.TranslationRecoveryParams()) + self.assertIsInstance(algorithm_params, gtsam.TranslationRecovery) def test_run(self): gt_poses = ExampleValues() @@ -44,10 +46,12 @@ class TestTranslationRecovery(unittest.TestCase): # Set verbosity to Silent for tests lmParams = gtsam.LevenbergMarquardtParams() lmParams.setVerbosityLM("silent") + params = gtsam.TranslationRecoveryParams() + params.lmParams = lmParams - algorithm = gtsam.TranslationRecovery(measurements, lmParams) + algorithm = gtsam.TranslationRecovery(params) scale = 2.0 - result = algorithm.run(scale) + result = algorithm.run(measurements, scale) w_aTc = gt_poses.atPose3(2).translation() - gt_poses.atPose3(0).translation() w_aTb = gt_poses.atPose3(1).translation() - gt_poses.atPose3(0).translation()