Commit Graph

69 Commits

Author SHA1 Message Date
Sameer Agarwal dc0bb8508c Various cleanups to the documentation
Fixes https://github.com/ceres-solver/ceres-solver/issues/208

Change-Id: I62c575b646260f801c95188910910ecf441fa9ac
2023-09-29 14:01:42 -07:00
Sameer Agarwal 4588b0fbbf Add an example for EvaluationCallback
Change-Id: Ia488f8b181118c8d07861149c4bd52f7217336ce
2023-09-28 21:49:32 +00:00
Sameer Agarwal d4db6e6fe6 Fix typos in the documentation for EvaluationCallback
https: //github.com/ceres-solver/ceres-solver/issues/953
Change-Id: I6631c152f794c9492e527ceff11d7d9e598b92f8
2023-09-27 09:23:46 -07:00
MaximSmolskiy 5f97455bea Fix typos in documentation
Change-Id: I1d39fe777c87d3480bc403ec4602dd2dd9284839
2023-08-20 20:42:05 +03:00
MaximSmolskiy 3cdfae110f Replace Hertzberg mentions with citations
Change-Id: Ife1b9c2b321593912bc18a5c57c39fbda27da51f
2023-03-04 04:10:45 +03:00
MaximSmolskiy b54f05b8ee Add missing TukeyLoss to documentation
Change-Id: I0b0a84c0a21b672f0414eb6b2283bb27e06cd266
2023-03-03 00:19:51 +03:00
Alex Stewart ccf32d70c7 Purge all remaining references to (defunct) LocalParameterization
Change-Id: Iad2a49bfa6916c22929d822e07f754ef77ed023d
2022-10-19 20:00:20 +01:00
Sameer Agarwal c801192d47 Minor fixes
Change-Id: I4c825bbd19b2d902d17dce37d228e23a808c87fb
2022-07-18 06:43:12 -07:00
Evan Levine f1414cb5bd Correct spelling in comments and docs.
Change-Id: Iad9a0599d644d3b3cd54244edaf64d408cb1308e
2022-04-24 21:40:13 -07:00
Sergiu Deitsch b0aef211db Allow to store pointers in ProductManifold
Change-Id: I32df7afab3a195efb0407b0d8f35dcd2d7cb95d2
2022-03-03 17:08:24 +00:00
Sergiu Deitsch 284be88ca1 Allow ProductManifold default construction
In many cases, manifolds stored in ProductManifold have a default
constructor which can simplify ProductManifold initialization even
further. Allow default construction of ProductManifold in this case.

Change-Id: I29b2612870c02232556688019a77049709684a55
2022-03-03 14:50:03 +01:00
Sergiu Deitsch 7743d2e73c Store ProductManifold instances in a tuple
Since the number of manifolds used to initialize ProductManifold and
their types are known at compile-time, it is possible to avoid storing
pointers to the base class as required by a homogeneous, currently
dynamically sized container. Instead, we can use std::tuple<> as a
heterogenous container with the number of elements fixed at compile-time
that allows us to store the concrete manifold realizations.

The advantage of this approach is that we can bypass the vtable when
iterating over each manifold within ProductManifold. The indirection is
invoked only once while accessing the ProductManifoldImpl members.
Additionally, potential dynamic memory allocations by a std::vector can
be completely avoided. This makes the ProductManifold implementation
more efficient both in memory and runtime.

Change-Id: Ic71b0c175ab726f8992e9703f7666bca477baf19
2022-03-02 23:57:10 +00:00
Sergiu Deitsch f0f8f93bbc Fix docs inconsistencies
Change-Id: Ie3f767d537206ed4c326c7a504825cc751817c61
2022-03-02 14:05:39 +01:00
Sameer Agarwal 6a37fbf9b4 Add static/compile time sizing to EuclideanManifold
This brings it in line with other manifolds like SphereManifold
and LineManifold, where the user has the choice to specify the size
of the manifold at compile time or runtime.

Most of the time the size is known at compile time so this will
speed up the common case.

Change-Id: I0c7ff8b7a9a64a81203eb11afc074874e208815a
2022-03-01 09:34:23 -08:00
Sameer Agarwal 0141ca090c Deprecate LocalParameterizations
Add [[deprecate]] notices to everything LocalParameterization
related.

Make sure that Ceres can be compiled without triggering
deprecation warnings.

Update the documentation:

a. Add deprecation notices.
b. Document interaction between LocalParameterization and Manifold
   coexisting in the Problem.
c. Add documentation for Manifold(s)

Change-Id: Ie4ad48963c83fded86e533c8c60561af402fbaff
2022-02-10 06:36:47 -08:00
Sameer Agarwal e47d87fdd6 Add a note about Trigg's correction
Add a pointer about how the theory and practice of Trigg's correction
for loss function differs when the second derivative of the loss
function becomes positive.

https://github.com/ceres-solver/ceres-solver/issues/573

Change-Id: Ic22ce91cc230f7ed7fa7b70a1cc2050919039828
2021-09-24 05:02:40 -07:00
Sameer Agarwal d2852518d6 Fix the docs for Problem::RemoveResidualBlock & Problem::RemoveParameterBlock
The documentation was out of date about how memory management is
done in Problem.

https://github.com/ceres-solver/ceres-solver/issues/699

Change-Id: Ie55027796bc372cdcbaaca2bf2c93643c303a8e5
2021-09-23 09:32:11 -07:00
Sameer Agarwal bb127272f9 Fix typos.
Contributed by Ishamis@, IanBoyanZhang@, gkrobner@ & mithunjacob@.

Change-Id: Iab3c19a07a6f3db2486e3557dcb55bfe5de2aee5
2020-10-19 09:32:47 -07:00
Sameer Agarwal a0ec5c32af Update version history for 2.0.0RC2
Change-Id: I75b7515fbf9880bd8eaea6ecd5e72ce1ae4a3a86
2020-10-18 15:20:36 -07:00
Sameer Agarwal 3f69e5b36a Corrections from William Rucklidge
Change-Id: I0b5d4808be48f68df7829c70ec93ffa67d81315d
2020-10-12 11:46:40 -07:00
Sameer Agarwal d1b35ffc16 Corrections from William Rucklidge
Change-Id: Ifb50e87aa915d00f9861fe1a6da0acee11bc0a94
2020-10-12 10:58:05 -07:00
Sameer Agarwal 8e1d8e32ad A number of small changes.
1. Add a move constructor to NumericDiffCostFunction, DynamicAutoDiffCostfunction
   and DynamicNumericDiffCostFunction.
2. Add optional ownership of the underlying functor.
3. Update docs to reflect this as well as the variadic templates that allow an
   arbitrary number of parameter blocks.

Change-Id: I57bbb51fb9e75f36ec2a661b603beda270f30a19
2020-09-03 10:57:50 -07:00
Julian Kent 368a738e52 AutoDiffCostFunction: optional ownership
Add Ownership semantics to the AutoDiffCostFunction

This allows several benefits, such as pointer ordering always being the
same for numerical repeatability (due to blocks being ordered by
pointer address), memory adjacency for better cache performance, and
reduced allocator pressure / overhead.

This is then made use of in libmv by preallocating the errors and
cost functions into vectors

Change-Id: Ia5b97e7249b55a463264b6e26f7a02291927c9f2
2020-09-03 19:19:53 +02:00
Sameer Agarwal 242c703b50 Minor fixes to the documentation
Change-Id: I65e6f648d963b8aa640078684ce02dcde6acb87d
2020-08-04 21:02:11 -07:00
Sameer Agarwal db2af1be87 Add Problem::EvaluateResidualBlockAssumingParametersUnchanged
Simplify the semantics for Problem::EvaluateResidualBlock to
not ignore the presence of EvaluationCallback and add another method
EvaluateResidualBlockAssumingParametersUnchanged to handle the case
where the user has an EvaluationCallback but knows that the parameter
blocks do not change between calls.

Updated the documentation for the methods and EvaluationCallback to
reflect these semantics.

Also added tests for Evaluation related methods calling i
EvaluationCallback when its present.

https://github.com/ceres-solver/ceres-solver/issues/483

Change-Id: If0a0c95c2f1f92e9183a90df240104a69a71c46d
2020-08-04 13:59:42 -07:00
Sameer Agarwal ab4ed32cda Replace NULL with nullptr in the documentation.
Change-Id: I995f68770e2a4b6027c0a1d3edf5eb5132b081d7
2020-08-03 04:18:05 -07:00
Carl Dehlin 27cab77b69 Reformulate some sentences
Change-Id: I4841aa8e8522008dd816261d9ad98e5fb8ad1758
2020-06-15 20:01:18 +02:00
Sameer Agarwal 1d75e75681 Improve documentation for LocalParameterization
Change-Id: I63fa81206e67bfac56cc42bf2bb4915a3a11332b
2020-05-27 22:34:48 -07:00
Sameer Agarwal 70308f7bb9 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
2020-05-27 19:24:46 +00:00
Sameer Agarwal 2281c6ed24 Fixes for comments from William Rucklidge
Change-Id: I64fcc25532cc66dc4cb7e2ea7ccfb220b0cb7e1f
2020-04-02 16:43:42 -07:00
Sameer Agarwal 27183d661e 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
2020-04-02 06:49:42 -07:00
Johannes Beck 6bde61d6be 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
2020-03-23 22:36:39 -07:00
Sameer Agarwal f212c92954 Let Problem::SetParameterization be called more than once.
https://github.com/ceres-solver/ceres-solver/issues/501

Change-Id: Ia94e6e62553e97fa2052db2cbebc5c472e26a406
2019-12-17 19:00:06 +00:00
Sameer Agarwal 19728e72d4 Add documentation for Problem::IsParameterBlockConstant
https://github.com/ceres-solver/ceres-solver/issues/485

Change-Id: I1d3d7e6bb2a33e2202b71c989164dd805fb54b89
2019-12-16 16:59:34 -08:00
Sameer Agarwal bf709ecac2 Move EvaluationCallback from Solver::Options to Problem::Options.
Adding it to Solver::Options was a mistake, as it prevents it from
being used in covariance estimation. Also updated associated docs.

https://github.com/ceres-solver/ceres-solver/issues/380
https://github.com/ceres-solver/ceres-solver/issues/401
https://github.com/ceres-solver/ceres-solver/issues/484

Change-Id: I63809a47a58e84c04a58bf8e59ace92f45fc2873
2019-07-08 21:24:08 +02:00
Sameer Agarwal db1f5b57a0 Allow some methods in Problem to use const double*.
Some methods in Problem do not modify the parameter block
and those methods now allow the user to call them with const double*.

The methods are

RemoveParameterBlock
SetParameterBlockConstant
IsParameterBlockConstant
GetParameterization
GetParameterLowerBound
GetParameterUpperBound

https://github.com/ceres-solver/ceres-solver/issues/479

Change-Id: I59dcb77134f59576dd498bd732e29aae9abd28b1
2019-06-05 15:45:02 -07:00
Sameer Agarwal 1b852c57e0 Add Problem::EvaluateResidualBlock.
This method gives the user the ability to evaluate a given residual
block.

A couple of minor cleanups.

Problem::problem_impl_ -> Problem::impl_
NULL -> nullptr

https://github.com/ceres-solver/ceres-solver/issues/417

Change-Id: I6dd94762c475fa264c387b8c93d516f6e06fe832
2019-04-29 09:46:33 -07:00
Sameer Agarwal d467a627b5 IdentityTransformation -> IdentityParameterization
Change-Id: I77b32a3ec4fd666ce99e2248eb50c851d7bb4b0d
2019-04-02 06:43:31 -07:00
Sameer Agarwal eaec6a9d0c Fix more typos in CostFunctionToFunctor documentation.
Change-Id: I337e67152e4c00b91f7b8f0bb471d5a1896f46dc
2019-03-10 20:57:09 -07:00
Sameer Agarwal 99b5aa4aa5 Fix typos in CostFunctionToFunctor documentation.
Thanks to jss.chandler00@gmail.com for reporting this.

Change-Id: I05cc1f17edec227dc0526b2b63a9fb4a4209772f
2019-03-10 14:02:11 +00:00
Dmitriy Korchemkin 2ac62a6d78 Fix docs for Problem::EvaluateOptions and contributing
Fix Problem::EvaluateOptions::residual_blocks description
Fix gerrit interface description in contributing instructions

Change-Id: I3347f35a85700a9f8ae1da3b79a6292a9d4dffe0
2018-08-03 15:16:42 +03:00
Sameer Agarwal 32cb9e4a12 Respect bounds when using Solver::Options::check_gradients
When Solver::Options::check_gradients is true, Ceres internally
creates a new ProblemImpl object which wraps each CostFunction
in the user's problem with a GradientCheckingCostFunction.

Doing this also requires creating new ParameterBlock objects,
and when support for upper and lower bounds was added to Ceres,
CreateGradientCheckingProblemImpl should also have been updated
to create a problem with the same parameter bounds. As a result,
if check_gradients is enabled for a bounded problem, it constructs
an unconstrained problem and solves it.

This CL fixes this, by introducing Problem::GetParameterLowerBound,
and Problem::GetParameterUpperBound and using them to create a bounded
problem when checking gradients.

Thanks to @pbeeson for not only reporting this problem, but also
providing a small standalone reproduction which made debugging this
possible.

https://github.com/ceres-solver/ceres-solver/issues/379

Change-Id: Id18eb858a7009bf4fa452a21b925922d13f3249f
2018-07-09 23:48:45 -07:00
Mike Vitus 4e391c36c1 Corrects the documentation of Problem::AddResidualBlock.
This change is provided on behalf of Steve Hsu.

Tested by compiling and inspecting the documentation.

Change-Id: Ib892bcc3ad76cba1bad133a1fd1d26468d0e6437
2018-03-01 04:09:09 +00:00
Sameer Agarwal 202dd9f3a1 Add GradientProblemSolver::Options::update_state_every_iteration
The non-linear least squares solver had the ability to update the
user's parameters every iteration. Now GradientProblemSolver can
do the same.

Also a few minor Sphinx markup related cleanup to the documentation
which were found in the process of updating Sphinx on my machine
and adding the docs for this feature.

This fixes https://github.com/ceres-solver/ceres-solver/issues/246

Change-Id: Ib6b90ac22be8bfb60b14f25ad52082ba371af164
2018-01-25 21:30:09 -08:00
Sameer Agarwal ef36667a2c Fix the documentation for CostFunction::Evaluate.
The documentation was overly complex and had mismatched
symbols leading to confusion.

Change-Id: I25709e61ff3f9b9775d8f14a9e63f61931256dac
2018-01-09 14:59:44 -08:00
Keir Mierle cb497df619 Add link for CLA in docs; minor fixes
Also fixes a typo in cost_function.h

Change-Id: I45f08fd27fd2f8e5cb5b3f08e0d4f9a3e8822a15
2017-10-24 17:18:02 -07:00
Sameer Agarwal d02b5d7022 Update Problem::EvaluateOptions documentation.
Thanks to Ricardo Martin for reporting this.

Change-Id: Ic3ce60f8de419f1d2cb19c949054049da79fe91a
2017-03-31 19:03:34 +00:00
Sameer Agarwal 62a70bc74c Lint cleanup from William Rucklidge
Change-Id: I11ebf9bdb09cfd465a32a61e0a9a045ab650deac
2017-02-15 11:01:27 -08:00
Sameer Agarwal d05515b3eb Remove spurious conversion from doubles to Jets.
Binary operations between Jets and doubles are well defined
and should not require an explicit conversion to Jets to work.
This was an oversight earlier and lead to overzealous conversions
all over our in our example code.

Change-Id: I1799770818e136edfc0a5802d86037ce9aec4923
2017-02-10 11:36:58 -08:00
Sameer Agarwal d1e954d246 Minor changes to the documentation.
1. Section title changes.
2. Moving the glog discussion into installation.rst
3. Re-working the faqs into two separate chapters.

Change-Id: I95dd25bace50f0f9077ef114504999190686963e
2016-11-27 15:12:11 -08:00