commit e39d9ed1d60dfeb58dd2a0df4622c683f87b28e3 Author: Carl Dehlin Date: Tue Jun 16 09:02:05 2020 +0200 Add a missing term and remove a superfluous word Change-Id: I25f40f0bf241302b975e6fc14690aa863c0728b0 commit 27cab77b699a1a2b5354820c57a91c92eaeb21e3 Author: Carl Dehlin Date: Mon Jun 15 20:01:18 2020 +0200 Reformulate some sentences Change-Id: I4841aa8e8522008dd816261d9ad98e5fb8ad1758 commit 8ac6655ce85a4462f2882fcb9e9118a7057ebe09 Author: Carl Dehlin Date: Mon Jun 15 19:10:12 2020 +0200 Fix documentation formatting issues Change-Id: Iea3a6e75dc3a7376eda866ab24e535a6df84f8ea commit 7ef83e07592ead74eeacc227b642df1959d2a246 Author: Alex Stewart Date: Sat May 30 11:30:01 2020 +0100 Update minimum required C++ version for Ceres to C++14 - Removes all workarounds for pre-C++14 versions - Removes '11' qualifier from C++ threading option and associated defines. - Fix missing inclusion of 'Multithreading' in reported Ceres components when C++ threading model is enabled. - Update Sphinx documentation to specify C++14 as minimum requirement. Change-Id: I706c8b367b3221e3c4d1a0aaf669a8f9c911e438 commit 1d75e7568172dc5a4dc97937dcf66e0f5d28272c Author: Sameer Agarwal Date: Mon May 25 18:09:50 2020 -0700 Improve documentation for LocalParameterization Change-Id: I63fa81206e67bfac56cc42bf2bb4915a3a11332b commit 763398ca4ed56952f48c48df6a98e277e3e05381 Author: Sameer Agarwal Date: Mon May 25 12:12:03 2020 -0700 Update the section on Preconditioners Re-organize the section, add some more references and details for existing preconditioners and add documentation for the SUBSET precondition. https://github.com/ceres-solver/ceres-solver/issues/490 Change-Id: I93d0af819c160f5e4ce48b18202f629ddb92ca7b commit a614f788a34ea86dd9f679b779ffbf920db45aa6 Author: Sameer Agarwal Date: Fri May 22 13:52:53 2020 -0700 Call EvaluationCallback before evaluating the fixed cost. Fixe a subtle bug in Program::RemoveFixedBlocks, where we call ResidualBlock::Evaluate on residual blocks with all constant parameter blocks without paying attention to the presence of an EvaluationCallback. In the process also run clang-format on some of the files touched by this change. https://github.com/ceres-solver/ceres-solver/issues/482 Change-Id: I342b66f6f975fdee2eef139a31f24d4a3e568e84 commit 70308f7bb9cac560db250262079c0f8b030b9d6b Author: Sameer Agarwal Date: Tue May 26 06:12:13 2020 -0700 Simplify documentation generation. 1. The MathJax font configuration is moved into conf.py and removed from make_docs.py along with better font sizing. 2. Remove the bread crumb replacement as it is not working anymore. 3. Fix a parsing error in nnls_modeling.rst which the new version of sphinx barfed on. Change-Id: Ia3c2e732323a8b5cabafe851ac5ca0f0c82da071 commit e886d7e65368e73e9d35c2ead895d81ced677977 Author: Sameer Agarwal Date: Mon May 25 13:09:39 2020 -0700 Reduce the number of minimizer iterations in evaluation_callback_test.cc This should reduce the probability of the test heuristic failing due to floating point issues. https://github.com/ceres-solver/ceres-solver/issues/562 https://github.com/ceres-solver/ceres-solver/issues/392 Change-Id: I8ccf4164a8d595f5930d378f464313d4a2cae419 commit 9483e6f2f57bf51bad7cefd155cd5b48ca672c63 Author: Sameer Agarwal Date: Tue May 12 05:16:32 2020 -0700 Simplify DynamicCompressedRowJacobianWriter::Write Change-Id: I67aa2959bd479909b5cada79359c5cfdb8a37ef7 commit 323cc55bb92a513924e566f487b54556052a716f Author: Sameer Agarwal Date: Mon May 25 10:38:35 2020 -0700 Update the version in package.xml to 2.0.0. Change-Id: Ibac053916520e8c597c875a8c7f5668bb35b6ba1 commit 303b078b50bd3311a9c86fc256be3e9f2f334411 Author: Bayes Nie Date: Sun May 24 16:08:52 2020 +0800 Fix few typos and alter a NULL to nullptr. Fix typos in docs/source/features.rst and examples/helloworld.cc. Alter a NULL to nullptr in include/ceres/autodiff_cost_function.h Change-Id: Ibcf00b6ef665ad6be9af14b3add2dd4f3852e7e6 commit cca93fed63dd4117f3d6dd5339131fc7674e6e0a Author: Alex Stewart Date: Sun May 24 18:05:05 2020 +0100 Bypass Ceres' FindGlog.cmake in CeresConfig.cmake if possible - If the version of glog detected and used to build Ceres was built with CMake (i.e. Config mode) then we now use Config mode directly in CeresConfig.cmake and do not install Ceres' FindGlog.cmake module. - This has the benefit of removing any hard-coded paths from CeresConfig.cmake provided that all dependencies were also built with CMake. Change-Id: I85af8a953fd6d300e8bc0cdeb0b3636fec182f68 commit 77fc1d0fc4159ebb3a0a84a16651564eb2ce3c9d Author: Alex Stewart Date: Sun May 24 19:07:26 2020 +0100 Use build_depend for private dependencies in Catkin package.xml Change-Id: If0c0569e7ebbf37c0d8e8daaf7765e20a6282531 commit a09682f00d8e50ada3c7ed16f8c48fa71a423f60 Author: Alex Stewart Date: Sun May 24 16:49:28 2020 +0100 Fix MSVC version check to support use of clang-cl front-end - Raised as issue: #521 Change-Id: Iaea6b43484b90ec8789bda0447c8a90759974ec1 commit b70687fcc86624c7d5520d25734938fa95d2af73 Author: Alex Stewart Date: Sun May 24 20:28:12 2020 +0100 Add namespace qualified Ceres::ceres CMake target - This reflects modern CMake style, and also provides a measure of protection against missing find_package() imports in downstream clients resulting in linker errors when 'ceres' matches the compiled library and not the imported target. - The original 'ceres' target remains, as a local imported interface target created by CeresConfig for backwards compatibility. Change-Id: Ie9ed8de9b7059bc0cae1ae5002bb94d8fe617188 commit 99efa54bdb4e14c3f4382a166baf6772113f74a8 Author: Alex Stewart Date: Sun May 24 19:18:38 2020 +0100 Replace type aliases deprecated/removed in C++17/C++20 from FixedArray - Raised as issue #551 - Also adds C++20 to the set of ALLOWED_CXX_STANDARDS, although this will require a version of CMake >= 3.12. Change-Id: I0f13c72e93a35391fd2d18590b4243a329a2322c commit adb973e4a337c372aa81ca1a4f3bb704068c08b7 Author: Sameer Agarwal Date: Thu May 21 14:45:28 2020 -0700 NULL -> nullptr Change-Id: Iaeea2ef7912d328653a76b65976adc8025a5be35 commit 27b717951b58c134b3a5a9f664a66c7480364d6c Author: Alastair Harrison Date: Fri May 15 10:10:12 2020 +0100 Respect FIND_QUIETLY flag in cmake config file Ensure that Ceres does not print any log messages when somebody has used 'find_package(Ceres QUIET)' in their CMake project. Change-Id: Id6b68859cc8a5857f3fa78f29736cb82fd5a0943 commit 646959ef118a1f10bf93741d97cf64265d42f8c6 Author: huangqinjin Date: Sat Apr 25 02:03:11 2020 +0800 Do not export class template LineParameterization For MSVC, instantiating a dllimport class template will cause error C2491: definition of dllimport function not allowed. Change-Id: Icc7f7ea84598df0a5436f48ffc2bab5cfab93921 commit 1f128d070a24224d12eb901bc74ba393ccdbd0c3 Author: huangqinjin Date: Mon Mar 4 13:14:43 2019 +0800 Change the type of parameter index/offset to match their getter/setter Change-Id: If28b795e792f39db9775ada105e9038570195329 commit 072c8f070e16cb32f211473c40196c6b5618d5a9 Author: huangqinjin Date: Sat Apr 25 00:04:58 2020 +0800 Initialize integer variables with integer instead of double Change-Id: I652aca4ceb3129706a5d5e38afe9f16b61200a5b commit 8c36bcc81fbd4f78a2faa2c914ef40af264f4c31 Author: Alex Stewart Date: Mon Apr 27 18:33:25 2020 +0100 Use inline & -inlinehint-threshold in auto-diff benchmarks - This results in the same performance as the original solution of increasing -inline-threshold, but this approach is more viable to incorporate in a large code base as its effects are more targeted. Change-Id: Id798dbca7d3050de0ea847a5ecc69484ac78a2cf commit 57cf20aa5d3c1b2f25d255814f4fff5260db81c6 Author: Sameer Agarwal Date: Tue Apr 21 10:10:01 2020 -0700 static const -> static constexpr where we can. Change-Id: I8a6d26a89c4377dd440fa6dcf23513b7556533fc commit 40b27482a202c8b0a5f9e8f2b4be0192d34195f5 Author: Sameer Agarwal Date: Tue Apr 21 09:35:30 2020 -0700 Add std::numeric_limit specialization for Jets This allows users to use std::numeric_limits on templated functors. Change-Id: I403cec5c9826033ce7dfd6047deb64f66c35f806 commit e751d6e4f0daa9f691c5ed25ca8dc564875d8bef Author: Darius Rueckert Date: Wed Apr 8 10:43:53 2020 +0200 Remove AutodiffCodegen - Remove Codegen files - Revert Jet and Rotation Change-Id: I005c5f98f2b6dfa5c7fd88d998b6aa83e47dab60 commit e9eb76f8ef9835940659cfb3a312ed6822c48152 Author: Darius Rueckert Date: Mon Apr 6 11:11:43 2020 +0200 Remove AutodiffCodegen CMake integration Change-Id: I403597540df8429378336626b8f748b7821fe6f5 commit 9435e08a7a7c903897e18e1dc24d801caf4f62a4 Author: Sameer Agarwal Date: Fri Apr 3 11:50:09 2020 -0700 More clang-tidy and wjr@ comment fixes Change-Id: I5736ae482f736fc56c00d21c659b1f8d41da68e9 commit d93fac4b7ab670a936ce821284a0b9d099b4688c Author: Darius Rueckert Date: Fri Apr 3 09:33:17 2020 +0200 Remove AutodiffCodegen Tests Change-Id: Icd194db7b22add518844f1b507d0fdd3e0fe17fe commit 2281c6ed24d2c12f133fa6039f224b3da18cebe3 Author: Sameer Agarwal Date: Thu Apr 2 16:43:42 2020 -0700 Fixes for comments from William Rucklidge Change-Id: I64fcc25532cc66dc4cb7e2ea7ccfb220b0cb7e1f commit d797a87a4091af6ae0063e3c8291429c15318bdc Author: Sameer Agarwal Date: Thu Apr 2 13:57:56 2020 -0700 Use Ridders' method in GradientChecker. Using Ridders' method gives orders of magnitude more accuracy compared to central differences. This will make things slower, but this is primarily a testing/debugging feature and the speed hit is not a concern. This should also reduce the false positive rates when users enable check_gradients. This is reflected the increased sensitivity of the tests for GradientChecker. https://github.com/ceres-solver/ceres-solver/issues/554 Change-Id: I6b871c72df55be1c31175ba062cf3c1e94e4b662 commit 41675682dc9df836bf15845064cfe1087619c79d Author: Sameer Agarwal Date: Thu Apr 2 07:28:38 2020 -0700 Fix a MSVC type deduction bug in ComputeHouseholderVector A recent change made this function templated and MSVC 16 has trouble doing automatic argument deduction, so the type of the template is simplified and all callsites are explicitly annotated with the type of the arguments. Change-Id: I83cd0269e6e82c4a8f4e391f5fc03b92c942f74d commit 947ec0c1fa0f67c89e21daaf8d1648822ae5293a Author: Darius Rueckert Date: Thu Apr 2 09:52:53 2020 +0200 Remove AutodiffCodegen autodiff benchmarks Change-Id: If1eaad31710cc91d40323ea6cae7cabe6fa64b1f commit 27183d661ecae246dbce6d03cacf84f39fba1f1e Author: Sameer Agarwal Date: Thu Jul 11 16:30:59 2019 +0200 Allow LocalParameterizations to have zero local size. Local parameterizations with zero tangent/local size will cause the corresponding parameter block to be treated as constant. https://github.com/ceres-solver/ceres-solver/issues/347 Change-Id: I554a2acc420f5dd9d0cc7f97b691877eb057b2c0 commit 7ac7d79dca2ac6b482da50fd9ad0227ba8d6c632 Author: Darius Rueckert Date: Wed Apr 1 14:51:12 2020 +0200 Remove HelloWorldCodegen example Change-Id: I2584f41d591a5d648b4832385c2a779bb25fc04d commit 8c8738bf832f0fc27f0d4a9585fc59b2eaa6a828 Author: Nikolaus Demmel Date: Sun Mar 29 13:29:02 2020 +0200 Add photometric and relative-pose residuals to autodiff benchmarks Change-Id: Id100ff2656ab63bb4fd19a51b95e78281cfd8b4a commit 9f7fb66d62014ed62ba6aa617364e8591211c797 Author: Darius Rueckert Date: Wed Mar 25 11:41:39 2020 +0100 Add a constant cost function to the autodiff benchmarks The constant cost function is run with a variable number of parameters to test at which point, different compilers fail to optimize the autodiff code. Clang achieves expected performance which fails at >50 parameters. G++ fails already at 20 parameters Change-Id: I75d8c683ef0011d813ec6d966d7ad58f86530f44 commit ab0d373e465f46ce483db640d0fb2f244f48702d Author: Sameer Agarwal Date: Tue Mar 24 12:30:46 2020 -0700 Fix a comment in autodiff.h Change-Id: I613e537c834e3f29cd92808c65ddb74f112974cc commit 27bb997144d00dd4494d440627f1e782bf4adf43 Author: Johannes Beck Date: Tue Mar 24 08:05:43 2020 +0100 Change SVD algorithm in covariance computation. Switch from JacobiSVD to BDCSVD in ComputeCovarianceValuesUsingDenseSVD. This should increase the performance for larger covariance matrices. See https://eigen.tuxfamily.org/dox/classEigen_1_1BDCSVD.html Change-Id: Icde4dec89f506b638b0f9f1aee3b7cfc9e4d72fc commit 84fdac38e033c8f9a63c6e6fca7b44219110f7df Author: Johannes Beck Date: Tue Mar 24 08:02:21 2020 +0100 Add const to GetCovarianceMatrix* This CL adds const to the functions GetCovarianceMatrix and GetCovarianceMatrixInTangentSpace. Change-Id: Ibe2cafebede47977a9aabcac8d245f30af184fd1 commit 6bde61d6be9d81a2cd759a6bbb4a8cd3c24a529c Author: Johannes Beck Date: Sat Dec 28 13:29:19 2019 +0100 Add line local parameterization. This CL adds a local parameterization for a n-dimensional line, which is represented as an origin point and a direction. The line direction is updated in the same way as a homogeneous vector and the origin point is updated perpendicular to the line direction. Change-Id: I733f395e5cc4250abf9778c26fe0a5ae1de6b624 commit 2c1c0932e9d3f91691e5c5fce46b4440e181a8bc Author: Sameer Agarwal Date: Mon Mar 23 11:15:32 2020 -0700 Update documentation in autodiff.h Change-Id: Icc2753b4f5be95022ffd92e479cdd3d9d7959d4c commit 8904fa4887ed7b3e6d110ad5a98efbc2df48595e Author: Darius Rueckert Date: Mon Mar 23 14:59:26 2020 +0100 Inline Jet initialization in Autodiff Inlining the Jet initialzation is mandatory for good performance in autodiff, because all the constants in the dual part can be propagated into the cost functor. This patch unrolls the initialization loop with templates and adds EIGEN_ALWAYS_INLINE to the constructors. Change-Id: Ic89d645984f3e1df6c63948236da823ba60d9620 commit 18a464d4e566e17930005876af19e32cc8796fa3 Author: Sameer Agarwal Date: Mon Mar 23 07:12:12 2020 -0700 Remove an errant CR from local_parameterization.cc Change-Id: Iff98a96f06de5755062a1c79523604dca78b298e commit 5c85f21799804d39cbfd20ec451aa219511e4212 Author: Darius Rueckert Date: Mon Mar 23 10:12:00 2020 +0100 Use ArraySelector in Autodiff The class ArraySelector is now used in autodiff to store the parameters and residuals. This reduces overhead of FixedArray for fixed-sized residuals and allows more optimizations due to inlining and unrolling. Change-Id: Ibadc5644e64d672f7a555e250fb1f8da262f9d4f commit 80477ff073ab7af03cfb248cab4ef41a87f913d0 Author: Darius Rueckert Date: Fri Mar 20 16:26:55 2020 +0100 Add class ArraySelector The ArraySelector selects the best array implementation based on template arguments. Change-Id: I93c6db1a638e924b85292e63bca9525610ec2e2f commit e7a30359ee754057f9bd7b349c98c291138d91f4 Author: Darius Rueckert Date: Fri Mar 20 15:50:37 2020 +0100 Pass kNumResiduals to Autodiff The compile-time constant kNumResiduals is now passed to the autodiff functions as a template parameter. This will be used by future patches to optimize autodiff performance. Change-Id: Ia2b2cc99b88752e8f12f4ce2542b1963bda552f5 commit f339d71dd64e4d871cc883f278a153f212f0d1f0 Author: Sameer Agarwal Date: Thu Mar 19 12:08:28 2020 -0700 Refactor the automatic differentiation benchmarks. 1. Merge them into a single binary. 2. All benchmarks now do the Residual and the Residual + Jacobian evaluation. 3. Re-organize and simplify the CMake file in this directory. 4. Fix a bug in the file where the Clang compiler was not being matched. autodiff_benchmarks --------------------------------------------------------------------------- Benchmark Time CPU Iterations --------------------------------------------------------------------------- BM_Linear1CodeGen/0 3.02 ns 3.01 ns 233870456 BM_Linear1CodeGen/1 3.02 ns 3.01 ns 233059100 BM_Linear1AutoDiff/0 3.78 ns 3.77 ns 185791712 BM_Linear1AutoDiff/1 14.0 ns 13.8 ns 53927875 BM_Linear10CodeGen/0 5.10 ns 5.10 ns 126745007 BM_Linear10CodeGen/1 29.1 ns 29.1 ns 23949310 BM_Linear10AutoDiff/0 6.50 ns 6.49 ns 107516972 BM_Linear10AutoDiff/1 169 ns 169 ns 4153218 BM_Rat43AutoDiff/0 52.7 ns 51.2 ns 16444586 BM_Rat43AutoDiff/1 91.8 ns 91.5 ns 7302316 BM_SnavelyReprojectionCodeGen/0 38.0 ns 36.2 ns 21131501 BM_SnavelyReprojectionCodeGen/1 113 ns 112 ns 5627779 BM_SnavelyReprojectionAutoDiff/0 34.4 ns 34.3 ns 20476937 BM_SnavelyReprojectionAutoDiff/1 242 ns 240 ns 2930611 BM_BrdfCodeGen/0 53.9 ns 53.7 ns 11950083 BM_BrdfCodeGen/1 507 ns 505 ns 1396732 BM_BrdfAutoDiff/0 58.3 ns 57.8 ns 12220670 BM_BrdfAutoDiff/1 2034 ns 1999 ns 257003 autodiff_benchmarks_fast_math --------------------------------------------------------------------------- Benchmark Time CPU Iterations --------------------------------------------------------------------------- BM_Linear1CodeGen/0 3.19 ns 3.16 ns 215313065 BM_Linear1CodeGen/1 2.78 ns 2.76 ns 201497994 BM_Linear1AutoDiff/0 3.27 ns 3.26 ns 206154598 BM_Linear1AutoDiff/1 13.2 ns 13.1 ns 57257840 BM_Linear10CodeGen/0 5.70 ns 5.51 ns 121849325 BM_Linear10CodeGen/1 33.9 ns 33.3 ns 21829295 BM_Linear10AutoDiff/0 6.85 ns 6.78 ns 106813153 BM_Linear10AutoDiff/1 173 ns 171 ns 3849877 BM_Rat43AutoDiff/0 44.8 ns 44.2 ns 15577017 BM_Rat43AutoDiff/1 96.2 ns 94.6 ns 7374864 BM_SnavelyReprojectionCodeGen/0 33.9 ns 33.5 ns 20508373 BM_SnavelyReprojectionCodeGen/1 89.7 ns 88.4 ns 7620624 BM_SnavelyReprojectionAutoDiff/0 36.5 ns 35.8 ns 20546176 BM_SnavelyReprojectionAutoDiff/1 257 ns 252 ns 3044325 BM_BrdfCodeGen/0 61.1 ns 58.5 ns 11334013 BM_BrdfCodeGen/1 265 ns 265 ns 2625459 BM_BrdfAutoDiff/0 52.5 ns 52.5 ns 12938763 BM_BrdfAutoDiff/1 1560 ns 1560 ns 440909 Change-Id: I2d1a4293d3245a50f73af6cf5e5138084321ae6f commit d37b4cb150c4af65268f9ce5739d1c67e73cb358 Author: Sameer Agarwal Date: Thu Mar 19 07:36:58 2020 -0700 Fix some include headers in codegen/test_utils.cc/h Change-Id: I769029ce2797eba0de6c7baeb76dc3f2782b6305 commit 550766e6da49dca895a6e2056b0872c557157c5b Author: Darius Rueckert Date: Wed Mar 18 20:09:20 2020 +0100 Add Autodiff Brdf Benchmark The disney brdf is a good benchmark cost functor, because it has - 28 parameters in 7 blocks - 3 residuals - Lots of low-level arithmetic Change-Id: I62c8a717d0aecb64639158f971bdccf6afdfae36