Commit Graph

173 Commits

Author SHA1 Message Date
Sameer Agarwal 649f5c22b8 Lint changes from William Rucklidge.
Change-Id: I4c34caa57c48c97df213d6fb44a1a2534a953f0f
2015-03-20 17:05:35 -07:00
Mike Vitus cab2267e40 Add Homogeneous vector parameterization.
Change-Id: I42f68a0665a62e2c7dcc7584e5581a05c9b849b0
2015-03-20 22:08:15 +00:00
Sameer Agarwal 3f2b3779e0 Point the issue tracker link to GitHub.
Change-Id: I88cdedea15cc8d459a37507154a61889d043e8cf
2015-03-17 23:11:53 -07:00
Keir Mierle 7492b0d8de Update copyright headers with new year and URL
Since Ceres is moving to using GitHub for issues, and the Google
Code URL in the current copyright header will soon become invalid,
update all the headers.

Change-Id: I1fce70375d1bcf098591f07b4d8f01a5c1e0789c
2015-03-18 05:43:23 +00:00
Steve Hsu a1579be80b Add method to return covariance in tangent space
This CL is required to build Tango.

Inspired by this commit in RedwoodInternal repository:
  commit 09dde53c248e04f432b5eccceea5daeedb706aea
  Author: Mike Vitus <mike@hidof.com>
  Date:   Wed Apr 23 11:05:17 2014 -0700

Change-Id: I328b6634969de4ccdd71947945aa67a49ee9073f
2015-03-12 11:40:18 -07:00
Steve Hsu 2132718029 Documentation corrections
Change-Id: I7aa45cc50e8d8fc4bf0f147c2b16dd428a37e761
2015-03-12 09:24:21 -07:00
Richard Stebbing c78ccc6579 Fix minor typo.
Change-Id: I4f83453c6f64a778a27b42b28e08f8e1d05908b7
2015-02-19 18:50:39 +00:00
Sameer Agarwal 822692aa2b Add the ASL at ETH Zurich to the list of users.
Change-Id: I535b954114c028ae7b6c3b6df3213c9fd79f85de
2015-02-18 02:10:43 -08:00
Sameer Agarwal 264bf456df Lint changes from William Rucklidge.
Change-Id: Ib468fbe7e0e8220870ddf9968ac59295c21f1e43
2015-02-06 14:34:50 -08:00
Sameer Agarwal eb15489a21 Improve preconditioner documentation.
Change-Id: Ied811fc16f0c1c553e37af6d3111de71baea8462
2015-02-02 22:02:51 -08:00
Sameer Agarwal a2e19f163a Fix example code in the documentation.
The example code for DynamicNumericDiffCostFunction and
DynamicAutoDiffCostFunction in the documentation was
allocating the cost function objects on the stack rather
than the heap.

Thanks to Rodney Hoskinson for reporting this.

Change-Id: I217aee02d1e2c1e9c25b8197451e9f9e0482915d
2015-01-29 19:33:39 -08:00
Sameer Agarwal 207879a935 Update version history.
Change-Id: I1b6afb1a8509b3b20d3f28887c88bf15d33dbcf7
2015-01-28 19:23:24 +00:00
Filippo Basso 1eb927422b Update Ubuntu 14.04 installation instructions.
Change-Id: Ia824f305b638c1263752efe35690fc0e5db9f75a
2015-01-26 11:55:55 +01:00
Alex Stewart 257f6dae46 Add note about glog not currently compiling against gflags 2.1.
- Also fix a typo in pointer to EIGENSPARSE documentation.

Change-Id: I1448fcf3680a65362c6f9b2d8a5ab0259da92364
2015-01-06 20:17:08 +00:00
Alex Stewart 60cc520f63 Add explicit no sparse linear algebra library available option.
- Previously we had no defined default value for
  sparse_linear_algebra_library_type in Solver::Options if Ceres
  was compiled with no sparse library available.  Thus in that case,
  the default value (dependent upon the compiler) would indicate that
  one was available.
- Now we have an explicit option that means no sparse library is
  available, which is now the default value in Solver::Options in this
  case.
- Add a warning in CMake when the user disables all sparse libraries.
- Fix typos in trust_region_preprocessor_test:
  (SUITE/CX)_SPARSE -> (SUITE/CX)SPARSE that induced failures when
  no sparse libraries were available.

Change-Id: I869c399a12d42bfc44220cbb25ce6d6dd80236bd
2015-01-01 18:51:45 +00:00
Sameer Agarwal 9e735d265d Improve some wording in the FAQ.
Thanks to Vasily Vylkov for suggesting the change.

Change-Id: I8e15f5ffdba2da5f55234d65ba4b9b0dadfb6085
2014-12-22 15:38:47 -08:00
Sameer Agarwal 92e5379c88 Add a pointer to MacPorts.
Thanks to Markus Moll for maintaining the port and pointing me to
it.

Change-Id: Ia28fcbfb4946409de9e6b85d1dc332a25555195b
2014-12-06 15:54:15 -08:00
Sameer Agarwal ba28d3a3db 1.10.0 Final.
Update version history.

Change-Id: I1b73749ba10679396369e2af0a37699181b125fb
2014-12-05 15:45:16 -08:00
Sameer Agarwal 8f6918e2e5 Fix the link to Tal Ben-Nun's MSVC wrapper.
Change-Id: Iec2c6b5b0a2aa2e5e3b76200c5ac91000e41f267
2014-12-04 10:54:52 -08:00
Sameer Agarwal 68222eb819 Lint cleanup from Jim Roseborough
Change-Id: Ic55b8e48110bc651ae942d34fe5402a6e0422fe3
2014-12-01 12:31:46 -08:00
Sameer Agarwal 2bdc0208c0 Get ready for 1.10.0rc2.
Update the version history.

Change-Id: I5de006c7c75b26d8c421bf1eeb525964121d2029
2014-11-30 14:13:03 -08:00
Sameer Agarwal 19d7ce97fe Add Tal Ben-Nun's MSVC wrapper.
Change-Id: Ifac9cdf0429c9dadd1ea49338ddcc3b83ac9ec11
2014-11-20 15:23:40 +00:00
Sameer Agarwal 0484fabab8 Lint and documentation update.
Change-Id: I05f40983f267dd1534e3eee8c0fc038e4429abed
2014-11-13 23:08:30 -08:00
Sameer Agarwal cd358c760f Fix RotationMatrixToAngleAxis near Pi.
Use Eigen's much more complicated conversion routine
when we encounter cases where the angle of rotation is
close to Pi.

Along the way also fix the way angle_axis vectors are
compared by making the matcher more robust.

Thanks to Tobias Strauss for reporting this.

Change-Id: Ia7e65dafad92c48d29d5f3cd22c4d6534789c183
2014-11-12 22:56:38 -08:00
Sameer Agarwal 39e397b793 Prepare for 1.10.0 release.
1. Add information about homebrew/science to the docs.
2. Update version history.
3. Update RPM spec file.

Change-Id: I800b81f9f2c8733a8add338cc0a205b7b8bc8573
2014-11-12 08:30:04 -08:00
Sameer Agarwal c6792c410a Fix a typo in nnls_tutorial.rst.
Thanks to Avi Ginsburg for reporting this.

Change-Id: I86a9d1768798d541c82f46e6a1c21cb2474c880a
2014-10-21 23:34:58 -07:00
Sameer Agarwal 0435246de5 Add seene to users.rst
Change-Id: If40726775a3d4b234b6e10517fe9943d122a3384
2014-10-08 18:12:53 -07:00
Sameer Agarwal fdf32b315f Fix some errant tabs.
Change-Id: Iaf1906eaade49467ba282656cf0a10879d258b1f
2014-10-08 16:04:32 -07:00
Sameer Agarwal 6768b3586a Minor cleanups in preparation for a release.
1. Fix the release script to ignore the version.h checking.
2. Fix some ceres documentation formatting errors.

Change-Id: I3fd6b85e771b242f463d6a36c3efd8d691f9242f
2014-10-08 12:48:16 -07:00
Sameer Agarwal 7b6bd1cd31 Documentation update.
1. Complete restructuring of the documentation to account for
   GradientProblemSolver.
2. Update the version history to account for changes since 1.9.0.
3. Add links and document the various examples that ship with ceres.
4. Documentation for GradientProblem GradientProblemSolver.

Change-Id: If3a18f2850cbc98be1bc34435e9ea468785b8b27
2014-10-08 08:47:34 -07:00
Martin Baeuml 7e43460d42 Fix a few typos in the documentation.
Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3
2014-09-08 16:49:06 +02:00
Sameer Agarwal b7fb6056a7 Remove NumericDiffFunctor.
Its API was broken, and its implementation was an unnecessary
layer of abstraction over CostFunctionToFunctor.

Change-Id: I18fc261fc6a3620b51a9eeb4dde0af03d753af69
2014-09-03 16:53:53 -07:00
Sameer Agarwal 48068c753e Lint cleanup from William Rucklidge.
Change-Id: Ie0e0aa58440be7a4f67dcd633dbb6f1bb0c051a8
2014-08-28 13:03:40 -07:00
Sameer Agarwal d906afae22 A number of bug fixes.
1. Fix a build breakage in graph_test.
2. Respect Solver::Options::min_num_linear_solver_iterations in
   conjugate_gradients_solver.cc

Thanks to Johannes Schönberger for reporting these.

Change-Id: Ib32e3929bf5d92dd576ae5b53d4d88797095136e
2014-08-25 22:32:38 -07:00
Sameer Agarwal 1745dd615b Refactor SolverImpl.
Replace SolverImpl with

 a. A minimizer specific preprocessor class.
 b. A generic Solve function inside solver.cc
 c. Presummarize and Postsummarize functions to handle
    updates to the summary object.

The existing SolverImpl class was a mixture of the above three
things and was increasingly complicated code to follow. This change,
breaks it into its three separate constituents, with the aims of
better separation of concerns and thus better testability and
reliability.

The call to Solver::Solve() now consists of

1. Presummarize - summarize the given state of the problem and solver
   options.
2. Preprocess - Setup everything that is needed to call the minimizer.
   This includes, removing redundant parameter and residual blocks,
   setting up the reordering for the linear solver, creating the
   linear solver, evaluator, inner iteration minimizer etc.
3. Minimize.
4. Post summarize - summarize the result of the preprocessing and the
   solve.

Change-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a
2014-08-18 13:31:31 -07:00
Sameer Agarwal cfb36463f9 Small fixes from William Rucklidge.
Change-Id: I0be52f0f1e53cedccffe4807dc664a2f3fb4a8e4
2014-08-05 14:42:33 -07:00
Sameer Agarwal 031598295c Enable Eigen as sparse linear algebra library.
SPARSE_NORMAL_CHOLESKY and SPARSE_SCHUR can now be used
with EIGEN_SPARSE as the backend.

The performance is not as good as CXSparse. This needs to be
investigated. Is it because the quality of AMD ordering that
we are computing is not as good as the one for CXSparse? This
could be because we are working with the scalar matrix instead
of the block matrix.

Also, the upper/lower triangular story is not completely clear.
Both of these issues will be benchmarked and tackled in the
near future.

Also included in this change is a bunch of cleanup to the
SparseNormalCholeskySolver and SparseSchurComplementSolver
classes around the use of the of defines used to conditionally
compile out parts of the code.

The system_test has been updated to test EIGEN_SPARSE also.

Change-Id: I46a57e9c4c97782696879e0b15cfc7a93fe5496a
2014-07-31 22:05:34 -07:00
Sameer Agarwal 060a850602 Remove SPARSE_CHOLESKY based covariance estimation.
Sparse Cholesky factorization is not rank revealing. Therefore
this algorithm cannot reliably tell when the Jacobian matrix is
rank deficient or so poorly conditioned that the covariance matrix
cannot be estimated.

Making things worse, this algorithm works on the normal equations,
which makes the conditioning problem much worse.

This change, deletes the SPARSE_CHOLESKY algorithm in the covariance
estimation code. Also to make the naming consistent, it renames

SPARSE_QR -> SUITE_SPARSE_QR

so that it parallels EIGEN_SPARSE_QR.

Also, since we now have EIGEN_SPARSE_QR, we can default to using
it when SuiteSparse is not available instead of DENSE_SVD, which
generally speaking should only be used by folks who are dealing
with small rank deficient jacobians.

Change-Id: I8b134c7e8a2e86ca374371f185b19f1c3e74349c
2014-07-20 07:35:35 -07:00
Sameer Agarwal c2131dea9c Add "make install" to the install instructions.
Alessandro Gentilini pointed out that the install instructions
don't actually install the library.

Also included are some other minor changes to dependency
description.

Change-Id: I50872114bca7a9774ef66f55ba78ed9b7adad93f
2014-07-13 13:50:43 -07:00
Alessandro Gentilini c1485df515 Correct formula in documentation of Solver::Options::function_tolerance.
Change-Id: I5cfb9d58bd2ea12e9be46fb9d9e5a37466b0a7cb
2014-07-13 12:18:29 +00:00
Sameer Agarwal 0a9bca18f1 Fix a broken hyperlink in the documentation.
Thanks to Henrique Mendonca for pointing this out.

Change-Id: I40a214cfa900265f85492017799a5f2062904d76
2014-07-06 08:18:18 -07:00
Alex Stewart da86231ddd Add fixes for multiple definitions of ERROR on Windows to docs.
- Explain the various ways to fix the problem of multiple definitions
  of ERROR from glog / miniglog vs windows.h.
- Add note about use of CMAKE_LIBRARY_PATH to aid FindBLAS & FindLAPACK.
- Fix minor style typo in code-block for sample Ceres output.

Change-Id: I21742614f4c5a8fe1ac8f66811b7777a72bcc503
2014-06-15 14:21:49 +01:00
Alex Stewart ec6bfa5b12 Compile miniglog into Ceres if enabled on all platforms.
- Previously if miniglog was being used (on a non-Android system), we
  compiled it into a separate library, against which Ceres then linked.
- This was unsatisfactory as it required miniglog being built as a
  static library when building Ceres as a Windows DLL, because miniglog
  did not use the dllexport/dllimport statements, whilst for other
  platforms when building Ceres as a shared library, miniglog needed to
  be compiled as a shared library.

- We now compile miniglog into Ceres on all platforms, not just on
  Android.
- miniglog now uses the CERES_EXPORT macro to support Windows DLLs.
  This means that miniglog now depends on Ceres' internal/port.h (and
  thus internal/config.h) which define the CERES_EXPORT macro and
  control its behaviour respectively.
- miniglog now also uses localtime_s, not localtime on Windows.

Change-Id: Ia55b9af8b4e6decf067eab92f0a5c2d14358a1e9
2014-06-09 19:02:07 +00:00
Sameer Agarwal 4fce29c29e Documentation update.
Update the documentation to reflect the new trust region solver
logging style.

Change-Id: Id2d6b9efeee86c690c349a225d344e9f97ddbcdf
2014-06-06 05:02:07 +00:00
Sameer Agarwal d54e98777f Add a note about git commit message style.
Update contributing.rst to point to Tim Pope's suggestions
for how to write git commit messages.

Change-Id: Idcbece3e7576f54794d8a107aa2c5aa48dc4ddf7
2014-06-05 19:10:19 +00:00
Sameer Agarwal c8063df917 POLAK_RIBIRERE -> POLAK_RIBIERE
Thanks to Vladimir Chalupecky for reporting this.

Change-Id: I2e419415394f5d2be35b825d7c777b01ff31add1
2014-06-03 20:30:15 -07:00
Sameer Agarwal 1693645a67 Add Solver::Options::IsValid.
This provides a user visible way to validate the Solver::Options
before calling Solve.

Change-Id: Ife84fd33532ab2ccb7ac95abe22735843db51fde
2014-05-30 13:00:18 -07:00
Alex Stewart 1c4b48afae Fixing missing Sphinx formatting for parameter bound methods.
Change-Id: I0364cd284355d6284e0836a120417c5f0c7a78fe
2014-05-30 16:42:43 +01:00
Sameer Agarwal b766177bab Remove support for Solver::Options::solver_log.
This is not really used and if needed can be implemented
in user code.

Change-Id: I56328d51c9d3788f90c751ff9c3a5937989f6ee0
2014-05-29 21:59:37 +00:00
Sameer Agarwal 9a022f601b Fix a typo in index.rst
Thanks to Pierre Moulon for pointing this out.

Change-Id: I1e0021b613e57e9f0c13db4634662ee3e1e22aa9
2014-05-27 23:58:02 -07:00