aboutsummaryrefslogtreecommitdiff
path: root/docs/changes.tex
diff options
context:
space:
mode:
Diffstat (limited to 'docs/changes.tex')
-rw-r--r--docs/changes.tex266
1 files changed, 0 insertions, 266 deletions
diff --git a/docs/changes.tex b/docs/changes.tex
deleted file mode 100644
index 72f7950..0000000
--- a/docs/changes.tex
+++ /dev/null
@@ -1,266 +0,0 @@
-%!TEX root = ceres-solver.tex
-
-\chapter{Version History}
-\section*{1.5.0}
-\subsection{New Features}
-\begin{itemize}
-\item 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.
-\item Speedup the robust loss function correction logic when residual is one dimensional.
-\item Changed \texttt{NumericDiffCostFunction} to take functors like \texttt{AutoDiffCostFunction}.
-\item Added support for mixing automatic, analytic and numeric differentiation. This is done by adding \texttt{CostFunctionToFunctor} and \texttt{NumericDiffFunctor} objects.
-\end{itemize}
-
-\subsection{Bug Fixes}
-\begin{itemize}
-\item Fixed varidic evaluation bug in \texttt{AutoDiff}.
-\item Fixed \texttt{SolverImpl} tests.
-\item Fixed a bug in \texttt{DenseSparseMatrix::ToDenseMatrix()}.
-\item Fixed an initialization bug in \texttt{ProgramEvaluator}.
-\end{itemize}
-
-\section*{1.4.0}
-\subsection{API Changes}
-The new ordering API breaks existing code. Here the common case fixes.
-\subsubsection{Before}
-\begin{minted}[mathescape]{c++}
-options.linear_solver_type = ceres::DENSE_SCHUR
-options.ordering_type = ceres::SCHUR
-\end{minted}
-\subsubsection{After}
-\begin{minted}[mathescape]{c++}
-options.linear_solver_type = ceres::DENSE_SCHUR
-\end{minted}
-\subsubsection{Before}
-\begin{minted}[mathescape]{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;
-\end{minted}
-\subsubsection{After}
-\begin{minted}[mathescape]{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);
-}
-\end{minted}
-\subsection{New Features}
-\begin{itemize}
-\item A new richer, more expressive and consistent API for ordering
- parameter blocks.
-\item 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.
-\item An image denoising example using fields of experts. (Petter
- Strandmark)
-\item Defines for Ceres version and ABI version.
-\item Higher precision timer code where available. (Petter Strandmark)
-\item Example Makefile for users of Ceres.
-\item IterationSummary now informs the user when the step is a
- non-monotonic step.
-\item Fewer memory allocations when using \texttt{DenseQRSolver}.
-\item GradientChecker for testing CostFunctions (William Rucklidge)
-\item Add support for cost functions with 10 parameter blocks in
- Problem. (Fisher)
-\item Add support for 10 parameter blocks in AutoDiffCostFunction.
-\end{itemize}
-
-\subsection{Bug Fixes}
-\begin{itemize}
-\item static cast to force Eigen::Index to long conversion
-\item Change LOG(ERROR) to LOG(WARNING) in \texttt{schur\_complement\_solver.cc}.
-\item Remove verbose logging from \texttt{DenseQRSolve}.
-\item Fix the Android NDK build.
-\item Better handling of empty and constant Problems.
-\item Remove an internal header that was leaking into the public API.
-\item Memory leak in \texttt{trust\_region\_minimizer.cc}
-\item Schur ordering was operating on the wrong object (Ricardo Martin)
-\item MSVC fixes (Petter Strandmark)
-\item Various fixes to \texttt{nist.cc} (Markus Moll)
-\item Fixed a jacobian scaling bug.
-\item Numerically robust computation of \texttt{model\_cost\_change}.
-\item Signed comparison compiler warning fixes (Ricardo Martin)
-\item Various compiler warning fixes all over.
-\item Inclusion guard fixes (Petter Strandmark)
-\item Segfault in test code (Sergey Popov)
-\item Replaced EXPECT/ASSERT\_DEATH with the more portable
- EXPECT\_DEATH\_IF\_SUPPORTED macros.
-\item Fixed the camera projection model in Ceres' implementation of
- Snavely's camera model. (Ricardo Martin)
-\end{itemize}
-
-
-\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 New example \texttt{nist.cc} and data from the NIST non-linear
- regression test suite. (Thanks to Douglas Bates for suggesting this.)
-\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 Fix how invalid step evaluations are handled.
-\item Change the slop handling around zero for model cost changes to use
-relative tolerances rather than absolute tolerances.
-\item Fix an inadvertant integer to bool conversion. (Petter Strandmark)
-\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.