Frank Dellaert
93465945e9
Large gtsam refactoring
...
To support faster development *and* better performance Richard and I pushed through a large refactoring of NonlinearFactors.
The following are the biggest changes:
1) NonLinearFactor1 and NonLinearFactor2 are now templated on Config, Key type, and X type, where X is the argument to the measurement function.
2) The measurement itself is no longer kept in the nonlinear factor. Instead, a derived class (see testVSLAMFactor, testNonlinearEquality, testPose3Factor etc...) has to implement a function to compute the errors, "evaluateErrors". Instead of (h(x)-z), it needs to return (z-h(x)), so Ax-b is an approximation of the error. IMPORTANT: evaluateErrors needs - if asked - *combine* the calculation of the function value h(x) and the derivatives dh(x)/dx. This was a major performance issue. To do this, boost::optional<Matrix&> arguments are provided, and tin EvaluateErrors you just says something like
if (H) *H = Matrix_(3,6,....);
3) We are no longer using int or strings for nonlinear factors. Instead, the preferred key type is now Symbol, defined in Key.h. This is both fast and cool: you can construct it from an int, and cast it to a strong. It also does type checking: a Symbol<Pose3,'x'> will not match a Symbol<Pose2,'x'>
4) minor: take a look at LieConfig.h: it help you avoid writing a lot of code bu automatically creating configs for a certain type. See e.g. Pose3Config.h. A "double" LieConfig is on the way - Thanks Richard and Manohar !
2010-01-13 22:25:03 +00:00
John Rogers
22b4912d5e
adding #include<boost/shared_ptr.hpp> to graph-inl.h because this dependency doesnt seem to be working without it on gcc 4.3.3
2010-01-13 19:36:52 +00:00
Kai Ni
c0bc7e6c10
fix a bug in composePoses that switched the order of compose parameters
2010-01-13 06:02:18 +00:00
Kai Ni
2a094b7491
return shared_ptr in composePoses
2010-01-13 02:09:16 +00:00
Richard Roberts
8d28763339
Vector and Matrix initialization optimization
2010-01-12 16:12:31 +00:00
Kai Ni
4369cd2d92
1) add a compose function that compose all the poses in a factor graph given the spanning tree
...
2) add a new graph-inl.h which takes care of all the boost graph related functions to prevent the copy and paste across several classes
2010-01-12 16:12:25 +00:00
Richard Roberts
bea55b5f5b
Fixed double map lookup
2010-01-12 16:11:24 +00:00
Frank Dellaert
fcb7c024a7
bearing functions and derivatives
2010-01-12 02:10:42 +00:00
Frank Dellaert
4b459c45c3
return identity
2010-01-12 02:09:43 +00:00
Frank Dellaert
5163684077
norm
2010-01-12 02:09:03 +00:00
Frank Dellaert
1aed18717b
combined evaluation and derivatives
2010-01-12 02:08:41 +00:00
Richard Roberts
2c8d8dbde4
NonlinearOptimizer constructor now requires shared_ptr to prevent storing pointers to stack and temporary variables. Code that uses it will need to be modified, but CitySLAM is already done.
2010-01-11 20:17:28 +00:00
Kai Ni
40889e8f50
added an absolution threshold $epsilon_abs$ to conjugateGradients. added utility functions to several class to have the same interface which can be used by template functions
2010-01-11 08:32:59 +00:00
Manohar Paluri
1b53a240b9
removed prints
2010-01-11 01:09:07 +00:00
Frank Dellaert
e9b0bade03
Access to keys
2010-01-11 00:53:53 +00:00
Frank Dellaert
71fe372fb3
test successive iterates
2010-01-11 00:53:43 +00:00
Richard Roberts
aa2aa4149c
Special case for trace==1 in Rot3 logmap
2010-01-10 23:36:37 +00:00
Richard Roberts
b0fd5396ad
Bug fix in Rot3 for logmap(identity)
2010-01-10 22:58:30 +00:00
Richard Roberts
1dcc864d97
Comment cleanup to /** style and adding global print functions
2010-01-10 22:41:23 +00:00
Kai Ni
78a579a24a
add the missing #pragma once
2010-01-10 22:15:34 +00:00
Viorela Ila
f8be2c2626
dim, expmap, logmap works
2010-01-10 21:53:38 +00:00
Frank Dellaert
64eca2d550
addConstraint
2010-01-10 19:25:19 +00:00
Frank Dellaert
d11b2e6bd5
Added omitted headers
2010-01-10 18:37:55 +00:00
Richard Roberts
88ae5380a8
Removed Vector-specific versions of NumericalDerivative, instead Vector is now a Lie object
2010-01-10 18:23:47 +00:00
Frank Dellaert
1a96ef41cf
Created Pose3Config, Pose3Graph, and tested loop closure optimization.
2010-01-10 18:21:20 +00:00
Frank Dellaert
2fe02dbaa7
Moved optimization tests to testPose2Graph
2010-01-10 18:20:10 +00:00
Richard Roberts
edb68b3b60
Fixed typo in LieConfig expmap(Vector)
2010-01-10 17:48:55 +00:00
Richard Roberts
33ba34a1f6
Minimized headers included in Lie.h, removed print from testLieConfig
2010-01-10 17:26:44 +00:00
Frank Dellaert
8d84078036
Loop closure tested
2010-01-10 17:02:49 +00:00
Frank Dellaert
12caabb667
Method to add a factor without having to do shared factor dance
2010-01-10 17:02:35 +00:00
Frank Dellaert
120f1301c2
operator[]
2010-01-10 17:01:48 +00:00
Frank Dellaert
710bce5cc4
Pose2Config is now simply a typedef (note that for linking specific template instantiations were needed).
2010-01-10 16:17:55 +00:00
Frank Dellaert
4a21fb9387
Fixed 2nd expmap template, which now creates a VectorConfig and calls the first template
2010-01-10 16:16:03 +00:00
Frank Dellaert
65e4dc1342
pose2Circle
2010-01-10 15:46:18 +00:00
Frank Dellaert
43b2facd10
Now Pose3Config == LieConfig
2010-01-10 14:59:39 +00:00
Frank Dellaert
92c58e50a1
Small changes, mainly const correctness
2010-01-10 14:59:22 +00:00
Frank Dellaert
c957672656
Small to change to work well with LieConfig
2010-01-10 14:55:19 +00:00
Frank Dellaert
794ffd3b2f
Fixed significant bug in Pose2Factor, where we forgot to multiply the error with the square root inverse covariance.
2010-01-10 13:55:55 +00:00
Frank Dellaert
8061f29ec5
added test clarifying Ax-b \approx h(x)-z
2010-01-10 13:54:34 +00:00
Frank Dellaert
f1f21a8589
inverted sign of square root to make inv sqrt positive for simple covariance matrices
2010-01-10 13:53:31 +00:00
Frank Dellaert
bf315781af
defined global functions in Lie.h rather than here
2010-01-10 12:35:41 +00:00
Frank Dellaert
6bcb9d08d6
Unit tests for correct "Agrawal06iros" versions: they are indeed correct.
2010-01-10 12:26:31 +00:00
Frank Dellaert
30367e35fb
Much faster compund rotation using Justin's (indeed correct) formula
2010-01-10 12:25:46 +00:00
Frank Dellaert
d5eade62ef
Moved expmap and logmap to .cpp, also tested correct "Agrawal06iros" versions, and they are indeed correct (see testPose3).
2010-01-10 12:24:31 +00:00
Frank Dellaert
ec1b57ed08
Added Lie required functions (trivial) for Vector. Not in Vector.h as this becomes circular.
2010-01-10 12:22:59 +00:00
Richard Roberts
4fa53a1f79
Merging lieconfig branch - LieConfig works but currently requires Lie objects to have a global print function.
2010-01-10 06:35:16 +00:00
Kai Ni
6a7987fa91
fix Pose2Prior problem and adding prior factor when splitting factor graph
2010-01-09 23:39:11 +00:00
Richard Roberts
2b82ff65e7
Deriving Lie objects from a base class Lie<T>, which provides member functions to access global functions, for use in MATLAB.
2010-01-09 23:15:06 +00:00
Kai Ni
d015b31799
more meaningful error messages for matrix operations
2010-01-09 07:06:29 +00:00
Frank Dellaert
cc358fb2ce
removed print statements
2010-01-09 02:37:58 +00:00
Frank Dellaert
5fbb820341
fixed comments and tolerances
2010-01-09 02:27:49 +00:00
Frank Dellaert
6851b31fad
Added static methods to construct rotations, coded up convention for yaw-pitch-roll, modernized RQ
2010-01-09 00:03:47 +00:00
Kai Ni
d4f92c7bb6
pass FactorGraph as reference into split
2010-01-08 20:27:10 +00:00
Kai Ni
06b7f8ee04
add split to FactorGraph
2010-01-08 19:07:46 +00:00
Frank Dellaert
5dc237eeea
BetweenFactor is a template that models the measurement between two Lie types e.g. Pose2 or Pose3. Pose2Factor and Pose3Factor are now simply typedefs.
2010-01-08 15:32:45 +00:00
Kai Ni
215ff24d0f
generate ordering by breadth-first-search, a lot faster than before
2010-01-08 04:12:23 +00:00
Frank Dellaert
8d22b3aca2
Just refactoring
2010-01-08 03:38:05 +00:00
Frank Dellaert
f684becf1f
Fixed Dbetween1
2010-01-08 03:06:03 +00:00
Richard Roberts
19a3e228d7
Large refactoring - made several Lie group functions global, which used to be member functions, to treat Lie groups more uniformly. Also created Lie.h, and a preprocessor flag in numericalDerivative to change the coordinate frame derivatives are reported in. gtsam and easylib build and pass unit tests, but this will probably break other projects, which will require a few small changes to work again. Email coming in a few minutes to describe the changes.
2010-01-08 00:40:17 +00:00
Kai Ni
a845b3d30a
generate ordering from the spanning tree
2010-01-07 08:00:54 +00:00
Kai Ni
6298a45050
use prim algorithm instead of kruskal for finding MST, which yields the parent map.
2010-01-07 06:25:54 +00:00
Alex Cunningham
20c6f29823
Moved control-related components to separate library
2010-01-06 20:01:34 +00:00
Frank Dellaert
b20ed42134
log and between
2010-01-06 19:29:41 +00:00
Frank Dellaert
f77da96caf
Modernized and tested RQ and added Rot3::ypr. Note this yaw-pitch-roll is different from ML version, which is focused on cameras. Let the fun begin...
2010-01-06 15:52:43 +00:00
Kai Ni
9845a5ae37
add findMinimumSpanningTree to FactorGraph
2010-01-06 11:15:37 +00:00
Frank Dellaert
cd644e75a5
GaussianBayesNet::matrix now properly divides in sigmas
2010-01-05 14:14:49 +00:00
Frank Dellaert
22d66df766
added manifold test
2010-01-05 14:13:51 +00:00
Richard Roberts
39334ea9e0
Update MATLAB wrapper for earlier Pose2* changes
2010-01-04 18:07:24 +00:00
Kai Ni
46cc85e351
added size and clear to pose2config
2010-01-03 07:25:59 +00:00
Michael Kaess
052149771a
relinearizing factors corresponding to contaminated cliques
2010-01-03 04:57:35 +00:00
Kai Ni
cade0e7780
fix timing test linking problem by using noinst_PROGRAMS
2010-01-03 00:23:16 +00:00
Manohar Paluri
68159fb5e4
corrected SubgraphPreconditioner case
2010-01-02 20:24:59 +00:00
Frank Dellaert
f82b46f96c
Sped up rodriguez and replaced slow implementation with call to fast implementation. Also moved some functions to cpp.
2010-01-02 14:28:18 +00:00
Frank Dellaert
a1c55b9f62
Updated Pose2Config to expected coding standard
2010-01-02 10:33:33 +00:00
Frank Dellaert
ff06cd757f
moved all "Urban" factors and tests to (cmake-based) CitySLAM project
2009-12-31 16:54:23 +00:00
Frank Dellaert
a1d14ba2ae
Added Bayes Net and Subgraph preconditioners to gtsam (developed in CitySLAM project)
2009-12-31 12:56:47 +00:00
Frank Dellaert
730f4a546f
Added planar graph with easy subtree
2009-12-31 12:55:51 +00:00
Frank Dellaert
07cc95e4c4
Comments and formatting
2009-12-31 12:55:16 +00:00
Frank Dellaert
eaa8176de1
correct behavior when entire columns are zero
2009-12-31 10:30:44 +00:00
Frank Dellaert
46a65d89df
using ediv_ where needed
2009-12-31 10:30:06 +00:00
Frank Dellaert
f7d5b517a4
ediv_ is same as ediv except returns 0 for 0/0 division, needed for dealing with constraints
2009-12-31 10:29:25 +00:00
Frank Dellaert
3fbc857a9e
fixed behavior of error for sigma==0
2009-12-31 10:28:43 +00:00
Frank Dellaert
9b327d1a9d
added reset
2009-12-31 10:27:39 +00:00
Frank Dellaert
bf85f10de7
subtraction
2009-12-31 10:27:16 +00:00
Michael Kaess
b4e65e9631
progress in ISAM2, but unit test still disabled
2009-12-31 05:35:08 +00:00
Richard Roberts
afc3028ad5
Fixed bug in testPose2Factor optimize unit test where only the first expected value was checked.
2009-12-30 18:41:33 +00:00
Frank Dellaert
793a9d58ae
Errors is now a list
2009-12-30 17:13:36 +00:00
Frank Dellaert
f80ac5d7d5
backSubstitute functions (unit-tested in CitySLAM) for preconditioning
2009-12-30 17:13:24 +00:00
Frank Dellaert
2368f3605a
getReference
2009-12-30 14:53:40 +00:00
Frank Dellaert
15bb00683a
transpose backsubstitute on upper-triangular matrix
2009-12-30 13:20:16 +00:00
Michael Kaess
42fca8c399
nonlinear update, all but rhs/config
2009-12-30 04:27:14 +00:00
Richard Roberts
0b9451bc4b
Initializing libtool correctly in gtsam (see email to frankcvs with same subject)
2009-12-29 20:01:38 +00:00
Michael Kaess
737a2f1e05
unit test enabled again and working
2009-12-29 14:54:45 +00:00
Frank Dellaert
c43cd425ab
new back-substitution functions that can do unit triangular solves
2009-12-29 13:59:34 +00:00
Michael Kaess
75ab62a729
ISAM2 (nonlinear ISAM) partially there, unit test currently disabled
2009-12-29 05:57:05 +00:00
Frank Dellaert
8d4a029665
rhs method
2009-12-28 18:46:01 +00:00
Frank Dellaert
543d3fcd65
System now a class (gradient is method)
2009-12-28 17:28:48 +00:00
Frank Dellaert
0c0b73042b
template now exposed in iterative.h, and has its own implementation file
2009-12-28 16:26:16 +00:00
Frank Dellaert
5ac304aff3
correct convergence criterion, verbose flag
2009-12-28 16:15:26 +00:00
Frank Dellaert
674ae9d030
steepest descent now all implemented in iterative.h/cpp
2009-12-28 12:37:34 +00:00
Frank Dellaert
bc27afc49f
CGD method now uses CGD template in iterative.cpp
2009-12-28 10:48:48 +00:00
Frank Dellaert
863ee58c0f
new iterative.h/cpp compilation unit
2009-12-28 09:56:58 +00:00
Frank Dellaert
d9fd502656
moved CG tests from testGFG to testIterative
2009-12-28 09:44:30 +00:00
Frank Dellaert
1fac98b4cb
Errors:dot, VectorConfig::operator*/-, as a result Conjugate Gradient Descent template now works for factor graphs
2009-12-28 08:15:09 +00:00
Michael Kaess
5dfd1921e1
template nightmare resolved, all tests working
2009-12-27 23:15:36 +00:00
Frank Dellaert
266fc56dea
Gradient using new operator^ and errors method
2009-12-27 12:13:31 +00:00
Frank Dellaert
7d1428de60
Added Errors class and operator* for GaussianFactor and GaussianFactorGraph. Also moved a few functions to cpp.
2009-12-26 22:48:41 +00:00
Frank Dellaert
6614434b83
System version of CG
2009-12-26 21:25:45 +00:00
Richard Roberts
8d3918e7f9
Typo made testPose2Factor not build on Linux
2009-12-26 19:31:02 +00:00
Frank Dellaert
f3965b07ca
Conjugate Gradient Descent template (in progress)
2009-12-26 15:06:54 +00:00
Frank Dellaert
886c7dcdcc
formatting and comments
2009-12-26 15:06:21 +00:00
Frank Dellaert
8dbf79706e
commented out two broken tests
2009-12-26 15:05:55 +00:00
Michael Kaess
4403b51fcd
isam functionality separated into ISAM class, still within BayesTree
2009-12-26 04:44:13 +00:00
Frank Dellaert
2cb52694b5
Multiply with transpose sugar A'*v = A^v
2009-12-25 17:52:58 +00:00
Michael Kaess
80ff7e6d26
uncommented urban In Makefile.am as it prevents linking; added Pose2Prior; ISAM2/planar now working
2009-12-24 23:44:08 +00:00
Richard Roberts
92b60a8543
Made 'between' derivatives in the tangent space of the solution instead of tangent space of identity, this makes Pose2 an "origin-free" manifold.
2009-12-21 16:43:23 +00:00
Frank Dellaert
d0b757da48
remove method to set factor to NULL
2009-12-20 21:21:01 +00:00
justinca
3158a5c7c1
Rework UrbanMeasurement to be more efficient, less duplicate code. Add real unit tests for the class
2009-12-20 14:59:37 +00:00
Frank Dellaert
d362fa13d8
print is more intuitive using reverse order
2009-12-20 11:56:33 +00:00
Frank Dellaert
18c44e0d1f
Comments only
2009-12-20 10:32:34 +00:00
justinca
7012fd2857
UrbanMeasurement first pass at implementation. Still need to add test data, sort out some details.
2009-12-18 19:43:55 +00:00
Richard Roberts
82825a30bf
Fixed unit test broken by fix in Pose2Factor
2009-12-18 14:42:19 +00:00
Frank Dellaert
b14094cb1f
testUrbanOdometry
2009-12-18 07:15:19 +00:00
Frank Dellaert
d11d674c01
addOdometry now works
2009-12-18 06:55:44 +00:00
Frank Dellaert
c987ab397c
error_vectors
2009-12-18 06:55:24 +00:00
Frank Dellaert
bf504d30db
new concatVectors call
2009-12-18 06:11:19 +00:00
Frank Dellaert
ac72d1cc22
renamed transformPose_to to transform_to, composeTransform to compose, and changed nr. of arguments of Dtransform_to2 (to two)
2009-12-18 05:36:53 +00:00
Frank Dellaert
eaf27af92d
error_vector and error unit-tested
2009-12-18 05:18:31 +00:00
Frank Dellaert
edb72d305f
better error message, formatting
2009-12-18 05:16:09 +00:00
Frank Dellaert
0194926dc2
transpose not needed
2009-12-18 05:14:34 +00:00
Frank Dellaert
c9bd327961
formatting
2009-12-18 05:14:08 +00:00
Alex Cunningham
e2bc13a2a6
Renaming gradients -> jacobians
2009-12-18 03:05:47 +00:00
Frank Dellaert
a3deb992c4
use BOOST_FOREACH
2009-12-18 02:48:21 +00:00
Alex Cunningham
a1918056a5
Changed NonlinearConstraints to take cost and gradient functions that do not take the list of keys. Tests have been reconstructed using boost::bind
2009-12-18 02:39:02 +00:00
Frank Dellaert
5a0bc8ab53
remove binaries
2009-12-18 02:30:05 +00:00
Frank Dellaert
cf1fde7bda
UrbanFactor, UrbanGraph.cpp, template instantiations
2009-12-18 02:27:50 +00:00
Alex Cunningham
7d0de77fc6
Changed argument ordering for constraints
2009-12-18 01:40:29 +00:00
Frank Dellaert
7dfc67860c
unit tests for new Urban* classes
2009-12-18 01:24:28 +00:00
Alex Cunningham
d75a602546
Removed failed test testSQPOptimizer
2009-12-18 01:24:19 +00:00
Richard Roberts
ff817551de
Added FactorGraph::replace(index, factor) to replace one factor with another (used in FrameSLAM).
2009-12-18 00:13:38 +00:00
Richard Roberts
3c0ae0ec1c
Math fix in linearize() and error_vector()
2009-12-18 00:10:20 +00:00
Richard Roberts
7161878285
Small changes: standardized constructors, added log() and unit tests, removed +,- ops, angle() changed to theta(), print functions
2009-12-18 00:09:54 +00:00
Viorela Ila
d61d92c0e7
UrbanGraph class and testUrbanGraph TODOs
2009-12-17 21:23:50 +00:00
Frank Dellaert
68de3ae715
better comments
2009-12-17 19:34:27 +00:00
Manohar Paluri
dc9a966fdd
moved shared pointer declaration to Cal3_S2.h
2009-12-17 10:02:43 +00:00
Richard Roberts
3326759f0b
Removed extra ;
2009-12-16 21:41:33 +00:00
Richard Roberts
c45f64657f
Changes to make Pose2Config work with NonlinearOptimizer
2009-12-16 21:40:41 +00:00
Richard Roberts
83c95f2343
Changed constructor used from Pose2(t,R) to Pose2(R,t)
2009-12-16 21:39:03 +00:00
Frank Dellaert
9efac7b3fb
Some re-naming and re-formatting only
2009-12-15 05:34:49 +00:00
Richard Roberts
94f986bbe7
Indentation
2009-12-15 00:00:02 +00:00