- Nov 21, 2016
-
-
Sameer Agarwal authored
Change-Id: I36db7e705ad520321335ff2f438cba54d914bb5c
-
Alex Stewart authored
- Previously we were not listing gflags as a public dependency of Ceres if it and glog were found (and MINIGLOG was not being used). This does not reflect that if glog was compiled with gflags then it will #include gflags/gflags.h in glog/logging.h, thus making gflags a public dependency of anything linking against glog. - On *nix OSs if glog/gflags are shared libraries this did not result in a link error when compiling Ceres as the gflags symbols were indirectly resolved. However, on MSVC this is not the case, and this could result in unresolved gflags symbol link errors when compiling Ceres. - Now we add gflags to the list of public Ceres dependencies if both glog and gflags are found (and MINIGLOG is not enabled). Change-Id: I5ce6038fa816781cc81b378522068dc563d29c51
-
Alex Stewart authored
- The latest version of glog supports building with CMake, in which case it exports itself via CMake as a target that contains important meta information such as Windows-specific compilation definitions. - This patch updates FindGlog.cmake such that it can optionally use an exported glog target if one exists, if not it will fall back to the current approach whereby the glog components are found manually. This behaviour (and the implementation) is very similar to that of FindGflags.cmake. Change-Id: Idfb5f49c1b457707029bff52068f58237c0e285d
-
Alex Stewart authored
- GLOG_NO_ABBREVIATED_SEVERITIES is the default on Windows, in which case google::WARNING is not defined. - Remove Ceres-specific redefinition of WARNING in mock-log.h fork in place of using non-abbreviated severity in the one place in levenberg_marquardt_strategy_test where ScopedMockLog is actually used. - Remove unnecessary dependency of gradient_checking_cost_function_test on ScopedMockLog. Change-Id: I9fb540f638037b6015fd264cfc618c9d60f5686c
-
Sameer Agarwal authored
Change-Id: I1d7cfda65de173ceba156cf1f684f56f6c62840b
-
- Nov 14, 2016
-
-
Alex Stewart authored
- MSVC does not expose standard math constants, such as M_PI in <cmath> or <math.h> unless _USE_MATH_DEFINES is defined prior to their inclusion: https://msdn.microsoft.com/en-us/library/4hwaceh6.aspx. - Use CMake to ensure that this is #defined when both Ceres and the examples are compiled, even though it should only be an issue for the examples where M_PI is used. Change-Id: I67af75b100b8138a65514273d23bfe445d92652c
-
- Nov 13, 2016
-
-
Hung Lun authored
Change-Id: I7f04f5e82a6e47e8d22c902744729f3f6d93dee8
-
Alex Stewart authored
- gflags_report_not_found() calls gflags_reset_find_library_prefix() and we only reset CMAKE_FIND_LIBRARY_PREFIXES when performing a manual search for gflags, but gflags_report_not_found() is also used before the manual search when searching for an exported gflags target. - As such, it was possible that we could have cleared CMAKE_FIND_LIBRARY_PREFIXES rather than reset it if gflags_report_not_found() was invoked during the exported target search. - This patch prevents this possibility by verifying that the cached version of CMAKE_FIND_LIBRARY_PREFIXES exists before updating it. Change-Id: I07528ae5f197a366c7da342196b3e977f9a1fc93
-
Alex Stewart authored
- alignas(0) should be ignored, however it results in a build error on GCC, so instead default to the alignment of double in Jets if we cannot align to 16-byte boundaries on the platform, but are compiling with C++11. Change-Id: I2e54c69516ea2e1447a8bdc138b2dd70050c6dad
-
Alex Stewart authored
- As per Andrew Hunter’s comments in the commit which added Jet alignment when using C++11 here: https://ceres-solver-review.googlesource.com/#/c/7100, there is wide lattitude in the standard about what the maximum supported alignment can be. - Previously, we were forcing the alignment to 1, if the value of alignof(std::max_align_t), which we use as a proxy for the maximum supported alignment on the platform, was < 16. - An alignment of 1 is not valid for Jets, as it would weaken the natural alignment of the types within a Jet, which would typically be 4 (32-bit systems) or 8 (64-bit systems), thus resulting in a compiler error. - This was reported as issue 235 for Clang 3.8 on i386: https://github.com/ceres-solver/ceres-solver/issues/235. Change-Id: Ie39e5499c64f9231f29ebf4392992b5c9ce2e385
-
- Nov 12, 2016
-
-
Sameer Agarwal authored
Change-Id: I1c8bef059adc57476b5e75310fd7d983b8229bf7
-
- Nov 11, 2016
-
-
Sameer Agarwal authored
In the process also move some documentation from the file header to just above the class declaration. This change is in response to https://github.com/ceres-solver/ceres-solver/issues/233 Change-Id: I08cff1a94c57b67dd2bd8be4dba8c3fce46b68ab
-
- Nov 01, 2016
-
-
Sameer Agarwal authored
Also clang-format the file to fix some accumulated cruft. Change-Id: Icf41e3f864a4fe925426477893602b50ff2131f4
-
Sameer Agarwal authored
Support for parameter tolerance was added to the line search minimizer was added a while ago, and calling Solve on a non-linear least squares problem supported it but for some reason the GradientProblemSolver::Options struct was missing this option even though the documentation suggested that it was present! Thanks to Noah Snavely for reporting this bug. Change-Id: I57cf4ab396bc822c19fa298529e113b89664a349
-
Rob Carroll authored
Needed for instantiation with Jet<float,N>. Change-Id: I8ec07a844cc911a3c7f24c25797bd21c0bee07b5
-
- Oct 28, 2016
-
-
Sameer Agarwal authored
This allows rotation.h to remove its dependency on glog. Change-Id: Ia6aede93ee51a4bd4039570dc8edd100a7045329
-
- Oct 20, 2016
-
-
Je Hyeong Hong authored
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
-
- Oct 19, 2016
-
-
Sameer Agarwal authored
Thanks to Phillip Huebner for reporting this. Change-Id: I9cddfbb373aeb496961d08e434fe661bff4abd29
-
Je Hyeong Hong authored
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
-
- Oct 14, 2016
-
-
Sameer Agarwal authored
Change-Id: Ic1b2e6f0e6eb9914f419fd0bb5af77b66252e57c
-
Sameer Agarwal authored
Change-Id: I23eaf0b46117a01440143001b74dacfa5e57cbf0
-
- Oct 11, 2016
-
-
Damon Kohler authored
Change-Id: I8ad4d36a8b036417604a54644e0bb70dd1615feb
-
Sameer Agarwal authored
Change-Id: Ie5ab9a8ba2b727721565e1ded242609b6df5f8f5
-
Sameer Agarwal authored
Change-Id: I9a57b0541d6cebcb695ecb364a1d4ca04ea4e06c
-
- Oct 10, 2016
-
-
David Gossow authored
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
-
- Oct 03, 2016
-
-
Je Hyeong Hong authored
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
-
- Sep 23, 2016
-
-
Sameer Agarwal authored
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
-
- Sep 18, 2016
-
-
Sameer Agarwal authored
Change-Id: Ib2f0138ed7a1879ca3b2173e54092f7ae8dd5c9d
-
- Sep 08, 2016
-
-
David Gossow authored
Change-Id: I729ae6501497746d1bb615cb893ad592e16ddf3f
-
Sameer Agarwal authored
Change-Id: Id543ee7d2a65b65c868554a17f593c0a4958e873
-
- Sep 06, 2016
-
-
Sameer Agarwal authored
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
-
- Sep 03, 2016
-
-
Sameer Agarwal authored
Reported by Richard Trieu. Change-Id: I202b7a7df09cc19c92582d276ccf171edf88a9fb
-
Sameer Agarwal authored
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
-
- Sep 02, 2016
-
-
Sameer Agarwal authored
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
-
- Sep 01, 2016
-
-
Mike Vitus authored
Change-Id: I0ed75a60718ef95199bb36f33d9eb99157d11d40
-
David Gossow authored
This fixes some signed-unsigned comparisons and a missing header include. Change-Id: Ieb2bf6e905faa74851bc4ac4658d2f1da24b6ecc
-
David Gossow authored
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
-
- Aug 31, 2016
-
-
Sameer Agarwal authored
Solver::Options::numeric_derivative_relative_step_size to Solver::Options::gradient_check_numeric_derivative_relative_step_size Change-Id: Ib89ae3f87e588d4aba2a75361770d2cec26f07aa
-
Sameer Agarwal authored
Change-Id: Ieabdc2d40715e6b547ab22156ba32e9c8444b7ed
-
Sameer Agarwal authored
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
-