Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/libmv/third_party/ceres/ChangeLog')
-rw-r--r--extern/libmv/third_party/ceres/ChangeLog884
1 files changed, 445 insertions, 439 deletions
diff --git a/extern/libmv/third_party/ceres/ChangeLog b/extern/libmv/third_party/ceres/ChangeLog
index c9f5b3426bc..cd168a44b35 100644
--- a/extern/libmv/third_party/ceres/ChangeLog
+++ b/extern/libmv/third_party/ceres/ChangeLog
@@ -1,646 +1,652 @@
-commit 8c62487e437b91d3d354cd1ae8957e43fe540732
+commit d3ecd18625ba260e0d00912a305a448b566acc59
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri May 16 09:44:18 2014 -0700
+Date: Tue Sep 23 10:12:42 2014 -0700
- Preparations for 1.9.0 release.
+ Add an explicit include for local_parameterization.h
- Version bump.
- minor docs update.
+ Thanks to cooordz for reporting this.
- Change-Id: I2fbe20ba4af6b2e186fe244c96ce6d6464fe0469
+ Change-Id: I7d345404e362a94ff1eb433ad6b9dcc4960ba76d
-commit 0831275a78ab65e4c95979598cb35c54d03d3185
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri May 16 08:17:54 2014 -0700
+commit 5dd76869cf45122c79579423f09e0de08cf04092
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Fri Sep 19 16:08:25 2014 +0100
- Documentation update.
+ Fix unused-function warning with Eigen < 3.2.2.
- 1. Update iOS build instructions.
- 2. Update version history.
+ - CreateBlockJacobian() is only ever used when Eigen >= 3.2.2 is
+ detected, but was previously defined whenever CERES_USE_EIGEN_SPARSE
+ was defined with no check on the Eigen version.
+ - This resulted in an unused-function compile warning that became an
+ error due to -Werror, preventing compilation when using Eigen < 3.2.2.
- Change-Id: I49d62e86ecff39190b50c050cb12eef4e2773357
+ Change-Id: I24628ff329f14b087ece66bf2626bdc0de4ba224
-commit c7c7458625996a20203f1366d11bd701e5fb621b
-Author: Jack Feng <jackfengji@gmail.com>
-Date: Mon May 12 10:23:56 2014 +0800
+commit 820cb7b14831aa03eca1e8186000cebfdf0a42f3
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Wed Sep 17 09:46:08 2014 -0700
- add support for building for ios
+ Add solver_utils.cc to Android.mk
- use ios-cmake to build for ios
-
- Change-Id: I6b17c33339f3121322a4004d79629b22a62f7a94
+ Change-Id: I358522971711280f4362a1fa39b1568160e21e63
-commit 36c2ce87d13b9b7123bd0473b8b45fb3b6ae4271
-Author: Sergey Sharybin <sergey.vfx@gmail.com>
-Date: Mon Jan 13 21:18:08 2014 +0600
+commit 092b94970a073f8b47179d96160226fc19095898
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Fri Sep 5 11:56:29 2014 -0700
- Libmv 2D homography estimation example application
+ Add GradientProblem and GradientProblemSolver.
- Add an example application of homography matrix estimation
- from a 2D euclidean correspondences which is done in two
- steps:
+ The line search minimizer in Ceres does not require that the
+ problems that is solving is a sum of squares. Over the past
+ year there have been multiple requests to expose this algorithm
+ on its own so that it can be used to solve unconstrained
+ non-linear minimization problems on its own.
- - Coarse algebraic estimation
- - Fine refinement using Ceres minimizer
+ With this change, a new optimization problem called
+ GradientProblem is introduced which is basically a thin
+ wrapper around a user defined functor that evaluates cost
+ and gradients (FirstOrderFunction) and an optional LocalParameterization.
- Nothing terribly exciting apart from an example of how to
- use user callbacks.
+ Corresponding to it, a GradientProblemSolver and its associated
+ options and summary structs are introduced too.
- User callback is used here to stop minimizer when average
- of symmetric geometric distance becomes good enough.
- This might be arguable whether it's the best way to go
- (in some cases you would want to stop minimizer when
- maximal symmetric distance is lower than a threshold) but
- for a callback usage example it's good enough to stick
- to current logic.
+ An example that uses the new API to find the minimum of Rosenbrock's
+ function is also added.
- Change-Id: I60c8559cb10b001a0eb64ab71920c08bd68455b8
+ Change-Id: I42bf687540da25de991e9bdb00e321239244e8b4
-commit d99a3a961e4a6ff7218d0ab749da57cf1a1677bd
-Author: Björn Piltz <bjornpiltz@gmail.com>
-Date: Wed May 7 14:59:12 2014 +0200
+commit 6c45d6b891aac01489b478a021f99081c61792cb
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Thu Sep 11 07:48:30 2014 -0700
- Separate PUBLIC and PRIVATE library dependencies
- Do not propagate 3d party libs through
- IMPORTED_LINK_INTERFACE_LIBRARIES_[DEBUG/RELEASE] mechanism
- when building shared libraries. SuiteSparse, lapack & co
- are considered private. Glog still gets propagated since
- it is part of the public interface. See documentation of
- TARGET_LINK_LIBRARIES().
+ Add more inspection methods to Problem.
+
+ Problem::GetCostFunctionForResidualBlock
+ Problem::GetLossFunctionForResidualBlock
+
+ are added, so that users do not have to maintain this mapping
+ outside the Problem.
- Change-Id: If0563b0c705b102876f5190e9a86694d10f79283
+ Change-Id: I38356dfa094b2c7eec90651dafeaf3a33c5f5f56
-commit 1c089e8453583876f417b214f76a5863d7694986
+commit 6ad9b8e2ae66c9009441d0f9304486ec8dfa9a6a
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue May 13 16:58:25 2014 -0700
+Date: Tue Sep 9 14:29:28 2014 -0700
- Notational fix in modeling.rst by William Rucklidge.
+ Ignore row/column blocks structure when using dynamic sparsity
- Change-Id: Iffa127541380fcc32da13fe4ac474692e1e3d0ec
+ The row/column blocks can be huge when using dynamic sparsity. This
+ can result in very large memory usage when augmenting the jacobian
+ with the LM diagonal.
+
+ Thanks to Mingsong Dou for reporting this.
+
+ Change-Id: I6aa140ceefa98389ae17958f89ca76e0c76f95b8
-commit 082d9e2a1b43b26a81157a6c711de0ff34c40ba4
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon May 12 20:41:27 2014 -0700
+commit 7e43460d42e20be1ba13121655dbbfd0d1c751ae
+Author: Martin Baeuml <baeuml@gmail.com>
+Date: Mon Sep 8 16:49:06 2014 +0200
- Add iOS.cmake from the ios-cmake project.
+ Fix a few typos in the documentation.
- URL: https://github.com/cristeab/ios-cmake
- Commit: 86dc085f0d5ed955cd58e2657cc3efc7c1aabbc8
-
- Change-Id: I8fe6023d4cb6655b5a724e8b695fdae87ce3b685
+ Change-Id: I541db56b2b81ae758e233ce850d78c3cbb4b6fa3
-commit a97056c9752fe7223c8560da58862ecb1fd241ad
+commit 1aef66eeae7042902655a11b0d6a1a32900abb7b
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue May 13 16:45:36 2014 -0700
+Date: Sun Sep 7 21:18:44 2014 -0700
- Various documentation fixes from William Rucklidge.
+ Remove errant space.
- Change-Id: I102e98f41f4b5fe2a84d1224d5ed7517fdfdb022
+ Change-Id: Iedc06960417a9b938d57f623b4beb87a98e3d081
-commit 2f8fb218f0a08102231ace07ef02b34b4aad7336
-Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Tue May 13 20:57:39 2014 +0100
+commit 89080ab153a33008782759187fa8e9af7d2f83f1
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Sat Sep 6 21:13:48 2014 -0700
- Adding function to update CMake cache variables and preserve help.
+ Add LocalParameterization::MultiplyByJacobian.
- - Previously we were replicating the same two lines to update a cache
- variable whilst preserving its help string.
- - This commit adds a function which wraps up this common operation into
- a single line.
+ This is needed to efficiently support LocalParameterization objects
+ in GradientProblemSolver.
- Change-Id: Ic78a5adf5d59262bbbcec1e353ded7620391e862
+ Change-Id: Ic7b715b8be694b099dc95d6707a67474297533e6
-commit 8f4dcb25f1be74a8c12c0f9eeb67b6b0755563f5
+commit d76da16f49d419ae3664ca1bdc2286c1ea78ebed
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Apr 29 21:40:57 2014 -0700
+Date: Sun Sep 7 18:42:49 2014 -0700
- Documentation update.
+ Move some routines to solver_utils.h/cc
- Update modeling.rst and solving.rst to reflect
- changes to the API.
+ This moves a couple of routines from solver.cc into solver_utils.h/cc
+ so that they can also be used by the upcoming GradientProblemSolver.
- Change-Id: Id1a8adfed1486f08e5fd67c5af2d29708a26490c
+ Change-Id: I627b32ad3dc639422aacde78a8e391459d947e99
-commit d48e7050225730f61eaef851def5b43bc439e991
-Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Sat May 10 08:58:58 2014 +0100
+commit cbf03ac292a0c0e9e6b7fcc1b08b67e95965922f
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Sat Sep 6 21:07:08 2014 -0700
- Configure config.h and include it from the build directory.
-
- - Previously we overwrote the default (empty) config.h in the source
- tree with a configured config.h, generated using the current compile
- options.
- - This was undesirable as it could lead to inadvertant commits of the
- generated config.h.
+ Make LineSearchMinimizer consistent with TrustRegionMinimizer.
- - This patch moves the default config.h to <src>/config/ceres/internal,
- separate from the other headers, thus if Ceres is compiled without
- CMake this directory will now also have to be included. This
- directory is _not_ added to the CMake include directories for Ceres
- (thus the default config.h is never used when compiling with CMake).
- - When using CMake, the generated config.h is now placed in
- <build>/config/ceres/internal, which is in turn added to the include
- directories for Ceres when it is compiled, and the resulting config.h
- is copied to ceres/internal when installed.
+ Change the logic for how IterationSummary objects are added to
+ Summary::iterations to match the one in TrustRegionMinimizer.
- Change-Id: Ib1ba45e66e383ade2ebb08603af9165c1df616f2
+ Change-Id: I57851ad8294e58f83b9115cca9c24695d86ee92a
-commit 11c496164ffe9809306945c2b81276efcd51533d
+commit f04c32319751e1efd610acd3699bca0a6dd6c6d1
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri May 9 16:27:03 2014 -0700
+Date: Sat Sep 6 21:05:41 2014 -0700
- Fix 80cols violation in local_parameterization.h
+ Fix some obsolete documentation in CostFunction::Evaluate
- Change-Id: I07f59baa9e4aba7c5ae028f0c144ea9ad153d49a
+ Change-Id: I1d7ee5c596fbf6a4d886dce5b989c8eb18af2dce
-commit af3154422b63b7792ecd23b00ca1a0c003764dae
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri May 9 05:45:03 2014 -0700
+commit 9263547c02a1807532b159c217e7acd124d3db10
+Author: Johannes Schönberger <hannesschoenberger@gmail.com>
+Date: Sat Sep 6 17:26:15 2014 -0400
- Add Alex Stewart as a maintainer.
+ Fix CG solver options for ITERATIVE_SCHUR, which did not copy min_num_iterations
- Update contributing.rst to mention Alex
- as one of the people who can be added
- as a reviewer.
+ Change-Id: If31bc53b49ec20426fd438b79b8fa1f69d11e861
+
+commit b41f048256d1a8184cbe874b5a96dffa7fa4630d
+Author: Martin Baeuml <baeuml@gmail.com>
+Date: Fri Sep 5 15:03:32 2014 +0200
+
+ Remove obsolete include of numeric_diff_functor.h.
- Change-Id: I30ff3e635e8c419e11e8f20394aaea5f284a10d5
+ numeric_diff_functor.h was removed and does not exist anymore.
+
+ Change-Id: I07bf04bf81142551e867b95b83a0653e11cad54c
-commit ea765850685f1ff0431da5212656378fc20d3673
-Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Wed May 7 20:46:17 2014 +0100
-
- 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
-
-commit cbf955474acf8f275b272da6ff5acd3a629cc806
-Author: Björn Piltz <bjornpiltz@gmail.com>
-Date: Wed May 7 17:10:15 2014 +0200
+commit b7fb6056a717cc3c372cfb7115c527ee8bc05ddb
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Wed Sep 3 11:19:02 2014 -0700
- Fixes swapped verboselevel and condition.
+ Remove NumericDiffFunctor.
+
+ Its API was broken, and its implementation was an unnecessary
+ layer of abstraction over CostFunctionToFunctor.
- Change-Id: I296d86e6bbf415be4bfd19d6a0fe0963e3d36d74
+ Change-Id: I18fc261fc6a3620b51a9eeb4dde0af03d753af69
-commit 3209b045744ea31f38d74bd9e9c8f88e605e7f76
-Author: Björn Piltz <bjornpiltz@gmail.com>
-Date: Wed May 7 17:02:27 2014 +0200
+commit 175fa8ff09049110a8509409f60cee5fd52cdbe6
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Tue Sep 2 06:49:08 2014 -0700
- Fixed warning : 'va_copy' : macro redefinition
- MSVC 2013 has got va_copy
- Compare
- http://msdn.microsoft.com/en-us/library/kb57fad8(v=vs.110).aspx
- and
- http://msdn.microsoft.com/en-us/library/kb57fad8.aspx.
+ CostFunctionToFunctor allows dynamic number of residuals.
+
+ The code itself was perfectly capable of handling residuals, but there
+ was an overly strict runtime check that had to be removed.
- Change-Id: If0937c76e8d250cde4b343844f3d35c980bf0921
+ Thanks to Domink Reitzle for reporting this.
+
+ Change-Id: I6a6d000a7c5203dd5945a61b4caeda1b8aeb09c9
-commit 1df2f0f5d704f0cc458cf707e2602d495979e3c6
-Author: Björn Piltz <bjornpiltz@gmail.com>
-Date: Wed May 7 11:10:30 2014 +0200
+commit 70ace0d5a5601901288974fcf27919754260cf0e
+Author: Johannes Schönberger <hannesschoenberger@gmail.com>
+Date: Sat Aug 30 15:52:34 2014 -0400
- Removed MSVC warnings
- These are warnings which show up when using Ceres.
+ Fix max. linear solver iterations in ConjugateGradientsSolver
- Change-Id: Id1f382f46b8a60743f0b12535b5b3cdf46f988e0
+ Change-Id: Ice0cef46441dbc1c121eeb42113667a46c96936f
-commit eca7e1c635581834c858794e09c1e876323b7775
+commit c5d8d0680250f5eb554577d30d28fc805b03fab9
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue May 6 10:16:19 2014 -0700
+Date: Fri Aug 29 20:31:19 2014 -0700
- Remove BlockRandomAccessCRSMatrix.
+ Fix a unused function error with Eigen version 3.2.1 or less.
- It is not used anywhere.
+ Thanks to Johannes Schoenberger for reporting this.
- Change-Id: I2a8ebbdacf788582f21266825ead3f76646da29e
+ Change-Id: Ie17d28f2a68734a978a8c95007724bc4055de43a
-commit 7088a08f5d9e04e75a5a4c3823ef7927e13ff0e4
+commit 0e1cc2a55488e4cf381833baaa3531c02ce9d69e
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon May 5 09:02:05 2014 -0700
+Date: Fri Aug 29 09:16:56 2014 -0700
- Fix some 80col violations and reflow the comments in cmake.in file.
+ Fix the build on Eigen version 3.2.1 and older.
- Change-Id: I4c65c89b794845aeef69159a03350c727e2ee812
+ Change-Id: I18f5cb5d42113737d7b8f78a67acee28bd5b3e08
-commit 95cce0834d5a2d72568e6d2be968a51c244c2787
+commit 5f96c62b56222f27e606f2246a8a16b6942af8d1
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon May 5 08:54:50 2014 -0700
+Date: Thu Aug 28 23:06:17 2014 -0700
- Remove some errant tabs.
+ Add Block AMD ordering for SPARSE_SCHUR + EIGEN_SPARSE.
+
+ Ordering routines for the Schur complement when using EIGEN_SPARSE.
+ Also integration into SchurComplementSolver.
- Change-Id: Ie1f7051e99bcb15ad068711b68a9d8f317b12ed7
+ Part of this CL is also a refactoring of the block jacobian matrix
+ construction.
+
+ Change-Id: I11d665cc7d4867c64190e6fed1118f4d2e13d59b
-commit a536ae76dfa2dbe2bc487900b98cf6c15276c649
+commit 7344626c04d19ca1dc4871c377c4422c744b1bca
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sun May 4 21:18:42 2014 -0700
+Date: Thu Aug 28 22:03:09 2014 -0700
- Lazily initialize the bounds arrays in ParameterBlock.
-
- Problems that do not use bounds do not have to pay the
- price of storing bounds constraints.
+ Let EIGEN_SPARSE + SPARSE_NORMAL_CHOLESKY use block AMD.
- Also replace the raw pointer access to the upper and
- lower bounds arrays with accessors which hides the
- lazy initialization from the user.
+ Modify SparseNormalCholeskySolver to use a pre-ordered Jacobian
+ matrix.
- Change-Id: I0325a35de9c29f853559f891e32e7c777686e537
+ Change-Id: Ib4d725d7a2d7bb94ea76dbb3a9b172784dbc8ea0
-commit 633b50b7af9841607c07133f585e131fba7de177
+commit 9f7032369ea4e432f0fb507cb6d2209741ee6946
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri May 2 22:46:20 2014 -0700
+Date: Thu Aug 28 21:46:43 2014 -0700
- Add the (2,4,8) template specialization.
+ Block AMD for SparseNormalCholesky + EIGEN_SPARSE.
- Change-Id: I058bcebdd1725031d573404133b184d6f27dc005
+ This is just the reordering routine. The integration with
+ SparseNormalCholesky shall happen in a subsequent CL.
+
+ Change-Id: I39ddc32aa66b11c368faf75404850fa0ae0d2b3a
-commit 5ffe06019a6c741ee7edc940ffeeceaaeabfa05d
-Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Thu May 1 12:06:46 2014 +0100
+commit b9331cd4077100d645be22a912d5743eeda72878
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Thu Aug 28 14:42:27 2014 -0700
- Export Ceres compile definitions to targets compiled against Ceres.
+ Cleanup reorder_program.cc
- - Previously all Ceres compile definitions were private to Ceres, that
- is they were not exported to users via the CMake export mechanism.
- - Now that we use compile definitions in public (installed) Ceres
- headers, we need to export the Ceres compile definitions.
- - If we did not do this, then the client's code 'see's' a different
- version of the Ceres headers to those which were in fact compiled,
- or in the case of shared_ptr, may not find the required header.
+ Program::SetParameterOffsetsAndIndex() was being called willy nilly.
+ Now the invariant is that any function that actually reorders the
+ program, updates the offsets and indices.
- - This patch makes use of the new, in CMake 2.8.11, function:
- target_compile_definitions() to export all of the Ceres compile
- definitions using CMake's export functionality.
- - For CMake versions < 2.8.11, we have to use the blunter instrument of
- calling add_definitions() in CeresConfig.cmake (invoked by a call to
- find_package(Ceres)). This is messy because it ends up adding the
- Ceres compile definitions to any target declared in the user's code
- after the call to find_package(Ceres). Although this should do no
- harm as all of our defines are prefaced with CERES_, so any
- unintentional name clashes are unlikely.
+ Also the logic around handling EIGEN_SPARSE has been simplified in
+ anticipation of the block AMD code that is forthcoming.
- Change-Id: I5dea80949190eaf4fb08ea4ac568ce28c32dd4e0
+ Last but not the least, num_eliminate_blocks, which is a rather
+ cryptic name to begin with has been replaced by the more meaningful
+ size_of_first_elimination_group.
+
+ Change-Id: I77e684f699a93b53e76aa406d64f40f8704df813
-commit 0e811b0881f1f21df0ae04fd745ae4ba5189cac1
+commit 79491a3f4a3939a3cce4644da7a998b7782b963a
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Thu May 1 07:54:12 2014 -0700
+Date: Thu Aug 28 13:57:50 2014 -0700
- Fix a bug in Minimizer::RunCallbacks.
+ Solver::FullReport now reports build config.
+
+ The header of Summary::FullReport now looks like
- Solver::Summary::message was not being updated when the solver
- terminated because of a user's iteration callback indicating
- success or failure.
+ Solver Summary (v 1.10.0-suitesparse-cxsparse-lapack-no_openmp)
- Thanks to Sergey Sharybin for reporting this.
+ Original Reduced
+ Parameter blocks 22122 22122
+ Parameters 66462 66462
+ Residual blocks 83718 83718
+ Residual 167436 167436
- Change-Id: I27e6e5eed086920ddf765461b0159417ac79d7b3
+ Change-Id: Id1b81bbf90ba412d19e2dd3687eeb9d372b72c1b
-commit 31b503792611d2119bb1acb3528fc8d58c5bd029
+commit 48068c753e91d77f6c96ef2d529a27ef8ee3947c
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Apr 30 15:02:38 2014 -0700
+Date: Thu Aug 28 13:03:40 2014 -0700
Lint cleanup from William Rucklidge.
- Change-Id: If545f114c1a2b07edd660a3c71ecfc16ffa25e43
+ Change-Id: Ie0e0aa58440be7a4f67dcd633dbb6f1bb0c051a8
-commit 15c1210a8bdf3e936b4ef600d75f0fbb70878fb5
+commit 6a51b135e6298e8ba44a58cc2b54a170ab61a82f
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Apr 29 08:12:19 2014 -0700
+Date: Thu Aug 28 10:48:29 2014 -0700
- Lint cleanup from Jim Roseborough.
+ Fix solver_test.cc
+
+ When Eigen is not installed, Solver::IsValid was not detecting
+ it correctly.
- Change-Id: I53f4e0d020602443b397387b8c5908f25649403d
+ Change-Id: Id285a84d829a9e20bc5de663adfca66ac31e08f3
-commit b1668067f1c97520d5d28eecf2c11d2afc1b01b3
+commit 62a8d64453ee41dae56710a4eead3fadf2fe1a4e
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Apr 29 08:12:19 2014 -0700
+Date: Wed Aug 27 22:54:00 2014 -0700
- Variety of changes to documentation and example code.
+ Expand check for lack of a sparse linear algebra library.
- 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.
+ The LinearSolver factory was creating a NULL linear solver
+ if only Eigen's sparse linear algebra backend was available.
- Change-Id: I8de386e5278a008c84ef2d3290d2c4351417a9f1
+ Thanks to Michael Samples and Domink Reitzle for reporting this.
+
+ Change-Id: I35e3a6c0fd0da2a31934adb5dfe4cad29577cc73
-commit 658407dacc351a999206980fbb3265099e50e7a3
+commit 12eb389b4ec4113a2260c1a192a1d3f8d1b6a2d3
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Apr 28 13:25:17 2014 -0700
+Date: Wed Aug 27 22:18:33 2014 -0700
- Add missing template specializations to the NDK build.
+ Fix Eigen Row/ColMajor bug in NumericDiffCostFunction.
+
+ If the parameter block size is 1, asking Eigen to create
+ a row-major matrix triggers a compile time error. Previously
+ we were handling the case where the number of rows in the
+ jacobian block was known statically, but the problem is present
+ when the nummber of rows is dynamic.
+
+ This CL fixes this problem.
- Change-Id: I42bb6c3bd47648050298472af80333aa900e79bf
+ Thanks to Dominik Reitzle for reporting this.
+
+ Change-Id: I99c3eec3558e66ebf4efa51c4dee8ce292ffe0c1
-commit 5d7eed87b47871bc882af765188fa4fbca976855
-Author: Björn Piltz <bjornpiltz@gmail.com>
-Date: Wed Apr 23 22:13:37 2014 +0200
+commit 6c25185bb1643d8d0f3d8e1a7b82a058156aa869
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Thu Aug 28 16:07:51 2014 +0100
- Suppport for MSVC DLLs.
+ Fix crash in Covariance if # threads > 1 requested without OpenMP.
+
+ - Previously if options.num_threads > 1 was given to Covariance compiled
+ without OpenMP, a CHECK() would be triggered in program_evalutor.
- Change-Id: Ibbcc4ba4e59f5bbf1cb91fe81c7d3b9042d03493
+ Change-Id: Iaade4f5ed5326b0c59a7014c750c41ee026e1124
-commit c830820a5c2be0d0cecb0822f2cff8b4ffe88f36
+commit 6f89d850fb4ace0104abccf467c4fe37ad378b79
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Apr 28 10:28:24 2014 -0700
+Date: Wed Aug 27 11:51:50 2014 -0700
- Add missing files to Android.mk
+ Further build breakage fixes.
+
+ 1. Allow the minimum number of linear solver iterations to be zero.
+ 2. Fix conjugate gradients solver's iteration loop to be sane again.
- Change-Id: Ibdf577c592bcde0fe5c2ce343ed8e9028b82af8f
+ Change-Id: I8594815fec940c2b30e28eb58ec5d8baacf13dae
-commit ceb7a3beaad140762b499f9a306fd7230715941a
-Author: Sergey Sharybin <sergey.vfx@gmail.com>
-Date: Mon Apr 28 13:50:09 2014 +0600
+commit dd596d0f0d6d08951efc2c11a639b546db2080c6
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Wed Aug 27 11:26:50 2014 -0700
- Fix compilation error when using G++ compiler
+ Fix the broken build.
- This compiler defines shared_ptr in std::tr1 namespace, but
- for this <tr1/memory> is to be included. Further, this compiler
- also does have <memory> header which confused previous shared
- pointer check.
+ Change-Id: I083cf1cca1bf4cca956193022d450364e73f833a
+
+commit d906afae22b05b9b9a9a2657924f4c0bf1a9b5ea
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Mon Aug 25 22:32:38 2014 -0700
+
+ A number of bug fixes.
- Simplified logic around defines now, so currently we've got:
- - CERES_TR1_MEMORY_HEADER defined if <tr1/memory> is to be
- used for shared_ptr, otherwise <memory> is to be used.
- - CERES_TR1_SHARED_PTR defined if shared_ptr is defined in
- std::tr1 namespace, otherwise it's defined in std namespace.
+ 1. Fix a build breakage in graph_test.
+ 2. Respect Solver::Options::min_num_linear_solver_iterations in
+ conjugate_gradients_solver.cc
- All the shared_ptr checks are now moved to own file FindSharedPtr
- which simplifies main CMakeLists.
+ Thanks to Johannes Schönberger for reporting these.
- Change-Id: I558a74793baaa0bd088801910a356be4ef17c31b
+ Change-Id: Ib32e3929bf5d92dd576ae5b53d4d88797095136e
-commit 02db9414fb6739857a37e268500083a0546cd0a3
+commit dab955928c6d0942d6acc5b5f1c4c11260d0767d
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Apr 28 08:32:51 2014 -0700
+Date: Sun Aug 17 13:14:50 2014 -0700
- Fix the documentation for RandNormal.
+ Add an unweighted graph.
+
+ Rename Graph -> WeightedGraph.
+ Add a new Graph class, which is cheaper to construct and
+ work with if the weights are not needed.
- As pointed out by Jim Roseborough, this is the Marsaglia Polar
- method and not the Box-Muller method.
+ This cuts down the cost of building the Hessian graph
+ significantly.
- Change-Id: Id5332bcd4b4c23a3885cc296729b44eaa5edd0a8
+ Change-Id: Id0cfc81dd2c0bb5ff8f63a1b55aa133c53c0c869
-commit 32530788d08c53f8d2c8a5f9bd61aa60a23d6e03
-Author: Richard Stebbing <richie.stebbing@gmail.com>
-Date: Sat Apr 26 07:42:23 2014 +0100
+commit a0c282adbd268c2ad82551fab31fe1cf8d0c4282
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Sun Aug 24 22:19:03 2014 -0700
- Add dynamic_sparsity option.
+ Add EIGEN_STRONG_INLINE annotation to jet.h
- The standard sparse normal Cholesky solver assumes a fixed
- sparsity pattern which is useful for a large number of problems
- presented to Ceres. However, some problems are symbolically dense
- but numerically sparse i.e. each residual is a function of a
- large number of parameters but at any given state the residual
- only depends on a sparse subset of them. For these class of
- problems it is faster to re-analyse the sparsity pattern of the
- jacobian at each iteration of the non-linear optimisation instead
- of including all of the zero entries in the step computation.
+ This improves performance when using MSVC on Windows. On GCC
+ there will be no effect.
- The proposed solution adds the dynamic_sparsity option which can
- be used with SPARSE_NORMAL_CHOLESKY. A
- DynamicCompressedRowSparseMatrix type (which extends
- CompressedRowSparseMatrix) has been introduced which allows
- dynamic addition and removal of elements. A Finalize method is
- provided which then consolidates the matrix so that it can be
- used in place of a regular CompressedRowSparseMatrix. An
- associated jacobian writer has also been provided.
+ Change-Id: I555a81ff6823c2855d64773073f75af50c48d716
+
+commit 20de0a7793c574e964350a623446136889f74632
+Author: Björn Piltz <bjornpiltz@gmail.com>
+Date: Mon Aug 25 17:05:54 2014 +0200
+
+ Fixed Malformed regex
- Changes that were required to make this extension were adding the
- SetMaxNumNonZeros method to CompressedRowSparseMatrix and adding
- a JacobianFinalizer template parameter to the ProgramEvaluator.
+ I got the following error with MSVC:
+ Syntax error at index 9 in simple regular expression "NumGroups()": '(' is unsupported.
- Change-Id: Ia5a8a9523fdae8d5b027bc35e70b4611ec2a8d01
+ Change-Id: Id1952831d81d3eb5d73bbed8c311914c4c8ab51f
-commit 2569076ff0bf8ffb3938da8b5df7edc4883aa053
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Apr 25 23:54:48 2014 -0700
+commit ccf8aea988269841d84d746e52164d5056c67a10
+Author: Björn Piltz <bjornpiltz@gmail.com>
+Date: Mon Aug 25 16:16:01 2014 +0200
- More NDK fixes.
+ Fixed MSVC error C2124: divide or mod by zero
- Fix variable names in port.h and fix fpclassify when
- using gnustl. This was tested by switching to gnustl
- in the JNI build.
+ Alternatively, if quiet_NaN is not available on all platforms a workaround would be:
+ volatile double zero = 0.0;
+ double x = 1.0/zero;
+ The 'volatile' is needed to shut up "warning C4723: potential divide by 0".
- Thanks to Carlos Hernandez for suggesting the gnustl fixes.
-
- Change-Id: I690b73caf495ccc79061f45288e416da1604cc72
+ Change-Id: If2bbdab8540595aa2e0079e1eb6b6fed6d4a6ef7
-commit e55596f8860a09b12b5e1f949237f15357c1ac59
+commit 8de27be218d42b282d7f15867733ad07058b0887
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Apr 25 16:17:19 2014 -0700
+Date: Tue Aug 19 08:22:40 2014 -0700
- Change the defaults for shared_ptr.
-
- By default shared_ptr is now assumed to be
- in the standard <memory> header and in the
- std namespace.
+ Fix a bug in TrustRegionPreprocessor
- Previously the way the ifdefs were structured if the appropriate
- variable was not defined, it would default to <t1/memory>.
+ TrustRegionPreprocessor was not setting Minimizer::Options::is_constrained.
+ This meant that the line search for bounds constraints was not being
+ invoked for bounds constrained problems.
- The new defaults are more future proof.
+ And some minor lint cleanup.
- Change-Id: If457806191196be2b6425b8289ea7a3488a27445
+ Change-Id: I18852cfaf1b33fd90b7d8c196f2063c128126658
-commit bb05be341b8436f611e4b69954a529edcca5b577
+commit 1745dd615b3897a3ef9896acfdba67eee1739bf4
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sun Apr 13 14:22:19 2014 -0700
+Date: Thu Jun 5 21:30:13 2014 -0700
- Solver::Options uses shared_ptr to handle ownership.
+ Refactor SolverImpl.
- Solver::Options::linear_solver_ordering and
- Solver::Options::inner_iteration_ordering
- were bare pointers even though Solver::Options took ownership of these
- objects.
+ Replace SolverImpl with
- This lead to buggy user code and the inability to copy Solver::Options
- objects around.
+ 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.
- With this change, these naked pointers have been replaced by a
- shared_ptr object which will managed the lifetime of these objects. This
- also leads to simplification of the lifetime handling of these objects
- inside the solver.
+ 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 Android.mk and Application.mk files have also been updated
- to use a newer NDK revision which ships with LLVM's libc++.
+ The call to Solver::Solve() now consists of
- Change-Id: I25161fb3ddf737be0b3e5dfd8e7a0039b22548cd
-
-commit 8e0991381ea3a2baddea017cd07b333f0c5de595
-Author: Joydeep Biswas <joydeep.biswas@gmail.com>
-Date: Tue Apr 22 10:40:47 2014 -0400
-
- Added a simplified robotics example for DynamicAutoDiffCostFunction.
+ 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: I9520e0a9a8d9743285c5114523fbafa6ffa5b0bd
+ Change-Id: I80f35cfc9f2cbf78f1df4aceace27075779d8a3a
-commit cc9d3bba1008066e51502cabd956985c6bdedfe8
+commit bd90384226a7f8629467f72fc410a9e8086a2dff
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Apr 18 22:58:09 2014 -0700
+Date: Mon Aug 18 11:27:06 2014 -0700
- Remove a comment from conf.py
+ Lint comments from William Rucklidge.
+
+ Also some minor refactoring of the trust_region_preprocessor_test.cc
- Change-Id: I675f7e8fc5dd2143eab74901bc7241e02e37285f
+ Change-Id: Ica28002254c95722faf93a7ef35bf3deab557f0b
-commit c4cd29dd7c80ade5b3ac7a1f6ee7df22c8869ab5
+commit 3150321db4a0cb1bb4894961a030d95dacae3591
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Apr 16 23:40:12 2014 -0700
+Date: Tue Aug 12 22:46:51 2014 -0700
- 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.
+ Preprocessor for the LineSearchMinimizer.
- Also updated the beginning of the tutorial to be a bit
- gentler and updated the history to be more consistent
-
- Change-Id: Ife38c1949252cf9f4c6301856957f2d38365f313
+ Change-Id: Ieb5dfe1c0b96ef323c1130edd0c3a8a8b2c644cc
-commit 46ccfb376ac52ac159f9187e0f7384ef68c1cbdd
+commit f7da411ef0d0067e269629887d64cdb769368800
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Sat Apr 12 21:56:51 2014 -0700
+Date: Thu Aug 7 14:30:33 2014 -0700
- Cleanup block_structure.h/cc
+ Preprocessor for the TrustRegionMinimizer.
- 1. Remove obsolete Proto conversion functions.
- 2. Fix a strict weak ordering bug.
+ 1. Base class for preprocessors.
+ 2. A preprocessor for problems that will be solved using
+ the trust region minimizer.
+ 3. Added sanity tests to the program reordering options
+ for Schur type linear solvers.
+ 4. Tests for the TrustRegionPreprocessor.
- Change-Id: I1ce6d4b06e29cf475df1d5bd37c79f66f20f8d93
+ Change-Id: I88cd926f0053bbbf2bd6b11e03ec55b8bf473cf1
-commit 7d489fdb073937ac05c0693c1902fbcb9eeb7dfc
-Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Mon Apr 7 11:14:51 2014 -0700
+commit 54893ba523106e38ab06eb72fb5d8748685c7797
+Author: Alex Stewart <alexs.mac@gmail.com>
+Date: Mon Aug 11 19:04:18 2014 +0100
- Refactor the landing page to be a bit more compact.
-
- Also minor changes to the introduction.
+ Add missing #include of <limits> for loss functions.
- Change-Id: Iaa71f576b95c869f075d6837dbb60ba4bb608ee7
+ Change-Id: Id632451429e03031a1533a9be795270debc70706
-commit 406ac7816730c15425db20d994ac0d60d932ab6c
-Author: Keir Mierle <mierle@gmail.com>
-Date: Mon Apr 7 08:36:07 2014 +0000
+commit 4a2a888905fd1ce7203e45df15762d52740bb240
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Thu Aug 7 11:48:03 2014 -0700
- Rework Ceres documentation as new website
+ Change ownership of pointers in Minimizer::Options.
- 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.
+ This is a intermediate change to clean things up
+ in preparation for a broader refactoring of the SolverImpl.
- Change-Id: I63232d985859a6dac94ff58f08bf81eb2b9e7f99
-
-commit 3e60a998ac970da659d590bac2ff892ee619aa1b
-Author: Richard Bowen <rsbowen@google.com>
-Date: Tue Apr 1 16:22:49 2014 -0700
-
- Added support and tests: row and column blocks for sparse matrix
- transpose.
+ Essentially we are replacing raw pointers in Minimizer::Options
+ with shared_ptr objects. For now this only makes things a bit
+ more complicated looking inside solver_impl.cc, but going
+ forward this will lead to considerable simplifications in
+ tracking ownership of various pointers.
- Change-Id: Ife641b08a9e86826478521a405f21ba60667f0e8
+ Change-Id: I21db8fc6763c29b0d15e834d7c968a0f514042a0
-commit 5ecb1c3f1dfde6e8ed4b493eafef7b43dad19e72
+commit 0d4e3bd664d442b700fee2895c7a8ac37717dc08
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Tue Apr 1 09:20:35 2014 -0700
+Date: Thu Aug 7 12:19:10 2014 -0700
- Add Problem::IsParameterBlockPresent.
+ GradientCheckingProblem's parameter blocks are initialized correctly.
+
+ Ensure that when a new problem object is constructed for validing
+ gradients, the parameter blocks have their data pointers point to
+ the user's parameter blocks.
- This allows the user to query the Problem to see if a
- parameter block is already present or not.
+ We used to do this inside solver_impl.cc, but doing this at
+ construction is the right thing to do.
- Change-Id: If786f6c008cc644f3398597901d718d12a6d865d
+ Change-Id: I3bfdc89bb0027c8d67cde937e8f2fa385d89c30c
-commit 75e2232b29ff2ea42c8406c9d45b138a7e7a0048
+commit cfb36463f9c1f806121779d651c7105ad899bb20
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Fri Mar 28 11:21:02 2014 -0700
+Date: Tue Aug 5 14:42:33 2014 -0700
- Fix spacing in building.rst
+ Small fixes from William Rucklidge.
- Change-Id: I4c68d732c80d7ff2bdbc812bf0b7c7fb98c43957
+ Change-Id: I0be52f0f1e53cedccffe4807dc664a2f3fb4a8e4
-commit b555b489b8447434294a8a6676272289140d6a1d
-Author: Richard Bowen <rsbowen@google.com>
-Date: Thu Mar 27 15:51:28 2014 -0700
+commit 9a41132a0523af407b53644c07900f86aa6fceac
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Mon Aug 4 22:45:53 2014 -0700
- Changes documentation to reflect changes in output format.
+ Small changes from Jim Roseborough.
- Change-Id: Ic0ba234283e791edcad29aec067905dcb2130813
+ Change-Id: Ic8b19ea5c5f4f8fd782eb4420b30514153087d18
-commit 1cfb600bfc3be8342f85f155b2b219a595ee58da
+commit a521fc3afc11425b46992388a83ef07017d02ac9
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Mar 26 12:55:11 2014 -0700
+Date: Fri Aug 1 08:27:35 2014 -0700
- Add the (2,4,9) template specialization for PartitionedMatrixView
- and SchurEliminator.
+ Simplify, cleanup and instrument SchurComplementSolver.
+
+ The instrumentation revealed that EIGEN_SPARSE can be upto
+ an order of magnitude slower than CX_SPARSE on some bundle
+ adjustment problems.
+
+ The problem comes down to the quality of AMD ordering that
+ CXSparse/Eigen implements. It does particularly badly
+ on the Schur complement. In the CXSparse implementation
+ we got around this by considering the block sparsity structure
+ and computing the AMD ordering on it and lifting it to the
+ full matrix.
- Also update the comment inside generate_partitioned_matrix_view_specializations.py
+ This is currently not possible with the release version of
+ Eigen, as the support for using preordered/natural orderings
+ is in the master branch but has not been released yet.
- Change-Id: I99a7ab4256091b1da48553da3076e5996a5757ed
+ Change-Id: I25588d3e723e50606f327db5759f174f58439e29
-commit 195e49351b386ffc23020d406883eaa6511e29b3
-Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Wed Mar 26 11:36:11 2014 +0000
+commit b43e73a03485f0fd0fe514e356ad8925731d3a81
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Fri Aug 1 12:09:09 2014 -0700
- Check validity of residual block before removal in RemoveResidualBlock.
+ Simplify the Eigen code in SparseNormalCholeskySolver.
- - 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.
+ Simplifying some of the template handling, and remove the use
+ of SelfAdjointView as it is not needed. The solver itself takes
+ an argument for where the data is actually stored.
- - 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.
+ The performance of SparseNormalCholesky with EIGEN_SPARSE
+ seems to be on par with CX_SPARSE.
- Change-Id: I9ab178e2f68a74135f0a8e20905b16405c77a62b
+ Change-Id: I69e22a144b447c052b6cbe59ef1aa33eae2dd9e3
-commit 74762b60332d4a1c08ec5aef75ec718da9d305a2
-Author: Alex Stewart <alexs.mac@gmail.com>
-Date: Thu Mar 20 14:50:25 2014 +0000
+commit 031598295c6b2f061c171b9b2338919f41b7eb0b
+Author: Sameer Agarwal <sameeragarwal@google.com>
+Date: Thu Jul 17 14:35:18 2014 -0700
- Allow construction of an AutoDiffLocalParameterization with a functor.
+ 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.
- - Previously AutoDiffLocalParameterization would internally instantiate
- a functor instance whenever one was required. This prohibits the
- user passing arguments to the constructor of the functor.
- - Now AutoDiffLocalParameterization can take over ownership of an
- allocated functor which the user created. This mimics the behaviour
- of AutoDiffCostFunction.
+ The system_test has been updated to test EIGEN_SPARSE also.
- Change-Id: I264e1face44ca5d5e71cc20c77cc7654d3f74cc0
+ Change-Id: I46a57e9c4c97782696879e0b15cfc7a93fe5496a
-commit 4f603fb0d82317a53fa9d96abe6a97b2e69bff36
+commit 1b17145adf6aa0072db2989ad799e90313970ab3
Author: Sameer Agarwal <sameeragarwal@google.com>
-Date: Wed Mar 19 17:16:43 2014 -0700
+Date: Wed Jul 30 10:14:15 2014 -0700
- Grammer fixes from William Rucklidge.
+ Make canned loss functions more robust.
+
+ The loss functions that ship with ceres can sometimes
+ generate a zero first derivative if the residual is too
+ large.
+
+ In such cases Corrector fails with an ugly undebuggable
+ crash. This CL is the first in a series of fixes to
+ take care of this.
+
+ We clamp the values of rho' from below by
+ numeric_limits<double>::min().
+
+ Also included here is some minor cleanup where the constants
+ are treated as doubles rather than integers.
+
+ Thanks to Pierre Moulon for reporting this problem.
- Change-Id: Ia40df7a1d141eb2552694510453d1431bb0c8dce
+ Change-Id: I3aaf375303ecc2659bbf6fb56a812e7dc3a41106