12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850 |
- .. default-domain:: cpp
- .. highlight:: c++
- .. cpp:namespace:: ceres
- .. _chapter-version-history:
- ===============
- Version History
- ===============
- 2.2.0
- =====
- New Features
- (Dmitry Korchemkin)
- CPU based dense linear solvers, or ``EIGEN_SPARSE`` as the sparse
- linear algebra library. (Sameer Agarwal & Joydeep Biswas)
- Agarwal)
- in addition to ``AMD``. (Sameer Agarwal, Alex Stewart & Sergiu
- Deitsch)
- a preconditioner by the name of ``SCHUR POWER SERIES EXPANSION``
- (Mark Shachkov).
- Backward Incompatible API Changes
- :class:`Manifold` instead.
- how all threading is done.
- been removed. Similar or better performance can be expected from
- ``Eigen`` as the sparse linear algebra library.
- Bug Fixes & Minor Changes
- had regressed due to changes to threading (Dmitrity Korchemkin)
- Korchemkin)
- build process in the terminal. (Sergiu Deitsch)
- Korchemkin, Jason Mak)
- (Sergiu Deitsch)
- manifolds have default constructors (Sergiu Deitsch)
- Agarwal)
- workspace computations (Joydeep Biswas)
- Deitsch)
- constrctors for Jets. (Sameer Agarwal)
- storage instead of TripletSparseMatrix. (Dmitriy Korchemkin)
- Ivanov)
- earlier in this release cycle (Jonathan Taylor & Sameer Agarwal)
- (Joydeep Biswas)
- its subclasses (Sameer Agarwal)
- variables (Sameer Agarwal)
- Deitsch)
- Problem. (Alex Stewart)
- introduced in `d09f7e9d5e
- <https://github.com/ceres-solver/ceres-solver/commit/d09f7e9d5e3bfab2d7ec7e81fd6a55786edca17a>`_. (Sameer
- Agarwal)
- Stewart)
- Agarwal)
- ::class::`Covariance::Options` (Sameer Agarwal)
- Biswas)
- Deitsch)
- Deitsch)
- (Julio L. Paneque)
- (Sergiu Deitsch)
- (Alex Stewart)
- library (Sergiu Deitsch)
- sized parameter vector. (Sameer Agarwal)
- 2.1.0
- =====
- New Features
- ``DENSE_NORMAL_CHOLESKY`` & ``DENSE_SCHUR`` (Joydeep Biswas, Sameer
- Agarwal)
- :class:`LocalParameterization`. Version 2.1 is the transition
- release where users can use both :class:`LocalParameterization` as
- well as :class:`Manifold` objects as they transition from the
- former to the latter. :class:`LocalParameterization` will be
- removed in version 2.2. There should be no numerical change to the
- results as a result of this change. (Sameer Agarwal, Johannes Beck,
- Sergiu Deitsch)
- * :class:`Jet` gained support for, ``copysign``, ``fma`` (fused
- multiply-add), ``midpoint`` (C++20 and above), ``lerp`` (C++20
- and above), 3-argument ``hypot`` (C++17 and above), ``log10``,
- ``log1p``, ``exp1m``, ``norm`` (squared :math:`L^2` norm).
- * Quiet floating-point comparison: ``isless``, ``isgreater``,
- ``islessgreater``, ``islessequal``, ``isgreaterequal``,
- ``isunordered``, ``signbit``, ``fdim``
- * Categorization and comparison operations are applied exclusively
- and consistently to the scalar part of a Jet now: ``isnan``,
- ``isinf``, ``isnormal``, ``isfinite``, ``fpclassify`` (new),
- ``fmin``, ``fmax``
- * It is now possible to safely compare a :class:`Jet` against a scalar
- (or literal) without constructing a :class:`Jet` first (even if it's
- nested):
- .. code-block:: c++
- Jet<Jet<Jet<T, N>, M>, O> x;
- if (x == 2) { } // equivalent to x.a.a.a == 2
- This enables interaction with various arithmetic functions that
- expect a scalar like instance, such as ``boost::math::pow<-N>``
- for reciprocal computation.
- #. Add :class:`NumericDiffFirstOrderFunction` (Sameer Agarwal)
- Backward Incompatible API Changes
- ---------------------------------
- #. :class:`LocalParameterization` is deprecated. It will be removed in
- version 2.2. Use :class:`Manifold` instead.
- #. Classification functions like ``IsFinite`` are deprecated. Use the
- ``C++11`` functions (``isfinite``, ``isnan`` etc) going
- forward. However to maintain consistent behaviour with comparison
- operators, these functions only inspect the scalar part of the
- :class:`Jet`.
- Bug Fixes & Minor Changes
- -------------------------
- #. Worked around an MSVC ordering bug when using C++17/20 (Sergiu
- Deitsch)
- #. Added a CITATION.cff file. (Sergiu Deitsch)
- #. Updated included gtest version to 1.11.0. This should fix some
- ``C++20`` compilation problems. (Sameer Agarwal).
- #. Workaround ``MSVC`` ``STL`` deficiency in ``C++17`` mode (Sergiu
- Deitsch)
- #. Fix ``Jet`` test failures on ``ARMv8`` with recent ``Xcode``
- (Sergiu Deitsch)
- #. Fix unused arguments of ``Make1stOrderPerturbation`` (Dmitriy
- Korchemkin)
- #. Fix ``SuiteSparse`` path and version reporting (Sergiu Deitsch)
- #. Enable `GitHub` workflows and deprecate ``TravisCI`` (Sergiu
- Deitsch)
- #. Add missing includes (Sergiu Deitsch, Sameer Agarwal)
- #. Fix path for ``cuda-memcheck`` tests (Joydeep Biswas)
- #. ClangFormat cleanup (Sameer Agarwal)
- #. Set ``CMP0057`` policy for ``IN_LIST`` operator in
- ``FindSuiteSparse.cmake`` (Brent Yi)
- #. Do not define unusable import targets (Sergiu Deitsch)
- #. Fix Ubuntu 18.04 shared library build (Sergiu Deitsch)
- #. Force ``C++`` linker when building the ``C`` API (Sergiu Deitsch)
- #. Modernize the code to be inline with ``C++14`` (Sergiu Deitsch,
- Sameer Agarwal)
- #. Lots of fixes to make Ceres compile out of the box on Windows
- (Sergiu Deitsch)
- #. Standardize path handling using ``GNUImstallDirs`` (Sergiu Deitsch)
- #. Add final specifier to classes to help the compiler with
- devirtualization (Sameer Agarwal)
- #. LOTs of clean & modernization of the CMake build files (Sergiu
- Deitsch & Alex Stewart)
- #. Simplification to the symbol export logic (Sergiu Deitsch)
- #. Add cmake option ``ENABLE_BITCODE`` for iOS builds (John Harrison)
- #. Add const accessor for functor wrapped by auto/numeric-diff objects
- (Alex Stewart)
- #. Cleanup & refactor ``jet_test.cc``. (Sameer Agarwal)
- #. Fix docs of supported sparse backends for mixed precision solvers
- (Alex Stewart)
- #. Fix C++20 compilation (Sergiu Deitsch)
- #. Add an example for ``BiCubicInterpolator`` (Dmitriy Korcchemkin)
- #. Add a section to the documentation on implicit and inverse function
- theorems (Sameer Agarwal)
- #. Add a note about Trigg's correction (Sameer Agarwal)
- ``Problem::RemoveParameterBlock`` (Sameer Agarwal)
- (Sameer Agarwal).
- (William Gandler)
- ``IterationSummary`` (Alexander Karatarakis)
- to 1. (Fuhao Shi)
- * ``format not a string literal``
- * ``-Wno-maybe-uninitialized error``
- * ``nonnull arg compared to NULL``
- * ``-Wno-format-nonliteral``
- * ``-Wmissing-field-initializers``
- * ``-Werror``
- (Austin Schuh)
- 2.0.0
- =====
- New Features
- version >= 3.3 & CMake version >= 3.5, XCode version >= 11.2 (Sameer
- Agarwal, Alex Stewart & Keir Mierle)
- :class:`AutoDiffCostFunction`, :class:`NumericDiffCostFunction`
- support an arbitrary number of parameter blocks using variadic
- templates (Johannes Beck)
- sparse linear algebra library. (Alex Stewart)
- ``SPARSE_NORMAL_CHOLESKY``. (Sameer Agarwal)
- size, which effectively makes the parameter block constant. In
- particular, this allows for a ``SubsetParameterization`` that holds
- all the coordinates of a parameter block constant. (Sameer Agarwal
- & Emil Ernerfeldt)
- ``CXSparse``. (Sameer Agarwal)
- :func:`Problem::EvaluateResidualBlockAssumingParametersUnchanged`. (Sameer
- Agarwal)
- numerical derivatives. (Sameer Agarwal)
- sparsity. (Sameer Agarwal)
- small matrices. (yangfan)
- :class:`AutoDiffFirstOrderFunction`. (Sameer Agarwal)
- just like ``AutoDiffCostFunction``. (Johannes Graeter)
- Backward Incompatible API Changes
- ``Problem::Options`` for a more correct API.
- Bug Fixes & Minor Changes
- Bayes Nie, Chris Choi, Frank, Kuang Fangjun, Dmitriy Korchemkin,
- huangqinjin, Patrik Huber, Nikolaus Demmel, Lorenzo Lamia)
- Stewart, NeroBurner, Alastair Harrison, Linus Mårtensson, Nikolaus Demmel)
- constant parameters. (Sameer Agarwal & Frédéric Devernay)
- constant (Ky Waegel & Sameer Agarwal)
- (Alex Stewart & Frank Dellaert)
- 1.14.0
- ======
- New Features
- state. (Mike Vitus)
- really fast. [EXPERIMENTAL] (Keir Mierle & Sameer Agarwal)
- Backward Incompatible API Changes
- ``Solver::Options::num_threads`` controls all parallelism in Ceres
- Solver now. Similarly,
- ``Solver::Summary::num_linear_solver_threads_given`` and
- ``Solver::Summary::num_linear_solver_threads_used`` are also
- deprecated.
- Bug Fixes & Minor Changes
- 1.13.0
- ======
- New Features
- faster due to fewer function evaluations. (Sameer Agarwal)
- now computes the normal equations exploiting the static block
- sparsity structure. (Cheng Wang & Sameer Agarwal)
- Backward Incompatible API Changes
- The enum ``CovarianceAlgorithmType`` which controls the linear algebra
- algorithm used to compute the covariance used to combine the choice of
- the algorithm and the choice of the sparse linear algebra library into
- the enum name. So we had ``SUITE_SPARSE_QR`` and
- ``EIGEN_SPARSE_QR``. ``Covariance::Options`` now has a separate member
- allowing the user to choose the sparse linear algebra library, just
- like the solver and ``CovarianceAlgorithmType`` now takes values
- ``DENSE_SVD`` and ``SPARSE_QR``. This is a forward looking change that
- will allow us to develop more flexible covariance estimation
- algorithms with multiple linear algebra backends.
- Bug Fixes & Minor Changes
- Debug mode. (Philipp Hubner)
- Braun-Jones)
- Agarwal)
- ``LineSearchMinimizer`` is used. (Sameer Agarwal)
- informative. (Sameer Agarwal)
- Stewart)
- available. (Alex Stewart)
- Sanchez-Saez)
- available. (Alex Stewart)
- nesting. (Alex Stewart)
- differentiation. (Sameer Agarwal)
- paths. (Alex Stewart)
- ``Solver::Summary`` (Sameer Agarwal)
- Stewart)
- Stewart)
- Braun-Jones)
- Stewart)
- (Sameer Agarwal)
- Stewart)
- (Sameer Agarwal)
- Stewart)
- Agarwal, Alex Stewart, William Rucklidge)
- 1.12.0
- ======
- New Features
- performance. (Andrew Hunter)
- and ``ceil`` (Alessandro Gentilini & Michael Vitus)
- Gossow)
- Backward Incompatible API Changes
- renamed to
- ``Solver::Options::gradient_check_numeric_derivative_relative_step_size``. (Sameer
- Agarwal)
- Bug Fixes & Minor Changes
- Stewart)
- CeresConfig.cmake. (Alex Stewart)
- found. (Alex Stewart)
- support MSVC. (Alex Stewart)
- ``a2b8a8e07628e5fd60644b6dd99c1b5e7d7f1f47`` (Sameer Agarwal)
- ``<cmath>``. (Alex Stewart)
- (Alex Stewart)
- (Alex Stewart)
- DynamicNumericDiffCostFunction. (Sameer Agarwal)
- gradient_checker_test. (Sameer Agarwal)
- Agarwal)
- Hyeong Hong)
- (Sameer Agarwal)
- EXPECT_NEAR. (Phillip Hubner)
- IterationCallback. (Sameer Agarwal)
- Vitus)
- errors. (Alex Stewart & Kichang Kim)
- ``LineSearchDirection::Options`` (Nicolai Wojke)
- Stewart)
- Mierle)
- Agarwal)
- estimation on a ceres built without SuiteSparse support. (Simon
- Rutishauser)
- MSVC. (Alex Stewart)
- macros. (Alex Stewart)
- Agarwal)
- (Sameer Agarwal)
- C++11. (Alex Stewart)
- Ole Salscheider)
- Agarwal)
- Agarwal)
- Van Loock)
- Agarwal)
- include/ceres/version.h. (Alex Stewart)
- localtime_r() instead of localtime() for time formatting (Simon
- Rutishauser)
- 1.11.0
- ======
- New Features
- Ben-Nun)
- smooth interpolation of sampled functions and integration with
- automatic differentiation.
- Steve Hsu)
- can be constructed as a cartesian product of other local
- parameterization.
- registry.
- sparsity.
- Bug Fixes & Minor Changes
- portability issues with gtest / type_info::operator== & Eigen with
- Clang on OS X vs GCC 4.9+ on Linux requiring contradictory 'fixes'.
- not tests or examples, to bypass gtest / type_info::operator==
- issue.
- ``system_test``, where each test case is its own test.
- ``CompressedRowSparseMatrix::AppendRows`` when it was called with a
- matrix of size zero.
- (Alexander Alekhin).
- Schonberger).
- (Sergey Sharybin).
- ``more_garbow_hillstrom``.
- Stebbing).
- (bvanevery).
- (bvanevery).
- Jones).
- (Chris Cooper).
- (Norman Goldstein).
- IsSparseLinearAlgebraLibraryTypeAvailable function (Pierre Moulon).
- NULL. This is consistent with how NULL LossFunctions are treated
- everywhere else. (Simon Rutishauser).
- Ben-Nun).
- (Petter Strandmark).
- Schonberger).
- (Johannes Schonberger).
- (Russell Smith).
- (Andrew Hundt).
- comparison (Pierre Moulon).
- Duchêne).
- (s1m3mu3@gmail.com).
- (s1m3mu3@gmail.com).
- gflags (arrigo.benedetti@gmail.com).
- OpenMP.
- to Ceres. (Chris Sweeney)
- code. (Bernhard Zeisl)
- (Johannes Schönberger)
- compressed_col_sparse_matrix_utils_test.
- 1.10.0
- ======
- New Features
- optimization problems. See the documentation for
- ``GradientProblem`` and ``GradientProblemSolver``.
- be done by setting
- ``Solver::Options::sparse_linear_algebra_library_type`` to
- ``EIGEN_SPARSE``. Performance should be comparable to
- ``CX_SPARSE``.
- .. NOTE::
- Because ``Eigen`` is a header only library, and some of the code
- related to sparse Cholesky factorization is LGPL, building Ceres
- with support for Eigen's sparse linear algebra is disabled by
- default and should be enabled explicitly.
- .. NOTE::
- For good performance, use Eigen version 3.2.2 or later.
- #. Added ``EIGEN_SPARSE_QR`` algorithm for covariance estimation using
- ``Eigen``'s sparse QR factorization. (Michael Vitus)
- sized problems (see documentation for
- ``Solver::Options::use_explicit_schur_complement``).
- for Ceres.
- been improved.
- ``CERES_VERSION_STRING`` macro.
- their solver configuration before calling ``Solve``.
- ``Problem::GetLossFunctionForResidualBlock``.
- Dal Grande)
- Backward Incompatible API Changes
- the implementation was an unnecessary layer of abstraction over
- ``CostFunctionToFunctor``.
- renamed to ``POLAK_RIBIERE``.
- iteration callback can easily be implemented in user code.
- been removed. It is not rank revealing and numerically poorly
- behaved. Sparse QR factorization is a much better way to do this.
- renamed to ``SUITE_SPARSE_QR`` to be consistent with
- ``EIGEN_SPARSE_QR``.
- ``Solver::Summary::preconditioner_type_given`` and
- ``Solver::Summary::preconditioner_type_used`` to be more consistent
- with how information about the linear solver is communicated.
- terribly useful. They have been replaced with
- ``CERES_VERSION_MAJOR``, ``CERES_VERSION_MINOR`` ,
- ``CERES_VERSION_REVISION`` and ``CERES_VERSION_ABI`` macros. In
- particular the functionality of ``CERES_VERSION`` is provided by
- ``CERES_VERSION_STRING`` macro.
- Bug Fixes
- PI. (Tobias Strauss)
- substantial solution quality improvement. (Rodney Hoskinson)
- LineSearchMinimizer.
- min_num_iterations (Johannes Schönberger)
- (Johannes Schönberger)
- Samples and Domink Reitzle)
- Reitzle)
- Solver::Options::function_tolerance. (Alessandro Gentilini)
- Piltz)
- 1.9.0
- =====
- New Features
- parameters when using the trust region minimizer.
- Jacobian changes over the course of the optimization can now be
- solved much more efficiently. (Richard Stebbing)
- build and ship DLLs. (Björn Piltz, Alex Stewart and Sergey
- Sharybin)
- build and use Ceres Solver.
- reporting. (See below for more details)
- Sphinx.
- differentiation for defining ``LocalParameterization`` objects
- (Alex Stewart)
- they can be up to 2G in size.
- as the sparse linear algebra library.
- ``Problem::GetParameterization``.
- DynamicAutoDiffCostFunction. (Joydeep Biswas)
- a custom ``IterationCallback``. (Sergey Sharybin)
- LAPACK).
- Backward Incompatible API Changes
- pointer that Ceres took ownership of. This is error prone behaviour
- which leads to problems when copying the ``Solver::Options`` struct
- around. This has been replaced with a ``shared_ptr`` to handle
- ownership correctly across copies.
- the solver has been renamed from ``SolverTerminationType`` to
- ``TerminationType``.
- The enum values have also changed. ``FUNCTION_TOLERANCE``,
- ``GRADIENT_TOLERANCE`` and ``PARAMETER_TOLERANCE`` have all been
- replaced by ``CONVERGENCE``.
- ``NUMERICAL_FAILURE`` has been replaced by ``FAILURE``.
- ``USER_ABORT`` has been renamed to ``USER_FAILURE``.
- Further ``Solver::Summary::error`` has been renamed to
- ``Solver::Summary::message``. It contains a more detailed
- explanation for why the solver terminated.
- gradient tolerance. i.e., The solver converged when
- .. math:: \|g(x)\|_\infty < \text{gradient_tolerance} *
- \|g(x_0)\|_\infty
- where :math:`g(x)` is the gradient of the objective function at
- :math:`x` and :math:`x_0` is the parmeter vector at the start of
- the optimization.
- This has changed to an absolute tolerance, i.e. the solver
- converges when
- .. math:: \|g(x)\|_\infty < \text{gradient_tolerance}
- anymore. Thus the preprocessor define
- ``CERES_NO_LINE_SEARCH_MINIMIZER`` has been removed.
- Bug Fixes
- `IMPORTED_LINK_INTERFACE_LIBRARIES_[DEBUG/RELEASE]` mechanism when
- building shared libraries. (Björn Piltz)
- search minimizer code (Alex Stewart)
- column blocks. (Richard Bowen)
- called. (Alex Stewart)
- >``. (Filippo Basso)
- ``DeleteRows``.q
- ``Problem::Evaluate``. (Stefan Leutenegger)
- eigenvalue solver.
- Persson).
- Schönberger)
- the other
- (Alex Stewart)
- ``Solver::Options::linear_solver_ordering`` and
- ``Solver::Options::inner_iteration_ordering``. As a consequence the
- ``NDK`` build now depends on ``libc++`` from the ``LLVM`` project.
- 1.8.0
- =====
- New Features
- dependency checking and GUI support. (Alex Stewart)
- differentiated cost functions whose sizing is determined at run
- time.
- residuals just like ``AutoDiffCostFunction``.
- the Schur Eliminator.
- based preconditioning, including a new fast single linkage
- clustering algorithm.
- Bug Fixes
- Windows. (Alex Stewart)
- Linux. (Alex Stewart)
- Clang. (Alex Stewart)
- Lynen)
- 1.7.0
- =====
- Backward Incompatible API Changes
- to ``Solver::Options::sparse_linear_algebra_library_type``.
- New Features
- solvers.
- optimized ``BLAS`` and ``LAPACK`` implementations (e.g., Intel MKL,
- ACML, OpenBLAS etc) can now be used to do the dense linear algebra
- for ``DENSE_QR``, ``DENSE_NORMAL_CHOLESKY`` and ``DENSE_SCHUR``
- and runtime statistics for inner iterations are not reported in
- ``Solver::Summary`` and ``Solver::Summary::FullReport``.
- custom solution. Previously, Ceres had a custom option, but this is
- now deprecated in favor of CMake's built in support for switching
- between static and shared. Turn on BUILD_SHARED_LIBS to get shared
- Ceres libraries.
- #. No more dependence on Protocol Buffers.
- #. Incomplete LQ factorization.
- #. Ability to write trust region problems to disk.
- #. Add sinh, cosh, tanh and tan functions to automatic differentiation
- (Johannes Schönberger)
- #. Simplifications to the cmake build file.
- #. ``miniglog`` can now be used as a replacement for ``google-glog``
- on non Android platforms. (This is NOT recommended).
- Bug Fixes
- ---------
- #. Fix ``ITERATIVE_SCHUR`` solver to work correctly when the schur
- complement is of size zero. (Soohyun Bae)
- #. Fix the ``spec`` file for generating ``RPM`` packages (Brian Pitts
- and Taylor Braun-Jones).
- #. Fix how ceres calls CAMD (Manas Jagadev)
- #. Fix breakage on old versions of SuiteSparse. (Fisher Yu)
- #. Fix warning C4373 in Visual Studio (Petter Strandmark)
- #. Fix compilation error caused by missing suitesparse headers and
- reorganize them to be more robust. (Sergey Sharybin)
- #. Check GCC Version before adding -fast compiler option on
- OSX. (Steven Lovegrove)
- #. Add documentation for minimizer progress output.
- #. Lint and other cleanups (William Rucklidge and James Roseborough)
- #. Collections port fix for MSC 2008 (Sergey Sharybin)
- #. Various corrections and cleanups in the documentation.
- #. Change the path where CeresConfig.cmake is installed (Pablo
- Speciale)
- #. Minor errors in documentation (Pablo Speciale)
- #. Updated depend.cmake to follow CMake IF convention. (Joydeep
- Biswas)
- #. Stabilize the schur ordering algorithm.
- #. Update license header in split.h.
- #. Enabling -O4 (link-time optimization) only if compiler/linker
- support it. (Alex Stewart)
- #. Consistent glog path across files.
- #. ceres-solver.spec: Use cleaner, more conventional Release string
- (Taylor Braun-Jones)
- #. Fix compile bug on RHEL6 due to missing header (Taylor Braun-Jones)
- #. CMake file is less verbose.
- #. Use the latest upstream version of google-test and gmock.
- #. Rationalize some of the variable names in ``Solver::Options``.
- #. Improve Summary::FullReport when line search is used.
- #. Expose line search parameters in ``Solver::Options``.
- #. Fix update of L-BFGS history buffers after they become full. (Alex
- Stewart)
- #. Fix configuration error on systems without SuiteSparse installed
- (Sergey Sharybin)
- #. Enforce the read call returns correct value in
- ``curve_fitting_c.c`` (Arnaud Gelas)
- #. Fix DynamicAutoDiffCostFunction (Richard Stebbing)
- #. Fix Problem::RemoveParameterBlock documentation (Johannes
- Schönberger)
- #. Fix a logging bug in parameter_block.h
- #. Refactor the preconditioner class structure.
- #. Fix an uninitialized variable warning when building with ``GCC``.
- #. Fix a reallocation bug in
- ``CreateJacobianBlockSparsityTranspose``. (Yuliy Schwartzburg)
- #. Add a define for O_BINARY.
- #. Fix miniglog-based Android NDK build; now works with NDK r9. (Scott
- Ettinger)
- 1.6.0
- =====
- New Features
- ------------
- #. Major Performance improvements.
- a. Schur type solvers (``SPARSE_SCHUR``, ``DENSE_SCHUR``,
- ``ITERATIVE_SCHUR``) are significantly faster due to custom BLAS
- routines and fewer heap allocations.
- b. ``SPARSE_SCHUR`` when used with ``CX_SPARSE`` now uses a block
- AMD for much improved factorization performance.
- c. The jacobian matrix is pre-ordered so that
- ``SPARSE_NORMAL_CHOLESKY`` and ``SPARSE_SCHUR`` do not have to
- make copies inside ``CHOLMOD``.
- d. Faster autodiff by replacing division by multplication by inverse.
- e. When compiled without threads, the schur eliminator does not pay
- the penalty for locking and unlocking mutexes.
- #. Users can now use ``linear_solver_ordering`` to affect the
- fill-reducing ordering used by ``SUITE_SPARSE`` for
- ``SPARSE_NORMAL_CHOLESKY``.
- #. ``Problem`` can now report the set of parameter blocks it knows about.
- #. ``TrustRegionMinimizer`` uses the evaluator to compute the gradient
- instead of a matrix vector multiply.
- #. On ``Mac OS``, whole program optimization is enabled.
- #. Users can now use automatic differentiation to define new
- ``LocalParameterization`` objects. (Sergey Sharybin)
- #. Enable larger tuple sizes for Visual Studio 2012. (Petter Strandmark)
- Bug Fixes
- ---------
- #. Update the documentation for ``CostFunction``.
- #. Fixed a typo in the documentation. (Pablo Speciale)
- #. Fix a typo in suitesparse.cc.
- #. Bugfix in ``NumericDiffCostFunction``. (Nicolas Brodu)
- #. Death to BlockSparseMatrixBase.
- #. Change Minimizer::Options::min_trust_region_radius to double.
- #. Update to compile with stricter gcc checks. (Joydeep Biswas)
- #. Do not modify cached CMAKE_CXX_FLAGS_RELEASE. (Sergey Sharybin)
- #. ``<iterator>`` needed for back_insert_iterator. (Petter Strandmark)
- #. Lint cleanup. (William Rucklidge)
- #. Documentation corrections. (Pablo Speciale)
- 1.5.0
- =====
- Backward Incompatible API Changes
- ---------------------------------
- #. Added ``Problem::Evaluate``. Now you can evaluate a problem or any
- part of it without calling the solver.
- In light of this the following settings have been deprecated and
- removed from the API.
- - ``Solver::Options::return_initial_residuals``
- - ``Solver::Options::return_initial_gradient``
- - ``Solver::Options::return_initial_jacobian``
- - ``Solver::Options::return_final_residuals``
- - ``Solver::Options::return_final_gradient``
- - ``Solver::Options::return_final_jacobian``
- Instead we recommend using something like this.
- .. code-block:: c++
- Problem problem;
- // Build problem
- vector<double> initial_residuals;
- problem.Evaluate(Problem::EvaluateOptions(),
- NULL, /* No cost */
- &initial_residuals,
- NULL, /* No gradient */
- NULL /* No jacobian */);
- Solver::Options options;
- Solver::Summary summary;
- Solver::Solve(options, &problem, &summary);
- vector<double> final_residuals;
- problem.Evaluate(Problem::EvaluateOptions(),
- NULL, /* No cost */
- &final_residuals,
- NULL, /* No gradient */
- NULL /* No jacobian */);
- New Features
- ------------
- #. Problem now supports removal of ParameterBlocks and
- ResidualBlocks. There is a space/time tradeoff in doing this which
- is controlled by
- ``Problem::Options::enable_fast_parameter_block_removal``.
- #. Ceres now supports Line search based optimization algorithms in
- addition to trust region algorithms. Currently there is support for
- gradient descent, non-linear conjugate gradient and LBFGS search
- directions.
- #. Added ``Problem::Evaluate``. Now you can evaluate a problem or any
- part of it without calling the solver. In light of this the
- following settings have been deprecated and removed from the API.
- - ``Solver::Options::return_initial_residuals``
- - ``Solver::Options::return_initial_gradient``
- - ``Solver::Options::return_initial_jacobian``
- - ``Solver::Options::return_final_residuals``
- - ``Solver::Options::return_final_gradient``
- - ``Solver::Options::return_final_jacobian``
- #. New, much improved HTML documentation using Sphinx.
- #. Changed ``NumericDiffCostFunction`` to take functors like
- ``AutoDiffCostFunction``.
- #. Added support for mixing automatic, analytic and numeric
- differentiation. This is done by adding ``CostFunctionToFunctor``
- and ``NumericDiffFunctor`` objects to the API.
- #. Sped up the robust loss function correction logic when residual is
- one dimensional.
- #. Sped up ``DenseQRSolver`` by changing the way dense jacobians are
- stored. This is a 200-500% improvement in linear solver performance
- depending on the size of the problem.
- #. ``DENSE_SCHUR`` now supports multi-threading.
- #. Greatly expanded ``Summary::FullReport``:
- - Report the ordering used by the ``LinearSolver``.
- - Report the ordering used by the inner iterations.
- - Execution timing breakdown into evaluations and linear solves.
- - Effective size of the problem solved by the solver, which now
- accounts for the size of the tangent space when using a
- ``LocalParameterization``.
- #. Ceres when run at the ``VLOG`` level 3 or higher will report
- detailed timing information about its internals.
- #. Remove extraneous initial and final residual evaluations. This
- speeds up the solver a bit.
- #. Automatic differenatiation with a dynamic number of parameter
- blocks. (Based on an idea by Thad Hughes).
- #. Sped up problem construction and destruction.
- #. Added matrix adapters to ``rotation.h`` so that the rotation matrix
- routines can work with row and column major matrices. (Markus Moll)
- #. ``SCHUR_JACOBI`` can now be used without ``SuiteSparse``.
- #. A ``.spec`` file for producing RPMs. (Taylor Braun-Jones)
- #. ``CMake`` can now build the sphinx documentation (Pablo Speciale)
- #. Add support for creating a CMake config file during build to make
- embedding Ceres in other CMake-using projects easier. (Pablo
- Speciale).
- #. Better error reporting in ``Problem`` for missing parameter blocks.
- #. A more flexible ``Android.mk`` and a more modular build. If binary
- size and/or compile time is a concern, larger parts of the solver
- can be disabled at compile time.
- Bug Fixes
- ---------
- #. Compilation fixes for MSVC2010 (Sergey Sharybin)
- #. Fixed "deprecated conversion from string constant to char*"
- warnings. (Pablo Speciale)
- #. Correctly propagate ifdefs when building without Schur eliminator
- template specializations.
- #. Correct handling of ``LIB_SUFFIX`` on Linux. (Yuliy Schwartzburg).
- #. Code and signature cleanup in ``rotation.h``.
- #. Make examples independent of internal code.
- #. Disable unused member in ``gtest`` which results in build error on
- OS X with latest Xcode. (Taylor Braun-Jones)
- #. Pass the correct flags to the linker when using
- ``pthreads``. (Taylor Braun-Jones)
- #. Only use ``cmake28`` macro when building on RHEL6. (Taylor
- Braun-Jones)
- #. Remove ``-Wno-return-type-c-linkage`` when compiling with
- GCC. (Taylor Braun-Jones)
- #. Fix ``No previous prototype`` warnings. (Sergey Sharybin)
- #. MinGW build fixes. (Sergey Sharybin)
- #. Lots of minor code and lint fixes. (William Rucklidge)
- #. Fixed a bug in ``solver_impl.cc`` residual evaluation. (Markus
- Moll)
- #. Fixed variadic evaluation bug in ``AutoDiff``.
- #. Fixed ``SolverImpl`` tests.
- #. Fixed a bug in ``DenseSparseMatrix::ToDenseMatrix()``.
- #. Fixed an initialization bug in ``ProgramEvaluator``.
- #. Fixes to Android.mk paths (Carlos Hernandez)
- #. Modify ``nist.cc`` to compute accuracy based on ground truth
- solution rather than the ground truth function value.
- #. Fixed a memory leak in ``cxsparse.cc``. (Alexander Mordvintsev).
- #. Fixed the install directory for libraries by correctly handling
- ``LIB_SUFFIX``. (Taylor Braun-Jones)
- 1.4.0
- =====
- Backward Incompatible API Changes
- ---------------------------------
- The new ordering API breaks existing code. Here the common case fixes.
- **Before**
- .. code-block:: c++
- options.linear_solver_type = ceres::DENSE_SCHUR
- options.ordering_type = ceres::SCHUR
- **After**
- .. code-block:: c++
- options.linear_solver_type = ceres::DENSE_SCHUR
- **Before**
- .. code-block:: c++
- options.linear_solver_type = ceres::DENSE_SCHUR;
- options.ordering_type = ceres::USER;
- for (int i = 0; i < num_points; ++i) {
- options.ordering.push_back(my_points[i])
- }
- for (int i = 0; i < num_cameras; ++i) {
- options.ordering.push_back(my_cameras[i])
- }
- options.num_eliminate_blocks = num_points;
- **After**
- .. code-block:: c++
- options.linear_solver_type = ceres::DENSE_SCHUR;
- options.ordering = new ceres::ParameterBlockOrdering;
- for (int i = 0; i < num_points; ++i) {
- options.linear_solver_ordering->AddElementToGroup(my_points[i], 0);
- }
- for (int i = 0; i < num_cameras; ++i) {
- options.linear_solver_ordering->AddElementToGroup(my_cameras[i], 1);
- }
- New Features
- ------------
- #. A new richer, more expressive and consistent API for ordering
- parameter blocks.
- #. A non-linear generalization of Ruhe & Wedin's Algorithm II. This
- allows the user to use variable projection on separable and
- non-separable non-linear least squares problems. With
- multithreading, this results in significant improvements to the
- convergence behavior of the solver at a small increase in run time.
- Strandmark)
- non-monotonic step.
- ``Problem``. (Fisher)
- Bug Fixes
- ``EXPECT_DEATH_IF_SUPPORTED`` macros.
- Snavely's camera model. (Ricardo Martin)
- 1.3.0
- =====
- New Features
- ------------
- #. Android Port (Scott Ettinger also contributed to the port)
- #. Windows port. (Changchang Wu and Pierre Moulon also contributed to the port)
- #. New subspace Dogleg Solver. (Markus Moll)
- #. Trust region algorithm now supports the option of non-monotonic steps.
- #. New loss functions ``ArcTanLossFunction``, ``TolerantLossFunction``
- and ``ComposedLossFunction``. (James Roseborough).
- #. New ``DENSE_NORMAL_CHOLESKY`` linear solver, which uses Eigen's
- LDLT factorization on the normal equations.
- (Petter Strandark)
- regression test suite. (Thanks to Douglas Bates for suggesting this.)
- region (Markus Moll)
- towards developing first order/gradient based solvers.
- installing and uninstalling the library and Gerrit hooks (Arnaud
- Gelas)
- slightly slower ``DENSE_SCHUR`` and ``SPARSE_SCHUR`` solvers).
- problem before solving.
- help with debugging.
- associated versioning and build release script changes.
- Bug Fixes
- relative tolerances rather than absolute tolerances.
- windows. (Petter Strandmark)
- Strandmark)
- steps that it takes. (Markus Moll)
- Schur eliminator.
- Summary::FullReport if it is used.
- to ``CERES_NO_PROTOCOL_BUFFERS`` for consistency.
- its results.
- namespace conflicts.
- 1.2.3
- =====
- Bug Fixes
- alignment requirements (Koichi Akabe & Stephan Kassemeyer).
- (Nick Lewycky).
- 1.2.2
- =====
- Bug Fixes
- ``FixedArray`` in automatic differeniation.
- 1.2.1
- =====
- New Features
- how the Levenberg-Marquardt and Dogleg methods work.
- Bug Fixes
- Moll)
- Zarrabeiti)
- camera pairs. This was debugging code.
- Akabe)
- 1.2.0
- =====
- New Features
- factorization time for sparse ``CHOLMOD`` significantly.
- strategies. Currently only Levenberg-Marquardt is supported, but
- this refactoring opens the door for Dog-leg, Stiehaug and others.
- organization.
- Bug Fixes
- 1.1.1
- =====
- Bug Fixes
- to prevent oscillating between well and ill posed linear problems.
- 1.1.0
- =====
- New Features
- and a block Jacobi preconditioner for it.
- checked and used. Now ``SuiteSparse`` is built by default, only if
- all of its dependencies are present.
- text format so that they can loaded into ``MATLAB``.
- Bug Fixes
- values.
- 1.0.0
- =====
- Initial open source release. Nathan Wiegand contributed to the Mac OSX
- port.
- Origins
- =======
- Ceres Solver grew out of the need for general least squares solving at
- Google. In early 2010, Sameer Agarwal and Frederik Schaffalitzky
- started the development of Ceres Solver. Frederik left Google shortly
- thereafter and Keir Mierle stepped in to take his place. After two
- years of on-and-off development, Ceres Solver was released as open
- source in May of 2012.
|