Commit Graph

64 Commits

Author SHA1 Message Date
Sameer Agarwal 7cb5d9cca3 Update changelog
Change-Id: Ib284990fd819c71411617c3d995178181af9fc4d
2016-11-21 06:24:28 -08:00
Sameer Agarwal 0f80f018ff Update changelog
Change-Id: I36db7e705ad520321335ff2f438cba54d914bb5c
2016-11-20 12:13:56 -08:00
Sameer Agarwal 717417512b Update changelog
Change-Id: I1c8bef059adc57476b5e75310fd7d983b8229bf7
2016-11-11 10:48:51 -08:00
Sameer Agarwal 5690b447de Fix documentation source for templated functions in rotation.h
Change-Id: Ic1b2e6f0e6eb9914f419fd0bb5af77b66252e57c
2016-10-13 09:52:02 -07:00
Sameer Agarwal 2f8f98f7e8 Prepare for 1.12.0RC1
Change-Id: I23eaf0b46117a01440143001b74dacfa5e57cbf0
2016-10-13 09:35:18 -07:00
Sameer Agarwal e6ffe26671 Update the version history.
Change-Id: I9a57b0541d6cebcb695ecb364a1d4ca04ea4e06c
2016-10-10 22:47:08 -07:00
Sameer Agarwal a36693f83d Update version history
Change-Id: Ib2f0138ed7a1879ca3b2173e54092f7ae8dd5c9d
2016-09-17 16:31:41 -07:00
Alex Stewart 41455566ac Remove link-time optimisation (LTO).
- On GCC 4.9+ although GCC supports LTO, it requires use of the
  non-default gcc-ar & gcc-ranlib.  Whilst we can ensure Ceres is
  compiled with these, doing so with GCC 4.9 causes multiple definition
  linker errors of static ints inside Eigen when compiling the tests
  and examples when they are not also built with LTO.
- On OS X (Xcode 6 & 7) after the latest update to gtest, if LTO
  is used when compiling the tests (& examples), two tests fail
  due to typeinfo::operator== (things are fine if only Ceres itself is
  compiled with LTO).
- This patch disables LTO for all compilers. It should be revisited when
  the performance is more stable across our supported compilers.

Change-Id: I17b52957faefbdeff0aa40846dc9b342db1b02e3
2015-10-05 18:54:11 +01:00
Alex Stewart 89c40005bf Only use LTO when compiling Ceres itself, not tests or examples.
- If Ceres is built as a shared library, and LTO is enabled for Ceres
  and the tests, then type_info::operator==() incorrectly returns false
  in gtests' CheckedDowncastToActualType() in the following tests:
-- levenberg_marquardt_strategy_test.
-- gradient_checking_cost_function_test.
  on at least Xcode 6 & 7 as reported here:
  https://github.com/google/googletest/issues/595.
- This does not appear to be a gtest issue, but is perhaps an LLVM bug
  or an RTTI shared library issue.  Either way, disabling the use of
  LTO when compiling the test application resolves the issue.
- Allow LTO to be enabled for GCC, if it is supported.
- Add CMake function to allow easy appending to target properties s/t
  Ceres library-specific compile flags can be iteratively constructed.

Change-Id: I923e6aae4f7cefa098cf32b2f8fc19389e7918c9
2015-09-28 15:08:39 +01:00
Sameer Agarwal 0794f41cca Documentation updates.
1. Fix a typo in the Trust Region algorithm.
2. Add ARL in the list of users.
3. Update the version history.

Change-Id: Ic286e8ef1a71af07f3890b7592dd3aed9c5f87ce
2015-09-26 14:14:20 -07:00
Sameer Agarwal a66d89dcda Get ready for 1.11.0RC1
Update version numbers.
Drop CERES_VERSION_ABI macro.

Change-Id: Ib3eadabb318afe206bb196a5221b195d26cbeaa0
2015-09-08 14:55:28 -07:00
Sameer Agarwal 1ac3dd223c Fix a bug in CompressedRowSparseMatrix::AppendRows
The test for CompressedRowSparseMatrix::AppendRows tries to add
a matrix of size zero, which results in an invalid pointer deferencing
even though that pointer is never written to.

Change-Id: I97dba37082bd5dad242ae1af0447a9178cd92027
2015-09-05 15:56:14 -07:00
Sameer Agarwal 5742b7d0f1 Improve performance of SPARSE_NORMAL_CHOLESKY + dynamic_sparsity
The outer product computation logic in SparseNormalCholeskySolver
does not work well with dynamic sparsity. The overhead of computing
the sparsity pattern of the normal equations is only amortized if
the sparsity is constant. If the sparsity can change from call to call
SparseNormalCholeskySolver will actually be more expensive.

For Eigen and for CXSparse we now explicitly compute the normal
equations using their respective matrix-matrix product routines and solve.
Change-Id: Ifbd8ed78987cdf71640e66ed69500442526a23d4
2015-09-05 14:31:52 -07:00
Alex Stewart a1b3fce9e0 Add optional export of Ceres build directory to new features list.
Change-Id: I6f1e42b41957ae9cc98fd9dcd1969ef64c4cd96f
2015-08-31 14:14:56 +01:00
Alex Stewart e46777d8df Credit reporters of buildsystem bugs in version history.
Change-Id: I16fe7973534cd556d97215e84268ae0b8ec4e11a
2015-08-31 12:41:54 +01:00
Sameer Agarwal 01548282cb Update the version history.
Change-Id: I29873bed31675e0108f1a44f53f7bc68976b7f98
2015-08-30 22:34:04 -07:00
Sameer Agarwal d9790e7789 Add ProductParameterization
Often a parameter block is the Cartesian product of a number of
manifolds. For example, a rigid transformation SE(3) = SO(3) x R^3
In such cases, where you have the local parameterization
of the individual manifolds available,
ProductParameterization can be used to construct a local
parameterization of the cartesian product.

Change-Id: I4b5bcbd2407a38739c7725b129789db5c3d65a20
2015-07-27 13:37:10 -07:00
Sameer Agarwal a6971f6c29 Documentation changes.
1. Add documentation for cubic_interpolation.h
2. Remove the list of publications. It is an incomplete list which is
   a pain to maintain.
3. Add a note about the interaction between manifolds and
   NumericDiffCostFunction.
4. Fix some of the comments in cubic_interpolation.h to better reflect reality.
5. Updated the version history.

Change-Id: I0b4a5a6f3361d3fc85f1b4aec685cd80540934f1
2015-03-21 10:42:29 -07:00
Sameer Agarwal 207879a935 Update version history.
Change-Id: I1b6afb1a8509b3b20d3f28887c88bf15d33dbcf7
2015-01-28 19:23:24 +00:00
Sameer Agarwal ba28d3a3db 1.10.0 Final.
Update version history.

Change-Id: I1b73749ba10679396369e2af0a37699181b125fb
2014-12-05 15:45:16 -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 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 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
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 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 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 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
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 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
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 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 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
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 1a041c35b7 Update to 1.8.0.
Change-Id: Id42e594f03e3575d06e18c1ef66df64f43d86839
2013-11-12 14:19:25 -08:00
Sameer Agarwal c71085ed32 Update to 1.8.0rc1.
Change-Id: Iaa10fd5a20be2ef84aca0119306c44669d87cc5d
2013-10-31 14:07:18 -07:00
Sameer Agarwal c7ebfb8e5e Documentation update
Change-Id: I10c6c8375f27c7fa4cd1c381b4f39d784fa946e1
2013-10-09 22:13:01 -07:00
Keir Mierle 682cd3c278 Update version history with shared libs changes
Change-Id: Iafd55087bc5eef4c15c3b544222147aa99df7690
2013-09-03 14:28:32 -07:00
Keir Mierle 340d7c1415 Update version history with miniglog fix
Change-Id: Ic69f4994259e05fa88548b957146a1aac73b7af7
2013-09-03 13:50:03 -07:00
Sameer Agarwal 0338f9a8e6 ITERATIVE_SCHUR works with no f-blocks.
When the Schur complement is of size zero,
i.e. none of the parameter blocks interact
with each other, the ITERATIVE_SCHUR linear
solver crashes due to some checks that are
triggered in the SCHUR_JACOBI preconditioner.

This patch adds logic to detect this condition
and to deal with it and adds tests that verify
the fix.

Thanks to Soohyun Bae for reporting this bug.

Change-Id: If29ddf32463cbb1960414fff0e29bbf0d2ee7989
2013-09-02 22:41:59 -07:00
Sameer Agarwal c24a4ec6fb Cmake refactoring
1. Use CMake FindLAPACK and FindBLAS Modules.
2. Remove SEARCH_HEADERS and SEARCH_LIBS and replace them with
CMAKE variables. This leads to simplification of the FIND_LIBRARY
and FIND_PATH calls.
3. Make miniglog a fallback when glog is not present and the
user indicates MINIGLOG=OFF.
4. Add time.h to miniglog.
5. Remove shared library building.

Change-Id: I8a97156d3d7cf645fbbfe8e571761bc16c89f43f
2013-08-25 23:56:48 -07:00
Sameer Agarwal 3e6ef29be6 Update version history to reflect API changes
Change-Id: I5ce744d72b991abba17b5cf9c6a1e1f158693151
2013-08-20 09:57:03 -07:00
Sameer Agarwal 8f33332c59 Documentation update for 1.7.0rc2
Change-Id: I6b0c19bed57b51a0f6591c60a4ae0d849c62451b
2013-08-18 23:32:50 -07:00
Sameer Agarwal 16924168ce Update version from 1.6.0 -> 1.7.0rc1.
Change-Id: I420a8907142bffad0e3aa6c7196541ca2309c099
2013-07-18 13:35:01 -07:00
Sameer Agarwal 4437639e9b Documentation updates.
1. Further tightening of the Covariance documentation.
2. Documented minimizer progress output.
3. Lint cleanup from William Rucklidge.
4. Updated version history.

Change-Id: I8bc28484675d4edf89a7c050b6379dbac6c39e91
2013-06-03 09:41:27 -07:00
Sameer Agarwal f0b071bac4 Lint and other fixes from William Rucklidge
Change-Id: Ic18561a5cdadccc75e97818fa4422bb5d9d43df9
2013-05-31 13:22:51 -07:00
Sameer Agarwal ebbb984db8 Various corrections and enhancements to the documentation.
Change-Id: I03519bfccf4367b36d36006f1450d5fbcbbf8621
2013-05-28 10:37:01 -07:00