Commit Graph

147 Commits

Author SHA1 Message Date
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
Sameer Agarwal 451e71c6b7 Prepare for version 1.9.0
1. Update ceres-solver.spec with version bump
   and a new package description.
2. Update the docs to refer to 1.9.0
3. Update version history.
4. Change build requirements for Android to be r9d.

Change-Id: Ibab27976b214a11549cb2688b91f791a6388b0b5
2014-05-27 11:39:07 -07:00
Alex Stewart 9febb5f2ef Updating docs to include Windows options for SuiteSparse.
- A number of users are now successfully using the
  suitesparse-metis-for-windows project to build Ceres with SuiteSparse
  on Windows.
- Also fixing missing requirement for sphinx_rdm_theme if building
  the Ceres docs.

Change-Id: I1a36c13166f96743557de2ac3b7c9b84531d1f24
2014-05-27 13:26:10 +00:00
Keir Mierle d0f194a454 Tweak iOS build instructions
Change-Id: I05a8e46f6db0eb5914f88a04dca90dec4441b5c1
2014-05-27 06:32:41 +00:00
Alex Stewart 1bc7b38ac1 Support user passing a custom CMAKE_MODULE_PATH (for BLAS / LAPACK).
- Previously we set CMAKE_MODULE_PATH explicitly rather than appending
  to it when adding our local cmake directory.
- This meant the user could not easily pass their own directory which
  would also be used.  This would be useful if they had their own
  custom FindBLAS / FindLAPACK scripts that they wanted to overload
  the defaults shipped with CMake.

Change-Id: I0c1fda1b6fd81eab68755aa036f64af3efbb226d
2014-05-26 19:54:03 +01:00
Keir Mierle 6a9367711f Tweak build dependencies in the documentation
Change-Id: Ice4cc42bbcf00dafb66785fc96a048618a0b834f
2014-05-23 01:53:18 +00:00
Keir Mierle 4425473ef5 Fix formatting in building docs
Change-Id: I75aa4f12733462d592775b4df766c05c50f20b60
2014-05-23 01:00:22 +00:00
Sameer Agarwal 8c62487e43 Preparations for 1.9.0 release.
Version bump.
minor docs update.

Change-Id: I2fbe20ba4af6b2e186fe244c96ce6d6464fe0469
2014-05-16 09:48:41 -07:00
Sameer Agarwal 0831275a78 Documentation update.
1. Update iOS build instructions.
2. Update version history.

Change-Id: I49d62e86ecff39190b50c050cb12eef4e2773357
2014-05-16 08:32:23 -07:00
Sameer Agarwal 1c089e8453 Notational fix in modeling.rst by William Rucklidge.
Change-Id: Iffa127541380fcc32da13fe4ac474692e1e3d0ec
2014-05-13 16:58:25 -07:00
Sameer Agarwal a97056c975 Various documentation fixes from William Rucklidge.
Change-Id: I102e98f41f4b5fe2a84d1224d5ed7517fdfdb022
2014-05-13 16:45:36 -07:00
Sameer Agarwal 8f4dcb25f1 Documentation update.
Update modeling.rst and solving.rst to reflect
changes to the API.

Change-Id: Id1a8adfed1486f08e5fd67c5af2d29708a26490c
2014-05-13 12:31:30 -07:00
Sameer Agarwal af3154422b Add Alex Stewart as a maintainer.
Update contributing.rst to mention Alex
as one of the people who can be added
as a reviewer.

Change-Id: I30ff3e635e8c419e11e8f20394aaea5f284a10d5
2014-05-09 16:10:55 +00:00
Alex Stewart ea76585068 Adding autogenerated Ceres config.h to #define Ceres compile options.
- Previously we passed all compile options to Ceres via add_definitions
  in CMake.  This was fine for private definitions (used only by Ceres)
  but required additional work for public definitions to ensure they
  were correctly propagated to clients via CMake using
  target_compile_definitions() (>= 2.8.11) or add_definitions().
- A drawback to these approaches is that they did not work for chained
  dependencies on Ceres, as in if in the users project B <- A <- Ceres,
  then although the required Ceres public compile definitions would
  be used when compiling A, they would not be propagated to B.

- This patch replaces the addition of compile definitions via
  add_definitions() with an autogenerated config.h header which
  is installed with Ceres and defines all of the enabled Ceres compile
  options.
- This removes the need for the user to propagate any compile
  definitions in their projects, and additionally allows post-install
  inspect of the options with which Ceres was compiled.

Change-Id: Idbdb6abdad0eb31e7540370e301afe87a07f2260
2014-05-09 10:57:31 +01:00
Sameer Agarwal 31b5037926 Lint cleanup from William Rucklidge.
Change-Id: If545f114c1a2b07edd660a3c71ecfc16ffa25e43
2014-04-30 15:02:38 -07:00
Sameer Agarwal b1668067f1 Variety of changes to documentation and example code.
1. Update version history.
2. Minor changes to the tutorial to reflect the bounds constrained
   problem.
3. Added static factory methods to the SnavelyReprojectionError.
4. Removed relative gradient tolerance from types.h as it is
   not true anymore.

Change-Id: I8de386e5278a008c84ef2d3290d2c4351417a9f1
2014-04-29 09:09:00 -07:00
Björn Piltz 5d7eed87b4 Suppport for MSVC DLLs.
Change-Id: Ibbcc4ba4e59f5bbf1cb91fe81c7d3b9042d03493
2014-04-28 19:56:24 +00:00
Sameer Agarwal cc9d3bba10 Remove a comment from conf.py
Change-Id: I675f7e8fc5dd2143eab74901bc7241e02e37285f
2014-04-18 22:58:09 -07:00
Sameer Agarwal c4cd29dd7c Merge landing page with introduction.
The existing introduction was a bit redundant and also
was not really an introduction. Also updated the build
instructions to reflect the new reality on Mac OSX.

Also updated the beginning of the tutorial to be a bit
gentler and updated the history to be more consistent

Change-Id: Ife38c1949252cf9f4c6301856957f2d38365f313
2014-04-16 23:40:12 -07:00
Sameer Agarwal 7d489fdb07 Refactor the landing page to be a bit more compact.
Also minor changes to the introduction.

Change-Id: Iaa71f576b95c869f075d6837dbb60ba4bb608ee7
2014-04-07 11:45:53 -07:00
Keir Mierle 406ac78167 Rework Ceres documentation as new website
This reworks the Ceres Sphinx documentation such that it can
function as the main Ceres website, now hosted at
ceres-solver.org. This also changes to the theme sphinx_rtd_theme
used by Read The Docs; this theme has strong mobile support and is
well enough designed.

Change-Id: I63232d985859a6dac94ff58f08bf81eb2b9e7f99
2014-04-07 15:28:21 +00:00
Sameer Agarwal 75e2232b29 Fix spacing in building.rst
Change-Id: I4c68d732c80d7ff2bdbc812bf0b7c7fb98c43957
2014-03-28 11:21:02 -07:00
Richard Bowen b555b489b8 Changes documentation to reflect changes in output format.
Change-Id: Ic0ba234283e791edcad29aec067905dcb2130813
2014-03-27 15:51:58 -07:00
Alex Stewart 195e49351b Check validity of residual block before removal in RemoveResidualBlock.
- Breaking change: Problem::Options::enable_fast_parameter_block_removal
  is now Problem::Options::enable_fast_removal, as it now controls
  the behaviour for both parameter and residual blocks.

- Previously we did not check that the specified residual block to
  remove in RemoveResidualBlock actually represented a valid residual
  for the problem.
- This meant that Ceres would die unexpectedly if the user passed an
  uninitialised residual_block, or more likely attempted to remove a
  residual block that had already been removed automatically after
  the user removed a parameter block upon on which it was dependent.
- RemoveResidualBlock now verifies the validity of the given
  residual_block to remove.  Either by checking against a hash set of
  all residuals maintained in ProblemImpl iff enable_fast_removal
  is enabled.  Or by a full scan of the residual blocks if not.

Change-Id: I9ab178e2f68a74135f0a8e20905b16405c77a62b
2014-03-26 17:49:36 +00:00
Sameer Agarwal 4f603fb0d8 Grammer fixes from William Rucklidge.
Change-Id: Ia40df7a1d141eb2552694510453d1431bb0c8dce
2014-03-19 17:16:43 -07:00
Sameer Agarwal efab1ab989 Rename tricks.rst to faq.rst.
Reorganize into sections and add some advice on
linear solvers.

Change-Id: Ia2d8665720c64b17da67f466f2fc154efb2b6c50
2014-03-14 15:03:15 -07:00
Sameer Agarwal ee21fac049 More tips and tricks.
1. Add a tip about glog.
2. Add a tip about using Summary::FullReport to optimize performance.
3. Add a tip about using the Inverse Function Theorem.

Change-Id: I949ec6843ff796672edbad8bc801230dd0ab5345
2014-03-13 17:48:00 -07:00