Austin Schuh | 70cc955 | 2019-01-21 19:46:48 -0800 | [diff] [blame^] | 1 | .. _chapter-version-history: |
| 2 | |
| 3 | =============== |
| 4 | Version History |
| 5 | =============== |
| 6 | |
| 7 | 1.14.0 |
| 8 | ====== |
| 9 | |
| 10 | New Features |
| 11 | ------------ |
| 12 | |
| 13 | #. New ``EvaluationCallback`` API. (Keir Mierle) |
| 14 | #. TBB based threading (Yury Prokazov & Mike Vitus) |
| 15 | #. C++11 threads based threading (Mike Vitus) |
| 16 | #. A ``ceres::Context`` object to cache and keep track of global |
| 17 | state. (Mike Vitus) |
| 18 | #. TinySolver - A small dense solver meant for solving small problems |
| 19 | really fast. [EXPERIMENTAL] (Keir Mierle & Sameer Agarwal) |
| 20 | #. Bazel Build. (Keir Mierle & Rodrigo Queiro) |
| 21 | |
| 22 | |
| 23 | Backward Incompatible API Changes |
| 24 | --------------------------------- |
| 25 | |
| 26 | #. ``Solver::Options::num_linear_solver_threads`` is deprecated, |
| 27 | ``Solver::Options::num_threads`` controls all parallelism in Ceres |
| 28 | Solver now. Similarly, |
| 29 | ``Solver::Summary::num_linear_solver_threads_given`` and |
| 30 | ``Solver::Summary::num_linear_solver_threads_used`` are also |
| 31 | deprecated. |
| 32 | |
| 33 | |
| 34 | Bug Fixes & Minor Changes |
| 35 | ------------------------- |
| 36 | |
| 37 | #. Remove armv7 from target architectures when building for iOS >= 11. (Alex Stewart) |
| 38 | #. Corrects the documentation of Problem::AddResidualBlock. (Mike Vitus) |
| 39 | #. Fixes the configuration check in port.h. (Mike Vitus) |
| 40 | #. Add small_blas_gemm_benchmark. (Sameer Agarwal) |
| 41 | #. Implement some C++11 math functions for Jet (Emil Ernerfeldt) |
| 42 | #. Fix integer conversion warning in MSVC. (Alex Stewart) |
| 43 | #. Improve NDK build error handling (Keir Mierle) |
| 44 | #. Fix build: -Wreorder, test fail (Keir Mierle) |
| 45 | #. An implementation of SubsetPreconditioner. (Sameer Agarwal) |
| 46 | #. Split bundle adjustment tests into individual binaries (Keir Mierle) |
| 47 | #. Require Eigen >= 3.3.4 on aarch64. (Alex Stewart) |
| 48 | #. Fix TBB detection on Windows. (Alex Stewart) |
| 49 | #. Improve ExecutionSummary (Sameer Agarwal) |
| 50 | #. Remove as typo from callbacks.h (Sameer Agarwal) |
| 51 | #. Removes two unimplemented class functions. (Mike Vitus) |
| 52 | #. Update EigenTypes to deal with 1 column matrices (Sameer Agarwal) |
| 53 | #. Add GradientProblemSolver::Options::update_state_every_iteration (Sameer Agarwal) |
| 54 | #. Fixes the pose graph example documentation. (Mike Vitus) |
| 55 | #. Fix Eigen >= 3.3 compilation if EIGEN_DONT_VECTORIZE set (Janick Martinez Esturo) |
| 56 | #. Add an optional dependency on the Google Benchmark library. (Sameer Agarwal) |
| 57 | #. Fix the documentation for CostFunction::Evaluate. (Sameer Agarwal) |
| 58 | #. Fix a mathematical typo. (Sameer Agarwal) |
| 59 | #. Add TBB information to Ceres version string. (Alex Stewart) |
| 60 | #. Move discussion of dependency licensing to Sphinx docs. (Alex Stewart) |
| 61 | #. Fix an erroneous namespace comment (Sameer Agarwal) |
| 62 | #. Fix use of unnamed type as template argument warnings on Clang. (Alex Stewart) |
| 63 | #. Add link for CLA in docs; minor fixes (Keir Mierle) |
| 64 | #. Fix tiny_solver_test (Sameer Agarwal) |
| 65 | #. Improve compatibility with ceres::Solver (Sameer Agarwal) |
| 66 | #. Refactor nist.cc to be compatible with TinySolver (Sameer Agarwal) |
| 67 | #. Report timings with microsecond resolution (Thomas Gamper) |
| 68 | #. Add missing Eigen traits to Jets (Sameer Agarwal) |
| 69 | #. Use high-resolution timer on Windows (Thomas Gamper) |
| 70 | #. Add a comment about default constructed reference counts= (Keir Mierle) |
| 71 | #. Delete cost and loss functions when not in use. (Sameer Agarwal) |
| 72 | #. Fix assert_ndk_version for >= r11. (Alex Stewart) |
| 73 | #. Add docs explaining how to build Ceres with OpenMP on OS X. (Alex Stewart) |
| 74 | #. Update LAPACK option to refer to direct use by Ceres only. (Alex Stewart) |
| 75 | #. Hide optional SuiteSparse vars in CMake GUI by default. (Alex Stewart) |
| 76 | #. Always hide TBB_LIBRARY in CMake GUI by default. (Alex Stewart) |
| 77 | #. Fix typo in definition of f3 in powell example (x4 -> x3). (Alex Stewart) |
| 78 | #. Fix suppression of C++11 propagation warning. (Alex Stewart) |
| 79 | #. Add new Schur specialization for 2, 4, 6. (Chris Sweeney) |
| 80 | #. Use const keyword for 'int thread_id' variables. (pmoulon) |
| 81 | |
| 82 | |
| 83 | 1.13.0 |
| 84 | ====== |
| 85 | |
| 86 | New Features |
| 87 | ------------ |
| 88 | #. ``LineSearchMinimizer`` and ``GradientProblemSolver`` are up to 2x |
| 89 | faster due to fewer function evaluations. (Sameer Agarwal) |
| 90 | #. ``SPARSE_NORMAL_CHOLESKY`` is significantly faster because Ceres |
| 91 | now computes the normal equations exploiting the static block |
| 92 | sparsity structure. (Cheng Wang & Sameer Agarwal) |
| 93 | #. Add compound with scalar operators for Jets. (Alex Stewart) |
| 94 | #. Enable support for AVX instructions for Jets. (Alex Stewart) |
| 95 | |
| 96 | Backward Incompatible API Changes |
| 97 | --------------------------------- |
| 98 | The enum ``CovarianceAlgorithmType`` which controls the linear algebra |
| 99 | algorithm used to compute the covariance used to combine the choice of |
| 100 | the algorithm and the choice of the sparse linear algebra library into |
| 101 | the enum name. So we had ``SUITE_SPARSE_QR`` and |
| 102 | ``EIGEN_SPARSE_QR``. ``Covariance::Options`` now has a separate member |
| 103 | allowing the user to choose the sparse linear algebra library, just |
| 104 | like the solver and ``CovarianceAlgorithmType`` now takes values |
| 105 | ``DENSE_SVD`` and ``SPARSE_QR``. This is a forward looking change that |
| 106 | will allow us to develop more flexible covariance estimation |
| 107 | algorithms with multiple linear algebra backends. |
| 108 | |
| 109 | Bug Fixes & Minor Changes |
| 110 | ------------------------- |
| 111 | #. Fix ``InvertPSDMatrix`` as it was triggering an Eigen assert in |
| 112 | Debug mode. (Philipp Hubner) |
| 113 | #. Fix cmake error from CeresConfig.cmake when Ceres not found (Taylor |
| 114 | Braun-Jones) |
| 115 | #. Completely refactored ``SparseNormalCholeskySolver``. (Sameer |
| 116 | Agarwal) |
| 117 | #. Fixed time reporting in ``Summary::FullReport`` when |
| 118 | ``LineSearchMinimizer`` is used. (Sameer Agarwal) |
| 119 | #. Remove unused file: collections_port.cc. (Sameer Agarwal) |
| 120 | #. ``SPARSE_SCHUR`` + ``CX_SPARSE`` = Faster (Sameer Agarwal) |
| 121 | #. Refactored a number of linear solver tests to be more thorough and |
| 122 | informative. (Sameer Agarwal) |
| 123 | #. Pass user-specified search hints as HINTS not PATHS. (Alex Stewart) |
| 124 | #. Prefer Eigen installs over exported build directories. (Alex |
| 125 | Stewart) |
| 126 | #. Add OpenMP flags when compiling for C if enabled. (Alex Stewart) |
| 127 | #. Add a missing ``CERES_EXPORT`` to GradientChecker (Sameer Agarwal) |
| 128 | #. Use target_compile_features() to specify C++11 requirement if |
| 129 | available. (Alex Stewart) |
| 130 | #. Update docs: .netrc --> .gitcookies (Keir Mierle) |
| 131 | #. Fix implicit precision loss warning on 64-bit archs (Ricardo |
| 132 | Sanchez-Saez) |
| 133 | #. Optionally use exported Eigen CMake configuration if |
| 134 | available. (Alex Stewart) |
| 135 | #. Use ``Ceres_[SOURCE/BINARY]_DIR`` not ``CMAKE_XXX_DIR`` to support |
| 136 | nesting. (Alex Stewart) |
| 137 | #. Update ``Problem::EvaluateOptions`` documentation. (Sameer Agarwal) |
| 138 | #. Add public headers to CMake target for IDEs. (Devin Lane) |
| 139 | #. Add an article on interfacing with automatic |
| 140 | differentiation. (Sameer Agarwal) |
| 141 | #. Add default Fedora/Debian locations for CXSparse to search |
| 142 | paths. (Alex Stewart) |
| 143 | #. Add a test for ``LineSearchMinimizer`` (Sameer Agarwal) |
| 144 | #. Flatten the table of contents. (Sameer Agarwal) |
| 145 | #. Fix when ``LineSearchMinimizer`` adds the ``IterationSummary``` to |
| 146 | ``Solver::Summary`` (Sameer Agarwal) |
| 147 | #. Fix search path for miniglog headers when Ceres is exported. (Alex |
| 148 | Stewart) |
| 149 | #. Fix ambiguous reference to ``WARNING`` when using miniglog. (Alex |
| 150 | Stewart) |
| 151 | #. Fix Jet/Eigen compatibility for Eigen > 3.3 (Julien Pilet) |
| 152 | #. Add max severity option when ``MINIGLOG`` is enabled (Taylor |
| 153 | Braun-Jones) |
| 154 | #. Improvements to Schur template specializations (Sameer Agarwal) |
| 155 | #. Added an article on derivatives (Sameer Agarwal) |
| 156 | #. Require Eigen >= 3.3 to define ScalarBinaryOpTraits in Jet. (Alex |
| 157 | Stewart) |
| 158 | #. A hacky fix for the Eigen::FullPivLU changes. (Sameer Agarwal) |
| 159 | #. Specify ``ScalarBinaryOpTraits`` for Jet types. (Chris Sweeney) |
| 160 | #. Remove spurious conversion from doubles to Jets. (Sameer Agarwal) |
| 161 | #. Fix an error in the tutorial code for ``NumericDiffCostFunction`` |
| 162 | (Sameer Agarwal) |
| 163 | #. ``CERES_EXPORT`` fix to compile Ceres as DLL (Je Hyeong Hong) |
| 164 | #. Fix detection of deprecated Bessel function names on MSVC. (Alex |
| 165 | Stewart) |
| 166 | #. Ensure that partial evaluation of residuals triggers an error |
| 167 | (Sameer Agarwal) |
| 168 | #. Fix detection of CMake-built glog on Windows. (Alex Stewart) |
| 169 | #. Add additional search paths for glog & Eigen on Windows. (Alex |
| 170 | Stewart) |
| 171 | #. Various minor grammar and bug fixes to the documentation (Sameer |
| 172 | Agarwal, Alex Stewart, William Rucklidge) |
| 173 | |
| 174 | |
| 175 | 1.12.0 |
| 176 | ====== |
| 177 | |
| 178 | New Features |
| 179 | ------------ |
| 180 | #. Aligned ``Jet`` matrices for improved automatic differentiation |
| 181 | performance. (Andrew Hunter) |
| 182 | #. Auto-differentiable implementations of Bessel functions, ``floor``, |
| 183 | and ``ceil`` (Alessandro Gentilini & Michael Vitus) |
| 184 | #. New 2D and 3D SLAM examples. (Michael Vitus) |
| 185 | #. Added ``EigenQuaternionParameterization``. (Michael Vitus) |
| 186 | #. Added ``Problem::IsParameterBlockConstant`` (Thomas Schneider) |
| 187 | #. A complete refactoring of ``TrustRegionMinimizer``. (Sameer Agarwal) |
| 188 | #. Gradient checking cleanup and local parameterization bugfix (David |
| 189 | Gossow) |
| 190 | |
| 191 | |
| 192 | Backward Incompatible API Changes |
| 193 | --------------------------------- |
| 194 | #. ``Solver::Options::numeric_derivative_relative_step_size`` has been |
| 195 | renamed to |
| 196 | ``Solver::Options::gradient_check_numeric_derivative_relative_step_size``. (Sameer |
| 197 | Agarwal) |
| 198 | |
| 199 | Bug Fixes & Minor Changes |
| 200 | ------------------------- |
| 201 | #. Clear XXX_FOUND in Find<XXX>.cmake prior to searching. (Alex |
| 202 | Stewart) |
| 203 | #. Fix versioning in the documentation (Sameer Agarwal) |
| 204 | #. Fix missing gflags imported target definition in |
| 205 | CeresConfig.cmake. (Alex Stewart) |
| 206 | #. Make gflags a public dependency of Ceres if it and glog are |
| 207 | found. (Alex Stewart) |
| 208 | #. Add support for glog exported CMake target. (Alex Stewart) |
| 209 | #. Use ``google::GLOG_WARNING`` instead of ``WARNING`` in tests to |
| 210 | support MSVC. (Alex Stewart) |
| 211 | #. Update gtest and gmock to |
| 212 | ``a2b8a8e07628e5fd60644b6dd99c1b5e7d7f1f47`` (Sameer Agarwal) |
| 213 | #. Add MSVC-specific ``#define`` to expose math constants in |
| 214 | ``<cmath>``. (Alex Stewart) |
| 215 | #. Fix typo. indepdendent -> independent (Hung Lun) |
| 216 | #. Fix potential invalid reset of CMAKE_FIND_LIBRARY_PREFIXES on MSVC |
| 217 | (Alex Stewart) |
| 218 | #. Fix use of alignas(0) which is not ignored on GCC (Alex Stewart) |
| 219 | #. Use default alignment if alignof(std::max_align_t) < 16 with C++11 |
| 220 | (Alex Stewart) |
| 221 | #. Introduce a common base class for DynamicAutoDiffCostFunction and |
| 222 | DynamicNumericDiffCostFunction. (Sameer Agarwal) |
| 223 | #. Fix an exact equality test causing breakage in |
| 224 | gradient_checker_test. (Sameer Agarwal) |
| 225 | #. Add GradientProblemSolver::Options::parameter_tolerance. (Sameer |
| 226 | Agarwal) |
| 227 | #. Add missing T() wrappers for constants. (Rob Carroll) |
| 228 | #. Remove two checks from rotation.h (Sameer Agarwal) |
| 229 | #. Relax the tolerance in QuaternionParameterizationTestHelper. (Je |
| 230 | Hyeong Hong) |
| 231 | #. Occured -> Occurred. (Sameer Agarwal) |
| 232 | #. Fix a test error in autodiff_test.cc. (Je Hyeong Hong) |
| 233 | #. Fix documentation source for templated function in ``rotation.h``. |
| 234 | #. Add ``package.xml`` to enable Catkin builds. (Damon Kohler) |
| 235 | #. Relaxing Jacobian matching in Gradient Checker test. (David Gossow) |
| 236 | #. Allow SubsetParameterization to hold all parameters constant |
| 237 | (Sameer Agarwal) |
| 238 | #. Fix an Intel compiler error in covariance_impl.cc (Je Hyeong Hong) |
| 239 | #. Removing duplicate include directive. (David Gossow) |
| 240 | #. Remove two DCHECKs from CubicHermiteSpline. (Sameer Agarwal) |
| 241 | #. Fix some compiler warnings. (Richard Trieu) |
| 242 | #. Update ExpectArraysClose to use ExpectClose instead of |
| 243 | EXPECT_NEAR. (Phillip Hubner) |
| 244 | #. FindWithDefault returns by value rather than reference. (@aradval) |
| 245 | #. Fix compiler errors on some systems. (David Gossow) |
| 246 | #. Note that Problem::Evaluate cannot be called from an |
| 247 | IterationCallback. (Sameer Agarwal) |
| 248 | #. Use ProductParameterization in bundle_adjuster.cc (Sameer Agarwal) |
| 249 | #. Enable support for OpenMP in Clang if detected. (Alex Stewart) |
| 250 | #. Remove duplicate entry for the NIST example in the docs. (Michael |
| 251 | Vitus) |
| 252 | #. Add additional logging for analyzing orderings (Sameer Agarwal) |
| 253 | #. Add readme for the sampled_function example. (Michael Vitus) |
| 254 | #. Use _j[0,1,n]() Bessel functions on MSVC to avoid deprecation |
| 255 | errors. (Alex Stewart & Kichang Kim) |
| 256 | #. Fix: Copy minimizer option ``is_silent`` to |
| 257 | ``LineSearchDirection::Options`` (Nicolai Wojke) |
| 258 | #. Fix typos in ``users.rst`` (Sameer Agarwal) |
| 259 | #. Make some Jet comparisons exact. (Sameer Agarwal) |
| 260 | #. Add colmap to users.rst (Sameer Agarwal) |
| 261 | #. Fix step norm evaluation in LineSearchMinimizer (Sameer Agarwal) |
| 262 | #. Remove use of -Werror when compiling Ceres. (Alex Stewart) |
| 263 | #. Report Ceres compile options as components in find_package(). (Alex |
| 264 | Stewart) |
| 265 | #. Fix a spelling error in nnls_modeling.rst (Timer) |
| 266 | #. Only use collapse() directive with OpenMP 3.0 or higher. (Keir |
| 267 | Mierle) |
| 268 | #. Fix install path for CeresConfig.cmake to be architecture-aware. |
| 269 | #. Fix double conversion to degrees in rotation_test (Keir Mierle) |
| 270 | #. Make Jet string output more readable (Keir Mierle) |
| 271 | #. Fix rotation_test IsClose() and related tests (Keir Mierle) |
| 272 | #. Loosen an exact equality in local_parameterization_test (Sameer |
| 273 | Agarwal) |
| 274 | #. make_docs: Pass the file encoding to open() (Niels Ole Salscheider) |
| 275 | #. Fix error message returned when using SUITE_SPARSE_QR in covariance |
| 276 | estimation on a ceres built without SuiteSparse support. (Simon |
| 277 | Rutishauser) |
| 278 | #. Fix CXX11 option to be available on MinGW & CygWin, but not |
| 279 | MSVC. (Alex Stewart) |
| 280 | #. Fix missing early return() in xxx_not_found() dependency |
| 281 | macros. (Alex Stewart) |
| 282 | #. Initialize ``inner_iterations_were_useful_`` correctly. (Sameer |
| 283 | Agarwal) |
| 284 | #. Add an implementation for GradientProblemSolver::Options::IsValid |
| 285 | (Sameer Agarwal) |
| 286 | #. Fix use of va_copy() if compiling with explicit C++ version < |
| 287 | C++11. (Alex Stewart) |
| 288 | #. Install CMake files to lib/cmake/Ceres (Niels Ole Salscheider) |
| 289 | #. Allow users to override the documentation install directory. (Niels |
| 290 | Ole Salscheider) |
| 291 | #. Add covariance matrix for a vector of parameters (Wannes Van Loock) |
| 292 | #. Saner tolerances & stricter LRE test. (Sameer Agarwal) |
| 293 | #. Fix a malformed sentence in the tutorial. (Sameer Agarwal) |
| 294 | #. Add logging for sparse Cholesky factorization using Eigen. (Sameer |
| 295 | Agarwal) |
| 296 | #. Use std::adjacent_find instead of std::unique. (Sameer Agarwal) |
| 297 | #. Improve logging in CompressedRowJacobianWriter on crash. (Sameer |
| 298 | Agarwal) |
| 299 | #. Fix free parameter block handling in covariance computation (Wannes |
| 300 | Van Loock) |
| 301 | #. Report the number of line search steps in FullReport. (Sameer |
| 302 | Agarwal) |
| 303 | #. Make CMake read Ceres version directly from |
| 304 | include/ceres/version.h. (Alex Stewart) |
| 305 | #. Lots of code style/lint changes. (William Rucklidge) |
| 306 | #. Fix covariance computation for constant blocks (Wannes Van Loock) |
| 307 | #. Add IOS_DEPLOYMENT_TARGET variable to iOS.cmake (Eduard Feicho) |
| 308 | #. Make miniglog threadsafe on non-windows system by using |
| 309 | localtime_r() instead of localtime() for time formatting (Simon |
| 310 | Rutishauser) |
| 311 | |
| 312 | 1.11.0 |
| 313 | ====== |
| 314 | |
| 315 | New Features |
| 316 | ------------ |
| 317 | #. Adaptive numeric differentiation using Ridders' method. (Tal |
| 318 | Ben-Nun) |
| 319 | #. Add ``CubicInterpolator`` and ``BiCubicInterpolator`` to allow |
| 320 | smooth interpolation of sampled functions and integration with |
| 321 | automatic differentiation. |
| 322 | #. Add method to return covariance in tangent space. (Michael Vitus & |
| 323 | Steve Hsu) |
| 324 | #. Add Homogeneous vector parameterization. (Michael Vitus) |
| 325 | #. Add a ``ProductParameterization``, a local parameterization that |
| 326 | can be constructed as a cartesian product of other local |
| 327 | parameterization. |
| 328 | #. Add DynamicCostFunctionToFunctor. (David Gossow) |
| 329 | #. Optionally export Ceres build directory into local CMake package |
| 330 | registry. |
| 331 | #. Faster ``SPARSE_NORMAL_CHOLESKY`` in the presence of dynamic |
| 332 | sparsity. |
| 333 | |
| 334 | Bug Fixes & Minor Changes |
| 335 | ------------------------- |
| 336 | #. Remove use of link-time optimisation (LTO) for all compilers due to |
| 337 | portability issues with gtest / type_info::operator== & Eigen with |
| 338 | Clang on OS X vs GCC 4.9+ on Linux requiring contradictory 'fixes'. |
| 339 | #. Use link-time optimisation (LTO) only when compiling Ceres itself, |
| 340 | not tests or examples, to bypass gtest / type_info::operator== |
| 341 | issue. |
| 342 | #. Use old minimum iOS version flags on Xcode < 7.0. |
| 343 | #. Add gtest-specific flags when building/using as a shared library. |
| 344 | #. Clean up iOS.cmake to use xcrun/xcodebuild & libtool. |
| 345 | #. Import the latest version of ``googletest``. |
| 346 | #. Refactored ``system_test`` into ``bundle_adjustment_test`` and |
| 347 | ``system_test``, where each test case is its own test. |
| 348 | #. Fix invalid memory access bug in |
| 349 | ``CompressedRowSparseMatrix::AppendRows`` when it was called with a |
| 350 | matrix of size zero. |
| 351 | #. Build position independent code when compiling Ceres statically |
| 352 | (Alexander Alekhin). |
| 353 | #. Fix a bug in DetectStructure (Johannes Schonberger). |
| 354 | #. Reduce memory footprint of SubsetParameterization (Johannes |
| 355 | Schonberger). |
| 356 | #. Fix for reorder program unit test when built without suitesparse |
| 357 | (Sergey Sharybin). |
| 358 | #. Fix a bug in the Schur eliminator (Werner Trobin). |
| 359 | #. Fix a bug in the reordering code (Bernhard Zeisl). |
| 360 | #. Add missing CERES_EXPORT to ComposedLoss (Simon Rutishauser). |
| 361 | #. Add the option to use numeric differentiation to ``nist`` and |
| 362 | ``more_garbow_hillstrom``. |
| 363 | #. Fix EIGENSPARSE option help s/t it displays in CMake ncurses GUI. |
| 364 | #. Fix SparseNormalCholeskySolver with dynamic sparsity (Richie |
| 365 | Stebbing). |
| 366 | #. Remove legacy dependency detection macros. |
| 367 | #. Fix failed if() condition expansion if gflags is not found. |
| 368 | #. Update all CMake to lowercase function name style. |
| 369 | #. Update minimum iOS version to 7.0 for shared_ptr/unordered_map. |
| 370 | #. Fix bug in gflags' <= 2.1.2 exported CMake configuration. |
| 371 | #. Remove the spec file needed for generating RPMs. |
| 372 | #. Fix a typo in small_blas.h (Werber Trobin). |
| 373 | #. Cleanup FindGflags & use installed gflags CMake config if present. |
| 374 | #. Add default glog install location on Windows to search paths |
| 375 | (bvanevery). |
| 376 | #. Add default Eigen install location on Windows to search paths |
| 377 | (bvanevery). |
| 378 | #. Fix explanation of config.h generation in bare config.h. |
| 379 | #. Fix unused parameter compiler warnings in numeric_diff.h. |
| 380 | #. Increase tolerance for a test in polynomial_test (Taylor Braun |
| 381 | Jones). |
| 382 | #. Fix addition of Gerrit commit hook when Ceres is a git submodule |
| 383 | (Chris Cooper). |
| 384 | #. Fix missing EIGEN_VERSION expansion typo. |
| 385 | #. Fix links to SuiteSparse & CXSparse (Henrique Mendonça). |
| 386 | #. Ensure Eigen is at least 3.1.0 for Eigen/SparseCore. |
| 387 | #. Add option to use C++11 (not TR1) shared_ptr & unordered_map |
| 388 | (Norman Goldstein). |
| 389 | #. Fix an incorrect usage message in bundle_adjuster.cc |
| 390 | #. Gracefully disable docs if Sphinx is not found. |
| 391 | #. Explicitly use (new) default OS X rpath policy if present. |
| 392 | #. Add support of EIGEN_SPARSE type in |
| 393 | IsSparseLinearAlgebraLibraryTypeAvailable function (Pierre Moulon). |
| 394 | #. Allow the LossFunction contained in a LossFunctionWrapper to be |
| 395 | NULL. This is consistent with how NULL LossFunctions are treated |
| 396 | everywhere else. (Simon Rutishauser). |
| 397 | #. Improve numeric differentation near zero. |
| 398 | #. Refactored DynamicNumericDiffCostFunction to use NumericDiff (Tal |
| 399 | Ben-Nun). |
| 400 | #. Remove use of :caption tag in Sphinx. |
| 401 | #. Add a small test to make sure GradientProblemSolver works correctly |
| 402 | (Petter Strandmark). |
| 403 | #. Add simple unit tests for GradientProblem (Petter Strandmark). |
| 404 | #. Make the robust curve fitting example robust. |
| 405 | #. Homogenize convergence operators in docs and code (Johannes |
| 406 | Schonberger). |
| 407 | #. Add parameter_tolerance convergence to line search minimizer |
| 408 | (Johannes Schonberger). |
| 409 | #. Fix bug where pow(JetA,JetB) returned wrong result for JetA==0 |
| 410 | (Russell Smith). |
| 411 | #. Remove duplicate step norm computation (Johannes Schonberger). |
| 412 | #. Enhance usability when encountering Eigen version mismatches |
| 413 | (Andrew Hundt). |
| 414 | #. Add PLY file logger before and after BA in order to ease visual |
| 415 | comparison (Pierre Moulon). |
| 416 | #. Fix CMake config file docs to include 2.8.x & 3.x styles. |
| 417 | #. Python3 fixes (Markus Moll). |
| 418 | #. Remove confusing code from DenseJacobianWriter (Michael Vitus). |
| 419 | #. Add documentation on CMake package installation process. |
| 420 | #. Revert a call to SolveUpperTriangularUsingCholesky. |
| 421 | #. Make CERES_EIGEN_VERSION macro independent of CMake. |
| 422 | #. Add versions of dependencies used to FullReport(). |
| 423 | #. Ensure local config.h is used if Ceres is already installed. |
| 424 | #. Small messaging and comment updates in CMake |
| 425 | #. Handle possible presence of library prefixes in MSVC (Sylvain |
| 426 | Duchêne). |
| 427 | #. Use -O2 not -O3 on MinGW to workaround issue with Eigen |
| 428 | (s1m3mu3@gmail.com). |
| 429 | #. Increase tolerance in small_blas test for Cygwin |
| 430 | (s1m3mu3@gmail.com). |
| 431 | #. Fix iOS cmake file for cmake 3.0 (Jack Feng) |
| 432 | #. Fix missing gflags shlwapi dependency on MinGW (s1m3mu3@gmail.com). |
| 433 | #. Add thread dependency & fix namespace detection on Windows for |
| 434 | gflags (arrigo.benedetti@gmail.com). |
| 435 | #. Rename macros in the public API to have a ``CERES_`` prefix. |
| 436 | #. Fix ``OrderedGroup::Reverse()`` when it is empty (Chris Sweeney). |
| 437 | #. Update the code to point to ceres-solver.org. |
| 438 | #. Update documentation to point to the GitHub issue tracker. |
| 439 | #. Disable ``LAPACK`` for iOS builds. (Greg Coombe) |
| 440 | #. Force use of single-thread in ``Problem::Evaluate()`` without |
| 441 | OpenMP. |
| 442 | #. Less strict check for multithreading. (Chris Sweeney) |
| 443 | #. Update tolerances in small_blas_test.cc (Philipp Hubner) |
| 444 | #. Documentation corrections (Steve Hsu) |
| 445 | #. Fixed ``sampled_function.cc`` (Pablo Speciale) |
| 446 | #. Fix example code in the documentation. (Rodney Hoskinson) |
| 447 | #. Improve the error handling in Conjugate Gradients. |
| 448 | #. Improve preconditioner documentation. |
| 449 | #. Remove dead code from fpclassify.h. |
| 450 | #. Make Android.mk threads sensitive. |
| 451 | #. Changed the ``CURRENT_CONFIG_INSTALL_DIR`` to be a variable local |
| 452 | to Ceres. (Chris Sweeney) |
| 453 | #. Fix typo in the comments in ``Jet.h``. (Julius Ziegler) |
| 454 | #. Add the ASL at ETH Zurich, Theia & OpenPTrack to the list of users. |
| 455 | #. Fixed a typo in the documentation. (Richard Stebbing) |
| 456 | #. Fixed a boundary handling bug in the BiCubic interpolation |
| 457 | code. (Bernhard Zeisl) |
| 458 | #. Fixed a ``MSVC`` compilation bug in the cubic interpolation code |
| 459 | (Johannes Schönberger) |
| 460 | #. Add covariance related files to the Android build. |
| 461 | #. Update Ubuntu 14.04 installation instructions. (Filippo Basso) |
| 462 | #. Improved logging for linear solver failures. |
| 463 | #. Improved crash messages in ``Problem``. |
| 464 | #. Hide Homebrew related variables in CMake GUI. |
| 465 | #. Add SuiteSparse link dependency for |
| 466 | compressed_col_sparse_matrix_utils_test. |
| 467 | #. Autodetect Homebrew install prefix on OSX. |
| 468 | #. Lint changes from William Rucklidge and Jim Roseborough. |
| 469 | #. Remove ``using namespace std:`` from ``port.h`` |
| 470 | #. Add note about glog not currently compiling against gflags 2.1. |
| 471 | #. Add explicit no sparse linear algebra library available option. |
| 472 | #. Improve some wording in the FAQ. (Vasily Vylkov) |
| 473 | #. Delete Incomplete LQ Factorization. |
| 474 | #. Add a pointer to MacPorts. (Markus Moll) |
| 475 | |
| 476 | |
| 477 | 1.10.0 |
| 478 | ====== |
| 479 | |
| 480 | New Features |
| 481 | ------------ |
| 482 | #. Ceres Solver can now be used to solve general unconstrained |
| 483 | optimization problems. See the documentation for |
| 484 | ``GradientProblem`` and ``GradientProblemSolver``. |
| 485 | #. ``Eigen`` can now be as a sparse linear algebra backend. This can |
| 486 | be done by setting |
| 487 | ``Solver::Options::sparse_linear_algebra_library_type`` to |
| 488 | ``EIGEN_SPARSE``. Performance should be comparable to |
| 489 | ``CX_SPARSE``. |
| 490 | |
| 491 | .. NOTE:: |
| 492 | |
| 493 | Because ``Eigen`` is a header only library, and some of the code |
| 494 | related to sparse Cholesky factorization is LGPL, building Ceres |
| 495 | with support for Eigen's sparse linear algebra is disabled by |
| 496 | default and should be enabled explicitly. |
| 497 | |
| 498 | .. NOTE:: |
| 499 | |
| 500 | For good performance, use Eigen version 3.2.2 or later. |
| 501 | |
| 502 | #. Added ``EIGEN_SPARSE_QR`` algorithm for covariance estimation using |
| 503 | ``Eigen``'s sparse QR factorization. (Michael Vitus) |
| 504 | #. Faster inner iterations when using multiple threads. |
| 505 | #. Faster ``ITERATIVE_SCHUR`` + ``SCHUR_JACOBI`` for small to medium |
| 506 | sized problems (see documentation for |
| 507 | ``Solver::Options::use_explicit_schur_complement``). |
| 508 | #. Faster automatic Schur ordering. |
| 509 | #. Reduced memory usage when solving problems with dynamic sparsity. |
| 510 | #. ``CostFunctionToFunctor`` now supports dynamic number of residuals. |
| 511 | #. A complete re-write of the problem preprocessing phase. |
| 512 | #. ``Solver::Summary::FullReport`` now reports the build configuration |
| 513 | for Ceres. |
| 514 | #. When building on Android, the ``NDK`` version detection logic has |
| 515 | been improved. |
| 516 | #. The ``CERES_VERSION`` macro has been improved and replaced with the |
| 517 | ``CERES_VERSION_STRING`` macro. |
| 518 | #. Added ``Solver::Options::IsValid`` which allows users to validate |
| 519 | their solver configuration before calling ``Solve``. |
| 520 | #. Added ``Problem::GetCostFunctionForResidualBlock`` and |
| 521 | ``Problem::GetLossFunctionForResidualBlock``. |
| 522 | #. Added Tukey's loss function. (Michael Vitus) |
| 523 | #. Added RotationMatrixToQuaternion |
| 524 | #. Compute & report timing information for line searches. |
| 525 | #. Autodetect gflags namespace. |
| 526 | #. Expanded ``more_garbow_hillstrom.cc``. |
| 527 | #. Added a pointer to Tal Ben-Nun's MSVC wrapper to the docs. |
| 528 | #. Added the ``<2,3,6>`` Schur template specialization. (Alessandro |
| 529 | Dal Grande) |
| 530 | |
| 531 | Backward Incompatible API Changes |
| 532 | --------------------------------- |
| 533 | #. ``NumericDiffFunctor`` has been removed. It's API was broken, and |
| 534 | the implementation was an unnecessary layer of abstraction over |
| 535 | ``CostFunctionToFunctor``. |
| 536 | #. ``POLAK_RIBIRERE`` conjugate gradients direction type has been |
| 537 | renamed to ``POLAK_RIBIERE``. |
| 538 | #. ``Solver::Options::solver_log`` has been removed. If needed this |
| 539 | iteration callback can easily be implemented in user code. |
| 540 | #. The ``SPARSE_CHOLESKY`` algorithm for covariance estimation has |
| 541 | been removed. It is not rank revealing and numerically poorly |
| 542 | behaved. Sparse QR factorization is a much better way to do this. |
| 543 | #. The ``SPARSE_QR`` algorithm for covariance estimation has been |
| 544 | renamed to ``SUITE_SPARSE_QR`` to be consistent with |
| 545 | ``EIGEN_SPARSE_QR``. |
| 546 | #. ``Solver::Summary::preconditioner_type`` has been replaced with |
| 547 | ``Solver::Summary::preconditioner_type_given`` and |
| 548 | ``Solver::Summary::preconditioner_type_used`` to be more consistent |
| 549 | with how information about the linear solver is communicated. |
| 550 | #. ``CERES_VERSION`` and ``CERES_ABI_VERSION`` macros were not |
| 551 | terribly useful. They have been replaced with |
| 552 | ``CERES_VERSION_MAJOR``, ``CERES_VERSION_MINOR`` , |
| 553 | ``CERES_VERSION_REVISION`` and ``CERES_VERSION_ABI`` macros. In |
| 554 | particular the functionality of ``CERES_VERSION`` is provided by |
| 555 | ``CERES_VERSION_STRING`` macro. |
| 556 | |
| 557 | Bug Fixes |
| 558 | --------- |
| 559 | #. Do not try the gradient step if TR step line search fails. |
| 560 | #. Fix missing include in libmv_bundle_adjuster on OSX. |
| 561 | #. Conditionally log evaluation failure warnings. |
| 562 | #. Runtime uses four digits after the decimal in Summary:FullReport. |
| 563 | #. Better options checking for TrustRegionMinimizer. |
| 564 | #. Fix RotationMatrixToAngleAxis when the angle of rotation is near |
| 565 | PI. (Tobias Strauss) |
| 566 | #. Sometimes gradient norm based convergence would miss a step with a |
| 567 | substantial solution quality improvement. (Rodney Hoskinson) |
| 568 | #. Ignore warnings from within Eigen/SparseQR (3.2.2). |
| 569 | #. Fix empty Cache HELPSTRING parsing error on OS X 10.10 Yosemite. |
| 570 | #. Fix a formatting error TrustRegionMinimizer logging. |
| 571 | #. Add an explicit include for local_parameterization.h (cooordz) |
| 572 | #. Fix a number of typos in the documentation (Martin Baeuml) |
| 573 | #. Made the logging in TrustRegionMinimizer consistent with |
| 574 | LineSearchMinimizer. |
| 575 | #. Fix some obsolete documentation in CostFunction::Evaluate. |
| 576 | #. Fix CG solver options for ITERATIVE_SCHUR, which did not copy |
| 577 | min_num_iterations (Johannes Schönberger) |
| 578 | #. Remove obsolete include of numeric_diff_functor.h. (Martin Baeuml) |
| 579 | #. Fix max. linear solver iterations in ConjugateGradientsSolver |
| 580 | (Johannes Schönberger) |
| 581 | #. Expand check for lack of a sparse linear algebra library. (Michael |
| 582 | Samples and Domink Reitzle) |
| 583 | #. Fix Eigen Row/ColMajor bug in NumericDiffCostFunction. (Dominik |
| 584 | Reitzle) |
| 585 | #. Fix crash in Covariance if # threads > 1 requested without OpenMP. |
| 586 | #. Fixed Malformed regex. (Björn Piltz) |
| 587 | #. Fixed MSVC error C2124: divide or mod by zero. (Björn Piltz) |
| 588 | #. Add missing #include of <limits> for loss functions. |
| 589 | #. Make canned loss functions more robust. |
| 590 | #. Fix type of suppressed compiler warning for Eigen 3.2.0. |
| 591 | #. Suppress unused variable warning from Eigen 3.2.0. |
| 592 | #. Add "make install" to the install instructions. |
| 593 | #. Correct formula in documentation of |
| 594 | Solver::Options::function_tolerance. (Alessandro Gentilini) |
| 595 | #. Add release flags to iOS toolchain. |
| 596 | #. Fix a broken hyperlink in the documentation. (Henrique Mendonca) |
| 597 | #. Add fixes for multiple definitions of ERROR on Windows to docs. |
| 598 | #. Compile miniglog into Ceres if enabled on all platforms. |
| 599 | #. Add two missing files to Android.mk (Greg Coombe) |
| 600 | #. Fix Cmake error when using miniglog. (Greg Coombe) |
| 601 | #. Don't build miniglog unconditionally as a static library (Björn |
| 602 | Piltz) |
| 603 | #. Added a missing include. (Björn Piltz) |
| 604 | #. Conditionally disable SparseNormalCholesky. |
| 605 | #. Fix a memory leak in program_test.cc. |
| 606 | |
| 607 | |
| 608 | 1.9.0 |
| 609 | ===== |
| 610 | |
| 611 | New Features |
| 612 | ------------ |
| 613 | #. Bounds constraints: Support for upper and/or lower bounds on |
| 614 | parameters when using the trust region minimizer. |
| 615 | #. Dynamic Sparsity: Problems in which the sparsity structure of the |
| 616 | Jacobian changes over the course of the optimization can now be |
| 617 | solved much more efficiently. (Richard Stebbing) |
| 618 | #. Improved support for Microsoft Visual C++ including the ability to |
| 619 | build and ship DLLs. (Björn Piltz, Alex Stewart and Sergey |
| 620 | Sharybin) |
| 621 | #. Support for building on iOS 6.0 or higher (Jack Feng). |
| 622 | #. Autogeneration of config.h that captures all the defines used to |
| 623 | build and use Ceres Solver. |
| 624 | #. Simpler and more informative solver termination type |
| 625 | reporting. (See below for more details) |
| 626 | #. New `website <http://www.ceres-solver.org>`_ based entirely on |
| 627 | Sphinx. |
| 628 | #. ``AutoDiffLocalParameterization`` allows the use of automatic |
| 629 | differentiation for defining ``LocalParameterization`` objects |
| 630 | (Alex Stewart) |
| 631 | #. LBFGS is faster due to fewer memory copies. |
| 632 | #. Parameter blocks are not restricted to be less than 32k in size, |
| 633 | they can be up to 2G in size. |
| 634 | #. Faster ``SPARSE_NORMAL_CHOLESKY`` solver when using ``CX_SPARSE`` |
| 635 | as the sparse linear algebra library. |
| 636 | #. Added ``Problem::IsParameterBlockPresent`` and |
| 637 | ``Problem::GetParameterization``. |
| 638 | #. Added the (2,4,9) and (2,4,8) template specializations. |
| 639 | #. An example demonstrating the use of |
| 640 | DynamicAutoDiffCostFunction. (Joydeep Biswas) |
| 641 | #. Homography estimation example from Blender demonstrating the use of |
| 642 | a custom ``IterationCallback``. (Sergey Sharybin) |
| 643 | #. Support user passing a custom CMAKE_MODULE_PATH (for BLAS / |
| 644 | LAPACK). |
| 645 | |
| 646 | Backward Incompatible API Changes |
| 647 | --------------------------------- |
| 648 | #. ``Solver::Options::linear_solver_ordering`` used to be a naked |
| 649 | pointer that Ceres took ownership of. This is error prone behaviour |
| 650 | which leads to problems when copying the ``Solver::Options`` struct |
| 651 | around. This has been replaced with a ``shared_ptr`` to handle |
| 652 | ownership correctly across copies. |
| 653 | |
| 654 | #. The enum used for reporting the termination/convergence status of |
| 655 | the solver has been renamed from ``SolverTerminationType`` to |
| 656 | ``TerminationType``. |
| 657 | |
| 658 | The enum values have also changed. ``FUNCTION_TOLERANCE``, |
| 659 | ``GRADIENT_TOLERANCE`` and ``PARAMETER_TOLERANCE`` have all been |
| 660 | replaced by ``CONVERGENCE``. |
| 661 | |
| 662 | ``NUMERICAL_FAILURE`` has been replaced by ``FAILURE``. |
| 663 | |
| 664 | ``USER_ABORT`` has been renamed to ``USER_FAILURE``. |
| 665 | |
| 666 | Further ``Solver::Summary::error`` has been renamed to |
| 667 | ``Solver::Summary::message``. It contains a more detailed |
| 668 | explanation for why the solver terminated. |
| 669 | |
| 670 | #. ``Solver::Options::gradient_tolerance`` used to be a relative |
| 671 | gradient tolerance. i.e., The solver converged when |
| 672 | |
| 673 | .. math:: \|g(x)\|_\infty < \text{gradient_tolerance} * |
| 674 | \|g(x_0)\|_\infty |
| 675 | |
| 676 | where :math:`g(x)` is the gradient of the objective function at |
| 677 | :math:`x` and :math:`x_0` is the parmeter vector at the start of |
| 678 | the optimization. |
| 679 | |
| 680 | This has changed to an absolute tolerance, i.e. the solver |
| 681 | converges when |
| 682 | |
| 683 | .. math:: \|g(x)\|_\infty < \text{gradient_tolerance} |
| 684 | |
| 685 | #. Ceres cannot be built without the line search minimizer |
| 686 | anymore. Thus the preprocessor define |
| 687 | ``CERES_NO_LINE_SEARCH_MINIMIZER`` has been removed. |
| 688 | |
| 689 | Bug Fixes |
| 690 | --------- |
| 691 | #. Disabled warning C4251. (Björn Piltz) |
| 692 | #. Do not propagate 3d party libs through |
| 693 | `IMPORTED_LINK_INTERFACE_LIBRARIES_[DEBUG/RELEASE]` mechanism when |
| 694 | building shared libraries. (Björn Piltz) |
| 695 | #. Fixed errant verbose levels (Björn Piltz) |
| 696 | #. Variety of code cleanups, optimizations and bug fixes to the line |
| 697 | search minimizer code (Alex Stewart) |
| 698 | #. Fixed ``BlockSparseMatrix::Transpose`` when the matrix has row and |
| 699 | column blocks. (Richard Bowen) |
| 700 | #. Better error checking when ``Problem::RemoveResidualBlock`` is |
| 701 | called. (Alex Stewart) |
| 702 | #. Fixed a memory leak in ``SchurComplementSolver``. |
| 703 | #. Added ``epsilon()`` method to ``NumTraits<ceres::Jet<T, N> |
| 704 | >``. (Filippo Basso) |
| 705 | #. Fixed a bug in `CompressedRowSparseMatrix::AppendRows`` and |
| 706 | ``DeleteRows``.q |
| 707 | #. Handle empty problems consistently. |
| 708 | #. Restore the state of the ``Problem`` after a call to |
| 709 | ``Problem::Evaluate``. (Stefan Leutenegger) |
| 710 | #. Better error checking and reporting for linear solvers. |
| 711 | #. Use explicit formula to solve quadratic polynomials instead of the |
| 712 | eigenvalue solver. |
| 713 | #. Fix constant parameter handling in inner iterations (Mikael |
| 714 | Persson). |
| 715 | #. SuiteSparse errors do not cause a fatal crash anymore. |
| 716 | #. Fix ``corrector_test.cc``. |
| 717 | #. Relax the requirements on loss function derivatives. |
| 718 | #. Minor bugfix to logging.h (Scott Ettinger) |
| 719 | #. Updated ``gmock`` and ``gtest`` to the latest upstream version. |
| 720 | #. Fix build breakage on old versions of SuiteSparse. |
| 721 | #. Fixed build issues related to Clang / LLVM 3.4 (Johannes |
| 722 | Schönberger) |
| 723 | #. METIS_FOUND is never set. Changed the commit to fit the setting of |
| 724 | the other #._FOUND definitions. (Andreas Franek) |
| 725 | #. Variety of bug fixes and cleanups to the ``CMake`` build system |
| 726 | (Alex Stewart) |
| 727 | #. Removed fictitious shared library target from the NDK build. |
| 728 | #. Solver::Options now uses ``shared_ptr`` to handle ownership of |
| 729 | ``Solver::Options::linear_solver_ordering`` and |
| 730 | ``Solver::Options::inner_iteration_ordering``. As a consequence the |
| 731 | ``NDK`` build now depends on ``libc++`` from the ``LLVM`` project. |
| 732 | #. Variety of lint cleanups (William Rucklidge & Jim Roseborough) |
| 733 | #. Various internal cleanups including dead code removal. |
| 734 | |
| 735 | |
| 736 | 1.8.0 |
| 737 | ===== |
| 738 | |
| 739 | New Features |
| 740 | ------------ |
| 741 | #. Significant improved ``CMake`` files with better robustness, |
| 742 | dependency checking and GUI support. (Alex Stewart) |
| 743 | #. Added ``DynamicNumericDiffCostFunction`` for numerically |
| 744 | differentiated cost functions whose sizing is determined at run |
| 745 | time. |
| 746 | #. ``NumericDiffCostFunction`` now supports a dynamic number of |
| 747 | residuals just like ``AutoDiffCostFunction``. |
| 748 | #. ``Problem`` exposes more of its structure in its API. |
| 749 | #. Faster automatic differentiation (Tim Langlois) |
| 750 | #. Added the commonly occurring ``2_d_d`` template specialization for |
| 751 | the Schur Eliminator. |
| 752 | #. Faster ``ITERATIVE_SCHUR`` solver using template specializations. |
| 753 | #. Faster ``SCHUR_JACOBI`` preconditioner construction. |
| 754 | #. Faster ``AngleAxisRotatePoint``. |
| 755 | #. Faster Jacobian evaluation when a loss function is used. |
| 756 | #. Added support for multiple clustering algorithms in visibility |
| 757 | based preconditioning, including a new fast single linkage |
| 758 | clustering algorithm. |
| 759 | |
| 760 | Bug Fixes |
| 761 | --------- |
| 762 | #. Fix ordering of ParseCommandLineFlags() & InitGoogleTest() for |
| 763 | Windows. (Alex Stewart) |
| 764 | #. Remove DCHECK_GE checks from fixed_array.h. |
| 765 | #. Fix build on MSVC 2013 (Petter Strandmark) |
| 766 | #. Fixed ``AngleAxisToRotationMatrix`` near zero. |
| 767 | #. Move ``CERES_HASH_NAMESPACE`` macros to ``collections_port.h``. |
| 768 | #. Fix handling of unordered_map/unordered_set on OSX 10.9.0. |
| 769 | #. Explicitly link to libm for ``curve_fitting_c.c``. (Alex Stewart) |
| 770 | #. Minor type conversion fix to autodiff.h |
| 771 | #. Remove RuntimeNumericDiffCostFunction. |
| 772 | #. Fix operator= ambiguity on some versions of Clang. (Alex Stewart) |
| 773 | #. Various Lint cleanups (William Rucklidge & Jim Roseborough) |
| 774 | #. Modified installation folders for Windows. (Pablo Speciale) |
| 775 | #. Added librt to link libraries for SuiteSparse_config on |
| 776 | Linux. (Alex Stewart) |
| 777 | #. Check for presence of return-type-c-linkage option with |
| 778 | Clang. (Alex Stewart) |
| 779 | #. Fix Problem::RemoveParameterBlock after calling solve. (Simon |
| 780 | Lynen) |
| 781 | #. Fix a free/delete bug in covariance_impl.cc |
| 782 | #. Fix two build errors. (Dustin Lang) |
| 783 | #. Add RequireInitialization = 1 to NumTraits::Jet. |
| 784 | #. Update gmock/gtest to 1.7.0 |
| 785 | #. Added IterationSummary::gradient_norm. |
| 786 | #. Reduced verbosity of the inner iteration minimizer. |
| 787 | #. Fixed a bug in TrustRegionMinimizer. (Michael Vitus) |
| 788 | #. Removed android/build_android.sh. |
| 789 | |
| 790 | |
| 791 | 1.7.0 |
| 792 | ===== |
| 793 | |
| 794 | Backward Incompatible API Changes |
| 795 | --------------------------------- |
| 796 | |
| 797 | #. ``Solver::Options::sparse_linear_algebra_library`` has been renamed |
| 798 | to ``Solver::Options::sparse_linear_algebra_library_type``. |
| 799 | |
| 800 | New Features |
| 801 | ------------ |
| 802 | #. Sparse and dense covariance estimation. |
| 803 | #. A new Wolfe line search. (Alex Stewart) |
| 804 | #. ``BFGS`` line search direction. (Alex Stewart) |
| 805 | #. C API |
| 806 | #. Speeded up the use of loss functions > 17x. |
| 807 | #. Faster ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR`` |
| 808 | solvers. |
| 809 | #. Support for multiple dense linear algebra backends. In particular |
| 810 | optimized ``BLAS`` and ``LAPACK`` implementations (e.g., Intel MKL, |
| 811 | ACML, OpenBLAS etc) can now be used to do the dense linear algebra |
| 812 | for ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR`` |
| 813 | #. Use of Inner iterations can now be adaptively stopped. Iteration |
| 814 | and runtime statistics for inner iterations are not reported in |
| 815 | ``Solver::Summary`` and ``Solver::Summary::FullReport``. |
| 816 | #. Improved inner iteration step acceptance criterion. |
| 817 | #. Add BlockRandomAccessCRSMatrix. |
| 818 | #. Speeded up automatic differentiation by 7\%. |
| 819 | #. Bundle adjustment example from libmv/Blender (Sergey Sharybin) |
| 820 | #. Shared library building is now controlled by CMake, rather than a |
| 821 | custom solution. Previously, Ceres had a custom option, but this is |
| 822 | now deprecated in favor of CMake's built in support for switching |
| 823 | between static and shared. Turn on BUILD_SHARED_LIBS to get shared |
| 824 | Ceres libraries. |
| 825 | #. No more dependence on Protocol Buffers. |
| 826 | #. Incomplete LQ factorization. |
| 827 | #. Ability to write trust region problems to disk. |
| 828 | #. Add sinh, cosh, tanh and tan functions to automatic differentiation |
| 829 | (Johannes Schönberger) |
| 830 | #. Simplifications to the cmake build file. |
| 831 | #. ``miniglog`` can now be used as a replacement for ``google-glog`` |
| 832 | on non Android platforms. (This is NOT recommended). |
| 833 | |
| 834 | Bug Fixes |
| 835 | --------- |
| 836 | #. Fix ``ITERATIVE_SCHUR`` solver to work correctly when the schur |
| 837 | complement is of size zero. (Soohyun Bae) |
| 838 | #. Fix the ``spec`` file for generating ``RPM`` packages (Brian Pitts |
| 839 | and Taylor Braun-Jones). |
| 840 | #. Fix how ceres calls CAMD (Manas Jagadev) |
| 841 | #. Fix breakage on old versions of SuiteSparse. (Fisher Yu) |
| 842 | #. Fix warning C4373 in Visual Studio (Petter Strandmark) |
| 843 | #. Fix compilation error caused by missing suitesparse headers and |
| 844 | reorganize them to be more robust. (Sergey Sharybin) |
| 845 | #. Check GCC Version before adding -fast compiler option on |
| 846 | OSX. (Steven Lovegrove) |
| 847 | #. Add documentation for minimizer progress output. |
| 848 | #. Lint and other cleanups (William Rucklidge and James Roseborough) |
| 849 | #. Collections port fix for MSC 2008 (Sergey Sharybin) |
| 850 | #. Various corrections and cleanups in the documentation. |
| 851 | #. Change the path where CeresConfig.cmake is installed (Pablo |
| 852 | Speciale) |
| 853 | #. Minor errors in documentation (Pablo Speciale) |
| 854 | #. Updated depend.cmake to follow CMake IF convention. (Joydeep |
| 855 | Biswas) |
| 856 | #. Stabilize the schur ordering algorithm. |
| 857 | #. Update license header in split.h. |
| 858 | #. Enabling -O4 (link-time optimization) only if compiler/linker |
| 859 | support it. (Alex Stewart) |
| 860 | #. Consistent glog path across files. |
| 861 | #. ceres-solver.spec: Use cleaner, more conventional Release string |
| 862 | (Taylor Braun-Jones) |
| 863 | #. Fix compile bug on RHEL6 due to missing header (Taylor Braun-Jones) |
| 864 | #. CMake file is less verbose. |
| 865 | #. Use the latest upstream version of google-test and gmock. |
| 866 | #. Rationalize some of the variable names in ``Solver::Options``. |
| 867 | #. Improve Summary::FullReport when line search is used. |
| 868 | #. Expose line search parameters in ``Solver::Options``. |
| 869 | #. Fix update of L-BFGS history buffers after they become full. (Alex |
| 870 | Stewart) |
| 871 | #. Fix configuration error on systems without SuiteSparse installed |
| 872 | (Sergey Sharybin) |
| 873 | #. Enforce the read call returns correct value in |
| 874 | ``curve_fitting_c.c`` (Arnaud Gelas) |
| 875 | #. Fix DynamicAutoDiffCostFunction (Richard Stebbing) |
| 876 | #. Fix Problem::RemoveParameterBlock documentation (Johannes |
| 877 | Schönberger) |
| 878 | #. Fix a logging bug in parameter_block.h |
| 879 | #. Refactor the preconditioner class structure. |
| 880 | #. Fix an uninitialized variable warning when building with ``GCC``. |
| 881 | #. Fix a reallocation bug in |
| 882 | ``CreateJacobianBlockSparsityTranspose``. (Yuliy Schwartzburg) |
| 883 | #. Add a define for O_BINARY. |
| 884 | #. Fix miniglog-based Android NDK build; now works with NDK r9. (Scott |
| 885 | Ettinger) |
| 886 | |
| 887 | |
| 888 | 1.6.0 |
| 889 | ===== |
| 890 | |
| 891 | New Features |
| 892 | ------------ |
| 893 | #. Major Performance improvements. |
| 894 | |
| 895 | a. Schur type solvers (``SPARSE_SCHUR``, ``DENSE_SCHUR``, |
| 896 | ``ITERATIVE_SCHUR``) are significantly faster due to custom BLAS |
| 897 | routines and fewer heap allocations. |
| 898 | |
| 899 | b. ``SPARSE_SCHUR`` when used with ``CX_SPARSE`` now uses a block |
| 900 | AMD for much improved factorization performance. |
| 901 | |
| 902 | c. The jacobian matrix is pre-ordered so that |
| 903 | ``SPARSE_NORMAL_CHOLESKY`` and ``SPARSE_SCHUR`` do not have to |
| 904 | make copies inside ``CHOLMOD``. |
| 905 | |
| 906 | d. Faster autodiff by replacing division by multplication by inverse. |
| 907 | |
| 908 | e. When compiled without threads, the schur eliminator does not pay |
| 909 | the penalty for locking and unlocking mutexes. |
| 910 | |
| 911 | #. Users can now use ``linear_solver_ordering`` to affect the |
| 912 | fill-reducing ordering used by ``SUITE_SPARSE`` for |
| 913 | ``SPARSE_NORMAL_CHOLESKY``. |
| 914 | #. ``Problem`` can now report the set of parameter blocks it knows about. |
| 915 | #. ``TrustRegionMinimizer`` uses the evaluator to compute the gradient |
| 916 | instead of a matrix vector multiply. |
| 917 | #. On ``Mac OS``, whole program optimization is enabled. |
| 918 | #. Users can now use automatic differentiation to define new |
| 919 | ``LocalParameterization`` objects. (Sergey Sharybin) |
| 920 | #. Enable larger tuple sizes for Visual Studio 2012. (Petter Strandmark) |
| 921 | |
| 922 | |
| 923 | Bug Fixes |
| 924 | --------- |
| 925 | |
| 926 | #. Update the documentation for ``CostFunction``. |
| 927 | #. Fixed a typo in the documentation. (Pablo Speciale) |
| 928 | #. Fix a typo in suitesparse.cc. |
| 929 | #. Bugfix in ``NumericDiffCostFunction``. (Nicolas Brodu) |
| 930 | #. Death to BlockSparseMatrixBase. |
| 931 | #. Change Minimizer::Options::min_trust_region_radius to double. |
| 932 | #. Update to compile with stricter gcc checks. (Joydeep Biswas) |
| 933 | #. Do not modify cached CMAKE_CXX_FLAGS_RELEASE. (Sergey Sharybin) |
| 934 | #. ``<iterator>`` needed for back_insert_iterator. (Petter Strandmark) |
| 935 | #. Lint cleanup. (William Rucklidge) |
| 936 | #. Documentation corrections. (Pablo Speciale) |
| 937 | |
| 938 | |
| 939 | 1.5.0 |
| 940 | ===== |
| 941 | |
| 942 | Backward Incompatible API Changes |
| 943 | --------------------------------- |
| 944 | #. Added ``Problem::Evaluate``. Now you can evaluate a problem or any |
| 945 | part of it without calling the solver. |
| 946 | |
| 947 | In light of this the following settings have been deprecated and |
| 948 | removed from the API. |
| 949 | |
| 950 | - ``Solver::Options::return_initial_residuals`` |
| 951 | - ``Solver::Options::return_initial_gradient`` |
| 952 | - ``Solver::Options::return_initial_jacobian`` |
| 953 | - ``Solver::Options::return_final_residuals`` |
| 954 | - ``Solver::Options::return_final_gradient`` |
| 955 | - ``Solver::Options::return_final_jacobian`` |
| 956 | |
| 957 | Instead we recommend using something like this. |
| 958 | |
| 959 | .. code-block:: c++ |
| 960 | |
| 961 | Problem problem; |
| 962 | // Build problem |
| 963 | |
| 964 | vector<double> initial_residuals; |
| 965 | problem.Evaluate(Problem::EvaluateOptions(), |
| 966 | NULL, /* No cost */ |
| 967 | &initial_residuals, |
| 968 | NULL, /* No gradient */ |
| 969 | NULL /* No jacobian */ ); |
| 970 | |
| 971 | Solver::Options options; |
| 972 | Solver::Summary summary; |
| 973 | Solver::Solve(options, &problem, &summary); |
| 974 | |
| 975 | vector<double> final_residuals; |
| 976 | problem.Evaluate(Problem::EvaluateOptions(), |
| 977 | NULL, /* No cost */ |
| 978 | &final_residuals, |
| 979 | NULL, /* No gradient */ |
| 980 | NULL /* No jacobian */ ); |
| 981 | |
| 982 | |
| 983 | New Features |
| 984 | ------------ |
| 985 | #. Problem now supports removal of ParameterBlocks and |
| 986 | ResidualBlocks. There is a space/time tradeoff in doing this which |
| 987 | is controlled by |
| 988 | ``Problem::Options::enable_fast_parameter_block_removal``. |
| 989 | |
| 990 | #. Ceres now supports Line search based optimization algorithms in |
| 991 | addition to trust region algorithms. Currently there is support for |
| 992 | gradient descent, non-linear conjugate gradient and LBFGS search |
| 993 | directions. |
| 994 | #. Added ``Problem::Evaluate``. Now you can evaluate a problem or any |
| 995 | part of it without calling the solver. In light of this the |
| 996 | following settings have been deprecated and removed from the API. |
| 997 | |
| 998 | - ``Solver::Options::return_initial_residuals`` |
| 999 | - ``Solver::Options::return_initial_gradient`` |
| 1000 | - ``Solver::Options::return_initial_jacobian`` |
| 1001 | - ``Solver::Options::return_final_residuals`` |
| 1002 | - ``Solver::Options::return_final_gradient`` |
| 1003 | - ``Solver::Options::return_final_jacobian`` |
| 1004 | |
| 1005 | #. New, much improved HTML documentation using Sphinx. |
| 1006 | #. Changed ``NumericDiffCostFunction`` to take functors like |
| 1007 | ``AutoDiffCostFunction``. |
| 1008 | #. Added support for mixing automatic, analytic and numeric |
| 1009 | differentiation. This is done by adding ``CostFunctionToFunctor`` |
| 1010 | and ``NumericDiffFunctor`` objects to the API. |
| 1011 | #. Sped up the robust loss function correction logic when residual is |
| 1012 | one dimensional. |
| 1013 | #. Sped up ``DenseQRSolver`` by changing the way dense jacobians are |
| 1014 | stored. This is a 200-500% improvement in linear solver performance |
| 1015 | depending on the size of the problem. |
| 1016 | #. ``DENSE_SCHUR`` now supports multi-threading. |
| 1017 | #. Greatly expanded ``Summary::FullReport``: |
| 1018 | |
| 1019 | - Report the ordering used by the ``LinearSolver``. |
| 1020 | - Report the ordering used by the inner iterations. |
| 1021 | - Execution timing breakdown into evaluations and linear solves. |
| 1022 | - Effective size of the problem solved by the solver, which now |
| 1023 | accounts for the size of the tangent space when using a |
| 1024 | ``LocalParameterization``. |
| 1025 | #. Ceres when run at the ``VLOG`` level 3 or higher will report |
| 1026 | detailed timing information about its internals. |
| 1027 | #. Remove extraneous initial and final residual evaluations. This |
| 1028 | speeds up the solver a bit. |
| 1029 | #. Automatic differenatiation with a dynamic number of parameter |
| 1030 | blocks. (Based on an idea by Thad Hughes). |
| 1031 | #. Sped up problem construction and destruction. |
| 1032 | #. Added matrix adapters to ``rotation.h`` so that the rotation matrix |
| 1033 | routines can work with row and column major matrices. (Markus Moll) |
| 1034 | #. ``SCHUR_JACOBI`` can now be used without ``SuiteSparse``. |
| 1035 | #. A ``.spec`` file for producing RPMs. (Taylor Braun-Jones) |
| 1036 | #. ``CMake`` can now build the sphinx documentation (Pablo Speciale) |
| 1037 | #. Add support for creating a CMake config file during build to make |
| 1038 | embedding Ceres in other CMake-using projects easier. (Pablo |
| 1039 | Speciale). |
| 1040 | #. Better error reporting in ``Problem`` for missing parameter blocks. |
| 1041 | #. A more flexible ``Android.mk`` and a more modular build. If binary |
| 1042 | size and/or compile time is a concern, larger parts of the solver |
| 1043 | can be disabled at compile time. |
| 1044 | |
| 1045 | Bug Fixes |
| 1046 | --------- |
| 1047 | #. Compilation fixes for MSVC2010 (Sergey Sharybin) |
| 1048 | #. Fixed "deprecated conversion from string constant to char*" |
| 1049 | warnings. (Pablo Speciale) |
| 1050 | #. Correctly propagate ifdefs when building without Schur eliminator |
| 1051 | template specializations. |
| 1052 | #. Correct handling of ``LIB_SUFFIX`` on Linux. (Yuliy Schwartzburg). |
| 1053 | #. Code and signature cleanup in ``rotation.h``. |
| 1054 | #. Make examples independent of internal code. |
| 1055 | #. Disable unused member in ``gtest`` which results in build error on |
| 1056 | OS X with latest Xcode. (Taylor Braun-Jones) |
| 1057 | #. Pass the correct flags to the linker when using |
| 1058 | ``pthreads``. (Taylor Braun-Jones) |
| 1059 | #. Only use ``cmake28`` macro when building on RHEL6. (Taylor |
| 1060 | Braun-Jones) |
| 1061 | #. Remove ``-Wno-return-type-c-linkage`` when compiling with |
| 1062 | GCC. (Taylor Braun-Jones) |
| 1063 | #. Fix ``No previous prototype`` warnings. (Sergey Sharybin) |
| 1064 | #. MinGW build fixes. (Sergey Sharybin) |
| 1065 | #. Lots of minor code and lint fixes. (William Rucklidge) |
| 1066 | #. Fixed a bug in ``solver_impl.cc`` residual evaluation. (Markus |
| 1067 | Moll) |
| 1068 | #. Fixed variadic evaluation bug in ``AutoDiff``. |
| 1069 | #. Fixed ``SolverImpl`` tests. |
| 1070 | #. Fixed a bug in ``DenseSparseMatrix::ToDenseMatrix()``. |
| 1071 | #. Fixed an initialization bug in ``ProgramEvaluator``. |
| 1072 | #. Fixes to Android.mk paths (Carlos Hernandez) |
| 1073 | #. Modify ``nist.cc`` to compute accuracy based on ground truth |
| 1074 | solution rather than the ground truth function value. |
| 1075 | #. Fixed a memory leak in ``cxsparse.cc``. (Alexander Mordvintsev). |
| 1076 | #. Fixed the install directory for libraries by correctly handling |
| 1077 | ``LIB_SUFFIX``. (Taylor Braun-Jones) |
| 1078 | |
| 1079 | 1.4.0 |
| 1080 | ===== |
| 1081 | |
| 1082 | Backward Incompatible API Changes |
| 1083 | --------------------------------- |
| 1084 | The new ordering API breaks existing code. Here the common case fixes. |
| 1085 | |
| 1086 | **Before** |
| 1087 | |
| 1088 | .. code-block:: c++ |
| 1089 | |
| 1090 | options.linear_solver_type = ceres::DENSE_SCHUR |
| 1091 | options.ordering_type = ceres::SCHUR |
| 1092 | |
| 1093 | **After** |
| 1094 | |
| 1095 | |
| 1096 | .. code-block:: c++ |
| 1097 | |
| 1098 | options.linear_solver_type = ceres::DENSE_SCHUR |
| 1099 | |
| 1100 | |
| 1101 | **Before** |
| 1102 | |
| 1103 | .. code-block:: c++ |
| 1104 | |
| 1105 | options.linear_solver_type = ceres::DENSE_SCHUR; |
| 1106 | options.ordering_type = ceres::USER; |
| 1107 | for (int i = 0; i < num_points; ++i) { |
| 1108 | options.ordering.push_back(my_points[i]) |
| 1109 | } |
| 1110 | for (int i = 0; i < num_cameras; ++i) { |
| 1111 | options.ordering.push_back(my_cameras[i]) |
| 1112 | } |
| 1113 | options.num_eliminate_blocks = num_points; |
| 1114 | |
| 1115 | |
| 1116 | **After** |
| 1117 | |
| 1118 | .. code-block:: c++ |
| 1119 | |
| 1120 | options.linear_solver_type = ceres::DENSE_SCHUR; |
| 1121 | options.ordering = new ceres::ParameterBlockOrdering; |
| 1122 | for (int i = 0; i < num_points; ++i) { |
| 1123 | options.linear_solver_ordering->AddElementToGroup(my_points[i], 0); |
| 1124 | } |
| 1125 | for (int i = 0; i < num_cameras; ++i) { |
| 1126 | options.linear_solver_ordering->AddElementToGroup(my_cameras[i], 1); |
| 1127 | } |
| 1128 | |
| 1129 | |
| 1130 | New Features |
| 1131 | ------------ |
| 1132 | #. A new richer, more expressive and consistent API for ordering |
| 1133 | parameter blocks. |
| 1134 | #. A non-linear generalization of Ruhe & Wedin's Algorithm II. This |
| 1135 | allows the user to use variable projection on separable and |
| 1136 | non-separable non-linear least squares problems. With |
| 1137 | multithreading, this results in significant improvements to the |
| 1138 | convergence behavior of the solver at a small increase in run time. |
| 1139 | #. An image denoising example using fields of experts. (Petter |
| 1140 | Strandmark) |
| 1141 | #. Defines for Ceres version and ABI version. |
| 1142 | #. Higher precision timer code where available. (Petter Strandmark) |
| 1143 | #. Example Makefile for users of Ceres. |
| 1144 | #. IterationSummary now informs the user when the step is a |
| 1145 | non-monotonic step. |
| 1146 | #. Fewer memory allocations when using ``DenseQRSolver``. |
| 1147 | #. GradientChecker for testing CostFunctions (William Rucklidge) |
| 1148 | #. Add support for cost functions with 10 parameter blocks in |
| 1149 | ``Problem``. (Fisher) |
| 1150 | #. Add support for 10 parameter blocks in ``AutoDiffCostFunction``. |
| 1151 | |
| 1152 | |
| 1153 | Bug Fixes |
| 1154 | --------- |
| 1155 | |
| 1156 | #. static cast to force Eigen::Index to long conversion |
| 1157 | #. Change LOG(ERROR) to LOG(WARNING) in ``schur_complement_solver.cc``. |
| 1158 | #. Remove verbose logging from ``DenseQRSolve``. |
| 1159 | #. Fix the Android NDK build. |
| 1160 | #. Better handling of empty and constant Problems. |
| 1161 | #. Remove an internal header that was leaking into the public API. |
| 1162 | #. Memory leak in ``trust_region_minimizer.cc`` |
| 1163 | #. Schur ordering was operating on the wrong object (Ricardo Martin) |
| 1164 | #. MSVC fixes (Petter Strandmark) |
| 1165 | #. Various fixes to ``nist.cc`` (Markus Moll) |
| 1166 | #. Fixed a jacobian scaling bug. |
| 1167 | #. Numerically robust computation of ``model_cost_change``. |
| 1168 | #. Signed comparison compiler warning fixes (Ricardo Martin) |
| 1169 | #. Various compiler warning fixes all over. |
| 1170 | #. Inclusion guard fixes (Petter Strandmark) |
| 1171 | #. Segfault in test code (Sergey Popov) |
| 1172 | #. Replaced ``EXPECT/ASSERT_DEATH`` with the more portable |
| 1173 | ``EXPECT_DEATH_IF_SUPPORTED`` macros. |
| 1174 | #. Fixed the camera projection model in Ceres' implementation of |
| 1175 | Snavely's camera model. (Ricardo Martin) |
| 1176 | |
| 1177 | |
| 1178 | 1.3.0 |
| 1179 | ===== |
| 1180 | |
| 1181 | New Features |
| 1182 | ------------ |
| 1183 | #. Android Port (Scott Ettinger also contributed to the port) |
| 1184 | #. Windows port. (Changchang Wu and Pierre Moulon also contributed to the port) |
| 1185 | #. New subspace Dogleg Solver. (Markus Moll) |
| 1186 | #. Trust region algorithm now supports the option of non-monotonic steps. |
| 1187 | #. New loss functions ``ArcTanLossFunction``, ``TolerantLossFunction`` |
| 1188 | and ``ComposedLossFunction``. (James Roseborough). |
| 1189 | #. New ``DENSE_NORMAL_CHOLESKY`` linear solver, which uses Eigen's |
| 1190 | LDLT factorization on the normal equations. |
| 1191 | #. Cached symbolic factorization when using ``CXSparse``. |
| 1192 | (Petter Strandark) |
| 1193 | #. New example ``nist.cc`` and data from the NIST non-linear |
| 1194 | regression test suite. (Thanks to Douglas Bates for suggesting this.) |
| 1195 | #. The traditional Dogleg solver now uses an elliptical trust |
| 1196 | region (Markus Moll) |
| 1197 | #. Support for returning initial and final gradients & Jacobians. |
| 1198 | #. Gradient computation support in the evaluators, with an eye |
| 1199 | towards developing first order/gradient based solvers. |
| 1200 | #. A better way to compute ``Solver::Summary::fixed_cost``. (Markus Moll) |
| 1201 | #. ``CMake`` support for building documentation, separate examples, |
| 1202 | installing and uninstalling the library and Gerrit hooks (Arnaud |
| 1203 | Gelas) |
| 1204 | #. ``SuiteSparse4`` support (Markus Moll) |
| 1205 | #. Support for building Ceres without ``TR1`` (This leads to |
| 1206 | slightly slower ``DENSE_SCHUR`` and ``SPARSE_SCHUR`` solvers). |
| 1207 | #. ``BALProblem`` can now write a problem back to disk. |
| 1208 | #. ``bundle_adjuster`` now allows the user to normalize and perturb the |
| 1209 | problem before solving. |
| 1210 | #. Solver progress logging to file. |
| 1211 | #. Added ``Program::ToString`` and ``ParameterBlock::ToString`` to |
| 1212 | help with debugging. |
| 1213 | #. Ability to build Ceres as a shared library (MacOS and Linux only), |
| 1214 | associated versioning and build release script changes. |
| 1215 | #. Portable floating point classification API. |
| 1216 | |
| 1217 | |
| 1218 | Bug Fixes |
| 1219 | --------- |
| 1220 | #. Fix how invalid step evaluations are handled. |
| 1221 | #. Change the slop handling around zero for model cost changes to use |
| 1222 | relative tolerances rather than absolute tolerances. |
| 1223 | #. Fix an inadvertant integer to bool conversion. (Petter Strandmark) |
| 1224 | #. Do not link to ``libgomp`` when building on |
| 1225 | windows. (Petter Strandmark) |
| 1226 | #. Include ``gflags.h`` in ``test_utils.cc``. (Petter |
| 1227 | Strandmark) |
| 1228 | #. Use standard random number generation routines. (Petter Strandmark) |
| 1229 | #. ``TrustRegionMinimizer`` does not implicitly negate the |
| 1230 | steps that it takes. (Markus Moll) |
| 1231 | #. Diagonal scaling allows for equal upper and lower bounds. (Markus Moll) |
| 1232 | #. TrustRegionStrategy does not misuse LinearSolver:Summary anymore. |
| 1233 | #. Fix Eigen3 Row/Column Major storage issue. (Lena Gieseke) |
| 1234 | #. QuaternionToAngleAxis now guarantees an angle in $[-\pi, \pi]$. (Guoxuan Zhang) |
| 1235 | #. Added a workaround for a compiler bug in the Android NDK to the |
| 1236 | Schur eliminator. |
| 1237 | #. The sparse linear algebra library is only logged in |
| 1238 | Summary::FullReport if it is used. |
| 1239 | #. Rename the macro ``CERES_DONT_HAVE_PROTOCOL_BUFFERS`` |
| 1240 | to ``CERES_NO_PROTOCOL_BUFFERS`` for consistency. |
| 1241 | #. Fix how static structure detection for the Schur eliminator logs |
| 1242 | its results. |
| 1243 | #. Correct example code in the documentation. (Petter Strandmark) |
| 1244 | #. Fix ``fpclassify.h`` to work with the Android NDK and STLport. |
| 1245 | #. Fix a memory leak in the ``levenber_marquardt_strategy_test.cc`` |
| 1246 | #. Fix an early return bug in the Dogleg solver. (Markus Moll) |
| 1247 | #. Zero initialize Jets. |
| 1248 | #. Moved ``internal/ceres/mock_log.h`` to ``internal/ceres/gmock/mock-log.h`` |
| 1249 | #. Unified file path handling in tests. |
| 1250 | #. ``data_fitting.cc`` includes ``gflags`` |
| 1251 | #. Renamed Ceres' Mutex class and associated macros to avoid |
| 1252 | namespace conflicts. |
| 1253 | #. Close the BAL problem file after reading it (Markus Moll) |
| 1254 | #. Fix IsInfinite on Jets. |
| 1255 | #. Drop alignment requirements for Jets. |
| 1256 | #. Fixed Jet to integer comparison. (Keith Leung) |
| 1257 | #. Fix use of uninitialized arrays. (Sebastian Koch & Markus Moll) |
| 1258 | #. Conditionally compile gflag dependencies.(Casey Goodlett) |
| 1259 | #. Add ``data_fitting.cc`` to the examples ``CMake`` file. |
| 1260 | |
| 1261 | |
| 1262 | 1.2.3 |
| 1263 | ===== |
| 1264 | |
| 1265 | Bug Fixes |
| 1266 | --------- |
| 1267 | #. ``suitesparse_test`` is enabled even when ``-DSUITESPARSE=OFF``. |
| 1268 | #. ``FixedArray`` internal struct did not respect ``Eigen`` |
| 1269 | alignment requirements (Koichi Akabe & Stephan Kassemeyer). |
| 1270 | #. Fixed ``quadratic.cc`` documentation and code mismatch |
| 1271 | (Nick Lewycky). |
| 1272 | |
| 1273 | 1.2.2 |
| 1274 | ===== |
| 1275 | |
| 1276 | Bug Fixes |
| 1277 | --------- |
| 1278 | #. Fix constant parameter blocks, and other minor fixes (Markus Moll) |
| 1279 | #. Fix alignment issues when combining ``Jet`` and |
| 1280 | ``FixedArray`` in automatic differeniation. |
| 1281 | #. Remove obsolete ``build_defs`` file. |
| 1282 | |
| 1283 | 1.2.1 |
| 1284 | ===== |
| 1285 | |
| 1286 | New Features |
| 1287 | ------------ |
| 1288 | #. Powell's Dogleg solver |
| 1289 | #. Documentation now has a brief overview of Trust Region methods and |
| 1290 | how the Levenberg-Marquardt and Dogleg methods work. |
| 1291 | |
| 1292 | Bug Fixes |
| 1293 | --------- |
| 1294 | #. Destructor for ``TrustRegionStrategy`` was not virtual (Markus |
| 1295 | Moll) |
| 1296 | #. Invalid ``DCHECK`` in ``suitesparse.cc`` (Markus Moll) |
| 1297 | #. Iteration callbacks were not properly invoked (Luis Alberto |
| 1298 | Zarrabeiti) |
| 1299 | #. Logging level changes in ConjugateGradientsSolver |
| 1300 | #. VisibilityBasedPreconditioner setup does not account for skipped |
| 1301 | camera pairs. This was debugging code. |
| 1302 | #. Enable SSE support on MacOS |
| 1303 | #. ``system_test`` was taking too long and too much memory (Koichi |
| 1304 | Akabe) |
| 1305 | |
| 1306 | 1.2.0 |
| 1307 | ===== |
| 1308 | |
| 1309 | New Features |
| 1310 | ------------ |
| 1311 | |
| 1312 | #. ``CXSparse`` support. |
| 1313 | #. Block oriented fill reducing orderings. This reduces the |
| 1314 | factorization time for sparse ``CHOLMOD`` significantly. |
| 1315 | #. New Trust region loop with support for multiple trust region step |
| 1316 | strategies. Currently only Levenberg-Marquardt is supported, but |
| 1317 | this refactoring opens the door for Dog-leg, Stiehaug and others. |
| 1318 | #. ``CMake`` file restructuring. Builds in ``Release`` mode by default, and now has platform specific tuning flags. |
| 1319 | #. Re-organized documentation. No new content, but better |
| 1320 | organization. |
| 1321 | |
| 1322 | |
| 1323 | Bug Fixes |
| 1324 | --------- |
| 1325 | |
| 1326 | #. Fixed integer overflow bug in ``block_random_access_sparse_matrix.cc``. |
| 1327 | #. Renamed some macros to prevent name conflicts. |
| 1328 | #. Fixed incorrect input to ``StateUpdatingCallback``. |
| 1329 | #. Fixes to AutoDiff tests. |
| 1330 | #. Various internal cleanups. |
| 1331 | |
| 1332 | |
| 1333 | 1.1.1 |
| 1334 | ===== |
| 1335 | |
| 1336 | Bug Fixes |
| 1337 | --------- |
| 1338 | #. Fix a bug in the handling of constant blocks. (Louis Simard) |
| 1339 | #. Add an optional lower bound to the Levenberg-Marquardt regularizer |
| 1340 | to prevent oscillating between well and ill posed linear problems. |
| 1341 | #. Some internal refactoring and test fixes. |
| 1342 | |
| 1343 | 1.1.0 |
| 1344 | ===== |
| 1345 | |
| 1346 | New Features |
| 1347 | ------------ |
| 1348 | #. New iterative linear solver for general sparse problems - ``CGNR`` |
| 1349 | and a block Jacobi preconditioner for it. |
| 1350 | #. Changed the semantics of how ``SuiteSparse`` dependencies are |
| 1351 | checked and used. Now ``SuiteSparse`` is built by default, only if |
| 1352 | all of its dependencies are present. |
| 1353 | #. Automatic differentiation now supports dynamic number of residuals. |
| 1354 | #. Support for writing the linear least squares problems to disk in |
| 1355 | text format so that they can loaded into ``MATLAB``. |
| 1356 | #. Linear solver results are now checked for nan and infinities. |
| 1357 | #. Added ``.gitignore`` file. |
| 1358 | #. A better more robust build system. |
| 1359 | |
| 1360 | |
| 1361 | Bug Fixes |
| 1362 | --------- |
| 1363 | #. Fixed a strict weak ordering bug in the schur ordering. |
| 1364 | #. Grammar and typos in the documents and code comments. |
| 1365 | #. Fixed tests which depended on exact equality between floating point |
| 1366 | values. |
| 1367 | |
| 1368 | 1.0.0 |
| 1369 | ===== |
| 1370 | Initial open source release. Nathan Wiegand contributed to the Mac OSX |
| 1371 | port. |
| 1372 | |
| 1373 | |
| 1374 | Origins |
| 1375 | ======= |
| 1376 | |
| 1377 | Ceres Solver grew out of the need for general least squares solving at |
| 1378 | Google. In early 2010, Sameer Agarwal and Fredrik Schaffalitzky |
| 1379 | started the development of Ceres Solver. Fredrik left Google shortly |
| 1380 | thereafter and Keir Mierle stepped in to take his place. After two |
| 1381 | years of on-and-off development, Ceres Solver was released as open |
| 1382 | source in May of 2012. |