diff --git a/docs/api.tex b/docs/api.tex index 2c363779f..a9f4aefa4 100644 --- a/docs/api.tex +++ b/docs/api.tex @@ -126,7 +126,7 @@ CostFunction* cost_function Dimension of y -------------------+ \end{minted} -In this example, there is usually an instance for each measumerent of k. +In this example, there is usually an instance for each measurement of k. In the instantiation above, the template parameters following \texttt{MyScalarCostFunction}, \texttt{<1, 2, 2>} describe the functor as computing a @@ -150,7 +150,7 @@ In the instantiation above, the template parameters following To get a numerically differentiated cost function, define a subclass of \texttt{CostFunction} such that the \texttt{Evaluate} function ignores the jacobian parameter. The numeric differentiation wrapper will fill in the jacobians array - if nececssary by repeatedly calling the \texttt{Evaluate} method with + if necessary by repeatedly calling the \texttt{Evaluate} method with small changes to the appropriate parameters, and computing the slope. For performance, the numeric differentiation wrapper class is templated on the concrete cost function, even though it could be implemented only in terms of @@ -582,7 +582,7 @@ Note that this requires a version of Ceres built with protocol buffers. The finite differencing is done along each dimension. The reason to use a relative (rather than absolute) step size is - that this way, numeric differentation works for functions where + that this way, numeric differentiation works for functions where the arguments are typically large (e.g. 1e9) and when the values are small (e.g. 1e-5). It is possible to construct "torture cases" which break this finite difference heuristic, diff --git a/docs/build.tex b/docs/build.tex index d77f55808..a501c39ea 100644 --- a/docs/build.tex +++ b/docs/build.tex @@ -11,9 +11,13 @@ Ceres relies on a number of open source libraries, some of which are optional. H \item{\cmake~\footnote{\url{http://www.cmake.org/}}} is the cross-platform build system used by Ceres. \item{\eigen~\footnote{\url{http://eigen.tuxfamily.org}}} is used for doing all the low level matrix and linear algebra operations. + \item{\glog~\footnote{\url{http://code.google.com/p/google-glog}}} is used for error checking and logging. + + Note: Ceres requires \texttt{glog}\ version 0.3.1 or later. Version 0.3 (which ships with Fedora 16) has a namespace bug which prevents Ceres from building. + \item{\gflags~\footnote{\url{http://code.google.com/p/gflags}}} is used by the code in - \texttt{examples}. It is not required to build the core Ceres library. + \texttt{examples}. It is also used by some of the tests. While technically it is not required to build the core library, we do not recommend building Ceres without it. \item{\suitesparse~\footnote{\url{http://www.cise.ufl.edu/research/sparse/suitesparse/}}} is used for sparse matrix analysis, ordering and factorization. In particular Ceres uses the \amd, \colamd\ and \cholmod\ libraries. This is an optional diff --git a/docs/theory.tex b/docs/theory.tex index 4b474794c..92a7aa6fb 100644 --- a/docs/theory.tex +++ b/docs/theory.tex @@ -179,7 +179,7 @@ the constraint that no two \texttt{e\_block} co-occur in a residual block means that if we were to treat the sparsity structure of the block matrix $H$ as a graph, then the set of \texttt{e\_block}s is an independent set in this graph. The larger the number of -\texttt{e\_block}, the smaller is the size of the Schur complement $S$. Indeed the reason Schur based solvers are so efficient at solving bundle adjustment problems is because the numner of points in a bundle adjustment problem is usually an order of magnitude or two larger than the number of cameras. +\texttt{e\_block}, the smaller is the size of the Schur complement $S$. Indeed the reason Schur based solvers are so efficient at solving bundle adjustment problems is because the number of points in a bundle adjustment problem is usually an order of magnitude or two larger than the number of cameras. Thus, the aim of the \texttt{SCHUR} ordering algorithm is to identify the largest independent set in the graph of $H$. Unfortunately this is an NP-Hard problem. But there is a greedy approximation algorithm that performs well~\cite{li2007miqr} and we use it to identify \texttt{e\_block}s in Ceres.