blender/extern/ceres/ChangeLog
Sergey Sharybin bf1e9bc613 Ceres: Update to the latest actual version
Brings all the fixes and improvements done in upstream within the last 13 months.
2016-11-01 11:29:33 +01:00

589 lines
21 KiB
Plaintext

commit 8590e6e8e057adba4ec0083446d00268565bb444
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Oct 27 12:29:37 2016 -0700
Remove two checks from rotation.h
This allows rotation.h to remove its dependency on glog.
Change-Id: Ia6aede93ee51a4bd4039570dc8edd100a7045329
commit e892499e8d8977b9178a760348bdd201ec5f3489
Author: Je Hyeong Hong <jhh37@outlook.com>
Date: Tue Oct 18 22:49:11 2016 +0100
Relax the tolerance in QuaternionParameterizationTestHelper.
This commit relaxes the tolerance value for comparing between the actual
local matrix and the expected local matrix. Without this fix,
EigenQuaternionParameterization.ZeroTest could fail as the difference
exactly matches the value of std::numeric_limits<double>::epsilon().
Change-Id: Ic4d3f26c0acdf5f16fead80dfdc53df9e7dabbf9
commit 7ed9e2fb7f1dff264c5e4fbaa89ee1c4c99df269
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Oct 19 04:45:23 2016 -0700
Occured -> Occurred.
Thanks to Phillip Huebner for reporting this.
Change-Id: I9cddfbb373aeb496961d08e434fe661bff4abd29
commit b82f97279682962d8c8ae1b6d9e801ba072a0ab1
Author: Je Hyeong Hong <jhh37@outlook.com>
Date: Tue Oct 18 21:18:32 2016 +0100
Fix a test error in autodiff_test.cc.
Previously, the test for the projective camera model would fail as no
tolerance is set in line 144. To resolve this, this commit changes
assert_equal to assert_near.
Change-Id: I6cd3379083b1a10c7cd0a9cc83fd6962bb993cc9
commit 5690b447de5beed6bdda99b7f30f372283c2fb1a
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Oct 13 09:52:02 2016 -0700
Fix documentation source for templated functions in rotation.h
Change-Id: Ic1b2e6f0e6eb9914f419fd0bb5af77b66252e57c
commit 2f8f98f7e8940e465de126fb51282396f42bea20
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Oct 13 09:35:18 2016 -0700
Prepare for 1.12.0RC1
Change-Id: I23eaf0b46117a01440143001b74dacfa5e57cbf0
commit 55c12d2e9569fe4aeac3ba688ac36810935a37ba
Author: Damon Kohler <damonkohler@google.com>
Date: Wed Oct 5 16:30:31 2016 +0200
Adds package.xml to support Catkin.
Change-Id: I8ad4d36a8b036417604a54644e0bb70dd1615feb
commit 0bcce6565202f5476e40f12afc0a99eb44bd9dfb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Oct 10 23:30:42 2016 -0700
Fix tabs in Android.mk
Change-Id: Ie5ab9a8ba2b727721565e1ded242609b6df5f8f5
commit e6ffe2667170d2fc435443685c0163396fc52d7b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Oct 10 22:47:08 2016 -0700
Update the version history.
Change-Id: I9a57b0541d6cebcb695ecb364a1d4ca04ea4e06c
commit 0a4ccb7ee939ab35b22e26758401e039b033b176
Author: David Gossow <dgossow@google.com>
Date: Wed Sep 7 21:38:12 2016 +0200
Relaxing Jacobian matching in Gradient Checker test.
Any result of an arithmetic operation on floating-point matrices
should never be checked for strict equality with some expected
value, due to limited floating point precision on different machines.
This fixes some occurences of exact checks in the gradient checker
unit test that were causing problems on some platforms.
Change-Id: I48e804c9c705dc485ce74ddfe51037d4957c8fcb
commit ee44fc91b59584921c1d1c8db153fda6d633b092
Author: Je Hyeong Hong <jhh37@outlook.com>
Date: Mon Oct 3 12:19:30 2016 +0100
Fix an Intel compiler error in covariance_impl.cc.
Intel C compiler strictly asks for parallel loops with collapse to be
perfectly nested. Otherwise, compiling Ceres with ICC will throw an
error at line 348 of covariance_impl.cc.
Change-Id: I1ecb68e89b7faf79e4153dfe6675c390d1780db4
commit 9026d69d1ce1e0bcd21debd54a38246d85c7c6e4
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Sep 22 17:20:14 2016 -0700
Allow SubsetParameterization to hold all parameters constant
1. SubsetParameterization can now be constructed such that all
parameters are constant. This is required for it be used as part
of a ProductParameterization to hold a part of parameter block
constant. For example, a parameter block consisting of a rotation
as a quaternion and a translation vector can now have a local
parameterization where the translation part is constant and the
quaternion part has a QuaternionParameterization associated with it.
2. The check for the tangent space of a parameterization being
positive dimensional. We were not doing this check up till now
and the user could accidentally create parameterizations like this
and create a problem for themselves. This will ensure that even
though one can construct a SubsetParameterization where all
parameters are constant, you cannot actually use it as a local
parameterization for an entire parameter block. Which is how
it was before, but the check was inside the SubsetParameterization
constructor.
3. Added more tests and refactored existing tests to be more
granular.
Change-Id: Ic0184a1f30e3bd8a416b02341781a9d98e855ff7
commit a36693f83da7a3fd19dce473d060231d4cc97499
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Sep 17 16:31:41 2016 -0700
Update version history
Change-Id: Ib2f0138ed7a1879ca3b2173e54092f7ae8dd5c9d
commit 01e23e3d33178fdd050973666505c1080cfe04c3
Author: David Gossow <dgossow@google.com>
Date: Thu Sep 8 12:22:28 2016 +0200
Removing duplicate include directive.
Change-Id: I729ae6501497746d1bb615cb893ad592e16ddf3f
commit 99b8210cee92cb972267537fb44bebf56f812d52
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Sep 7 15:31:30 2016 -0700
Update Android.mk to include new files.
Change-Id: Id543ee7d2a65b65c868554a17f593c0a4958e873
commit 195d8d13a6a3962ac39ef7fcdcc6add0216eb8bc
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Tue Sep 6 07:12:23 2016 -0700
Remove two DCHECKs from CubicHermiteSpline.
They were present as debugging checks but were causing problems
with the build on 32bit i386 due to numerical cancellation issues,
where x ~ -epsilon.
Removing these checks only changes the behaviour in Debug mode.
We are already handling such small negative numbers in production
if they occur. All that this change does is to remove the crash.
https://github.com/ceres-solver/ceres-solver/issues/212
Thanks to @NeroBurner and @debalance for reporting this.
Change-Id: I66480e86d4fa0a4b621204f2ff44cc3ff8d01c04
commit 83041ac84f2d67c28559c67515e0e596a3f3aa20
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Fri Sep 2 19:10:35 2016 -0700
Fix some compiler warnings.
Reported by Richard Trieu.
Change-Id: I202b7a7df09cc19c92582d276ccf171edf88a9fb
commit 8c4623c63a2676e79e7917bb0561f903760f19b9
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Sep 1 00:05:09 2016 -0700
Update ExpectArraysClose to use ExpectClose instead of EXPECT_NEAR
The documentation for ExpectArraysClose and its implementation
did not match.
This change makes the polynomial_test not fail on 64bit AMD builds.
Thanks to Phillip Huebner for reporting this.
Change-Id: I503f2d3317a28d5885a34f8bdbccd49d20ae9ba2
commit 2fd39fcecb47eebce727081c9ffb8edf86c33669
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Thu Sep 1 16:05:06 2016 -0700
FindWithDefault returns by value rather than reference.
Returning by reference leads to lifetime issues with the default
value which may go out of scope by the time it is used.
Thanks to @Ardavel for reporting this, as this causes graph_test
to fail on VS2015x64.
https://github.com/ceres-solver/ceres-solver/issues/216
Change-Id: I596481219cfbf7622d49a6511ea29193b82c8ba3
commit 716f049a7b91a8f3a4632c367d9534d1d9190a81
Author: Mike Vitus <vitus@google.com>
Date: Wed Aug 31 13:38:30 2016 -0700
Convert pose graph 2D example to glog and gflags.
Change-Id: I0ed75a60718ef95199bb36f33d9eb99157d11d40
commit 46c5ce89dda308088a5fdc238d0c126fdd2c2b58
Author: David Gossow <dgossow@google.com>
Date: Wed Aug 31 18:40:57 2016 +0200
Fix compiler errors on some systems
This fixes some signed-unsigned comparisons and a missing header
include.
Change-Id: Ieb2bf6e905faa74851bc4ac4658d2f1da24b6ecc
commit b102d53e1dd7dab132e58411183b6fffc2090590
Author: David Gossow <dgossow@google.com>
Date: Wed Aug 31 10:21:20 2016 +0200
Gradient checker multithreading bugfix.
This is a follow-up on c/7470. GradientCheckingCostFunction calls
callback_->SetGradientErrorDetected() in its Evaluate method,
which will run in multiple threads simultaneously when enabling
this option in the solver. Thus, the string append operation
inside that method has to be protected by a mutex.
Change-Id: I314ef1df2be52595370d9af05851bf6da39bb45e
commit 79a28d1e49af53f67af7f3387d07e7c9b7339433
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Aug 31 06:47:45 2016 -0700
Rename a confusingly named member of Solver::Options
Solver::Options::numeric_derivative_relative_step_size to
Solver::Options::gradient_check_numeric_derivative_relative_step_size
Change-Id: Ib89ae3f87e588d4aba2a75361770d2cec26f07aa
commit 358ae741c8c4545b03d95c91fa546d9a36683677
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Aug 31 06:58:41 2016 -0700
Note that Problem::Evaluate cannot be called from an IterationCallback
Change-Id: Ieabdc2d40715e6b547ab22156ba32e9c8444b7ed
commit 44044e25b14d7e623baae4505a17c913bdde59f8
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed Aug 31 05:50:58 2016 -0700
Update the NumTraits for Jets
1. Use AVX if EIGEN_VECTORIZE_AVX is defined.
2. Make the cost of division same as the cost of multiplication.
These are updates to the original numtraits update needed for eigen 3.3
that Shaheen Gandhi sent out.
Change-Id: Ic1e3ed7d05a659c7badc79a894679b2dd61c51b9
commit 4b6ad5d88e45ce8638c882d3e8f08161089b6dba
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sat Aug 27 23:21:55 2016 -0700
Use ProductParameterization in bundle_adjuster.cc
Previously, when using a quaternion to parameterize the camera
orientation, the camera parameter block was split into two
parameter blocks. One for the rotation and another for the
translation and intrinsics. This was to enable the use of the
Quaternion parameterization.
Now that we have a ProductParameterization which allows us
to compose multiple parameterizations, this is no longer needed
and we use a size 10 parameter block instead.
This leads to a more than 2x improvements in the linear solver time.
Change-Id: I78b8f06696f81fee54cfe1a4ae193ee8a5f8e920
commit bfc916cf1cf753b85c1e2ac037e2019ee891f6f9
Author: Shaheen Gandhi <visigoth@gmail.com>
Date: Thu Aug 4 12:10:14 2016 -0700
Allow ceres to be used with the latest version of Eigen
Change-Id: Ief3b0f6b405484ec04ecd9ab6a1e1e5409a594c2
commit edbd48ab502aa418ad9700ee5c3ada5f9268b90a
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Sun Jul 10 14:13:51 2016 +0100
Enable support for OpenMP in Clang if detected.
- Previously we disabled OpenMP if Clang was detected, as it did not
support it. However as of Clang 3.8 (and potentially Xcode 8) OpenMP
is supported.
Change-Id: Ia39dac9fe746f1fc6310e08553f85f3c37349707
commit f6df6c05dd83b19fa90044106ebaca40957998ae
Author: Mike Vitus <vitus@google.com>
Date: Thu Aug 18 19:27:43 2016 -0700
Add an example for modeling and solving a 3D pose graph SLAM problem.
Change-Id: I750ca5f20c495edfee5f60ffedccc5bd8ba2bb37
commit ac3b8e82175122e38bafaaa9cd419ba3cee11087
Author: David Gossow <dgossow@google.com>
Date: Fri Apr 29 16:07:11 2016 +0200
Gradient checking cleanup and local parameterization bugfix
Change the Ceres gradient checking API to make is useful for
unit testing, clean up code duplication and fix interaction between
gradient checking and local parameterizations.
There were two gradient checking implementations, one being used
when using the check_gradients flag in the Solver, the other
being a standalone class. The standalone version was restricted
to cost functions with fixed parameter sizes at compile time, which
is being lifted here. This enables it to be used inside the
GradientCheckingCostFunction as well.
In addition, this installs new hooks in the Solver to ensure
that Solve will fail if any incorrect gradients are detected. This
way, you can set the check_gradient flags to true and detect
errors in an automated way, instead of just printing error information
to the log. The error log is now also returned in the Solver summary
instead of being printed directly. The user can then decide what to
do with it. The existing hooks for user callbacks are used for
this purpose to keep the internal API changes minimal and non-invasive.
The last and biggest change is the way the the interaction between
local parameterizations and the gradient checker works. Before,
local parameterizations would be ignored by the checker. However,
if a cost function does not compute its Jacobian along the null
space of the local parameterization, this wil not have any effect
on the solver, but would result in a gradient checker error.
With this change, the Jacobians are multiplied by the Jacobians
of the respective local parameterization and thus being compared
in the tangent space only.
The typical use case for this are quaternion parameters, where
a cost function will typically assume that the quaternion is
always normalized, skipping the correct computation of the Jacobian
along the normal to save computation cost.
Change-Id: I5e1bb97b8a899436cea25101efe5011b0bb13282
commit d4264ec10d9a270b53b5db86c0245ae8cbd2cf18
Author: Mike Vitus <vitus@google.com>
Date: Wed Aug 17 13:39:05 2016 -0700
Add a quaternion local parameterization for Eigen's quaternion element convention.
Change-Id: I7046e8b24805313c5fb6a767de581d0054fcdb83
commit fd7cab65ef30fbc33612220abed52dd5073413c4
Author: Mike Vitus <vitus@google.com>
Date: Wed Aug 10 09:29:12 2016 -0700
Fix typos in the pose graph 2D example.
Change-Id: Ie024ff6b6cab9f2e8011d21121a91931bd987bd1
commit 375dc348745081f89693607142d8b6744a7fb6b4
Author: Mike Vitus <vitus@google.com>
Date: Wed Aug 3 18:51:16 2016 -0700
Remove duplicate entry for the NIST example in the docs.
Change-Id: Ic4e8f9b68b77b5235b5c96fe588cc56866dab759
commit f554681bf22d769abc12dd6d346ef65f9bb22431
Author: Mike Vitus <vitus@google.com>
Date: Mon Jul 25 18:30:48 2016 -0700
Add an example for modeling and solving a 2D pose graph SLAM problem.
Change-Id: Ia89b12af7afa33e7b1b9a68d69cf2a0b53416737
commit e1bcc6e0f51512f43aa7bfb7b0d62f7ac1d0cd4b
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Wed May 18 07:52:48 2016 -0700
Add additional logging for analyzing orderings
Change-Id: Ic68d2959db35254e2895f11294fb25de4d4b8a81
commit 16980b4fec846f86910c18772b8145bcb55f4728
Author: Mike Vitus <vitus@google.com>
Date: Fri Jul 15 13:37:49 2016 -0700
Delete the remove_definitons command from sampled_functions
CMakeLists.txt because it will be inherited from the top level examples
CMakeLists.txt.
Change-Id: I25593587df0ae84fd8ddddc589bc2a13f3777427
commit a04490be97800e78e59db5eb67fa46226738ffba
Author: Mike Vitus <vitus@google.com>
Date: Thu Jul 14 10:10:13 2016 -0700
Add readme for the sampled_function example.
Change-Id: I9468b6a7b9f2ffdd2bf9f0dd1f4e1d5f894e540c
commit ff11d0e63d4678188e8cabd40a532ba06912fe5a
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Wed Jun 29 09:31:45 2016 +0100
Use _j[0,1,n]() Bessel functions on MSVC to avoid deprecation errors.
- Microsoft deprecated the POSIX Bessel functions: j[0,1,n]() in favour
of _j[0,1,n](), it appears since at least MSVC 2005:
https://msdn.microsoft.com/en-us/library/ms235384(v=vs.100).aspx.
- As this occurs in jet.h (templated public header), although Ceres
suppresses the warning when it itself is built (to suppress a warning
about the insecurity of using std::copy), it will crop up again in
client code (without this fix) unless it is explicitly suppressed
there also.
- Raised as Issue #190:
https://github.com/ceres-solver/ceres-solver/issues/190.
Change-Id: If7ac5dbb856748f9900be93ec0452a40c0b00524
commit 8ea86e1614cf77644ce782e43cde6565a54444f5
Author: Nicolai Wojke <nwojke@uni-koblenz.de>
Date: Mon Apr 25 14:24:41 2016 +0200
Fix: Copy minimizer option 'is_silent' to LinSearchDirection::Options
Change-Id: I23b4c3383cad30033c539ac93883d77c8dd4ba1a
commit 080ca4c5f2ac42620971a07f06d2d13deb7befa8
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Apr 24 22:46:54 2016 -0700
Fix typos in users.rst
Change-Id: Ifdc67638a39403354bc9589f42a1b42cb9984dd2
commit 21ab397dc55335c147fdd795899b1f8981037b09
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Apr 24 21:13:00 2016 -0700
Make some Jet comparisons exact.
Change-Id: Ia08c72f3b8779df96f5c0d5a954b2c0a1dd3a061
commit ee40f954cf464087eb8943abf4d9db8917a33fbe
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Sun Apr 24 07:49:55 2016 -0700
Add colmap to users.rst
Change-Id: I452a8c1dc6a3bc55734b2fc3a4002ff7939ba863
commit 9665e099022bd06e53b0779550e9aebded7f274d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date: Mon Apr 18 06:00:58 2016 -0700
Fix step norm evaluation in LineSearchMinimizer
TrustRegionMinimizer evaluates the size of the step
taken in the ambient space, where as the LineSearchMinimizer
was using the norm in the tangent space. This change fixes
this discrepancy.
Change-Id: I9fef64cbb5622c9769c0413003cfb1dc6e89cfa3
commit 620ca9d0668cd4a00402264fddca3cf6bd2e7265
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Mon Apr 18 15:14:11 2016 +0100
Remove use of -Werror when compiling Ceres.
- As noted in Issue #193 (in that case for GCC 6), Ceres' use of -Werror
when compiling on *nix can prevent compilation on new compilers that
add new warnings and there is an inevitable delay between new compiler
versions and Ceres versions.
- Removing the explicit use of -Werror, and relying on indirect
verification by maintainers should fix build issues for Ceres releases
on newer compilers.
Change-Id: I38e9ade28d4a90e53dcd918a7d470f1a1debd7b4
commit 0c63bd3efbf1d41151c9fab41d4b77dc64c572c8
Author: Mike Vitus <vitus@google.com>
Date: Thu Apr 14 10:25:52 2016 -0700
Add floor and ceil functions to the Jet implementation.
Change-Id: I72ebfb0e9ade2964dbf3a014225ead345d5ae352
commit 9843f3280356c158d23c06a16085c6c5ba35e053
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Mon Mar 7 21:24:32 2016 +0000
Report Ceres compile options as components in find_package().
- Users can now specify particular components from Ceres, such as
SuiteSparse support) that must be present in a detected version of
Ceres in order for it to be reported as found by find_package().
- This allows users to specify for example that they require a version
of Ceres with SuiteSparse support at configure time, rather than
finding out only at run time that Ceres was not compiled with the
options they require.
- The list of available components are built directly from the Ceres
compile options.
- The meta-module SparseLinearAlgebraLibrary is present if at least
one sparse linear algebra backend is available.
Change-Id: I65f1ddfd7697e6dd25bb4ac7e54f5097d3ca6266
commit e4d4d88bbe51b9cc0f7450171511abbea0779790
Author: Timer <linyicx@126.com>
Date: Fri Apr 8 15:42:18 2016 +0800
Fix a spelling error in nnls_modeling.rst
Change-Id: I341d901d3df993bc5397ed15e6cb330b0c38fd72
commit 5512f58536e1be0d92010d8325b606e7b4733a08
Author: Keir Mierle <mierle@gmail.com>
Date: Thu Apr 7 12:03:16 2016 -0700
Only use collapse() directive with OpenMP 3.0 or higher
Change-Id: Icba544c0494763c57eb6dc61e98379312ca15972
commit d61e94da5225217cab7b4f93b72f97055094681f
Author: Thomas Schneider <schneith@ethz.ch>
Date: Wed Apr 6 10:40:29 2016 +0200
Add IsParameterBlockConstant to the ceres::Problem class.
Change-Id: I7d0e828e81324443209c17fa54dd1d37605e5bfe
commit 77d94b34741574e958a417561702d6093fba87fb
Author: Alex Stewart <alexs.mac@gmail.com>
Date: Sun Feb 14 16:54:03 2016 +0000
Fix install path for CeresConfig.cmake to be architecture-aware.
- Previously we were auto-detecting a "64" suffix for the install path
for the Ceres library on non-Debian/Arch Linux distributions, but
we were installing CeresConfig.cmake to an architecture independent
location.
- We now install CeresConfig.cmake to lib${LIB_SUFFIX}/cmake/Ceres.
- Also make LIB_SUFFIX visible to the user in the CMake GUI s/t they can
easily override the auto-detected value if desired.
- Reported by jpgr87@gmail.com as Issue #194.
Change-Id: If126260d7af685779487c01220ae178ac31f7aea