Skip to content

Commit

Permalink
use bilinear translation factor
Browse files Browse the repository at this point in the history
  • Loading branch information
akshay-krishnan committed Feb 26, 2025
1 parent 1dea167 commit bdc69ad
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions gtsfm/averaging/translation/averaging_1dsfm.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
symbol_shorthand,
TranslationRecovery,
Unit3,
LevenbergMarquardtParams
)

import gtsfm.common.types as gtsfm_types
Expand Down Expand Up @@ -468,20 +469,16 @@ def __run_averaging(
w_i1Ui2_measurements = self._binary_measurements_from_dict(w_i2Ui1_dict, w_i2Ui1_dict_tracks, noise_model)

# Run the optimizer.
try:
algorithm = TranslationRecovery()
if len(i2Ti1_priors) > 0:
# scale is ignored here.
w_i1ti2_priors = self._binary_measurements_from_priors(i2Ti1_priors, wRi_list)
wti_initial = self.__get_initial_values(absolute_pose_priors)
wti_values = algorithm.run(w_i1Ui2_measurements, 0.0, w_i1ti2_priors, wti_initial)
else:
wti_values = algorithm.run(w_i1Ui2_measurements, scale_factor)
except TypeError as e:
# TODO(akshay-krishnan): remove when no longer supporting gtsam versions before 4.2a7.
logger.error("TypeError: {}".format(str(e)))
algorithm = TranslationRecovery(w_i1Ui2_measurements)
wti_values = algorithm.run(scale_factor)
lm_params = LevenbergMarquardtParams()
algorithm = TranslationRecovery(lm_params, use_bilinear_translation_factor=True)
if len(i2Ti1_priors) > 0:
# scale is ignored here.
w_i1ti2_priors = self._binary_measurements_from_priors(i2Ti1_priors, wRi_list)
wti_initial = self.__get_initial_values(absolute_pose_priors)
wti_values = algorithm.run(w_i1Ui2_measurements, 0.0, w_i1ti2_priors, wti_initial)
else:
wti_values = algorithm.run(w_i1Ui2_measurements, scale_factor)


# Transforms the result to a list of Point3 objects.
wti_list: List[Optional[Point3]] = [None] * num_images
Expand Down

0 comments on commit bdc69ad

Please sign in to comment.