mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
98bf14d2b9
Change-Id: I521e11f2d20bf24960bbc6b5dab4ec8bb1503d23
161 lines
7.6 KiB
TeX
161 lines
7.6 KiB
TeX
%!TEX root = ceres-solver.tex
|
|
|
|
\chapter{Version History}
|
|
\section*{1.3.0}
|
|
\subsection{New Features}
|
|
\begin{itemize}
|
|
\item Android Port (Scott Ettinger also contributed to the port)
|
|
\item Windows port. (Changchang Wu and Pierre Moulon also contributed to the port)
|
|
\item New subspace Dogleg Solver. (Markus Moll)
|
|
\item Trust region algorithm now supports the option of non-monotonic steps.
|
|
\item New loss functions \texttt{ArcTanLossFunction,
|
|
TolerantLossFunction} and \texttt{ComposedLossFunction}. (James Roseborough).
|
|
\item New \texttt{DENSE\_NORMAL\_CHOLESKY} linear solver, which uses Eigen's
|
|
LDLT factorization on the normal equations.
|
|
\item Cached symbolic factorization when using \texttt{CXSparse}.
|
|
(Petter Strandark)
|
|
\item The traditional Dogleg solver now uses an elliptical trust
|
|
region (Markus Moll)
|
|
\item Support for returning initial and final gradients \& Jacobians.
|
|
\item Gradient computation support in the evaluators, with an eye
|
|
towards developing first order/gradient based solvers.
|
|
\item A better way to compute \texttt{Solver::Summary::fixed\_cost}. (Markus Moll)
|
|
\item \texttt{CMake} support for building documentation, separate examples,
|
|
installing and uninstalling the library and Gerrit hooks (Arnaud
|
|
Gelas)
|
|
\item \texttt{SuiteSparse4} support (Markus Moll)
|
|
\item Support for building Ceres without \texttt{TR1} (This leads to
|
|
slightly slower \texttt{DENSE\_SCHUR} and \texttt{SPARSE\_SCHUR} solvers).
|
|
\item \texttt{BALProblem} can now write a problem back to disk.
|
|
\item \texttt{bundle\_adjuster} now allows the user to normalize and perturb the
|
|
problem before solving.
|
|
\item Solver progress logging to file.
|
|
\item Added \texttt{Program::ToString} and
|
|
\texttt{ParameterBlock::ToString} to help with debugging.
|
|
\item Ability to build Ceres as a shared library (MacOS and Linux only), associated versioning and build release script changes.
|
|
\item Portable floating point classification API.
|
|
\end{itemize}
|
|
|
|
\subsection{Bug Fixes}
|
|
\begin{itemize}
|
|
\item Do not link to \texttt{libgomp} when building on
|
|
windows. (Petter Strandmark)
|
|
\item Include \texttt{gflags.h} in \texttt{test\_utils.cc}. (Petter
|
|
Strandmark)
|
|
\item Use standard random number generation routines. (Petter Strandmark)
|
|
\item \texttt{TrustRegionMinimizer} does not implicitly negate the
|
|
steps that it takes. (Markus Moll)
|
|
\item Diagonal scaling allows for equal upper and lower bounds. (Markus Moll)
|
|
\item TrustRegionStrategy does not misuse LinearSolver:Summary anymore.
|
|
\item Fix Eigen3 Row/Column Major storage issue. (Lena Gieseke)
|
|
\item QuaternionToAngleAxis now guarantees an angle in $[-\pi, \pi]$. (Guoxuan Zhang)
|
|
\item Added a workaround for a compiler bug in the Android NDK to the
|
|
Schur eliminator.
|
|
\item The sparse linear algebra library is only logged in
|
|
Summary::FullReport if it is used.
|
|
\item Rename the macro \texttt{CERES\_DONT\_HAVE\_PROTOCOL\_BUFFERS}
|
|
to \texttt{CERES\_NO\_PROTOCOL\_BUFFERS} for consistency.
|
|
\item Fix how static structure detection for the Schur eliminator logs
|
|
its results.
|
|
\item Correct example code in the documentation. (Petter Strandmark)
|
|
\item Fix \texttt{fpclassify.h} to work with the Android NDK and STLport.
|
|
\item Fix a memory leak in the \texttt{levenber\_marquardt\_strategy\_test.cc}
|
|
\item Fix an early return bug in the Dogleg solver. (Markus Moll)
|
|
\item Zero initialize Jets.
|
|
\item Moved \texttt{internal/ceres/mock\_log.h} to \texttt{internal/ceres/gmock/mock-log.h}
|
|
\item Unified file path handling in tests.
|
|
\item \texttt{data\_fitting.cc} includes \texttt{gflags}
|
|
\item Renamed Ceres' Mutex class and associated macros to avoid
|
|
namespace conflicts.
|
|
\item Close the BAL problem file after reading it (Markus Moll)
|
|
\item Fix IsInfinite on Jets.
|
|
\item Drop alignment requirements for Jets.
|
|
\item Fixed Jet to integer comparison. (Keith Leung)
|
|
\item Fix use of uninitialized arrays. (Sebastian Koch \& Markus Moll)
|
|
\item Conditionally compile gflag dependencies.(Casey Goodlett)
|
|
\item Add \texttt{data\_fitting.cc } to the examples \texttt{CMake} file.
|
|
\end{itemize}
|
|
|
|
\section*{1.2.3}
|
|
\subsection{Bug Fixes}
|
|
\begin{itemize}
|
|
\item \texttt{suitesparse\_test} is enabled even when \texttt{-DSUITESPARSE=OFF}.
|
|
\item \texttt{FixedArray} internal struct did not respect \texttt{Eigen}
|
|
alignment requirements (Koichi Akabe \& Stephan Kassemeyer).
|
|
\item Fixed \texttt{quadratic.cc} documentation and code mismatch
|
|
(Nick Lewycky).
|
|
\end{itemize}
|
|
\section*{1.2.2}
|
|
\subsection{Bug Fixes}
|
|
\begin{itemize}
|
|
\item Fix constant parameter blocks, and other minor fixes (Markus Moll)
|
|
\item Fix alignment issues when combining \texttt{Jet} and
|
|
\texttt{FixedArray} in automatic differeniation.
|
|
\item Remove obsolete \texttt{build\_defs} file.
|
|
\end{itemize}
|
|
\section*{1.2.1}
|
|
\subsection{New Features}
|
|
\begin{itemize}
|
|
\item Powell's Dogleg solver
|
|
\item Documentation now has a brief overview of Trust Region methods and how the Levenberg-Marquardt and Dogleg methods work.
|
|
\end{itemize}
|
|
\subsection{Bug Fixes}
|
|
\begin{itemize}
|
|
\item Destructor for \texttt{TrustRegionStrategy} was not virtual (Markus Moll)
|
|
\item Invalid \texttt{DCHECK} in \texttt{suitesparse.cc} (Markus Moll)
|
|
\item Iteration callbacks were not properly invoked (Luis Alberto Zarrabeiti)
|
|
\item Logging level changes in ConjugateGradientsSolver
|
|
\item VisibilityBasedPreconditioner setup does not account for skipped camera pairs. This was debugging code.
|
|
\item Enable SSE support on MacOS
|
|
\item \texttt{system\_test} was taking too long and too much memory (Koichi Akabe)
|
|
\end{itemize}
|
|
\section*{1.2.0}
|
|
\subsection{New Features}
|
|
\begin{itemize}
|
|
\item \texttt{CXSparse} support.
|
|
\item Block oriented fill reducing orderings. This
|
|
reduces the factorization time for sparse
|
|
\texttt{CHOLMOD} significantly.
|
|
\item New Trust region loop with support for multiple
|
|
trust region step strategies. Currently only Levenberg-Marquardt is supported, but this refactoring opens the door for Dog-leg, Stiehaug and others.
|
|
\item \texttt{CMake} file restructuring. Builds in \texttt{Release} mode by default, and now has platform specific tuning flags.
|
|
\item Re-organized documentation. No new content, but better organization.
|
|
\end{itemize}
|
|
|
|
\subsection{Bug Fixes}
|
|
\begin{itemize}
|
|
\item Fixed integer overflow bug in \texttt{block\_random\_access\_sparse\_matrix.cc}.
|
|
\item Renamed some macros to prevent name conflicts.
|
|
\item Fixed incorrent input to \texttt{StateUpdatingCallback}.
|
|
\item Fixes to AutoDiff tests.
|
|
\item Various internal cleanups.
|
|
\end{itemize}
|
|
|
|
\section*{1.1.1}
|
|
\subsection{Bug Fixes}
|
|
\begin{itemize}
|
|
\item Fix a bug in the handling of constant blocks. (Louis Simard)
|
|
\item Add an optional lower bound to the Levenberg-Marquardt regularizer to prevent oscillating between well and ill posed linear problems.
|
|
\item Some internal refactoring and test fixes.
|
|
\end{itemize}
|
|
\section{1.1.0}
|
|
\subsection{New Features}
|
|
\begin{itemize}
|
|
\item New iterative linear solver for general sparse problems - \texttt{CGNR} and a block Jacobi preconditioner for it.
|
|
\item Changed the semantics of how \texttt{SuiteSparse} dependencies are checked and used. Now \texttt{SuiteSparse} is built by default, only if all of its dependencies are present.
|
|
\item Automatic differentiation now supports dynamic number of residuals.
|
|
\item Support for writing the linear least squares problems to disk in text format so that they can loaded into \texttt{MATLAB}.
|
|
\item Linear solver results are now checked for nan and infinities.
|
|
\item Added \texttt{.gitignore} file.
|
|
\item A better more robust build system.
|
|
\end{itemize}
|
|
|
|
\subsection{Bug Fixes}
|
|
\begin{itemize}
|
|
\item Fixed a strict weak ordering bug in the schur ordering.
|
|
\item Grammar and typos in the documents and code comments.
|
|
\item Fixed tests which depended on exact equality between floating point values.
|
|
\end{itemize}
|
|
\section*{1.0.0}
|
|
Initial Release.
|