Sameer Agarwal | 8ed29a7 | 2012-06-07 17:04:25 -0700 | [diff] [blame] | 1 | %!TEX root = ceres-solver.tex |
| 2 | |
| 3 | \chapter{Version History} |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 4 | \section*{1.4.0} |
| 5 | \subsection{API Changes} |
| 6 | The new ordering API breaks existing code. Here the common case fixes. |
| 7 | \subsubsection{Before} |
| 8 | \begin{minted}[mathescape]{c++} |
| 9 | options.linear_solver_type = ceres::DENSE_SCHUR |
| 10 | options.ordering_type = ceres::SCHUR |
| 11 | \end{minted} |
| 12 | \subsubsection{After} |
| 13 | \begin{minted}[mathescape]{c++} |
| 14 | options.linear_solver_type = ceres::DENSE_SCHUR |
| 15 | \end{minted} |
| 16 | \subsubsection{Before} |
| 17 | \begin{minted}[mathescape]{c++} |
| 18 | options.linear_solver_type = ceres::DENSE_SCHUR; |
| 19 | options.ordering_type = ceres::USER; |
| 20 | for (int i = 0; i < num_points; ++i) { |
| 21 | options.ordering.push_back(my_points[i]) |
| 22 | } |
| 23 | for (int i = 0; i < num_cameras; ++i) { |
| 24 | options.ordering.push_back(my_cameras[i]) |
| 25 | } |
| 26 | options.num_eliminate_blocks = num_points; |
| 27 | \end{minted} |
| 28 | \subsubsection{After} |
| 29 | \begin{minted}[mathescape]{c++} |
| 30 | options.linear_solver_type = ceres::DENSE_SCHUR; |
Sameer Agarwal | 68b32a9 | 2012-10-06 23:10:51 -0700 | [diff] [blame] | 31 | options.ordering = new ceres::ParameterBlockOrdering; |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 32 | for (int i = 0; i < num_points; ++i) { |
Sameer Agarwal | 68b32a9 | 2012-10-06 23:10:51 -0700 | [diff] [blame] | 33 | options.linear_solver_ordering->AddElementToGroup(my_points[i], 0); |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 34 | } |
| 35 | for (int i = 0; i < num_cameras; ++i) { |
Sameer Agarwal | 68b32a9 | 2012-10-06 23:10:51 -0700 | [diff] [blame] | 36 | options.linear_solver_ordering->AddElementToGroup(my_cameras[i], 1); |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 37 | } |
| 38 | \end{minted} |
| 39 | \subsection{New Features} |
| 40 | \begin{itemize} |
| 41 | \item A new richer, more expressive and consistent API for ordering |
| 42 | parameter blocks. |
| 43 | \item A non-linear generalization of Ruhe \& Wedin's Algorithm |
| 44 | II. This allows the user to use variable projection on separable and |
| 45 | non-separable non-linear least squares problems. With |
| 46 | multithreading, this results in significant improvements to the |
| 47 | convergence behavior of the solver at a small increase in run time. |
| 48 | \item An image denoising example using fields of experts. (Petter |
| 49 | Strandmark) |
| 50 | \item Defines for Ceres version and ABI version. |
| 51 | \item Higher precision timer code where available. (Petter Strandmark) |
| 52 | \item Example Makefile for users of Ceres. |
| 53 | \item IterationSummary now informs the user when the step is a |
| 54 | non-monotonic step. |
Sameer Agarwal | f5a7d9a | 2012-10-12 12:31:11 -0700 | [diff] [blame] | 55 | \item Fewer memory allocations when using \texttt{DenseQRSolver}. |
Sameer Agarwal | 8af9ebf | 2012-11-17 15:13:22 -0800 | [diff] [blame] | 56 | \item GradientChecker for testing CostFunctions (William Rucklidge) |
| 57 | \item Add support for cost functions with 10 parameter blocks in |
| 58 | Problem. (Fisher) |
| 59 | \item Add support for 10 parameter blocks in AutoDiffCostFunction. |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 60 | \end{itemize} |
Sameer Agarwal | f5a7d9a | 2012-10-12 12:31:11 -0700 | [diff] [blame] | 61 | |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 62 | \subsection{Bug Fixes} |
| 63 | \begin{itemize} |
Sameer Agarwal | 8af9ebf | 2012-11-17 15:13:22 -0800 | [diff] [blame] | 64 | \item static cast to force Eigen::Index to long conversion |
| 65 | \item Change LOG(ERROR) to LOG(WARNING) in \texttt{schur\_complement\_solver.cc}. |
| 66 | \item Remove verbose logging from \texttt{DenseQRSolve}. |
| 67 | \item Fix the Android NDK build. |
Sameer Agarwal | f5a7d9a | 2012-10-12 12:31:11 -0700 | [diff] [blame] | 68 | \item Better handling of empty and constant Problems. |
| 69 | \item Remove an internal header that was leaking into the public API. |
| 70 | \item Memory leak in \texttt{trust\_region\_minimizer.cc} |
| 71 | \item Schur ordering was operating on the wrong object (Ricardo Martin) |
| 72 | \item MSVC fixes (Petter Strandmark) |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 73 | \item Various fixes to \texttt{nist.cc} (Markus Moll) |
| 74 | \item Fixed a jacobian scaling bug. |
| 75 | \item Numerically robust computation of \texttt{model\_cost\_change}. |
| 76 | \item Signed comparison compiler warning fixes (Ricardo Martin) |
| 77 | \item Various compiler warning fixes all over. |
| 78 | \item Inclusion guard fixes (Petter Strandmark) |
| 79 | \item Segfault in test code (Sergey Popov) |
| 80 | \item Replaced EXPECT/ASSERT\_DEATH with the more portable |
Sameer Agarwal | 8af9ebf | 2012-11-17 15:13:22 -0800 | [diff] [blame] | 81 | EXPECT\_DEATH\_IF\_SUPPORTED macros. |
Sameer Agarwal | faf88a1 | 2012-09-26 10:38:20 -0700 | [diff] [blame] | 82 | \item Fixed the camera projection model in Ceres' implementation of |
| 83 | Snavely's camera model. (Ricardo Martin) |
| 84 | \end{itemize} |
| 85 | |
| 86 | |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 87 | \section*{1.3.0} |
| 88 | \subsection{New Features} |
| 89 | \begin{itemize} |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 90 | \item Android Port (Scott Ettinger also contributed to the port) |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 91 | \item Windows port. (Changchang Wu and Pierre Moulon also contributed to the port) |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 92 | \item New subspace Dogleg Solver. (Markus Moll) |
| 93 | \item Trust region algorithm now supports the option of non-monotonic steps. |
| 94 | \item New loss functions \texttt{ArcTanLossFunction, |
| 95 | TolerantLossFunction} and \texttt{ComposedLossFunction}. (James Roseborough). |
| 96 | \item New \texttt{DENSE\_NORMAL\_CHOLESKY} linear solver, which uses Eigen's |
Sameer Agarwal | 122cf83 | 2012-08-24 16:28:27 -0700 | [diff] [blame] | 97 | LDLT factorization on the normal equations. |
Sameer Agarwal | 98bf14d | 2012-08-30 10:26:44 -0700 | [diff] [blame] | 98 | \item Cached symbolic factorization when using \texttt{CXSparse}. |
| 99 | (Petter Strandark) |
Sameer Agarwal | 0b776b5 | 2012-08-30 15:26:17 -0700 | [diff] [blame] | 100 | \item New example \texttt{nist.cc} and data from the NIST non-linear |
| 101 | regression test suite. (Thanks to Douglas Bates for suggesting this.) |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 102 | \item The traditional Dogleg solver now uses an elliptical trust |
| 103 | region (Markus Moll) |
| 104 | \item Support for returning initial and final gradients \& Jacobians. |
| 105 | \item Gradient computation support in the evaluators, with an eye |
| 106 | towards developing first order/gradient based solvers. |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 107 | \item A better way to compute \texttt{Solver::Summary::fixed\_cost}. (Markus Moll) |
Sameer Agarwal | 122cf83 | 2012-08-24 16:28:27 -0700 | [diff] [blame] | 108 | \item \texttt{CMake} support for building documentation, separate examples, |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 109 | installing and uninstalling the library and Gerrit hooks (Arnaud |
| 110 | Gelas) |
Sameer Agarwal | 122cf83 | 2012-08-24 16:28:27 -0700 | [diff] [blame] | 111 | \item \texttt{SuiteSparse4} support (Markus Moll) |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 112 | \item Support for building Ceres without \texttt{TR1} (This leads to |
| 113 | slightly slower \texttt{DENSE\_SCHUR} and \texttt{SPARSE\_SCHUR} solvers). |
| 114 | \item \texttt{BALProblem} can now write a problem back to disk. |
Sameer Agarwal | 8b64140 | 2012-08-29 05:41:22 -0700 | [diff] [blame] | 115 | \item \texttt{bundle\_adjuster} now allows the user to normalize and perturb the |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 116 | problem before solving. |
| 117 | \item Solver progress logging to file. |
| 118 | \item Added \texttt{Program::ToString} and |
| 119 | \texttt{ParameterBlock::ToString} to help with debugging. |
| 120 | \item Ability to build Ceres as a shared library (MacOS and Linux only), associated versioning and build release script changes. |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 121 | \item Portable floating point classification API. |
| 122 | \end{itemize} |
| 123 | |
| 124 | \subsection{Bug Fixes} |
| 125 | \begin{itemize} |
Sameer Agarwal | 0b776b5 | 2012-08-30 15:26:17 -0700 | [diff] [blame] | 126 | \item Fix how invalid step evaluations are handled. |
| 127 | \item Change the slop handling around zero for model cost changes to use |
| 128 | relative tolerances rather than absolute tolerances. |
| 129 | \item Fix an inadvertant integer to bool conversion. (Petter Strandmark) |
Sameer Agarwal | 8b64140 | 2012-08-29 05:41:22 -0700 | [diff] [blame] | 130 | \item Do not link to \texttt{libgomp} when building on |
| 131 | windows. (Petter Strandmark) |
Sameer Agarwal | 98bf14d | 2012-08-30 10:26:44 -0700 | [diff] [blame] | 132 | \item Include \texttt{gflags.h} in \texttt{test\_utils.cc}. (Petter |
Sameer Agarwal | 8b64140 | 2012-08-29 05:41:22 -0700 | [diff] [blame] | 133 | Strandmark) |
| 134 | \item Use standard random number generation routines. (Petter Strandmark) |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 135 | \item \texttt{TrustRegionMinimizer} does not implicitly negate the |
| 136 | steps that it takes. (Markus Moll) |
Sameer Agarwal | 8b64140 | 2012-08-29 05:41:22 -0700 | [diff] [blame] | 137 | \item Diagonal scaling allows for equal upper and lower bounds. (Markus Moll) |
Sameer Agarwal | 1762420 | 2012-08-22 10:01:31 -0700 | [diff] [blame] | 138 | \item TrustRegionStrategy does not misuse LinearSolver:Summary anymore. |
| 139 | \item Fix Eigen3 Row/Column Major storage issue. (Lena Gieseke) |
| 140 | \item QuaternionToAngleAxis now guarantees an angle in $[-\pi, \pi]$. (Guoxuan Zhang) |
| 141 | \item Added a workaround for a compiler bug in the Android NDK to the |
| 142 | Schur eliminator. |
| 143 | \item The sparse linear algebra library is only logged in |
| 144 | Summary::FullReport if it is used. |
| 145 | \item Rename the macro \texttt{CERES\_DONT\_HAVE\_PROTOCOL\_BUFFERS} |
| 146 | to \texttt{CERES\_NO\_PROTOCOL\_BUFFERS} for consistency. |
| 147 | \item Fix how static structure detection for the Schur eliminator logs |
| 148 | its results. |
| 149 | \item Correct example code in the documentation. (Petter Strandmark) |
| 150 | \item Fix \texttt{fpclassify.h} to work with the Android NDK and STLport. |
| 151 | \item Fix a memory leak in the \texttt{levenber\_marquardt\_strategy\_test.cc} |
| 152 | \item Fix an early return bug in the Dogleg solver. (Markus Moll) |
| 153 | \item Zero initialize Jets. |
| 154 | \item Moved \texttt{internal/ceres/mock\_log.h} to \texttt{internal/ceres/gmock/mock-log.h} |
| 155 | \item Unified file path handling in tests. |
| 156 | \item \texttt{data\_fitting.cc} includes \texttt{gflags} |
| 157 | \item Renamed Ceres' Mutex class and associated macros to avoid |
| 158 | namespace conflicts. |
| 159 | \item Close the BAL problem file after reading it (Markus Moll) |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 160 | \item Fix IsInfinite on Jets. |
| 161 | \item Drop alignment requirements for Jets. |
| 162 | \item Fixed Jet to integer comparison. (Keith Leung) |
| 163 | \item Fix use of uninitialized arrays. (Sebastian Koch \& Markus Moll) |
| 164 | \item Conditionally compile gflag dependencies.(Casey Goodlett) |
Sameer Agarwal | 122cf83 | 2012-08-24 16:28:27 -0700 | [diff] [blame] | 165 | \item Add \texttt{data\_fitting.cc } to the examples \texttt{CMake} file. |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 166 | \end{itemize} |
| 167 | |
Sameer Agarwal | 57a3458 | 2012-06-24 12:42:36 -0700 | [diff] [blame] | 168 | \section*{1.2.3} |
| 169 | \subsection{Bug Fixes} |
| 170 | \begin{itemize} |
| 171 | \item \texttt{suitesparse\_test} is enabled even when \texttt{-DSUITESPARSE=OFF}. |
| 172 | \item \texttt{FixedArray} internal struct did not respect \texttt{Eigen} |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 173 | alignment requirements (Koichi Akabe \& Stephan Kassemeyer). |
Sameer Agarwal | 57a3458 | 2012-06-24 12:42:36 -0700 | [diff] [blame] | 174 | \item Fixed \texttt{quadratic.cc} documentation and code mismatch |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 175 | (Nick Lewycky). |
Sameer Agarwal | 57a3458 | 2012-06-24 12:42:36 -0700 | [diff] [blame] | 176 | \end{itemize} |
Keir Mierle | 2993770 | 2012-06-19 00:39:32 -0700 | [diff] [blame] | 177 | \section*{1.2.2} |
| 178 | \subsection{Bug Fixes} |
| 179 | \begin{itemize} |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 180 | \item Fix constant parameter blocks, and other minor fixes (Markus Moll) |
Sameer Agarwal | 57a3458 | 2012-06-24 12:42:36 -0700 | [diff] [blame] | 181 | \item Fix alignment issues when combining \texttt{Jet} and |
| 182 | \texttt{FixedArray} in automatic differeniation. |
| 183 | \item Remove obsolete \texttt{build\_defs} file. |
Keir Mierle | 2993770 | 2012-06-19 00:39:32 -0700 | [diff] [blame] | 184 | \end{itemize} |
Sameer Agarwal | 97fb6d9 | 2012-06-17 10:08:19 -0700 | [diff] [blame] | 185 | \section*{1.2.1} |
| 186 | \subsection{New Features} |
| 187 | \begin{itemize} |
Keir Mierle | 64f1410 | 2012-06-18 00:57:59 -0700 | [diff] [blame] | 188 | \item Powell's Dogleg solver |
| 189 | \item Documentation now has a brief overview of Trust Region methods and how the Levenberg-Marquardt and Dogleg methods work. |
Sameer Agarwal | 97fb6d9 | 2012-06-17 10:08:19 -0700 | [diff] [blame] | 190 | \end{itemize} |
| 191 | \subsection{Bug Fixes} |
| 192 | \begin{itemize} |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 193 | \item Destructor for \texttt{TrustRegionStrategy} was not virtual (Markus Moll) |
| 194 | \item Invalid \texttt{DCHECK} in \texttt{suitesparse.cc} (Markus Moll) |
| 195 | \item Iteration callbacks were not properly invoked (Luis Alberto Zarrabeiti) |
Keir Mierle | 64f1410 | 2012-06-18 00:57:59 -0700 | [diff] [blame] | 196 | \item Logging level changes in ConjugateGradientsSolver |
| 197 | \item VisibilityBasedPreconditioner setup does not account for skipped camera pairs. This was debugging code. |
| 198 | \item Enable SSE support on MacOS |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 199 | \item \texttt{system\_test} was taking too long and too much memory (Koichi Akabe) |
Sameer Agarwal | 97fb6d9 | 2012-06-17 10:08:19 -0700 | [diff] [blame] | 200 | \end{itemize} |
Sameer Agarwal | 8ed29a7 | 2012-06-07 17:04:25 -0700 | [diff] [blame] | 201 | \section*{1.2.0} |
| 202 | \subsection{New Features} |
| 203 | \begin{itemize} |
| 204 | \item \texttt{CXSparse} support. |
| 205 | \item Block oriented fill reducing orderings. This |
| 206 | reduces the factorization time for sparse |
| 207 | \texttt{CHOLMOD} significantly. |
| 208 | \item New Trust region loop with support for multiple |
| 209 | trust region step strategies. Currently only Levenberg-Marquardt is supported, but this refactoring opens the door for Dog-leg, Stiehaug and others. |
Sameer Agarwal | 122cf83 | 2012-08-24 16:28:27 -0700 | [diff] [blame] | 210 | \item \texttt{CMake} file restructuring. Builds in \texttt{Release} mode by default, and now has platform specific tuning flags. |
Sameer Agarwal | 8ed29a7 | 2012-06-07 17:04:25 -0700 | [diff] [blame] | 211 | \item Re-organized documentation. No new content, but better organization. |
| 212 | \end{itemize} |
| 213 | |
| 214 | \subsection{Bug Fixes} |
| 215 | \begin{itemize} |
| 216 | \item Fixed integer overflow bug in \texttt{block\_random\_access\_sparse\_matrix.cc}. |
| 217 | \item Renamed some macros to prevent name conflicts. |
| 218 | \item Fixed incorrent input to \texttt{StateUpdatingCallback}. |
| 219 | \item Fixes to AutoDiff tests. |
| 220 | \item Various internal cleanups. |
| 221 | \end{itemize} |
| 222 | |
| 223 | \section*{1.1.1} |
| 224 | \subsection{Bug Fixes} |
| 225 | \begin{itemize} |
Sameer Agarwal | 3e3b892 | 2012-07-19 10:34:16 -0700 | [diff] [blame] | 226 | \item Fix a bug in the handling of constant blocks. (Louis Simard) |
Sameer Agarwal | 8ed29a7 | 2012-06-07 17:04:25 -0700 | [diff] [blame] | 227 | \item Add an optional lower bound to the Levenberg-Marquardt regularizer to prevent oscillating between well and ill posed linear problems. |
| 228 | \item Some internal refactoring and test fixes. |
| 229 | \end{itemize} |
| 230 | \section{1.1.0} |
| 231 | \subsection{New Features} |
| 232 | \begin{itemize} |
| 233 | \item New iterative linear solver for general sparse problems - \texttt{CGNR} and a block Jacobi preconditioner for it. |
| 234 | \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. |
| 235 | \item Automatic differentiation now supports dynamic number of residuals. |
| 236 | \item Support for writing the linear least squares problems to disk in text format so that they can loaded into \texttt{MATLAB}. |
| 237 | \item Linear solver results are now checked for nan and infinities. |
| 238 | \item Added \texttt{.gitignore} file. |
| 239 | \item A better more robust build system. |
| 240 | \end{itemize} |
| 241 | |
| 242 | \subsection{Bug Fixes} |
| 243 | \begin{itemize} |
| 244 | \item Fixed a strict weak ordering bug in the schur ordering. |
| 245 | \item Grammar and typos in the documents and code comments. |
| 246 | \item Fixed tests which depended on exact equality between floating point values. |
| 247 | \end{itemize} |
| 248 | \section*{1.0.0} |
Keir Mierle | 64f1410 | 2012-06-18 00:57:59 -0700 | [diff] [blame] | 249 | Initial Release. |