We present a modeling of bundle adjustment problems in Julia, as well as a solver for non-linear least square problems (including bundle adjustment problems). The modeling uses NLPModels Julia's library and computes sparse Jacobians analytically. The solver is based on the Levenberg-Marquardt algorithm and uses QR or LDL factorization, with AMD or Metis permutation algorithm. The user can choose to use normalization and line search. Our experimental results contain comparison of the several versions of the solver and comparison with Scipy's least_square function and Ceres solver on the test problems given in Seitx et al. (2010). We show that our solver is quite competitive with Scipy's solver and Ceres solver in terms of convergence, and that it is in average two times faster than Scipy's solver and three times slower than Ceres. However, the advantage of our solver is that it is coded is Julia and thus allows the user to run it in several precisions in a very efficient way, in order to gain time and energy (in small precisions) or accuracy (in big precisions).
Published August 2020 , 38 pages