diff options
Diffstat (limited to 'docs/changes.tex')
-rw-r--r-- | docs/changes.tex | 266 |
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. |