commit 8c62487e437b91d3d354cd1ae8957e43fe540732 Author: Sameer Agarwal Date: Fri May 16 09:44:18 2014 -0700 Preparations for 1.9.0 release. Version bump. minor docs update. Change-Id: I2fbe20ba4af6b2e186fe244c96ce6d6464fe0469 commit 0831275a78ab65e4c95979598cb35c54d03d3185 Author: Sameer Agarwal Date: Fri May 16 08:17:54 2014 -0700 Documentation update. 1. Update iOS build instructions. 2. Update version history. Change-Id: I49d62e86ecff39190b50c050cb12eef4e2773357 commit c7c7458625996a20203f1366d11bd701e5fb621b Author: Jack Feng Date: Mon May 12 10:23:56 2014 +0800 add support for building for ios use ios-cmake to build for ios Change-Id: I6b17c33339f3121322a4004d79629b22a62f7a94 commit 36c2ce87d13b9b7123bd0473b8b45fb3b6ae4271 Author: Sergey Sharybin Date: Mon Jan 13 21:18:08 2014 +0600 Libmv 2D homography estimation example application Add an example application of homography matrix estimation from a 2D euclidean correspondences which is done in two steps: - Coarse algebraic estimation - Fine refinement using Ceres minimizer Nothing terribly exciting apart from an example of how to use user callbacks. 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. Change-Id: I60c8559cb10b001a0eb64ab71920c08bd68455b8 commit d99a3a961e4a6ff7218d0ab749da57cf1a1677bd Author: Björn Piltz Date: Wed May 7 14:59:12 2014 +0200 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(). Change-Id: If0563b0c705b102876f5190e9a86694d10f79283 commit 1c089e8453583876f417b214f76a5863d7694986 Author: Sameer Agarwal Date: Tue May 13 16:58:25 2014 -0700 Notational fix in modeling.rst by William Rucklidge. Change-Id: Iffa127541380fcc32da13fe4ac474692e1e3d0ec commit 082d9e2a1b43b26a81157a6c711de0ff34c40ba4 Author: Sameer Agarwal Date: Mon May 12 20:41:27 2014 -0700 Add iOS.cmake from the ios-cmake project. URL: https://github.com/cristeab/ios-cmake Commit: 86dc085f0d5ed955cd58e2657cc3efc7c1aabbc8 Change-Id: I8fe6023d4cb6655b5a724e8b695fdae87ce3b685 commit a97056c9752fe7223c8560da58862ecb1fd241ad Author: Sameer Agarwal Date: Tue May 13 16:45:36 2014 -0700 Various documentation fixes from William Rucklidge. Change-Id: I102e98f41f4b5fe2a84d1224d5ed7517fdfdb022 commit 2f8fb218f0a08102231ace07ef02b34b4aad7336 Author: Alex Stewart Date: Tue May 13 20:57:39 2014 +0100 Adding function to update CMake cache variables and preserve help. - 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. Change-Id: Ic78a5adf5d59262bbbcec1e353ded7620391e862 commit 8f4dcb25f1be74a8c12c0f9eeb67b6b0755563f5 Author: Sameer Agarwal Date: Tue Apr 29 21:40:57 2014 -0700 Documentation update. Update modeling.rst and solving.rst to reflect changes to the API. Change-Id: Id1a8adfed1486f08e5fd67c5af2d29708a26490c commit d48e7050225730f61eaef851def5b43bc439e991 Author: Alex Stewart Date: Sat May 10 08:58:58 2014 +0100 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. - This patch moves the default config.h to /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 /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-Id: Ib1ba45e66e383ade2ebb08603af9165c1df616f2 commit 11c496164ffe9809306945c2b81276efcd51533d Author: Sameer Agarwal Date: Fri May 9 16:27:03 2014 -0700 Fix 80cols violation in local_parameterization.h Change-Id: I07f59baa9e4aba7c5ae028f0c144ea9ad153d49a commit af3154422b63b7792ecd23b00ca1a0c003764dae Author: Sameer Agarwal Date: Fri May 9 05:45:03 2014 -0700 Add Alex Stewart as a maintainer. Update contributing.rst to mention Alex as one of the people who can be added as a reviewer. Change-Id: I30ff3e635e8c419e11e8f20394aaea5f284a10d5 commit ea765850685f1ff0431da5212656378fc20d3673 Author: Alex Stewart 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 Date: Wed May 7 17:10:15 2014 +0200 Fixes swapped verboselevel and condition. Change-Id: I296d86e6bbf415be4bfd19d6a0fe0963e3d36d74 commit 3209b045744ea31f38d74bd9e9c8f88e605e7f76 Author: Björn Piltz Date: Wed May 7 17:02:27 2014 +0200 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. Change-Id: If0937c76e8d250cde4b343844f3d35c980bf0921 commit 1df2f0f5d704f0cc458cf707e2602d495979e3c6 Author: Björn Piltz Date: Wed May 7 11:10:30 2014 +0200 Removed MSVC warnings These are warnings which show up when using Ceres. Change-Id: Id1f382f46b8a60743f0b12535b5b3cdf46f988e0 commit eca7e1c635581834c858794e09c1e876323b7775 Author: Sameer Agarwal Date: Tue May 6 10:16:19 2014 -0700 Remove BlockRandomAccessCRSMatrix. It is not used anywhere. Change-Id: I2a8ebbdacf788582f21266825ead3f76646da29e commit 7088a08f5d9e04e75a5a4c3823ef7927e13ff0e4 Author: Sameer Agarwal Date: Mon May 5 09:02:05 2014 -0700 Fix some 80col violations and reflow the comments in cmake.in file. Change-Id: I4c65c89b794845aeef69159a03350c727e2ee812 commit 95cce0834d5a2d72568e6d2be968a51c244c2787 Author: Sameer Agarwal Date: Mon May 5 08:54:50 2014 -0700 Remove some errant tabs. Change-Id: Ie1f7051e99bcb15ad068711b68a9d8f317b12ed7 commit a536ae76dfa2dbe2bc487900b98cf6c15276c649 Author: Sameer Agarwal Date: Sun May 4 21:18:42 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. Also replace the raw pointer access to the upper and lower bounds arrays with accessors which hides the lazy initialization from the user. Change-Id: I0325a35de9c29f853559f891e32e7c777686e537 commit 633b50b7af9841607c07133f585e131fba7de177 Author: Sameer Agarwal Date: Fri May 2 22:46:20 2014 -0700 Add the (2,4,8) template specialization. Change-Id: I058bcebdd1725031d573404133b184d6f27dc005 commit 5ffe06019a6c741ee7edc940ffeeceaaeabfa05d Author: Alex Stewart Date: Thu May 1 12:06:46 2014 +0100 Export Ceres compile definitions to targets compiled against Ceres. - 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. - 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. Change-Id: I5dea80949190eaf4fb08ea4ac568ce28c32dd4e0 commit 0e811b0881f1f21df0ae04fd745ae4ba5189cac1 Author: Sameer Agarwal Date: Thu May 1 07:54:12 2014 -0700 Fix a bug in Minimizer::RunCallbacks. Solver::Summary::message was not being updated when the solver terminated because of a user's iteration callback indicating success or failure. Thanks to Sergey Sharybin for reporting this. Change-Id: I27e6e5eed086920ddf765461b0159417ac79d7b3 commit 31b503792611d2119bb1acb3528fc8d58c5bd029 Author: Sameer Agarwal Date: Wed Apr 30 15:02:38 2014 -0700 Lint cleanup from William Rucklidge. Change-Id: If545f114c1a2b07edd660a3c71ecfc16ffa25e43 commit 15c1210a8bdf3e936b4ef600d75f0fbb70878fb5 Author: Sameer Agarwal Date: Tue Apr 29 08:12:19 2014 -0700 Lint cleanup from Jim Roseborough. Change-Id: I53f4e0d020602443b397387b8c5908f25649403d commit b1668067f1c97520d5d28eecf2c11d2afc1b01b3 Author: Sameer Agarwal Date: Tue Apr 29 08:12:19 2014 -0700 Variety of changes to documentation and example code. 1. Update version history. 2. Minor changes to the tutorial to reflect the bounds constrained problem. 3. Added static factory methods to the SnavelyReprojectionError. 4. Removed relative gradient tolerance from types.h as it is not true anymore. Change-Id: I8de386e5278a008c84ef2d3290d2c4351417a9f1 commit 658407dacc351a999206980fbb3265099e50e7a3 Author: Sameer Agarwal Date: Mon Apr 28 13:25:17 2014 -0700 Add missing template specializations to the NDK build. Change-Id: I42bb6c3bd47648050298472af80333aa900e79bf commit 5d7eed87b47871bc882af765188fa4fbca976855 Author: Björn Piltz Date: Wed Apr 23 22:13:37 2014 +0200 Suppport for MSVC DLLs. Change-Id: Ibbcc4ba4e59f5bbf1cb91fe81c7d3b9042d03493 commit c830820a5c2be0d0cecb0822f2cff8b4ffe88f36 Author: Sameer Agarwal Date: Mon Apr 28 10:28:24 2014 -0700 Add missing files to Android.mk Change-Id: Ibdf577c592bcde0fe5c2ce343ed8e9028b82af8f commit ceb7a3beaad140762b499f9a306fd7230715941a Author: Sergey Sharybin Date: Mon Apr 28 13:50:09 2014 +0600 Fix compilation error when using G++ compiler This compiler defines shared_ptr in std::tr1 namespace, but for this is to be included. Further, this compiler also does have header which confused previous shared pointer check. Simplified logic around defines now, so currently we've got: - CERES_TR1_MEMORY_HEADER defined if is to be used for shared_ptr, otherwise 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. All the shared_ptr checks are now moved to own file FindSharedPtr which simplifies main CMakeLists. Change-Id: I558a74793baaa0bd088801910a356be4ef17c31b commit 02db9414fb6739857a37e268500083a0546cd0a3 Author: Sameer Agarwal Date: Mon Apr 28 08:32:51 2014 -0700 Fix the documentation for RandNormal. As pointed out by Jim Roseborough, this is the Marsaglia Polar method and not the Box-Muller method. Change-Id: Id5332bcd4b4c23a3885cc296729b44eaa5edd0a8 commit 32530788d08c53f8d2c8a5f9bd61aa60a23d6e03 Author: Richard Stebbing Date: Sat Apr 26 07:42:23 2014 +0100 Add dynamic_sparsity option. 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. 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. Changes that were required to make this extension were adding the SetMaxNumNonZeros method to CompressedRowSparseMatrix and adding a JacobianFinalizer template parameter to the ProgramEvaluator. Change-Id: Ia5a8a9523fdae8d5b027bc35e70b4611ec2a8d01 commit 2569076ff0bf8ffb3938da8b5df7edc4883aa053 Author: Sameer Agarwal Date: Fri Apr 25 23:54:48 2014 -0700 More NDK fixes. Fix variable names in port.h and fix fpclassify when using gnustl. This was tested by switching to gnustl in the JNI build. Thanks to Carlos Hernandez for suggesting the gnustl fixes. Change-Id: I690b73caf495ccc79061f45288e416da1604cc72 commit e55596f8860a09b12b5e1f949237f15357c1ac59 Author: Sameer Agarwal Date: Fri Apr 25 16:17:19 2014 -0700 Change the defaults for shared_ptr. By default shared_ptr is now assumed to be in the standard header and in the std namespace. Previously the way the ifdefs were structured if the appropriate variable was not defined, it would default to . The new defaults are more future proof. Change-Id: If457806191196be2b6425b8289ea7a3488a27445 commit bb05be341b8436f611e4b69954a529edcca5b577 Author: Sameer Agarwal Date: Sun Apr 13 14:22:19 2014 -0700 Solver::Options uses shared_ptr to handle ownership. Solver::Options::linear_solver_ordering and Solver::Options::inner_iteration_ordering were bare pointers even though Solver::Options took ownership of these objects. This lead to buggy user code and the inability to copy Solver::Options objects around. 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 Android.mk and Application.mk files have also been updated to use a newer NDK revision which ships with LLVM's libc++. Change-Id: I25161fb3ddf737be0b3e5dfd8e7a0039b22548cd commit 8e0991381ea3a2baddea017cd07b333f0c5de595 Author: Joydeep Biswas Date: Tue Apr 22 10:40:47 2014 -0400 Added a simplified robotics example for DynamicAutoDiffCostFunction. Change-Id: I9520e0a9a8d9743285c5114523fbafa6ffa5b0bd commit cc9d3bba1008066e51502cabd956985c6bdedfe8 Author: Sameer Agarwal Date: Fri Apr 18 22:58:09 2014 -0700 Remove a comment from conf.py Change-Id: I675f7e8fc5dd2143eab74901bc7241e02e37285f commit c4cd29dd7c80ade5b3ac7a1f6ee7df22c8869ab5 Author: Sameer Agarwal Date: Wed Apr 16 23:40:12 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. Also updated the beginning of the tutorial to be a bit gentler and updated the history to be more consistent Change-Id: Ife38c1949252cf9f4c6301856957f2d38365f313 commit 46ccfb376ac52ac159f9187e0f7384ef68c1cbdd Author: Sameer Agarwal Date: Sat Apr 12 21:56:51 2014 -0700 Cleanup block_structure.h/cc 1. Remove obsolete Proto conversion functions. 2. Fix a strict weak ordering bug. Change-Id: I1ce6d4b06e29cf475df1d5bd37c79f66f20f8d93 commit 7d489fdb073937ac05c0693c1902fbcb9eeb7dfc Author: Sameer Agarwal Date: Mon Apr 7 11:14:51 2014 -0700 Refactor the landing page to be a bit more compact. Also minor changes to the introduction. Change-Id: Iaa71f576b95c869f075d6837dbb60ba4bb608ee7 commit 406ac7816730c15425db20d994ac0d60d932ab6c Author: Keir Mierle Date: Mon Apr 7 08:36:07 2014 +0000 Rework Ceres documentation as new website This reworks the Ceres Sphinx documentation such that it can function as the main Ceres website, now hosted at ceres-solver.org. This also changes to the theme sphinx_rtd_theme used by Read The Docs; this theme has strong mobile support and is well enough designed. Change-Id: I63232d985859a6dac94ff58f08bf81eb2b9e7f99 commit 3e60a998ac970da659d590bac2ff892ee619aa1b Author: Richard Bowen Date: Tue Apr 1 16:22:49 2014 -0700 Added support and tests: row and column blocks for sparse matrix transpose. Change-Id: Ife641b08a9e86826478521a405f21ba60667f0e8 commit 5ecb1c3f1dfde6e8ed4b493eafef7b43dad19e72 Author: Sameer Agarwal Date: Tue Apr 1 09:20:35 2014 -0700 Add Problem::IsParameterBlockPresent. This allows the user to query the Problem to see if a parameter block is already present or not. Change-Id: If786f6c008cc644f3398597901d718d12a6d865d commit 75e2232b29ff2ea42c8406c9d45b138a7e7a0048 Author: Sameer Agarwal Date: Fri Mar 28 11:21:02 2014 -0700 Fix spacing in building.rst Change-Id: I4c68d732c80d7ff2bdbc812bf0b7c7fb98c43957 commit b555b489b8447434294a8a6676272289140d6a1d Author: Richard Bowen Date: Thu Mar 27 15:51:28 2014 -0700 Changes documentation to reflect changes in output format. Change-Id: Ic0ba234283e791edcad29aec067905dcb2130813 commit 1cfb600bfc3be8342f85f155b2b219a595ee58da Author: Sameer Agarwal Date: Wed Mar 26 12:55:11 2014 -0700 Add the (2,4,9) template specialization for PartitionedMatrixView and SchurEliminator. Also update the comment inside generate_partitioned_matrix_view_specializations.py Change-Id: I99a7ab4256091b1da48553da3076e5996a5757ed commit 195e49351b386ffc23020d406883eaa6511e29b3 Author: Alex Stewart Date: Wed Mar 26 11:36:11 2014 +0000 Check validity of residual block before removal in RemoveResidualBlock. - 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. - 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. Change-Id: I9ab178e2f68a74135f0a8e20905b16405c77a62b commit 74762b60332d4a1c08ec5aef75ec718da9d305a2 Author: Alex Stewart Date: Thu Mar 20 14:50:25 2014 +0000 Allow construction of an AutoDiffLocalParameterization with a functor. - 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. Change-Id: I264e1face44ca5d5e71cc20c77cc7654d3f74cc0 commit 4f603fb0d82317a53fa9d96abe6a97b2e69bff36 Author: Sameer Agarwal Date: Wed Mar 19 17:16:43 2014 -0700 Grammer fixes from William Rucklidge. Change-Id: Ia40df7a1d141eb2552694510453d1431bb0c8dce