From 2778f2fe398f25651cb10af48fa9a4be65441b01 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 23 Dec 2013 01:05:39 -0500 Subject: [PATCH 01/15] clone methods --- gtsam/slam/RotateFactor.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gtsam/slam/RotateFactor.h b/gtsam/slam/RotateFactor.h index f30392d62..0b6dde95d 100644 --- a/gtsam/slam/RotateFactor.h +++ b/gtsam/slam/RotateFactor.h @@ -25,6 +25,7 @@ class RotateFactor: public NoiseModelFactor1 { Point3 p_, z_; ///< Predicted and measured directions, p = iRc * z typedef NoiseModelFactor1 Base; + typedef RotateFactor This; public: @@ -34,6 +35,11 @@ public: Base(model, key), p_(Rot3::Logmap(P)), z_(Rot3::Logmap(Z)) { } + /// @return a deep copy of this factor + virtual gtsam::NonlinearFactor::shared_ptr clone() const { + return boost::static_pointer_cast( + gtsam::NonlinearFactor::shared_ptr(new This(*this))); } + /// print virtual void print(const std::string& s = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { @@ -63,6 +69,7 @@ class RotateDirectionsFactor: public NoiseModelFactor1 { Sphere2 p_, z_; ///< Predicted and measured directions, p = iRc * z typedef NoiseModelFactor1 Base; + typedef RotateDirectionsFactor This; public: @@ -72,6 +79,11 @@ public: Base(model, key), p_(p), z_(z) { } + /// @return a deep copy of this factor + virtual gtsam::NonlinearFactor::shared_ptr clone() const { + return boost::static_pointer_cast( + gtsam::NonlinearFactor::shared_ptr(new This(*this))); } + /// print virtual void print(const std::string& s = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { From 2601b2ad00f0ec05321c4b213793287227d222eb Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 23 Dec 2013 01:41:17 -0500 Subject: [PATCH 02/15] Merged changes from the trunk back into examples. Mostly just Vector inits and some new examples. --- examples/CMakeLists.txt | 10 +++ examples/CameraResectioning.cpp | 2 +- examples/CreateSFMExampleData.cpp | 71 +++++++++++++++ examples/LocalizationExample.cpp | 14 +-- examples/OdometryExample.cpp | 4 +- examples/PlanarSLAMExample.cpp | 6 +- examples/Pose2SLAMExample.cpp | 4 +- examples/Pose2SLAMExample_graph.cpp | 20 ++--- examples/Pose2SLAMExample_graphviz.cpp | 71 +++++++++++++++ examples/Pose2SLAMwSPCG.cpp | 6 +- examples/SFMExample.cpp | 118 +++++++++++++++++++++++++ examples/SFMExample_bal.cpp | 94 ++++++++++++++++++++ examples/SFMdata.h | 68 ++++++++++++++ examples/SelfCalibrationExample.cpp | 96 ++++++++++++++++++++ examples/VisualISAM2Example.cpp | 33 ++----- examples/VisualISAMExample.cpp | 33 ++----- 16 files changed, 566 insertions(+), 84 deletions(-) create mode 100644 examples/CreateSFMExampleData.cpp create mode 100644 examples/Pose2SLAMExample_graphviz.cpp create mode 100644 examples/SFMExample.cpp create mode 100644 examples/SFMExample_bal.cpp create mode 100644 examples/SFMdata.h create mode 100644 examples/SelfCalibrationExample.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 1c38616a4..eae90e298 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,6 +4,16 @@ endif() # Build example executables FILE(GLOB example_srcs "*.cpp") + +set (excluded_examples #"") + "${CMAKE_CURRENT_SOURCE_DIR}/DiscreteBayesNet_FG.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/UGM_chain.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/UGM_small.cpp" + "${CMAKE_CURRENT_SOURCE_DIR}/elaboratePoint2KalmanFilter.cpp" +) + +list(REMOVE_ITEM example_srcs ${excluded_examples}) + foreach(example_src ${example_srcs} ) get_filename_component(example_base ${example_src} NAME_WE) set( example_bin ${example_base} ) diff --git a/examples/CameraResectioning.cpp b/examples/CameraResectioning.cpp index 9ba415b7d..37ea57022 100644 --- a/examples/CameraResectioning.cpp +++ b/examples/CameraResectioning.cpp @@ -70,7 +70,7 @@ int main(int argc, char* argv[]) { /* 2. add factors to the graph */ // add measurement factors - SharedDiagonal measurementNoise = Diagonal::Sigmas(Vector_(2, 0.5, 0.5)); + SharedDiagonal measurementNoise = Diagonal::Sigmas((Vector(2) << 0.5, 0.5)); boost::shared_ptr factor; graph.push_back( boost::make_shared(measurementNoise, X(1), calib, diff --git a/examples/CreateSFMExampleData.cpp b/examples/CreateSFMExampleData.cpp new file mode 100644 index 000000000..b62b1c6fa --- /dev/null +++ b/examples/CreateSFMExampleData.cpp @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file CreateSFMExampleData.cpp + * @brief Create some example data that for inclusion in the data folder + * @author Frank Dellaert + */ + +#include +#include +#include + +using namespace boost::assign; +using namespace std; +using namespace gtsam; + +void create5PointExample1() { + + // Class that will gather all data + SfM_data data; + + // Create two cameras and corresponding essential matrix E + Rot3 aRb = Rot3::yaw(M_PI_2); + Point3 aTb(0.1, 0, 0); + Pose3 identity, aPb(aRb, aTb); + data.cameras.push_back(SfM_Camera(identity)); + data.cameras.push_back(SfM_Camera(aPb)); + + // Create test data, we need at least 5 points + vector P; + P += Point3(0, 0, 1), Point3(-0.1, 0, 1), Point3(0.1, 0, 1), // + Point3(0, 0.5, 0.5), Point3(0, -0.5, 0.5); + + BOOST_FOREACH(const Point3& p, P) { + + // Create the track + SfM_Track track; + track.p = p; + track.r = 1; + track.g = 1; + track.b = 1; + + // Project points in both cameras + for (size_t i = 0; i < 2; i++) + track.measurements.push_back(make_pair(i, data.cameras[i].project(p))); + + // Add track to data + data.tracks.push_back(track); + } + + // Assumes example is run in ${GTSAM_TOP}/build/examples + const string filename = "../../examples/data/5pointExample1.txt"; + writeBAL(filename, data); +} + +int main(int argc, char* argv[]) { + create5PointExample1(); + return 0; +} + +/* ************************************************************************* */ + diff --git a/examples/LocalizationExample.cpp b/examples/LocalizationExample.cpp index dfe3d1e99..3ce3e0760 100644 --- a/examples/LocalizationExample.cpp +++ b/examples/LocalizationExample.cpp @@ -93,8 +93,8 @@ public: // Consequently, the Jacobians are: // [ derror_x/dx derror_x/dy derror_x/dtheta ] = [1 0 0] // [ derror_y/dx derror_y/dy derror_y/dtheta ] = [0 1 0] - if (H) (*H) = Matrix_(2,3, 1.0,0.0,0.0, 0.0,1.0,0.0); - return Vector_(2, q.x() - mx_, q.y() - my_); + if (H) (*H) = (Matrix(2,3) << 1.0,0.0,0.0, 0.0,1.0,0.0); + return (Vector(2) << q.x() - mx_, q.y() - my_); } // The second is a 'clone' function that allows the factor to be copied. Under most @@ -118,17 +118,17 @@ int main(int argc, char** argv) { // 2a. Add odometry factors // For simplicity, we will use the same noise model for each odometry factor - noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.2, 0.2, 0.1)); + noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.2, 0.2, 0.1)); // Create odometry (Between) factors between consecutive poses graph.add(BetweenFactor(1, 2, Pose2(2.0, 0.0, 0.0), odometryNoise)); graph.add(BetweenFactor(2, 3, Pose2(2.0, 0.0, 0.0), odometryNoise)); // 2b. Add "GPS-like" measurements // We will use our custom UnaryFactor for this. - noiseModel::Diagonal::shared_ptr unaryNoise = noiseModel::Diagonal::Sigmas(Vector_(2, 0.1, 0.1)); // 10cm std on x,y - graph.push_back(boost::make_shared(1, 0.0, 0.0, unaryNoise)); - graph.push_back(boost::make_shared(2, 2.0, 0.0, unaryNoise)); - graph.push_back(boost::make_shared(3, 4.0, 0.0, unaryNoise)); + noiseModel::Diagonal::shared_ptr unaryNoise = noiseModel::Diagonal::Sigmas((Vector(2) << 0.1, 0.1)); // 10cm std on x,y + graph.add(boost::make_shared(1, 0.0, 0.0, unaryNoise)); + graph.add(boost::make_shared(2, 2.0, 0.0, unaryNoise)); + graph.add(boost::make_shared(3, 4.0, 0.0, unaryNoise)); graph.print("\nFactor Graph:\n"); // print // 3. Create the data structure to hold the initialEstimate estimate to the solution diff --git a/examples/OdometryExample.cpp b/examples/OdometryExample.cpp index d556798f0..70c6e6fb0 100644 --- a/examples/OdometryExample.cpp +++ b/examples/OdometryExample.cpp @@ -64,13 +64,13 @@ int main(int argc, char** argv) { // Add a prior on the first pose, setting it to the origin // A prior factor consists of a mean and a noise model (covariance matrix) Pose2 priorMean(0.0, 0.0, 0.0); // prior at origin - noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.3, 0.3, 0.1)); + noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.3, 0.3, 0.1)); graph.add(PriorFactor(1, priorMean, priorNoise)); // Add odometry factors Pose2 odometry(2.0, 0.0, 0.0); // For simplicity, we will use the same noise model for each odometry factor - noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.2, 0.2, 0.1)); + noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.2, 0.2, 0.1)); // Create odometry (Between) factors between consecutive poses graph.add(BetweenFactor(1, 2, odometry, odometryNoise)); graph.add(BetweenFactor(2, 3, odometry, odometryNoise)); diff --git a/examples/PlanarSLAMExample.cpp b/examples/PlanarSLAMExample.cpp index 88b8da3e0..ac8157be6 100644 --- a/examples/PlanarSLAMExample.cpp +++ b/examples/PlanarSLAMExample.cpp @@ -80,18 +80,18 @@ int main(int argc, char** argv) { // Add a prior on pose x1 at the origin. A prior factor consists of a mean and a noise model (covariance matrix) Pose2 prior(0.0, 0.0, 0.0); // prior mean is at origin - noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.3, 0.3, 0.1)); // 30cm std on x,y, 0.1 rad on theta + noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.3, 0.3, 0.1)); // 30cm std on x,y, 0.1 rad on theta graph.add(PriorFactor(x1, prior, priorNoise)); // add directly to graph // Add two odometry factors Pose2 odometry(2.0, 0.0, 0.0); // create a measurement for both factors (the same in this case) - noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.2, 0.2, 0.1)); // 20cm std on x,y, 0.1 rad on theta + noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.2, 0.2, 0.1)); // 20cm std on x,y, 0.1 rad on theta graph.add(BetweenFactor(x1, x2, odometry, odometryNoise)); graph.add(BetweenFactor(x2, x3, odometry, odometryNoise)); // Add Range-Bearing measurements to two different landmarks // create a noise model for the landmark measurements - noiseModel::Diagonal::shared_ptr measurementNoise = noiseModel::Diagonal::Sigmas(Vector_(2, 0.1, 0.2)); // 0.1 rad std on bearing, 20cm on range + noiseModel::Diagonal::shared_ptr measurementNoise = noiseModel::Diagonal::Sigmas((Vector(2) << 0.1, 0.2)); // 0.1 rad std on bearing, 20cm on range // create the measurement values - indices are (pose id, landmark id) Rot2 bearing11 = Rot2::fromDegrees(45), bearing21 = Rot2::fromDegrees(90), diff --git a/examples/Pose2SLAMExample.cpp b/examples/Pose2SLAMExample.cpp index cbe97ae12..df924ff3e 100644 --- a/examples/Pose2SLAMExample.cpp +++ b/examples/Pose2SLAMExample.cpp @@ -71,11 +71,11 @@ int main(int argc, char** argv) { // 2a. Add a prior on the first pose, setting it to the origin // A prior factor consists of a mean and a noise model (covariance matrix) - noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.3, 0.3, 0.1)); + noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.3, 0.3, 0.1)); graph.add(PriorFactor(1, Pose2(0, 0, 0), priorNoise)); // For simplicity, we will use the same noise model for odometry and loop closures - noiseModel::Diagonal::shared_ptr model = noiseModel::Diagonal::Sigmas(Vector_(3, 0.2, 0.2, 0.1)); + noiseModel::Diagonal::shared_ptr model = noiseModel::Diagonal::Sigmas((Vector(3) << 0.2, 0.2, 0.1)); // 2b. Add odometry factors // Create odometry (Between) factors between consecutive poses diff --git a/examples/Pose2SLAMExample_graph.cpp b/examples/Pose2SLAMExample_graph.cpp index 000a071da..d5e93a31b 100644 --- a/examples/Pose2SLAMExample_graph.cpp +++ b/examples/Pose2SLAMExample_graph.cpp @@ -10,7 +10,7 @@ * -------------------------------------------------------------------------- */ /** - * @file Pose2SLAMExample_graph->cpp + * @file Pose2SLAMExample_graph.cpp * @brief Read graph from file and perform GraphSLAM * @date June 3, 2012 * @author Frank Dellaert @@ -20,28 +20,24 @@ #include #include #include -#include -#include #include -#include -#include using namespace std; using namespace gtsam; -int main(int argc, char** argv) { +int main (int argc, char** argv) { - // Read File and create graph and initial estimate + // Read File, create graph and initial estimate // we are in build/examples, data is in examples/Data - NonlinearFactorGraph::shared_ptr graph ; + NonlinearFactorGraph::shared_ptr graph; Values::shared_ptr initial; - SharedDiagonal model = noiseModel::Diagonal::Sigmas(Vector_(3, 0.05, 0.05, 5.0*M_PI/180.0)); - boost::tie(graph,initial) = load2D("../../examples/Data/w100-odom.graph",model); + SharedDiagonal model = noiseModel::Diagonal::Sigmas((Vector(3) << 0.05, 0.05, 5.0 * M_PI / 180.0)); + boost::tie(graph, initial) = load2D("../../examples/Data/w100.graph", model); initial->print("Initial estimate:\n"); // Add a Gaussian prior on first poses Pose2 priorMean(0.0, 0.0, 0.0); // prior at origin - SharedDiagonal priorNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.01, 0.01, 0.01)); + SharedDiagonal priorNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.01, 0.01, 0.01)); graph->add(PriorFactor(0, priorMean, priorNoise)); // Single Step Optimization using Levenberg-Marquardt @@ -53,5 +49,5 @@ int main(int argc, char** argv) { cout.precision(2); cout << "\nP3:\n" << marginals.marginalCovariance(99) << endl; -return 0; + return 0; } diff --git a/examples/Pose2SLAMExample_graphviz.cpp b/examples/Pose2SLAMExample_graphviz.cpp new file mode 100644 index 000000000..0b318e7b3 --- /dev/null +++ b/examples/Pose2SLAMExample_graphviz.cpp @@ -0,0 +1,71 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file Pose2SLAMExample_graphviz.cpp + * @brief Save factor graph as graphviz dot file + * @date Sept 6, 2013 + * @author Frank Dellaert + */ + +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace gtsam; + +int main (int argc, char** argv) { + + // 1. Create a factor graph container and add factors to it + NonlinearFactorGraph graph; + + // 2a. Add a prior on the first pose, setting it to the origin + noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.3, 0.3, 0.1)); + graph.add(PriorFactor(1, Pose2(0, 0, 0), priorNoise)); + + // For simplicity, we will use the same noise model for odometry and loop closures + noiseModel::Diagonal::shared_ptr model = noiseModel::Diagonal::Sigmas((Vector(3) << 0.2, 0.2, 0.1)); + + // 2b. Add odometry factors + graph.add(BetweenFactor(1, 2, Pose2(2, 0, 0 ), model)); + graph.add(BetweenFactor(2, 3, Pose2(2, 0, M_PI_2), model)); + graph.add(BetweenFactor(3, 4, Pose2(2, 0, M_PI_2), model)); + graph.add(BetweenFactor(4, 5, Pose2(2, 0, M_PI_2), model)); + + // 2c. Add the loop closure constraint + graph.add(BetweenFactor(5, 2, Pose2(2, 0, M_PI_2), model)); + + // 3. Create the data structure to hold the initial estimate to the solution + // For illustrative purposes, these have been deliberately set to incorrect values + Values initial; + initial.insert(1, Pose2(0.5, 0.0, 0.2 )); + initial.insert(2, Pose2(2.3, 0.1, -0.2 )); + initial.insert(3, Pose2(4.1, 0.1, M_PI_2)); + initial.insert(4, Pose2(4.0, 2.0, M_PI )); + initial.insert(5, Pose2(2.1, 2.1, -M_PI_2)); + + // Single Step Optimization using Levenberg-Marquardt + Values result = LevenbergMarquardtOptimizer(graph, initial).optimize(); + + // save factor graph as graphviz dot file + // Render to PDF using "fdp Pose2SLAMExample.dot -Tpdf > graph.pdf" + ofstream os("Pose2SLAMExample.dot"); + graph.saveGraph(os, result); + + // Also print out to console + graph.saveGraph(cout, result); + + return 0; +} diff --git a/examples/Pose2SLAMwSPCG.cpp b/examples/Pose2SLAMwSPCG.cpp index 36f2552a1..1c2952365 100644 --- a/examples/Pose2SLAMwSPCG.cpp +++ b/examples/Pose2SLAMwSPCG.cpp @@ -68,12 +68,12 @@ int main(int argc, char** argv) { // 2a. Add a prior on the first pose, setting it to the origin // A prior factor consists of a mean and a noise model (covariance matrix) Pose2 prior(0.0, 0.0, 0.0); // prior at origin - noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.3, 0.3, 0.1)); + noiseModel::Diagonal::shared_ptr priorNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.3, 0.3, 0.1)); graph.add(PriorFactor(1, prior, priorNoise)); // 2b. Add odometry factors // For simplicity, we will use the same noise model for each odometry factor - noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas(Vector_(3, 0.2, 0.2, 0.1)); + noiseModel::Diagonal::shared_ptr odometryNoise = noiseModel::Diagonal::Sigmas((Vector(3) << 0.2, 0.2, 0.1)); // Create odometry (Between) factors between consecutive poses graph.add(BetweenFactor(1, 2, Pose2(2.0, 0.0, M_PI_2), odometryNoise)); graph.add(BetweenFactor(2, 3, Pose2(2.0, 0.0, M_PI_2), odometryNoise)); @@ -85,7 +85,7 @@ int main(int argc, char** argv) { // these constraints may be identified in many ways, such as appearance-based techniques // with camera images. // We will use another Between Factor to enforce this constraint, with the distance set to zero, - noiseModel::Diagonal::shared_ptr model = noiseModel::Diagonal::Sigmas(Vector_(3, 0.2, 0.2, 0.1)); + noiseModel::Diagonal::shared_ptr model = noiseModel::Diagonal::Sigmas((Vector(3) << 0.2, 0.2, 0.1)); graph.add(BetweenFactor(5, 1, Pose2(0.0, 0.0, 0.0), model)); graph.print("\nFactor Graph:\n"); // print diff --git a/examples/SFMExample.cpp b/examples/SFMExample.cpp new file mode 100644 index 000000000..c810cfe49 --- /dev/null +++ b/examples/SFMExample.cpp @@ -0,0 +1,118 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file SFMExample.cpp + * @brief A structure-from-motion problem on a simulated dataset + * @author Duy-Nguyen Ta + */ + +/** + * A structure-from-motion example with landmarks + * - The landmarks form a 10 meter cube + * - The robot rotates around the landmarks, always facing towards the cube + */ + +// For loading the data +#include "SFMdata.h" + +// Camera observations of landmarks (i.e. pixel coordinates) will be stored as Point2 (x, y). +#include + +// Each variable in the system (poses and landmarks) must be identified with a unique key. +// We can either use simple integer keys (1, 2, 3, ...) or symbols (X1, X2, L1). +// Here we will use Symbols +#include + +// In GTSAM, measurement functions are represented as 'factors'. Several common factors +// have been provided with the library for solving robotics/SLAM/Bundle Adjustment problems. +// Here we will use Projection factors to model the camera's landmark observations. +// Also, we will initialize the robot at some location using a Prior factor. +#include +#include + +// When the factors are created, we will add them to a Factor Graph. As the factors we are using +// are nonlinear factors, we will need a Nonlinear Factor Graph. +#include + +// Finally, once all of the factors have been added to our factor graph, we will want to +// solve/optimize to graph to find the best (Maximum A Posteriori) set of variable values. +// GTSAM includes several nonlinear optimizers to perform this step. Here we will use a +// trust-region method known as Powell's Degleg +#include + +// The nonlinear solvers within GTSAM are iterative solvers, meaning they linearize the +// nonlinear functions around an initial linearization point, then solve the linear system +// to update the linearization point. This happens repeatedly until the solver converges +// to a consistent set of variable values. This requires us to specify an initial guess +// for each variable, held in a Values container. +#include + +#include + +using namespace std; +using namespace gtsam; + +/* ************************************************************************* */ +int main(int argc, char* argv[]) { + + // Define the camera calibration parameters + Cal3_S2::shared_ptr K(new Cal3_S2(50.0, 50.0, 0.0, 50.0, 50.0)); + + // Define the camera observation noise model + noiseModel::Isotropic::shared_ptr measurementNoise = noiseModel::Isotropic::Sigma(2, 1.0); // one pixel in u and v + + // Create the set of ground-truth landmarks + vector points = createPoints(); + + // Create the set of ground-truth poses + vector poses = createPoses(); + + // Create a factor graph + NonlinearFactorGraph graph; + + // Add a prior on pose x1. This indirectly specifies where the origin is. + noiseModel::Diagonal::shared_ptr poseNoise = noiseModel::Diagonal::Sigmas((Vector(6) << Vector3::Constant(0.3), Vector3::Constant(0.1))); // 30cm std on x,y,z 0.1 rad on roll,pitch,yaw + graph.add(PriorFactor(Symbol('x', 0), poses[0], poseNoise)); // add directly to graph + + // Simulated measurements from each camera pose, adding them to the factor graph + for (size_t i = 0; i < poses.size(); ++i) { + for (size_t j = 0; j < points.size(); ++j) { + SimpleCamera camera(poses[i], *K); + Point2 measurement = camera.project(points[j]); + graph.add(GenericProjectionFactor(measurement, measurementNoise, Symbol('x', i), Symbol('l', j), K)); + } + } + + // Because the structure-from-motion problem has a scale ambiguity, the problem is still under-constrained + // Here we add a prior on the position of the first landmark. This fixes the scale by indicating the distance + // between the first camera and the first landmark. All other landmark positions are interpreted using this scale. + noiseModel::Isotropic::shared_ptr pointNoise = noiseModel::Isotropic::Sigma(3, 0.1); + graph.add(PriorFactor(Symbol('l', 0), points[0], pointNoise)); // add directly to graph + graph.print("Factor Graph:\n"); + + // Create the data structure to hold the initial estimate to the solution + // Intentionally initialize the variables off from the ground truth + Values initialEstimate; + for (size_t i = 0; i < poses.size(); ++i) + initialEstimate.insert(Symbol('x', i), poses[i].compose(Pose3(Rot3::rodriguez(-0.1, 0.2, 0.25), Point3(0.05, -0.10, 0.20)))); + for (size_t j = 0; j < points.size(); ++j) + initialEstimate.insert(Symbol('l', j), points[j].compose(Point3(-0.25, 0.20, 0.15))); + initialEstimate.print("Initial Estimates:\n"); + + /* Optimize the graph and print results */ + Values result = DoglegOptimizer(graph, initialEstimate).optimize(); + result.print("Final results:\n"); + + return 0; +} +/* ************************************************************************* */ + diff --git a/examples/SFMExample_bal.cpp b/examples/SFMExample_bal.cpp new file mode 100644 index 000000000..672dbc86b --- /dev/null +++ b/examples/SFMExample_bal.cpp @@ -0,0 +1,94 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file SFMExample.cpp + * @brief Solve a structure-from-motion problem from a "Bundle Adjustment in the Large" file + * @author Frank Dellaert + */ + +// For an explanation of headers, see SFMExample.cpp +#include +#include +#include +#include +#include +#include // for loading BAL datasets ! +#include + +using namespace std; +using namespace gtsam; +using symbol_shorthand::C; +using symbol_shorthand::P; + +// We will be using a projection factor that ties a SFM_Camera to a 3D point. +// An SFM_Camera is defined in datase.h as a camera with unknown Cal3Bundler calibration +// and has a total of 9 free parameters +typedef GeneralSFMFactor MyFactor; + +/* ************************************************************************* */ +int main (int argc, char* argv[]) { + + // Find default file, but if an argument is given, try loading a file + string filename = findExampleDataFile("dubrovnik-3-7-pre"); + if (argc>1) filename = string(argv[1]); + + // Load the SfM data from file + SfM_data mydata; + const bool success = readBAL(filename, mydata); + assert(success); + cout << boost::format("read %1% tracks on %2% cameras\n") % mydata.number_tracks() % mydata.number_cameras(); + + // Create a factor graph + NonlinearFactorGraph graph; + + // We share *one* noiseModel between all projection factors + noiseModel::Isotropic::shared_ptr noise = + noiseModel::Isotropic::Sigma(2, 1.0); // one pixel in u and v + + // Add measurements to the factor graph + size_t j = 0; + BOOST_FOREACH(const SfM_Track& track, mydata.tracks) { + BOOST_FOREACH(const SfM_Measurement& m, track.measurements) { + size_t i = m.first; + Point2 uv = m.second; + graph.add(MyFactor(uv, noise, C(i), P(j))); // note use of shorthand symbols C and P + } + j += 1; + } + + // Add a prior on pose x1. This indirectly specifies where the origin is. + // and a prior on the position of the first landmark to fix the scale + graph.add(PriorFactor(C(0), mydata.cameras[0], noiseModel::Isotropic::Sigma(9, 0.1))); + graph.add(PriorFactor (P(0), mydata.tracks[0].p, noiseModel::Isotropic::Sigma(3, 0.1))); + + // Create initial estimate + Values initial; + size_t i = 0; j = 0; + BOOST_FOREACH(const SfM_Camera& camera, mydata.cameras) initial.insert(C(i++), camera); + BOOST_FOREACH(const SfM_Track& track, mydata.tracks) initial.insert(P(j++), track.p); + + /* Optimize the graph and print results */ + Values result; + try { + LevenbergMarquardtParams params; + params.setVerbosity("ERROR"); + LevenbergMarquardtOptimizer lm(graph, initial, params); + result = lm.optimize(); + } catch (exception& e) { + cout << e.what(); + } + cout << "final error: " << graph.error(result) << endl; + + return 0; +} +/* ************************************************************************* */ + diff --git a/examples/SFMdata.h b/examples/SFMdata.h new file mode 100644 index 000000000..25442d527 --- /dev/null +++ b/examples/SFMdata.h @@ -0,0 +1,68 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file SFMMdata.h + * @brief Simple example for the structure-from-motion problems + * @author Duy-Nguyen Ta + */ + +/** + * A structure-from-motion example with landmarks + * - The landmarks form a 10 meter cube + * - The robot rotates around the landmarks, always facing towards the cube + */ + +// As this is a full 3D problem, we will use Pose3 variables to represent the camera +// positions and Point3 variables (x, y, z) to represent the landmark coordinates. +// Camera observations of landmarks (i.e. pixel coordinates) will be stored as Point2 (x, y). +// We will also need a camera object to hold calibration information and perform projections. +#include +#include + +// We will also need a camera object to hold calibration information and perform projections. +#include + +/* ************************************************************************* */ +std::vector createPoints() { + + // Create the set of ground-truth landmarks + std::vector points; + points.push_back(gtsam::Point3(10.0,10.0,10.0)); + points.push_back(gtsam::Point3(-10.0,10.0,10.0)); + points.push_back(gtsam::Point3(-10.0,-10.0,10.0)); + points.push_back(gtsam::Point3(10.0,-10.0,10.0)); + points.push_back(gtsam::Point3(10.0,10.0,-10.0)); + points.push_back(gtsam::Point3(-10.0,10.0,-10.0)); + points.push_back(gtsam::Point3(-10.0,-10.0,-10.0)); + points.push_back(gtsam::Point3(10.0,-10.0,-10.0)); + + return points; +} + +/* ************************************************************************* */ +std::vector createPoses() { + + // Create the set of ground-truth poses + std::vector poses; + double radius = 30.0; + int i = 0; + double theta = 0.0; + gtsam::Point3 up(0,0,1); + gtsam::Point3 target(0,0,0); + for(; i < 8; ++i, theta += 2*M_PI/8) { + gtsam::Point3 position = gtsam::Point3(radius*cos(theta), radius*sin(theta), 0.0); + gtsam::SimpleCamera camera = gtsam::SimpleCamera::Lookat(position, target, up); + poses.push_back(camera.pose()); + } + return poses; +} +/* ************************************************************************* */ diff --git a/examples/SelfCalibrationExample.cpp b/examples/SelfCalibrationExample.cpp new file mode 100644 index 000000000..01a2300e3 --- /dev/null +++ b/examples/SelfCalibrationExample.cpp @@ -0,0 +1,96 @@ +/* ---------------------------------------------------------------------------- + + * GTSAM Copyright 2010, Georgia Tech Research Corporation, + * Atlanta, Georgia 30332-0415 + * All Rights Reserved + * Authors: Frank Dellaert, et al. (see THANKS for the full author list) + + * See LICENSE for the license information + + * -------------------------------------------------------------------------- */ + +/** + * @file SelfCalibrationExample.cpp + * @brief Based on VisualSLAMExample, but with unknown (yet fixed) calibration. + * @author Frank Dellaert + */ + +/* + * See the detailed documentation in Visual SLAM. + * The only documentation below with deal with the self-calibration. + */ + +// For loading the data +#include "SFMdata.h" + +// Camera observations of landmarks (i.e. pixel coordinates) will be stored as Point2 (x, y). +#include + +// Inference and optimization +#include +#include +#include +#include + +// SFM-specific factors +#include +#include // does calibration ! + +// Standard headers +#include + +using namespace std; +using namespace gtsam; + +/* ************************************************************************* */ +int main(int argc, char* argv[]) { + + // Create the set of ground-truth + vector points = createPoints(); + vector poses = createPoses(); + + // Create the factor graph + NonlinearFactorGraph graph; + + // Add a prior on pose x1. + noiseModel::Diagonal::shared_ptr poseNoise = noiseModel::Diagonal::Sigmas((Vector(6) << Vector3::Constant(0.3), Vector3::Constant(0.1))); // 30cm std on x,y,z 0.1 rad on roll,pitch,yaw + graph.add(PriorFactor(Symbol('x', 0), poses[0], poseNoise)); + + // Simulated measurements from each camera pose, adding them to the factor graph + Cal3_S2 K(50.0, 50.0, 0.0, 50.0, 50.0); + noiseModel::Isotropic::shared_ptr measurementNoise = noiseModel::Isotropic::Sigma(2, 1.0); + for (size_t i = 0; i < poses.size(); ++i) { + for (size_t j = 0; j < points.size(); ++j) { + SimpleCamera camera(poses[i], K); + Point2 measurement = camera.project(points[j]); + // The only real difference with the Visual SLAM example is that here we use a + // different factor type, that also calculates the Jacobian with respect to calibration + graph.add(GeneralSFMFactor2(measurement, measurementNoise, Symbol('x', i), Symbol('l', j), Symbol('K', 0))); + } + } + + // Add a prior on the position of the first landmark. + noiseModel::Isotropic::shared_ptr pointNoise = noiseModel::Isotropic::Sigma(3, 0.1); + graph.add(PriorFactor(Symbol('l', 0), points[0], pointNoise)); // add directly to graph + + // Add a prior on the calibration. + noiseModel::Diagonal::shared_ptr calNoise = noiseModel::Diagonal::Sigmas((Vector(5) << 500, 500, 0.1, 100, 100)); + graph.add(PriorFactor(Symbol('K', 0), K, calNoise)); + + // Create the initial estimate to the solution + // now including an estimate on the camera calibration parameters + Values initialEstimate; + initialEstimate.insert(Symbol('K', 0), Cal3_S2(60.0, 60.0, 0.0, 45.0, 45.0)); + for (size_t i = 0; i < poses.size(); ++i) + initialEstimate.insert(Symbol('x', i), poses[i].compose(Pose3(Rot3::rodriguez(-0.1, 0.2, 0.25), Point3(0.05, -0.10, 0.20)))); + for (size_t j = 0; j < points.size(); ++j) + initialEstimate.insert(Symbol('l', j), points[j].compose(Point3(-0.25, 0.20, 0.15))); + + /* Optimize the graph and print results */ + Values result = DoglegOptimizer(graph, initialEstimate).optimize(); + result.print("Final results:\n"); + + return 0; +} +/* ************************************************************************* */ + diff --git a/examples/VisualISAM2Example.cpp b/examples/VisualISAM2Example.cpp index f27664cfe..cb8dab2fb 100644 --- a/examples/VisualISAM2Example.cpp +++ b/examples/VisualISAM2Example.cpp @@ -22,14 +22,11 @@ * - The robot rotates around the landmarks, always facing towards the cube */ -// As this is a full 3D problem, we will use Pose3 variables to represent the camera -// positions and Point3 variables (x, y, z) to represent the landmark coordinates. +// For loading the data +#include "SFMdata.h" + // Camera observations of landmarks (i.e. pixel coordinates) will be stored as Point2 (x, y). -// We will also need a camera object to hold calibration information and perform projections. -#include -#include #include -#include // Each variable in the system (poses and landmarks) must be identified with a unique key. // We can either use simple integer keys (1, 2, 3, ...) or symbols (X1, X2, L1). @@ -67,28 +64,10 @@ int main(int argc, char* argv[]) { noiseModel::Isotropic::shared_ptr measurementNoise = noiseModel::Isotropic::Sigma(2, 1.0); // one pixel in u and v // Create the set of ground-truth landmarks - std::vector points; - points.push_back(gtsam::Point3(10.0,10.0,10.0)); - points.push_back(gtsam::Point3(-10.0,10.0,10.0)); - points.push_back(gtsam::Point3(-10.0,-10.0,10.0)); - points.push_back(gtsam::Point3(10.0,-10.0,10.0)); - points.push_back(gtsam::Point3(10.0,10.0,-10.0)); - points.push_back(gtsam::Point3(-10.0,10.0,-10.0)); - points.push_back(gtsam::Point3(-10.0,-10.0,-10.0)); - points.push_back(gtsam::Point3(10.0,-10.0,-10.0)); + vector points = createPoints(); // Create the set of ground-truth poses - std::vector poses; - double radius = 30.0; - int i = 0; - double theta = 0.0; - gtsam::Point3 up(0,0,1); - gtsam::Point3 target(0,0,0); - for(; i < 8; ++i, theta += 2*M_PI/8) { - gtsam::Point3 position = Point3(radius*cos(theta), radius*sin(theta), 0.0); - gtsam::SimpleCamera camera = SimpleCamera::Lookat(position, target, up); - poses.push_back(camera.pose()); - } + vector poses = createPoses(); // Create an iSAM2 object. Unlike iSAM1, which performs periodic batch steps to maintain proper linearization // and efficient variable ordering, iSAM2 performs partial relinearization/reordering at each step. A parameter @@ -124,7 +103,7 @@ int main(int argc, char* argv[]) { // adding it to iSAM. if( i == 0) { // Add a prior on pose x0 - noiseModel::Diagonal::shared_ptr poseNoise = noiseModel::Diagonal::Sigmas(Vector_(6, 0.3, 0.3, 0.3, 0.1, 0.1, 0.1)); // 30cm std on x,y,z 0.1 rad on roll,pitch,yaw + noiseModel::Diagonal::shared_ptr poseNoise = noiseModel::Diagonal::Sigmas((Vector(6) << Vector3::Constant(0.3),Vector3::Constant(0.1))); // 30cm std on x,y,z 0.1 rad on roll,pitch,yaw graph.add(PriorFactor(Symbol('x', 0), poses[0], poseNoise)); // Add a prior on landmark l0 diff --git a/examples/VisualISAMExample.cpp b/examples/VisualISAMExample.cpp index 832a2ab83..6c4fe1d7e 100644 --- a/examples/VisualISAMExample.cpp +++ b/examples/VisualISAMExample.cpp @@ -22,14 +22,11 @@ * - The robot rotates around the landmarks, always facing towards the cube */ -// As this is a full 3D problem, we will use Pose3 variables to represent the camera -// positions and Point3 variables (x, y, z) to represent the landmark coordinates. +// For loading the data +#include "SFMdata.h" + // Camera observations of landmarks (i.e. pixel coordinates) will be stored as Point2 (x, y). -// We will also need a camera object to hold calibration information and perform projections. -#include -#include #include -#include // Each variable in the system (poses and landmarks) must be identified with a unique key. // We can either use simple integer keys (1, 2, 3, ...) or symbols (X1, X2, L1). @@ -67,28 +64,10 @@ int main(int argc, char* argv[]) { noiseModel::Isotropic::shared_ptr measurementNoise = noiseModel::Isotropic::Sigma(2, 1.0); // one pixel in u and v // Create the set of ground-truth landmarks - std::vector points; - points.push_back(gtsam::Point3(10.0,10.0,10.0)); - points.push_back(gtsam::Point3(-10.0,10.0,10.0)); - points.push_back(gtsam::Point3(-10.0,-10.0,10.0)); - points.push_back(gtsam::Point3(10.0,-10.0,10.0)); - points.push_back(gtsam::Point3(10.0,10.0,-10.0)); - points.push_back(gtsam::Point3(-10.0,10.0,-10.0)); - points.push_back(gtsam::Point3(-10.0,-10.0,-10.0)); - points.push_back(gtsam::Point3(10.0,-10.0,-10.0)); + vector points = createPoints(); // Create the set of ground-truth poses - std::vector poses; - double radius = 30.0; - int i = 0; - double theta = 0.0; - gtsam::Point3 up(0,0,1); - gtsam::Point3 target(0,0,0); - for(; i < 8; ++i, theta += 2*M_PI/8) { - gtsam::Point3 position = Point3(radius*cos(theta), radius*sin(theta), 0.0); - gtsam::SimpleCamera camera = SimpleCamera::Lookat(position, target, up); - poses.push_back(camera.pose()); - } + vector poses = createPoses(); // Create a NonlinearISAM object which will relinearize and reorder the variables every "relinearizeInterval" updates int relinearizeInterval = 3; @@ -118,7 +97,7 @@ int main(int argc, char* argv[]) { // adding it to iSAM. if( i == 0) { // Add a prior on pose x0 - noiseModel::Diagonal::shared_ptr poseNoise = noiseModel::Diagonal::Sigmas(Vector_(6, 0.3, 0.3, 0.3, 0.1, 0.1, 0.1)); // 30cm std on x,y,z 0.1 rad on roll,pitch,yaw + noiseModel::Diagonal::shared_ptr poseNoise = noiseModel::Diagonal::Sigmas((Vector(6) << Vector3::Constant(0.3), Vector3::Constant(0.1))); // 30cm std on x,y,z 0.1 rad on roll,pitch,yaw graph.add(PriorFactor(Symbol('x', 0), poses[0], poseNoise)); // Add a prior on landmark l0 From b4344cfe16367cdaf6670a0a9305d2fa5696006d Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 23 Dec 2013 13:16:17 -0500 Subject: [PATCH 03/15] gitinspector stats --- doc/stats.html | 13728 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 13728 insertions(+) create mode 100644 doc/stats.html diff --git a/doc/stats.html b/doc/stats.html new file mode 100644 index 000000000..46650c1e0 --- /dev/null +++ b/doc/stats.html @@ -0,0 +1,13728 @@ + + + + + Generated by gitinspector 0.3.1 + + + + + + + + + +
+ +

The following historical commit information, by author, was found in the repository.

Author Commits Insertions Deletions % of changes
Abhijit Kundu136881130.10
Alex Cunningham7571077558942923.82
Alireza Fathi514160.00
Andrew Melim33180312210.37
Brian Law1971740.03
Can Erdogan387240.01
Chris Beall141556958291.38
Duy-Nguyen Ta101707842471.37
Eohan George2310.00
Frank Dellaert8761055788350322.84
John Rogers728140.01
Julian Straub1200.00
Kai Ni17720780198204.90
Kyel Ok250180.01
Luca Carlone1114891550.20
Manohar Paluri6130876380.45
Michael Kaess69907525581.41
Natesh Srinivasan4671000.02
Nick Barrash821789250.37
Paul Kippes1880.00
Rahul Sawhney883413090.26
Richard Roberts93916350711759833.96
Stephen Williams17128367131815.02
Summit Patel579840.02
Vadim Indelman162861910.36
Viorela Ila2715493230.23
Yong-Dian Jian1551270485092.56
Zsolt Kira76671760.10
bpeasle55752440.10
jdurand74141880.03
justinca74591600.07
 
+

Below are the number of rows from each author that have survived and are still intact in the current revision.

Author Rows % in comments
Abhijit Kundu55431.230.45
Alex Cunningham2577125.4120.89
Alireza Fathi633.330.00
Andrew Melim64950.850.53
Brian Law2821.430.02
Can Erdogan30.000.00
Chris Beall149335.501.21
Duy-Nguyen Ta236823.101.92
Eohan George10.000.00
Frank Dellaert1956031.8515.86
John Rogers911.110.01
Julian Straub20.000.00
Kai Ni348458.982.82
Kyel Ok5032.000.04
Luca Carlone104537.800.85
Manohar Paluri3555.070.29
Michael Kaess26731.840.22
Natesh Srinivasan1656.250.01
Nick Barrash126959.341.03
Rahul Sawhney1394.320.11
Richard Roberts4129927.2933.48
Stephen Williams1831928.4714.85
Summit Patel74100.000.06
Vadim Indelman254226.952.06
Viorela Ila1145.450.01
Yong-Dian Jian291019.902.36
Zsolt Kira59915.530.49
bpeasle32326.320.26
jdurand713476.870.11
justinca7143.660.06
 
+

The following history timeline has been gathered from the repository.

+
Author2009-082009-092009-102009-112009-122010-012010-022010-03
Alex Cunningham..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Alireza Fathi.
Brian Law.
Chris Beall.
 
.
 
.
Eohan George..
Frank Dellaert.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
John Rogers..
Kai Ni..
 
 
 
 
 
 
 
 
 
 
Manohar Paluri.....
 
 
 
 
.
Michael Kaess.
 
 
 
 
 
 
 
Richard Roberts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
..
 
 
 
 
 
 
 
 
..
Viorela Ila..
 
 
 
...
Yong-Dian Jian.
justinca...
Modified Rows:17798225711451248651451231259182334290
+
Author2010-042010-052010-062010-072010-082010-092010-102010-11
Alex Cunningham
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Chris Beall..
 
 
Duy-Nguyen Ta..
Frank Dellaert
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
 
 
 
 
 
..
John Rogers.
Kai Ni
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Manohar Paluri..
Michael Kaess
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Rahul Sawhney.
Richard Roberts
 
 
 
 
 
 
.
 
 
.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Viorela Ila.
Yong-Dian Jian..
 
Modified Rows:247710368801392571683125221640054490
+
Author2010-122011-012011-022011-032011-042011-052011-062011-07
Alex Cunningham..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Chris Beall..
 
.
Duy-Nguyen Ta
 
 
 
 
 
 
 
.
Frank Dellaert..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
John Rogers.
Julian Straub.
Kai Ni...
Richard Roberts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Yong-Dian Jian
 
.
 
 
 
 
Modified Rows:1219053003635649892055361259981
+
Author2011-082011-092011-102011-112011-122012-012012-022012-03
Alex Cunningham..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
..
Andrew Melim....
Can Erdogan...
Chris Beall....
 
 
.
Duy-Nguyen Ta....
 
 
 
 
 
 
 
 
 
 
 
.
Frank Dellaert.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
..
 
 
 
 
 
 
 
 
 
.
Manohar Paluri.
Michael Kaess.
Natesh Srinivasan..
Nick Barrash.
 
 
 
 
 
 
Paul Kippes.
Richard Roberts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Stephen Williams
 
 
 
 
 
 
 
 
..
 
..
Vadim Indelman..
Yong-Dian Jian
 
 
..
 
 
 
 
.
 
Modified Rows:7262731397841603612173196661751412637
+
Author2012-042012-052012-062012-072012-082012-092012-102012-11
Abhijit Kundu
 
Alex Cunningham
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Andrew Melim..
 
 
 
 
Chris Beall..
 
 
 
 
 
 
..
Duy-Nguyen Ta
 
 
 
 
...
Frank Dellaert
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
Kyel Ok.
Richard Roberts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Stephen Williams..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
Summit Patel.
Vadim Indelman...
Yong-Dian Jian..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
..
bpeasle.
jdurand7.
Modified Rows:159903942736781196835415937453454705
+
Author2012-122013-012013-022013-032013-042013-052013-062013-07
Alex Cunningham...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Andrew Melim.
Chris Beall....
Duy-Nguyen Ta..
 
.
Frank Dellaert.
 
.
 
 
 
 
 
 
 
 
 
 
 
 
Kyel Ok.
Luca Carlone
 
Richard Roberts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Stephen Williams.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Vadim Indelman
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.
 
 
 
.
Yong-Dian Jian..
Modified Rows:109918158550529720015625169777476
+
Author2013-082013-092013-12
Alex Cunningham.
Chris Beall.
Duy-Nguyen Ta.
Frank Dellaert
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Luca Carlone
 
Natesh Srinivasan.
Richard Roberts
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Stephen Williams
 
 
 
 
 
 
 
 
 
 
 
 
Vadim Indelman
 
Zsolt Kira
 
Modified Rows:2347024756
+
+

The following files are suspiciously big (in order of severity).

gtsam/base/tests/testMatrix.cpp (1062 eloc)

gtsam/nonlinear/ISAM2.cpp (983 eloc)

gtsam_unstable/nonlinear/tests/testConcurrentIncrementalFilter.cpp (969 eloc)

gtsam_unstable/nonlinear/tests/testConcurrentBatchFilter.cpp (861 eloc)

tests/testGaussianISAM2.cpp (859 eloc)

gtsam/inference/BayesTree-inl.h (666 eloc)

wrap/tests/expected/geometry_wrapper.cpp (652 eloc)

gtsam/geometry/tests/testPose3.cpp (650 eloc)

tests/testSerializationSLAM.cpp (639 eloc)

gtsam/geometry/tests/testPose2.cpp (639 eloc)

wrap/Module.cpp (628 eloc)

gtsam/slam/dataset.cpp (624 eloc)

gtsam/base/Matrix.cpp (599 eloc)

gtsam_unstable/slam/tests/testInertialNavFactor_GlobalVelocity.cpp (598 eloc)

gtsam/linear/tests/testHessianFactor.cpp (576 eloc)

gtsam_unstable/nonlinear/ConcurrentBatchFilter.cpp (571 eloc)

gtsam_unstable/nonlinear/BatchFixedLagSmoother.cpp (569 eloc)

gtsam/nonlinear/NonlinearFactor.h (565 eloc)

gtsam/linear/NoiseModel.cpp (549 eloc)

gtsam/linear/NoiseModel.h (543 eloc)

gtsam_unstable/slam/EquivInertialNavFactor_GlobalVel.h (523 eloc)

gtsam/discrete/DecisionTree-inl.h (520 eloc)

gtsam/navigation/CombinedImuFactor.h (517 eloc)

gtsam/linear/GaussianFactorGraph.cpp (506 eloc)

gtsam/base/numericalDerivative.h (486 eloc)

tests/smallExample.h (480 eloc)

gtsam/base/blockMatrices.h (477 eloc)

gtsam_unstable/slam/EquivInertialNavFactor_GlobalVel_NoBias.h (461 eloc)

gtsam/navigation/ImuFactor.h (454 eloc)

gtsam_unstable/gtsam_unstable.h (425 eloc)

gtsam/nonlinear/ISAM2.h (418 eloc)

gtsam/geometry/PinholeCamera.h (382 eloc)

gtsam_unstable/slam/SmartProjectionFactor.h (374 eloc)

gtsam.h (336 eloc)

gtsam_unstable/base/BTree.h (317 eloc)

+

The following repsonsibilties, by author, were found in the current revision of the repository (comments are exluded from the line count, if possible).

Abhijit Kundu is mostly responsible for

examples/UGM_chain.cpp (74 eloc)
examples/DiscreteBayesNet_FG.cpp (72 eloc)
gtsam/inference/tests/testBayesTree.cpp (45 eloc)
gtsam/discrete/tests/testDiscreteMarginals.cpp (36 eloc)
gtsam/discrete/DiscreteConditional.cpp (30 eloc)
gtsam/discrete/Assignment.h (28 eloc)
examples/UGM_small.cpp (21 eloc)
gtsam/discrete/DiscreteMarginals.h (18 eloc)
gtsam/discrete/Potentials.cpp (15 eloc)
gtsam/discrete/DiscreteSequentialSolver.cpp (15 eloc)

Alex Cunningham is mostly responsible for

wrap/tests/expected/geometry_wrapper.cpp (607 eloc)
tests/smallExample.h (441 eloc)
gtsam/base/tests/testMatrix.cpp (418 eloc)
wrap/tests/expected_namespaces/testNamespaces_wrapper.cpp (392 eloc)
wrap/tests/testWrap.cpp (356 eloc)
gtsam_unstable/linear/tests/testBayesTreeOperations.cpp (344 eloc)
tests/testNonlinearEquality.cpp (331 eloc)
gtsam_unstable/base/BTree.h (317 eloc)
gtsam/geometry/tests/testPose3.cpp (295 eloc)
gtsam_unstable/geometry/SimPolygon2D.cpp (286 eloc)

Alireza Fathi is mostly responsible for

gtsam/geometry/tests/testRot3Q.cpp (2 eloc)
gtsam/geometry/tests/testRot3M.cpp (2 eloc)

Andrew Melim is mostly responsible for

wrap/Method.cpp (51 eloc)
wrap/Class.cpp (47 eloc)
wrap/StaticMethod.cpp (42 eloc)
wrap/Module.cpp (33 eloc)
wrap/Deconstructor.cpp (31 eloc)
wrap/Deconstructor.h (29 eloc)
wrap/matlab.h (17 eloc)
wrap/Argument.cpp (13 eloc)
wrap/Constructor.cpp (9 eloc)
wrap/utilities.h (8 eloc)

Brian Law is mostly responsible for

gtsam/geometry/Pose3.cpp (6 eloc)
gtsam/geometry/Pose2.h (4 eloc)
gtsam/geometry/Point3.cpp (4 eloc)
gtsam/geometry/Point3.h (3 eloc)
gtsam/geometry/Cal3_S2.h (3 eloc)
gtsam/geometry/Rot3M.cpp (2 eloc)

Can Erdogan is mostly responsible for

gtsam/nonlinear/Values-inl.h (2 eloc)
gtsam/base/LieScalar.h (1 eloc)

Chris Beall is mostly responsible for

gtsam_unstable/slam/tests/testSmartProjectionFactor.cpp (115 eloc)
gtsam_unstable/slam/InvDepthFactor3.h (80 eloc)
gtsam_unstable/geometry/tests/testTriangulation.cpp (73 eloc)
gtsam/slam/StereoFactor.h (70 eloc)
gtsam_unstable/slam/tests/testInvDepthFactor3.cpp (67 eloc)
gtsam_unstable/geometry/triangulation.cpp (59 eloc)
gtsam/geometry/Rot3M.cpp (46 eloc)
gtsam/geometry/Cal3_S2Stereo.h (39 eloc)
gtsam/geometry/StereoCamera.h (37 eloc)
gtsam/geometry/Pose3.cpp (35 eloc)

Duy-Nguyen Ta is mostly responsible for

gtsam_unstable/dynamics/Pendulum.h (169 eloc)
gtsam_unstable/dynamics/SimpleHelicopter.h (163 eloc)
gtsam_unstable/dynamics/tests/testSimpleHelicopter.cpp (138 eloc)
gtsam/base/numericalDerivative.h (135 eloc)
gtsam/base/tests/testNumericalDerivative.cpp (86 eloc)
gtsam/nonlinear/ISAM2-inl.h (84 eloc)
gtsam/geometry/tests/testPose3.cpp (81 eloc)
gtsam_unstable/gtsam_unstable.h (52 eloc)
gtsam_unstable/dynamics/VelocityConstraint3.h (52 eloc)
gtsam_unstable/dynamics/tests/testPendulumFactors.cpp (46 eloc)

Eohan George is mostly responsible for

gtsam/base/Testable.h (1 eloc)

Frank Dellaert is mostly responsible for

gtsam/slam/dataset.cpp (334 eloc)
gtsam/inference/tests/testSymbolicBayesTree.cpp (268 eloc)
gtsam/geometry/tests/testPose2.cpp (266 eloc)
gtsam/linear/tests/testGaussianFactorGraph.cpp (242 eloc)
gtsam_unstable/discrete/examples/schedulingQuals13.cpp (236 eloc)
gtsam/geometry/PinholeCamera.h (223 eloc)
gtsam/linear/tests/testKalmanFilter.cpp (219 eloc)
gtsam/geometry/tests/testRot3M.cpp (215 eloc)
gtsam/discrete/tests/testDiscreteBayesTree.cpp (210 eloc)
gtsam_unstable/examples/SmartRangeExample_plaza1.cpp (208 eloc)

John Rogers is mostly responsible for

gtsam/base/FastMap.h (5 eloc)
gtsam/base/numericalDerivative.h (2 eloc)
gtsam/inference/graph-inl.h (1 eloc)

Julian Straub is mostly responsible for

gtsam/nonlinear/NonlinearISAM.cpp (2 eloc)

Kai Ni is mostly responsible for

gtsam/linear/tests/testNoiseModel.cpp (113 eloc)
gtsam/slam/dataset.cpp (96 eloc)
gtsam/inference/graph-inl.h (74 eloc)
gtsam/slam/tests/testGeneralSFMFactor.cpp (62 eloc)
gtsam/geometry/Cal3DS2.cpp (56 eloc)
gtsam/geometry/Cal3DS2.h (49 eloc)
gtsam/base/tests/testMatrix.cpp (44 eloc)
gtsam/linear/tests/testGaussianJunctionTree.cpp (39 eloc)
gtsam/geometry/Cal3Bundler.cpp (39 eloc)
tests/simulated2DOriented.h (35 eloc)

Kyel Ok is mostly responsible for

gtsam_unstable/slam/Mechanization_bRn2.cpp (15 eloc)
gtsam_unstable/slam/AHRS.cpp (13 eloc)
gtsam_unstable/slam/AHRS.h (4 eloc)
gtsam_unstable/slam/Mechanization_bRn2.h (2 eloc)

Luca Carlone is mostly responsible for

gtsam_unstable/slam/SmartProjectionFactor.h (273 eloc)
gtsam_unstable/slam/tests/testSmartProjectionFactor.cpp (166 eloc)
gtsam_unstable/slam/MultiProjectionFactor.h (137 eloc)
gtsam_unstable/slam/tests/testMultiProjectionFactor.cpp (66 eloc)
gtsam/geometry/Rot3Q.cpp (4 eloc)
gtsam_unstable/slam/tests/testBetweenFactorEM.cpp (2 eloc)
gtsam/slam/tests/testBetweenFactor.cpp (2 eloc)

Manohar Paluri is mostly responsible for

gtsam/base/tests/testMatrix.cpp (247 eloc)
gtsam/inference/BayesTree-inl.h (25 eloc)
tests/testGaussianBayesNet.cpp (23 eloc)
gtsam/linear/GaussianBayesNet.cpp (9 eloc)
gtsam/geometry/tests/testCal3_S2.cpp (7 eloc)
tests/testNonlinearFactorGraph.cpp (6 eloc)
gtsam/linear/NoiseModel.cpp (4 eloc)
gtsam/geometry/tests/testPoint3.cpp (4 eloc)
gtsam/nonlinear/Values.h (2 eloc)
gtsam/linear/GaussianConditional.h (2 eloc)

Michael Kaess is mostly responsible for

gtsam/inference/tests/testBayesTree.cpp (45 eloc)
gtsam/inference/BayesTree-inl.h (22 eloc)
tests/testGaussianISAM.cpp (20 eloc)
gtsam/slam/PriorFactor.h (19 eloc)
gtsam/inference/ISAM-inl.h (19 eloc)
gtsam/inference/tests/testISAM.cpp (15 eloc)
gtsam/inference/ISAM.h (14 eloc)
gtsam/linear/GaussianISAM.cpp (10 eloc)
gtsam/linear/GaussianISAM.h (8 eloc)
gtsam/inference/BayesTree.h (4 eloc)

Natesh Srinivasan is mostly responsible for

gtsam/linear/GaussianBayesTree.cpp (5 eloc)
gtsam/linear/GaussianBayesTree.h (2 eloc)

Nick Barrash is mostly responsible for

gtsam/geometry/Rot2.h (51 eloc)
gtsam/geometry/Point3.h (47 eloc)
gtsam/inference/BayesNet.h (30 eloc)
gtsam/geometry/Pose3.h (30 eloc)
gtsam/geometry/Point2.h (29 eloc)
gtsam/geometry/StereoPoint2.h (23 eloc)
gtsam/geometry/Pose2.h (20 eloc)
gtsam/inference/Factor.h (19 eloc)
gtsam/geometry/Cal3DS2.h (19 eloc)
gtsam/inference/BayesTreeCliqueBase.h (16 eloc)

Rahul Sawhney is mostly responsible for

gtsam/inference/graph-inl.h (38 eloc)
gtsam/inference/graph.h (19 eloc)
gtsam/base/blockMatrices.h (14 eloc)
gtsam/inference/FactorGraph.h (9 eloc)
gtsam/nonlinear/NonlinearFactor.h (8 eloc)
gtsam/inference/ISAM-inl.h (5 eloc)
gtsam/linear/GaussianConditional.h (4 eloc)
gtsam/inference/ClusterTree.h (4 eloc)
gtsam/inference/ClusterTree-inl.h (4 eloc)
gtsam/linear/GaussianISAM.h (3 eloc)

Richard Roberts is mostly responsible for

gtsam/nonlinear/ISAM2.cpp (886 eloc)
tests/testGaussianISAM2.cpp (689 eloc)
gtsam/discrete/DecisionTree-inl.h (519 eloc)
gtsam/navigation/CombinedImuFactor.h (517 eloc)
gtsam/navigation/ImuFactor.h (454 eloc)
examples/SolverComparer.cpp (440 eloc)
gtsam/navigation/tests/testImuFactor.cpp (424 eloc)
gtsam/inference/BayesTree-inl.h (424 eloc)
gtsam/discrete/tests/testAlgebraicDecisionTree.cpp (419 eloc)
gtsam/linear/tests/testHessianFactor.cpp (366 eloc)

Stephen Williams is mostly responsible for

gtsam_unstable/nonlinear/tests/testConcurrentIncrementalFilter.cpp (969 eloc)
gtsam_unstable/nonlinear/tests/testConcurrentBatchFilter.cpp (856 eloc)
gtsam_unstable/nonlinear/ConcurrentBatchFilter.cpp (571 eloc)
gtsam_unstable/nonlinear/BatchFixedLagSmoother.cpp (569 eloc)
tests/testSerializationSLAM.cpp (546 eloc)
gtsam_unstable/slam/EquivInertialNavFactor_GlobalVel.h (522 eloc)
gtsam_unstable/nonlinear/tests/testConcurrentIncrementalSmootherGN.cpp (453 eloc)
gtsam_unstable/nonlinear/tests/testConcurrentIncrementalSmootherDL.cpp (453 eloc)
gtsam_unstable/nonlinear/tests/testConcurrentBatchSmoother.cpp (450 eloc)
gtsam_unstable/nonlinear/ConcurrentBatchSmoother.cpp (348 eloc)

Vadim Indelman is mostly responsible for

gtsam_unstable/slam/tests/testInertialNavFactor_GlobalVelocity.cpp (576 eloc)
gtsam_unstable/slam/EquivInertialNavFactor_GlobalVel_NoBias.h (461 eloc)
gtsam_unstable/slam/InertialNavFactor_GlobalVelocity.h (292 eloc)
gtsam_unstable/slam/BetweenFactorEM.h (213 eloc)
gtsam_unstable/slam/tests/testBetweenFactorEM.cpp (204 eloc)
gtsam/slam/dataset.cpp (87 eloc)
gtsam_unstable/gtsam_unstable.h (14 eloc)
gtsam/base/LieVector.h (5 eloc)
gtsam/slam/dataset.h (4 eloc)
gtsam/slam/ProjectionFactor.h (1 eloc)

Viorela Ila is mostly responsible for

gtsam/geometry/Pose3.cpp (2 eloc)
tests/testNonlinearFactor.cpp (1 eloc)
gtsam/slam/dataset.cpp (1 eloc)
gtsam/nonlinear/NonlinearFactorGraph.h (1 eloc)
gtsam/inference/tests/testBayesTree.cpp (1 eloc)

Yong-Dian Jian is mostly responsible for

gtsam/nonlinear/NonlinearConjugateGradientOptimizer.h (160 eloc)
gtsam/linear/NoiseModel.cpp (158 eloc)
gtsam/slam/tests/testGeneralSFMFactor_Cal3Bundler.cpp (152 eloc)
gtsam/slam/tests/testGeneralSFMFactor.cpp (109 eloc)
gtsam/geometry/PinholeCamera.h (102 eloc)
gtsam/linear/NoiseModel.h (100 eloc)
gtsam/linear/SubgraphSolver.cpp (95 eloc)
gtsam/linear/SubgraphPreconditioner.cpp (86 eloc)
gtsam/slam/GeneralSFMFactor.h (83 eloc)
tests/testSubgraphSolver.cpp (69 eloc)

Zsolt Kira is mostly responsible for

gtsam_unstable/examples/SmartProjectionFactorExample_kitti.cpp (232 eloc)
gtsam_unstable/slam/tests/testSmartProjectionFactor.cpp (181 eloc)
gtsam_unstable/slam/SmartProjectionFactor.h (93 eloc)

bpeasle is mostly responsible for

tests/testOccupancyGrid.cpp (238 eloc)

jdurand7 is mostly responsible for

gtsam/inference/BayesNet-inl.h (24 eloc)
gtsam/inference/tests/testSymbolicBayesNet.cpp (13 eloc)
gtsam/inference/BayesNet.h (7 eloc)

justinca is mostly responsible for

gtsam/base/Matrix.cpp (19 eloc)
gtsam/base/tests/testMatrix.cpp (17 eloc)
gtsam/base/Matrix.h (4 eloc)
+

The following files were excluded from the statistics due to the specified exclusion patterns.

gtsam/3rdparty/Eigen/src/Core/Replicate.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseDot.h

gtsam/3rdparty/Eigen/bench/btl/cmake/FindBlitz.cmake

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/portable_perf_analyzer.hh

gtsam/3rdparty/Eigen/Eigen/src/Core/BooleanRedux.h

gtsam/3rdparty/Eigen/Eigen/src/misc/SparseSolve.h

gtsam/3rdparty/Eigen/test/sparselu.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/ComplexSchur_MKL.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Hyperplane.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_rightCols.cpp

gtsam/3rdparty/Eigen/src/Core/IO.h

gtsam/3rdparty/Eigen/Eigen/src/misc/Solve.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineMatrix.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseProduct.cpp

gtsam/3rdparty/Eigen/doc/examples/tut_arithmetic_redux_basic.cpp

gtsam/3rdparty/Eigen/src/Core/DenseStorage.h

gtsam/3rdparty/Eigen/Eigen/src/Core/util/Constants.h

gtsam/3rdparty/Eigen/Eigen/src/OrderingMethods/Ordering.h

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_AdvancedInitialization_Join.cpp

gtsam/3rdparty/Eigen/lapack/dlapy3.f

gtsam/3rdparty/Eigen/blas/testing/sblat2.f

gtsam/3rdparty/Eigen/src/Eigen2Support/Block.h

gtsam/3rdparty/Eigen/bench/btl/libs/eigen3/main_vecmat.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/hand_vec/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/btl/libs/f77/daat.f

gtsam/3rdparty/Eigen/doc/snippets/JacobiSVD_basic.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/InsideEigenExample.dox

gtsam/3rdparty/Eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h

gtsam/3rdparty/Eigen/doc/examples/Tutorial_BlockOperations_vector.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Polynomials/PolynomialUtils.h

gtsam/3rdparty/Eigen/Eigen/src/Core/Fuzzy.h

gtsam/3rdparty/Eigen/test/schur_real.cpp

gtsam/3rdparty/Eigen/doc/snippets/HessenbergDecomposition_compute.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_sparse_product.cpp

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_SelfAdjointEigenSolver.cpp

gtsam/3rdparty/Eigen/src/Core/CommaInitializer.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/AmbiVector.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_inverse.cpp

gtsam/3rdparty/Eigen/src/Sparse/DynamicSparseMatrix.h

gtsam/3rdparty/Eigen/bench/btl/libs/STL/main.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseBlock.h

gtsam/3rdparty/Eigen/Eigen/src/Core/util/BlasUtil.h

gtsam/3rdparty/Eigen/bench/BenchTimer.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseDenseProduct.h

gtsam/3rdparty/Eigen/blas/level2_impl.h

gtsam/3rdparty/Eigen/doc/examples/Tutorial_PartialLU_solve.cpp

gtsam/3rdparty/Eigen/doc/C01_TutorialMatrixClass.dox

gtsam/3rdparty/Eigen/src/Core/util/Memory.h

gtsam/3rdparty/Eigen/bench/btl/libs/mtl4/.kdbgrc.main

gtsam/3rdparty/Eigen/doc/snippets/Cwise_plus_equal.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/TODOBdcsvd.txt

gtsam/3rdparty/Eigen/unsupported/test/NonLinearOptimization.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/Map.h

gtsam/3rdparty/Eigen/Eigen/src/Core/ForceAlignedAccess.h

gtsam/3rdparty/Eigen/bench/product_threshold.cpp

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgSVDSolve.cpp

gtsam/3rdparty/Eigen/Eigen/src/SVD/JacobiSVD_MKL.h

gtsam/3rdparty/Eigen/unsupported/Eigen/OpenGLSupport

gtsam/3rdparty/Eigen/lapack/zlarfb.f

gtsam/3rdparty/Eigen/bench/btl/libs/BLAS/blas.h

gtsam/3rdparty/Eigen/Eigen/src/QR/FullPivHouseholderQR.h

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_solve_triangular.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_broadcast_1nn.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/Product.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_aat_product.hh

gtsam/3rdparty/Eigen/bench/btl/libs/gmm/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Matrix_resize_int_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/RotationBase.h

gtsam/3rdparty/Eigen/doc/snippets/FullPivLU_solve.cpp

gtsam/3rdparty/Eigen/Eigen/Cholesky

gtsam/3rdparty/Eigen/doc/examples/function_taking_eigenbase.cpp

gtsam/3rdparty/Eigen/bench/BenchUtil.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseProduct.h

gtsam/3rdparty/Eigen/test/eigen2/product.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_bottomRightCorner_int_int.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseEqual.cpp

gtsam/3rdparty/Eigen/unsupported/doc/snippets/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineStorage.h

gtsam/3rdparty/Eigen/doc/snippets/FullPivHouseholderQR_solve.cpp

gtsam/3rdparty/Eigen/Eigen/src/Cholesky/LDLT.h

gtsam/3rdparty/Eigen/test/testsuite.cmake

gtsam/3rdparty/Eigen/test/geo_orthomethods.cpp

gtsam/3rdparty/gtsam_eigen_includes.h.in

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_bottomRightCorner.cpp

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseSparseProduct.h

gtsam/3rdparty/Eigen/test/exceptions.cpp

gtsam/3rdparty/Eigen/doc/examples/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h

gtsam/3rdparty/Eigen/unsupported/doc/Doxyfile.in

gtsam/3rdparty/Eigen/failtest/const_qualified_diagonal_method_retval.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseNotEqual.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/ReturnByValue.h

gtsam/3rdparty/Eigen/lapack/cholesky.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/hand_vec/main.cpp

gtsam/3rdparty/Eigen/Eigen/Array

gtsam/3rdparty/Eigen/Eigen/src/Core/Assign_MKL.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_eigensolver.cpp

gtsam/3rdparty/Eigen/src/Core/products/SelfadjointRank2Update.h

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ArrayClass_interop.cpp

gtsam/3rdparty/Eigen/test/array.cpp

gtsam/3rdparty/Eigen/blas/common.h

gtsam/3rdparty/Eigen/test/spqr_support.cpp

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgInverseDeterminant.cpp

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseCwiseBinaryOp.h

gtsam/3rdparty/Eigen/src/Eigen2Support/TriangularSolver.h

gtsam/3rdparty/Eigen/doc/examples/class_VectorBlock.cpp

gtsam/3rdparty/CCOLAMD/MATLAB/csymamdtestmex.m

gtsam/3rdparty/ccolamd/ccolamd.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_topRows_int.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tridiagonalization_Tridiagonalization_MatrixType.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h

gtsam/3rdparty/CCOLAMD/MATLAB/csymamdtestmex.c

gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h

gtsam/3rdparty/ccolamd/ccolamd.c

gtsam/3rdparty/Eigen/failtest/const_qualified_block_method_retval_1.cpp

gtsam/3rdparty/Eigen/src/Core/arch/Default/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/TopicResizing.dox

gtsam/3rdparty/ccolamd/core_ufconfig_Makefile.mk

gtsam/3rdparty/Eigen/src/LU/arch/Makefile.am

gtsam/3rdparty/Eigen/src/Core/GenericPacketMath.h

gtsam/3rdparty/Eigen/Eigen/src/Core/Reverse.h

gtsam/3rdparty/Eigen/Eigen/src/CholmodSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/Eigen/src/FFT/ei_fftw_impl.h

gtsam/3rdparty/Eigen/doc/snippets/EigenSolver_compute.cpp

gtsam/3rdparty/Eigen/bench/btl/cmake/MacroOptionalAddSubdirectory.cmake

gtsam/3rdparty/Eigen/bench/btl/cmake/FindGMM.cmake

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/Tridiagonalization.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h

gtsam/3rdparty/Eigen/Eigen/src/Core/Dot.h

gtsam/3rdparty/CCOLAMD/Demo/my_ccolamd_example.out

gtsam/3rdparty/Eigen/src/Core/products/Parallelizer.h

gtsam/3rdparty/Eigen/bench/btl/libs/mtl4/mtl4_LU_solve_interface.hh

gtsam/3rdparty/Eigen/failtest/block_nonconst_ctor_on_const_xpr_1.cpp

gtsam/3rdparty/Eigen/src/Geometry/AlignedBox.h

gtsam/3rdparty/Eigen/unsupported/Eigen/ArpackSupport

gtsam/3rdparty/Eigen/Eigen/src/StlSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/arch/NEON/Complex.h

gtsam/3rdparty/Eigen/lapack/ilaslr.f

gtsam/3rdparty/Eigen/lapack/dlarft.f

gtsam/3rdparty/Eigen/doc/snippets/GeneralizedEigenSolver.cpp

gtsam/3rdparty/Eigen/src/QR/HouseholderQR.h

gtsam/3rdparty/Eigen/lapack/dlarfb.f

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h

gtsam/3rdparty/Eigen/Eigen/src/StlSupport/details.h

gtsam/3rdparty/Eigen/src/Core/SolveTriangular.h

gtsam/3rdparty/Eigen/doc/I16_TemplateKeyword.dox

gtsam/3rdparty/Eigen/failtest/map_on_const_type_actually_const_1.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_topLeftCorner_int_int.cpp

gtsam/3rdparty/Eigen/test/umeyama.cpp

gtsam/3rdparty/Eigen/doc/examples/QuickStart_example2_fixed.cpp

gtsam/3rdparty/ccolamd/LGPL.txt

gtsam/3rdparty/Eigen/Eigen/src/LU/arch/Inverse_SSE.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_sparse_basic.cpp

gtsam/3rdparty/Eigen/src/plugins/Makefile.am

gtsam/3rdparty/Eigen/Eigen/CholmodSupport

gtsam/3rdparty/Eigen/blas/README.txt

gtsam/3rdparty/Eigen/bench/btl/libs/eigen2/main_vecmat.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/MathFunctions.h

gtsam/3rdparty/Eigen/src/plugins/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h

gtsam/3rdparty/Eigen/bench/benchmarkX.cpp

gtsam/3rdparty/Eigen/demos/mix_eigen_and_c/binary_library.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/LeastSquares.h

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h

gtsam/3rdparty/Eigen/unsupported/README.txt

gtsam/3rdparty/Eigen/demos/opengl/trackball.h

gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h

gtsam/3rdparty/Eigen/bench/sparse_cholesky.cpp

gtsam/3rdparty/Eigen/src/Core/DenseBase.h

gtsam/3rdparty/Eigen/cmake/EigenConfigureTesting.cmake

gtsam/3rdparty/Eigen/unsupported/Eigen/KroneckerProduct

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_leftCols_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Meta.h

gtsam/3rdparty/Eigen/lapack/dladiv.f

gtsam/3rdparty/Eigen/bench/btl/libs/eigen3/main_matmat.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h

gtsam/3rdparty/Eigen/src/Eigen2Support/MathFunctions.h

gtsam/3rdparty/Eigen/src/Core/Functors.h

gtsam/3rdparty/Eigen/test/cwiseop.cpp

gtsam/3rdparty/Eigen/test/jacobisvd.cpp

gtsam/3rdparty/Eigen/Eigen/src/QR/CMakeLists.txt

gtsam/3rdparty/Eigen/test/basicstuff.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_replicate_int_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/EigenBase.h

gtsam/3rdparty/Eigen/src/Core/Stride.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_random_int.cpp

gtsam/3rdparty/Eigen/unsupported/test/minres.cpp

gtsam/3rdparty/Eigen/demos/mandelbrot/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/StlSupport/StdVector.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixExponential.cpp

gtsam/3rdparty/Eigen/bench/btl/actions/action_lu_decomp.hh

gtsam/3rdparty/Eigen/doc/snippets/PartialRedux_count.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_compute_MatrixType2.cpp

gtsam/3rdparty/Eigen/unsupported/doc/Overview.dox

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseMatrixBase.h

gtsam/3rdparty/Eigen/blas/testing/cblat3.dat

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_log.cpp

gtsam/3rdparty/Eigen/blas/chpr.f

gtsam/3rdparty/Eigen/Eigen/src/Core/Random.h

gtsam/3rdparty/Eigen/src/Core/DiagonalMatrix.h

gtsam/3rdparty/Eigen/Eigen/src/OrderingMethods/Amd.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseUtil.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_identity.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/CoreIterators.h

gtsam/3rdparty/Eigen/doc/TutorialArrayClass.dox

gtsam/3rdparty/Eigen/Eigen/Eigen2Support

gtsam/3rdparty/Eigen/test/lu.cpp

gtsam/3rdparty/Eigen/unsupported/test/matrix_power.cpp

gtsam/3rdparty/Eigen/lapack/slapy2.f

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Rotation2D.h

gtsam/3rdparty/Eigen/failtest/map_nonconst_ctor_on_const_ptr_4.cpp

gtsam/3rdparty/Eigen/Eigen/src/MetisSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseBlock.h

gtsam/3rdparty/Eigen/test/packetmath.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MoreVectorization/MathFunctions.h

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/CMakeLists.txt

gtsam/3rdparty/ccolamd/ChangeLog

gtsam/3rdparty/Eigen/bench/btl/actions/action_cholesky.hh

gtsam/3rdparty/Eigen/test/eigen2support.cpp

gtsam/3rdparty/Eigen/test/umfpack_support.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h

gtsam/3rdparty/Eigen/doc/snippets/PartialRedux_prod.cpp

gtsam/3rdparty/Eigen/bench/btl/actions/action_hessenberg.hh

gtsam/3rdparty/Eigen/test/map.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_BlockOperations_colrow.cpp

gtsam/3rdparty/Eigen/bench/btl/actions/action_trisolve_matrix.hh

gtsam/3rdparty/Eigen/bench/btl/libs/f77/daxpy.f

gtsam/3rdparty/Eigen/doc/I01_TopicLazyEvaluation.dox

gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h

gtsam/3rdparty/CCOLAMD/MATLAB/luflops.m

gtsam/3rdparty/Eigen/Eigen/src/Core/util/XprHelper.h

gtsam/3rdparty/Eigen/lapack/ilazlc.f

gtsam/3rdparty/Eigen/src/Core/StableNorm.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_axpby.hh

gtsam/3rdparty/ccolamd/ccolamd_global.c

gtsam/3rdparty/Eigen/test/eigen2/eigen2_lu.cpp

gtsam/3rdparty/Eigen/.hg_archival.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/util/Macros.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/Amd.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/MathFunctions.h

gtsam/3rdparty/Eigen/bench/spbench/spbenchsolver.cpp

gtsam/3rdparty/CCOLAMD/Demo/ccolamd_l_example.out

gtsam/3rdparty/Eigen/unsupported/doc/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/misc/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/drotm.f

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_setZero.cpp

gtsam/3rdparty/Eigen/test/nullary.cpp

gtsam/3rdparty/Eigen/src/Core/Random.h

gtsam/3rdparty/Eigen/src/Eigen2Support/Memory.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_setIdentity.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularSolverMatrix_MKL.h

gtsam/3rdparty/Eigen/doc/examples/Tutorial_BlockOperations_block_assignment.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/SelfCwiseBinaryOp.h

gtsam/3rdparty/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Vectorwise_reverse.cpp

gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h

gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NumericalDiff/CMakeLists.txt

gtsam/3rdparty/CCOLAMD/Demo/ccolamd_l_example.c

gtsam/3rdparty/Eigen/Eigen/src/Core/util/DisableStupidWarnings.h

gtsam/3rdparty/Eigen/doc/TutorialGeometry.dox

gtsam/3rdparty/Eigen/blas/ssbmv.f

gtsam/3rdparty/Eigen/doc/snippets/RealQZ_compute.cpp

gtsam/3rdparty/Eigen/test/corners.cpp

gtsam/3rdparty/Eigen/cmake/FindScotch.cmake

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setOnes_int.cpp

gtsam/3rdparty/Eigen/src/Core/arch/NEON/CMakeLists.txt

gtsam/3rdparty/Eigen/lapack/clacgv.f

gtsam/3rdparty/Eigen/Eigen/src/Core/Transpose.h

gtsam/3rdparty/Eigen/unsupported/test/mpreal/mpreal.h

gtsam/3rdparty/Eigen/src/Core/VectorwiseOp.h

gtsam/3rdparty/Eigen/src/Eigen2Support/Minor.h

gtsam/3rdparty/Eigen/bench/benchBlasGemm.cpp

gtsam/3rdparty/CCOLAMD/Source/ccolamd.c

gtsam/3rdparty/Eigen/Eigen/src/Core/MatrixBase.h

gtsam/3rdparty/Eigen/doc/TemplateKeyword.dox

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/IncompleteCholesky.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_less_equal.cpp

gtsam/3rdparty/Eigen/unsupported/test/splines.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h

gtsam/3rdparty/Eigen/bench/btl/libs/C_BLAS/main.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_visitors.cpp

gtsam/3rdparty/Eigen/src/Core/products/TriangularSolverMatrix.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixSinh.cpp

gtsam/3rdparty/Eigen/src/Core/Product.h

gtsam/3rdparty/Eigen/doc/I10_Assertions.dox

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseQuotient.cpp

gtsam/3rdparty/Eigen/cmake/EigenTesting.cmake

gtsam/3rdparty/Eigen/Eigenvalues

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/MarketIO.h

gtsam/3rdparty/Eigen/blas/ctbmv.f

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseAbs2.cpp

gtsam/3rdparty/Eigen/Eigen/MetisSupport

gtsam/3rdparty/Eigen/blas/testing/dblat2.dat

gtsam/3rdparty/Eigen/src/Geometry/EulerAngles.h

gtsam/3rdparty/Eigen/src/plugins/MatrixCwiseUnaryOps.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h

gtsam/3rdparty/Eigen/Eigen/SPQRSupport

gtsam/3rdparty/Eigen/src/Sparse/CoreIterators.h

gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/covar.h

gtsam/3rdparty/Eigen/cmake/FindSPQR.cmake

gtsam/3rdparty/Eigen/doc/snippets/Cwise_exp.cpp

gtsam/3rdparty/Eigen/src/QR/FullPivHouseholderQR.h

gtsam/3rdparty/Eigen/unsupported/test/sparse_lu.cpp

gtsam/3rdparty/Eigen/bench/btl/actions/action_axpy.hh

gtsam/3rdparty/Eigen/Eigen/SparseCore

gtsam/3rdparty/Eigen/unsupported/Eigen/LevenbergMarquardt

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_topRows.cpp

gtsam/3rdparty/Eigen/test/pastix_support.cpp

gtsam/3rdparty/Eigen/bench/btl/actions/action_trisolve.hh

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/CoreIterators.h

gtsam/3rdparty/Eigen/src/Core/Transpositions.h

gtsam/3rdparty/Eigen/Eigen/src/Core/Transpositions.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Transform.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_random.cpp

gtsam/3rdparty/Eigen/src/Core/arch/NEON/Makefile.am

gtsam/3rdparty/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h

gtsam/3rdparty/Eigen/src/Core/GlobalFunctions.h

gtsam/3rdparty/Eigen/doc/eigendoxy.css

gtsam/3rdparty/Eigen/blas/testing/cblat2.dat

gtsam/3rdparty/Eigen/bench/btl/actions/action_trmm.hh

gtsam/3rdparty/Eigen/doc/TopicScalarTypes.dox

gtsam/3rdparty/Eigen/test/simplicial_cholesky.cpp

gtsam/3rdparty/Eigen/src/Core/arch/SSE/Makefile.am

gtsam/3rdparty/Eigen/doc/LinearLeastSquares.dox

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h

gtsam/3rdparty/Eigen/demos/mix_eigen_and_c/binary_library.h

gtsam/3rdparty/Eigen/doc/ClassHierarchy.dox

gtsam/3rdparty/Eigen/Eigen/src/OrderingMethods/CMakeLists.txt

gtsam/3rdparty/Eigen/cmake/CMakeDetermineVSServicePack.cmake

gtsam/3rdparty/Eigen/Eigen/src/Core/Assign.h

gtsam/3rdparty/Eigen/unsupported/Eigen/AlignedVector3

gtsam/3rdparty/Eigen/demos/opengl/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Cwise_max.cpp

gtsam/3rdparty/Eigen/test/diagonal.cpp

gtsam/3rdparty/Eigen/Eigen/src/Geometry/EulerAngles.h

gtsam/3rdparty/Eigen/Eigen/LeastSquares

gtsam/3rdparty/Eigen/src/Sparse/SparseCwiseBinaryOp.h

gtsam/3rdparty/Eigen/cmake/FindEigen3.cmake

gtsam/3rdparty/Eigen/test/vectorwiseop.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_acos.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_eigenvalues.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_topLeftCorner.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_replicate.cpp

gtsam/3rdparty/Eigen/failtest/block_nonconst_ctor_on_const_xpr_0.cpp

gtsam/3rdparty/Eigen/blas/drotmg.f

gtsam/3rdparty/Eigen/Eigen/src/Jacobi/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Map_simple.cpp

gtsam/3rdparty/Eigen/src/Core/Fuzzy.h

gtsam/3rdparty/Eigen/doc/TopicLinearAlgebraDecompositions.dox

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixSquareRoot.cpp

gtsam/3rdparty/Eigen/cmake/FindPastix.cmake

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_isUnitary.cpp

gtsam/3rdparty/Eigen/lapack/slarfb.f

gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseBinaryOp.h

gtsam/3rdparty/Eigen/test/meta.cpp

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/x86_timer.hh

gtsam/3rdparty/Eigen/Eigen2Support

gtsam/3rdparty/Eigen/test/qr_fullpivoting.cpp

gtsam/3rdparty/Eigen/blas/complexdots.f

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_AdvancedInitialization_Zero.cpp

gtsam/3rdparty/Eigen/cmake/FindMPFR.cmake

gtsam/3rdparty/Eigen/test/product_notemporary.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_greater_equal.cpp

gtsam/3rdparty/CCOLAMD/MATLAB/csymamdmex.c

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Splines/SplineFwd.h

gtsam/3rdparty/Eigen/test/sparse_permutations.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_sqrt.cpp

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setOnes_int_int.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_sin.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ArrayClass_mult.cpp

gtsam/3rdparty/Eigen/test/eigensolver_generic.cpp

gtsam/3rdparty/Eigen/doc/snippets/Matrix_resize_int_NoChange.cpp

gtsam/3rdparty/Eigen/src/Core/util/XprHelper.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_matrix_vector_product.hh

gtsam/3rdparty/Eigen/Eigen/src/Core/util/CMakeLists.txt

gtsam/3rdparty/Eigen/src/misc/CMakeLists.txt

gtsam/3rdparty/Eigen/failtest/transpose_on_const_type_actually_const.cpp

gtsam/3rdparty/Eigen/blas/ctpsv.f

gtsam/3rdparty/Eigen/test/upperbidiagonalization.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/BVH/BVAlgorithms.h

gtsam/3rdparty/Eigen/demos/mix_eigen_and_c/README

gtsam/3rdparty/Eigen/Eigen/src/CholmodSupport/CholmodSupport.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseCwiseUnaryOp.h

gtsam/3rdparty/Eigen/bench/btl/cmake/FindMKL.cmake

gtsam/3rdparty/Eigen/Eigen/src/Core/Ref.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_topRightCorner_int_int.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/tvmet/tvmet_interface.hh

gtsam/3rdparty/Eigen/src/Eigenvalues/ComplexEigenSolver.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseBlock.h

gtsam/3rdparty/Eigen/src/Core/DenseStorageBase.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h

gtsam/3rdparty/Eigen/demos/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_isIdentity.cpp

gtsam/3rdparty/Eigen/test/product_trmm.cpp

gtsam/3rdparty/Eigen/blas/zhpr.f

gtsam/3rdparty/Eigen/Eigen/src/SVD/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/srotmg.f

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_leftCols.cpp

gtsam/3rdparty/Eigen/Eigen/src/Sparse/CoreIterators.h

gtsam/3rdparty/Eigen/doc/TutorialSparse.dox

gtsam/3rdparty/Eigen/bench/btl/generic_bench/utils/utilities.h

gtsam/3rdparty/Eigen/Eigen/src/Core/NestByValue.h

gtsam/3rdparty/Eigen/Cholesky

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h

gtsam/3rdparty/Eigen/unsupported/Eigen/SuperLUSupport

gtsam/3rdparty/Eigen/bench/btl/data/mean.cxx

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/SparseLLT.h

gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/NEON/Complex.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/UmfPackSupport.h

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointView_operatorNorm.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_eval.cpp

gtsam/3rdparty/Eigen/src/Sparse/Makefile.am

gtsam/3rdparty/Eigen/doc/snippets/Cwise_plus.cpp

gtsam/3rdparty/Eigen/blas/level2_cplx_impl.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseInverse.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_solve_matrix_inverse.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseTriangularView.h

gtsam/3rdparty/Eigen/bench/btl/libs/gmm/main.cpp

gtsam/3rdparty/Eigen/src/Core/Select.h

gtsam/3rdparty/Eigen/bench/bench_multi_compilers.sh

gtsam/3rdparty/Eigen/Eigen/src/Householder/HouseholderSequence.h

gtsam/3rdparty/Eigen/src/Core/util/ForwardDeclarations.h

gtsam/3rdparty/Eigen/src/Geometry/Transform.h

gtsam/3rdparty/Eigen/demos/opengl/gpuhelper.h

gtsam/3rdparty/Eigen/blas/level3_impl.h

gtsam/3rdparty/Eigen/test/vectorization_logic.cpp

gtsam/3rdparty/Eigen/bench/benchmark_suite

gtsam/3rdparty/Eigen/src/Core/ForceAlignedAccess.h

gtsam/3rdparty/Eigen/test/product_extra.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/TopicAliasing.dox

gtsam/3rdparty/Eigen/test/block.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_slash_equal.cpp

gtsam/3rdparty/Eigen/blas/chpr2.f

gtsam/3rdparty/Eigen/Eigen/src/Core/products/CoeffBasedProduct.h

gtsam/3rdparty/Eigen/unsupported/test/kronecker_product.cpp

gtsam/3rdparty/Eigen/doc/UsingIntelMKL.dox

gtsam/3rdparty/Eigen/cmake/FindFFTW.cmake

gtsam/3rdparty/Eigen/src/plugins/CommonCwiseUnaryOps.h

gtsam/3rdparty/Eigen/src/Sparse/SparseView.h

gtsam/3rdparty/Eigen/bench/btl/data/smooth.cxx

gtsam/3rdparty/Eigen/unsupported/Eigen/src/FFT/ei_kissfft_impl.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/mixed_perf_analyzer.hh

gtsam/3rdparty/Eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h

gtsam/3rdparty/Eigen/cmake/FindAdolc.cmake

gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/CopyrightMINPACK.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/DenseCoeffsBase.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_boolean_and.cpp

gtsam/3rdparty/Eigen/blas/ctpmv.f

gtsam/3rdparty/CCOLAMD/MATLAB/Contents.m

gtsam/3rdparty/Eigen/src/Sparse/SparseMatrix.h

gtsam/3rdparty/Eigen/INSTALL

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointView_eigenvalues.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/CMakeLists.txt

gtsam/3rdparty/Eigen/test/sizeof.cpp

gtsam/3rdparty/Eigen/failtest/block_on_const_type_actually_const_0.cpp

gtsam/3rdparty/Eigen/bench/spbench/sp_solver.cpp

gtsam/3rdparty/Eigen/doc/snippets/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Cwise_tan.cpp

gtsam/3rdparty/Eigen/lapack/lapack_common.h

gtsam/3rdparty/Eigen/src/Eigenvalues/EigenSolver.h

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamd_install.m

gtsam/3rdparty/Eigen/test/hessenberg.cpp

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamd_demo.m

gtsam/3rdparty/Eigen/doc/snippets/tut_arithmetic_transpose_conjugate.cpp

gtsam/3rdparty/Eigen/blas/PackedSelfadjointProduct.h

gtsam/3rdparty/Eigen/LU

gtsam/3rdparty/Eigen/Makefile.am

gtsam/3rdparty/Eigen/bench/btl/data/go_mean

gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixVector.h

gtsam/3rdparty/Eigen/src/Core/arch/NEON/PacketMath.h

gtsam/3rdparty/Eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h

gtsam/3rdparty/Eigen/Eigen/Eigenvalues

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/GMRES.h

gtsam/3rdparty/Eigen/doc/C07_TutorialReductionsVisitorsBroadcasting.dox

gtsam/3rdparty/Eigen/test/eigen2/eigen2_alignedbox.cpp

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgSelfAdjointEigenSolver.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/DiagonalMatrix.h

gtsam/3rdparty/Eigen/blas/level1_real_impl.h

gtsam/3rdparty/Eigen/Eigen/src/QR/ColPivHouseholderQR.h

gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseUnaryOp.h

gtsam/3rdparty/Eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h

gtsam/3rdparty/Eigen/bench/btl/libs/f77/dmxm.f.mfr

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_part.cpp

gtsam/3rdparty/Eigen/doc/TutorialBlockOperations.dox

gtsam/3rdparty/Eigen/test/jacobi.cpp

gtsam/3rdparty/Eigen/bench/BenchSparseUtil.h

gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixVector.h

gtsam/3rdparty/Eigen/Eigen/src/Core/util/Meta.h

gtsam/3rdparty/Eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h

gtsam/3rdparty/Eigen/src/LU/Inverse.h

gtsam/3rdparty/Eigen/lapack/eigenvalues.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_ones_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h

gtsam/3rdparty/Eigen/src/Core/NumTraits.h

gtsam/3rdparty/Eigen/test/eigensolver_complex.cpp

gtsam/3rdparty/Eigen/src/Core/CwiseUnaryView.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/SVD.h

gtsam/3rdparty/Eigen/bench/btl/libs/C/C_interface.hh

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/AngleAxis.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_map.cpp

gtsam/3rdparty/Eigen/scripts/check.in

gtsam/3rdparty/Eigen/test/prec_inverse_4x4.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/f77/test_interface.hh

gtsam/3rdparty/Eigen/src/plugins/ArrayCwiseUnaryOps.h

gtsam/3rdparty/Eigen/src/Core/util/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/EigenSolver_eigenvectors.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/gmm/gmm_LU_solve_interface.hh

gtsam/3rdparty/Eigen/src/Eigenvalues/ComplexSchur.h

gtsam/3rdparty/Eigen/Eigen/IterativeLinearSolvers

gtsam/3rdparty/Eigen/src/Householder/HouseholderSequence.h

gtsam/3rdparty/Eigen/bench/btl/libs/gmm/gmm_interface.hh

gtsam/3rdparty/Eigen/test/unalignedassert.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/JacobiSVD.h

gtsam/3rdparty/Eigen/src/Eigenvalues/Tridiagonalization.h

gtsam/3rdparty/Eigen/src/Core/ArrayBase.h

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgRankRevealing.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseUnaryView.h

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/All.h

gtsam/3rdparty/Eigen/src/Core/products/GeneralMatrixVector.h

gtsam/3rdparty/Eigen/lapack/ilaclr.f

gtsam/3rdparty/Eigen/Jacobi

gtsam/3rdparty/Eigen/doc/I02_HiPerformance.dox

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_ones.cpp

gtsam/3rdparty/Eigen/src/Geometry/Umeyama.h

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_solve_reuse_decomposition.cpp

gtsam/3rdparty/Eigen/test/bandmatrix.cpp

gtsam/3rdparty/Eigen/Eigen/PardisoSupport

gtsam/3rdparty/Eigen/Eigen/src/Core/GeneralProduct.h

gtsam/3rdparty/Eigen/scripts/eigen_gen_credits.cpp

gtsam/3rdparty/Eigen/blas/testing/cblat1.f

gtsam/3rdparty/Eigen/doc/snippets/Jacobi_makeJacobi.cpp

gtsam/3rdparty/Eigen/src/Core/util/DisableMSVCWarnings.h

gtsam/3rdparty/Eigen/doc/special_examples/CMakeLists.txt

gtsam/3rdparty/Eigen/test/mapped_matrix.cpp

gtsam/3rdparty/Eigen/doc/examples/DenseBase_middleRows_int.cpp

gtsam/3rdparty/Eigen/blas/testing/cblat3.f

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/RotationBase.h

gtsam/3rdparty/Eigen/blas/dsbmv.f

gtsam/3rdparty/Eigen/test/eigen2/eigen2_geometry_with_eigen2_prefix.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_Structs.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_end.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_reductions_bool.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ArrayClass_addition.cpp

gtsam/3rdparty/Eigen/blas/chpmv.f

gtsam/3rdparty/Eigen/test/geo_parametrizedline.cpp

gtsam/3rdparty/Eigen/bench/spmv.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/Makefile.am

gtsam/3rdparty/Eigen/doc/D07_PassingByValue.dox

gtsam/3rdparty/Eigen/lapack/iladlr.f

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h

gtsam/3rdparty/Eigen/doc/examples/tut_arithmetic_dot_cross.cpp

gtsam/3rdparty/Eigen/src/Makefile.am

gtsam/3rdparty/Eigen/test/eigen2/eigen2_sparse_vector.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/FFT/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/dspmv.f

gtsam/3rdparty/Eigen/test/runtest.sh

gtsam/3rdparty/Eigen/doc/TutorialMapClass.dox

gtsam/3rdparty/Eigen/src/LU/PartialPivLU.h

gtsam/3rdparty/Eigen/doc/eigen_navtree_hacks.js

gtsam/3rdparty/Eigen/test/sparse_product.cpp

gtsam/3rdparty/Eigen/bench/benchmarkXcwise.cpp

gtsam/3rdparty/Eigen/test/sparseqr.cpp

gtsam/3rdparty/Eigen/doc/snippets/PartialRedux_norm.cpp

gtsam/3rdparty/Eigen/test/geo_transformations.cpp

gtsam/3rdparty/Eigen/Eigen/src/Sparse/DynamicSparseMatrix.h

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_operatorSqrt.cpp

gtsam/3rdparty/Eigen/doc/snippets/class_FullPivLU.cpp

gtsam/3rdparty/Eigen/doc/Manual.dox

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setZero_int.cpp

gtsam/3rdparty/Eigen/lapack/double.cpp

gtsam/3rdparty/Eigen/debug/msvc/eigen_autoexp_part.dat

gtsam/3rdparty/Eigen/doc/AsciiQuickReference.txt

gtsam/3rdparty/Eigen/Eigen/src/PardisoSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h

gtsam/3rdparty/Eigen/bench/btl/libs/blitz/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/SSE/PacketMath.h

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_AdvancedInitialization_Block.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_start_int.cpp

gtsam/3rdparty/Eigen/COPYING.README

gtsam/3rdparty/Eigen/bench/bench_reverse.cpp

gtsam/3rdparty/Eigen/src/Householder/Makefile.am

gtsam/3rdparty/Eigen/Eigen/src/Core/Block.h

gtsam/3rdparty/Eigen/blas/dspr2.f

gtsam/3rdparty/Eigen/test/triangular.cpp

gtsam/3rdparty/Eigen/test/permutationmatrices.cpp

gtsam/3rdparty/Eigen/src/Core/Visitor.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_bottomRightCorner_int_int.cpp

gtsam/3rdparty/Eigen/doc/snippets/ComplexSchur_matrixU.cpp

gtsam/3rdparty/Eigen/src/Core/MapBase.h

gtsam/3rdparty/Eigen/Eigen/src/SparseQR/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/zhpr2.f

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineUtil.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseVector.h

gtsam/3rdparty/Eigen/demos/opengl/README

gtsam/3rdparty/Eigen/src/Sparse/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Tridiagonalization_packedMatrix.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_simple_example_fixed_size.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h

gtsam/3rdparty/Eigen/bench/btl/actions/basic_actions.hh

gtsam/3rdparty/Eigen/src/Core/BooleanRedux.h

gtsam/3rdparty/Eigen/doc/StorageOrders.dox

gtsam/3rdparty/Eigen/Eigen/src/SPQRSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/btl/generic_bench/init/init_vector.hh

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_diagonal.cpp

gtsam/3rdparty/Eigen/test/product_trmv.cpp

gtsam/3rdparty/Eigen/doc/examples/function_taking_ref.cpp

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setRandom_int.cpp

gtsam/3rdparty/Eigen/bench/btl/actions/action_symv.hh

gtsam/3rdparty/Eigen/doc/snippets/Map_placement_new.cpp

gtsam/3rdparty/Eigen/Eigen/src/MetisSupport/MetisSupport.h

gtsam/3rdparty/Eigen/src/Geometry/RotationBase.h

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/EigenvaluesCommon.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Polynomials/PolynomialSolver.h

gtsam/3rdparty/Eigen/src/Geometry/ParametrizedLine.h

gtsam/3rdparty/Eigen/blas/double.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/eigen2/eigen2_interface.hh

gtsam/3rdparty/Eigen/.hgignore

gtsam/3rdparty/Eigen/bench/btl/actions/action_syr2.hh

gtsam/3rdparty/Eigen/bench/btl/libs/f77/data.f

gtsam/3rdparty/Eigen/blas/ztbmv.f

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h

gtsam/3rdparty/Eigen/bench/btl/libs/blitz/tiny_blitz_interface.hh

gtsam/3rdparty/Eigen/src/Core/arch/SSE/MathFunctions.h

gtsam/3rdparty/Eigen/bench/btl/libs/f77/smxv.f

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_AdvancedInitialization_LinSpaced.cpp

gtsam/3rdparty/Eigen/unsupported/doc/examples/BVH_Example.cpp

gtsam/3rdparty/Eigen/test/special_numbers.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_zero.cpp

gtsam/3rdparty/Eigen/src/Cholesky/LDLT.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_bottomRows_int.cpp

gtsam/3rdparty/Eigen/scripts/release.in

gtsam/3rdparty/Eigen/cmake/FindGMP.cmake

gtsam/3rdparty/Eigen/unsupported/test/bdcsvd.cpp

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamd_test.m

gtsam/3rdparty/Eigen/unsupported/test/mpreal/dlmalloc.c

gtsam/3rdparty/Eigen/Eigen/src/Core/util/ForwardDeclarations.h

gtsam/3rdparty/Eigen/unsupported/test/mpreal/dlmalloc.h

gtsam/3rdparty/Eigen/demos/opengl/camera.h

gtsam/3rdparty/Eigen/src/LU/FullPivLU.h

gtsam/3rdparty/Eigen/lapack/iladlc.f

gtsam/3rdparty/Eigen/doc/TopicVectorization.dox

gtsam/3rdparty/Eigen/Eigen/src/Core/ProductBase.h

gtsam/3rdparty/Eigen/Eigen/Geometry

gtsam/3rdparty/Eigen/doc/snippets/Cwise_times_equal.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseDiagonalProduct.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/RotationBase.h

gtsam/3rdparty/Eigen/src/Core/Array.h

gtsam/3rdparty/Eigen/blas/testing/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Eigenvalues/EigenvaluesCommon.h

gtsam/3rdparty/ccolamd/Makefile.am

gtsam/3rdparty/Eigen/doc/snippets/Cwise_quotient.cpp

gtsam/3rdparty/Eigen/blas/level1_cplx_impl.h

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgExComputeSolveError.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/CwiseOperators.h

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamdmex.c

gtsam/3rdparty/Eigen/blas/stbsv.f

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_block_int_int_int_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/VectorwiseOp.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Polynomials/Companion.h

gtsam/3rdparty/Eigen/test/product_mmtr.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_linearstructure.cpp

gtsam/3rdparty/Eigen/bench/sparse_lu.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/Redux.h

gtsam/3rdparty/Makefile.am

gtsam/3rdparty/Eigen/doc/StlContainers.dox

gtsam/3rdparty/Eigen/test/product_small.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_solve_multiple_rhs.cpp

gtsam/3rdparty/Eigen/blas/testing/dblat3.dat

gtsam/3rdparty/Eigen/test/linearstructure.cpp

gtsam/3rdparty/Eigen/unsupported/test/mpreal_support.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/MoreVectorization

gtsam/3rdparty/Eigen/src/Core/util/EnableMSVCWarnings.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Umeyama.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/portable_timer.hh

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_diagonal_template_int.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_inverse.cpp

gtsam/3rdparty/Eigen/test/stable_norm.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseVector.h

gtsam/3rdparty/Eigen/failtest/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Geometry/Scaling.h

gtsam/3rdparty/Eigen/src/StlSupport/StdVector.h

gtsam/3rdparty/Eigen/bench/btl/cmake/FindGOTO.cmake

gtsam/3rdparty/Eigen/cmake/FindEigen2.cmake

gtsam/3rdparty/Eigen/unsupported/Eigen/NumericalDiff

gtsam/3rdparty/Eigen/src/Geometry/OrthoMethods.h

gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example.c

gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixVector_MKL.h

gtsam/3rdparty/Eigen/doc/snippets/Map_general_stride.cpp

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/x86_perf_analyzer.hh

gtsam/3rdparty/Eigen/test/eigen2/eigen2_prec_inverse_4x4.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/Parallelizer.h

gtsam/3rdparty/Eigen/blas/BandTriangularSolver.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_product.cpp

gtsam/3rdparty/Eigen/COPYING.BSD

gtsam/3rdparty/Eigen/doc/snippets/Cwise_min.cpp

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Translation.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_partial_lu.hh

gtsam/3rdparty/Eigen/lapack/cladiv.f

gtsam/3rdparty/Eigen/bench/btl/generic_bench/utils/xy_file.hh

gtsam/3rdparty/Eigen/unsupported/test/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/arch/Default/Settings.h

gtsam/3rdparty/Eigen/doc/snippets/DirectionWise_replicate.cpp

gtsam/3rdparty/Eigen/src/Geometry/Rotation2D.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/dogleg.h

gtsam/3rdparty/Eigen/bench/btl/libs/C_BLAS/C_BLAS_interface.hh

gtsam/3rdparty/Eigen/src/Eigen2Support/Macros.h

gtsam/3rdparty/Eigen/bench/btl/libs/BLAS/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/HiPerformance.dox

gtsam/3rdparty/Eigen/bench/btl/COPYING

gtsam/3rdparty/Eigen/demos/opengl/quaternion_demo.cpp

gtsam/3rdparty/Eigen/Eigen/StdVector

gtsam/3rdparty/Eigen/lapack/complex_double.cpp

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_eigenvectors.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/f77/dmxv.f

gtsam/3rdparty/Eigen/blas/ztpmv.f

gtsam/3rdparty/Eigen/cmake/FindUmfpack.cmake

gtsam/3rdparty/Eigen/cmake/FindBLAS.cmake

gtsam/3rdparty/Eigen/test/adjoint.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseQR/SparseQR.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_array.cpp

gtsam/3rdparty/Eigen/bench/btl/data/mk_mean_script.sh

gtsam/3rdparty/Eigen/bench/sparse_dense_product.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/eigen2/main_matmat.cpp

gtsam/3rdparty/Eigen/blas/testing/zblat2.dat

gtsam/3rdparty/Eigen/unsupported/test/mpreal.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_bottomLeftCorner_int_int.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_maxnorm.cpp

gtsam/3rdparty/Eigen/doc/FixedSizeVectorizable.dox

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_SelfAdjointEigenSolver_MatrixType2.cpp

gtsam/3rdparty/Eigen/doc/C02_TutorialMatrixArithmetic.dox

gtsam/3rdparty/Eigen/src/Eigen2Support/Meta.h

gtsam/3rdparty/Eigen/Eigen/src/Core/NoAlias.h

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setIdentity_int_int.cpp

gtsam/3rdparty/Eigen/bench/spbench/spbench.dtd

gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointRank2Update.h

gtsam/3rdparty/Eigen/Eigen/src/Householder/Householder.h

gtsam/3rdparty/Eigen/test/product_selfadjoint.cpp

gtsam/3rdparty/Eigen/lapack/single.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/SolveTriangular.h

gtsam/3rdparty/Eigen/src/Core/Transpose.h

gtsam/3rdparty/Eigen/Eigen/src/Householder/BlockHouseholder.h

gtsam/3rdparty/Eigen/COPYING.LGPL

gtsam/3rdparty/Eigen/demos/opengl/icosphere.cpp

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple_rowwise.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/NEON/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_reductions_norm.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h

gtsam/3rdparty/Eigen/Eigen/src/SuperLUSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Map_outer_stride.cpp

gtsam/3rdparty/Eigen/src/Eigenvalues/HessenbergDecomposition.h

gtsam/3rdparty/Eigen/test/dontalign.cpp

gtsam/3rdparty/CCOLAMD/Source/ccolamd_global.c

gtsam/3rdparty/Eigen/blas/GeneralRank1Update.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/PolynomialUtils1.cpp

gtsam/3rdparty/Eigen/bench/btl/data/mk_gnuplot_script.sh

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixSine.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_zero_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/CommaInitializer.h

gtsam/3rdparty/Eigen/Eigen/LU

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Quaternion.h

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setConstant_int_int.cpp

gtsam/3rdparty/Eigen/src/Core/products/SelfadjointProduct.h

gtsam/3rdparty/Eigen/doc/C08_TutorialGeometry.dox

gtsam/3rdparty/Eigen/blas/zhpmv.f

gtsam/3rdparty/Eigen/SVD

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/CholmodSupportLegacy.h

gtsam/3rdparty/Eigen/src/Geometry/arch/Geometry_SSE.h

gtsam/3rdparty/Eigen/unsupported/test/sparse_ldlt.cpp

gtsam/3rdparty/Eigen/test/stdvector_overload.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/Scaling.h

gtsam/3rdparty/Eigen/doc/snippets/TopicAliasing_block_correct.cpp

gtsam/3rdparty/Eigen/bench/btl/CMakeLists.txt

gtsam/3rdparty/Eigen/failtest/map_on_const_type_actually_const_0.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_parametrizedline.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/Lazy.h

gtsam/3rdparty/Eigen/unsupported/doc/eigendoxy_layout.xml.in

gtsam/3rdparty/Eigen/failtest/map_nonconst_ctor_on_const_ptr_1.cpp

gtsam/3rdparty/Eigen/src/Jacobi/Jacobi.h

gtsam/3rdparty/Eigen/doc/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/DenseBase_LinSpaced_seq.cpp

gtsam/3rdparty/Eigen/blas/Rank2Update.h

gtsam/3rdparty/Eigen/test/dynalloc.cpp

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseUtil.h

gtsam/3rdparty/Eigen/test/selfadjoint.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_bottomRows.cpp

gtsam/3rdparty/Eigen/doc/examples/class_CwiseUnaryOp.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/STL/STL_interface.hh

gtsam/3rdparty/Eigen/bench/btl/libs/f77/f77_interface_base.hh

gtsam/3rdparty/Eigen/Eigen/src/SVD/UpperBidiagonalization.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_product_large.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_smallvectors.cpp

gtsam/3rdparty/UFconfig/xerbla/xerbla.c

gtsam/3rdparty/Eigen/bench/btl/libs/eigen3/main_adv.cpp

gtsam/3rdparty/UFconfig/xerbla/xerbla.f

gtsam/3rdparty/Eigen/cmake/FindMetis.cmake

gtsam/3rdparty/Eigen/bench/sparse_product.cpp

gtsam/3rdparty/Eigen/test/product_trsolve.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_select.cpp

gtsam/3rdparty/Eigen/doc/TopicAssertions.dox

gtsam/3rdparty/Eigen/Eigen/Dense

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/SSE/Complex.h

gtsam/3rdparty/Eigen/debug/gdb/__init__.py

gtsam/3rdparty/Eigen/COPYING.MPL2

gtsam/3rdparty/Eigen/Dense

gtsam/3rdparty/Eigen/doc/snippets/Cwise_minus_equal.cpp

gtsam/3rdparty/Eigen/debug/gdb/printers.py

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setConstant_int.cpp

gtsam/3rdparty/Eigen/doc/examples/class_FixedVectorBlock.cpp

gtsam/3rdparty/Eigen/doc/TopicMultithreading.dox

gtsam/3rdparty/Eigen/src/StlSupport/details.h

gtsam/3rdparty/Eigen/blas/testing/dblat1.f

gtsam/3rdparty/Eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h

gtsam/3rdparty/Eigen/src/Core/arch/SSE/Complex.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_svd.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_nomalloc.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_boolean_or.cpp

gtsam/3rdparty/Eigen/bench/vdw_new.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/eigen3/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Geometry/Homogeneous.h

gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h

gtsam/3rdparty/Eigen/doc/I13_FunctionsTakingEigenTypes.dox

gtsam/3rdparty/Eigen/test/visitor.cpp

gtsam/3rdparty/Eigen/doc/snippets/ComplexEigenSolver_eigenvalues.cpp

gtsam/3rdparty/Eigen/doc/snippets/TopicAliasing_mult1.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseTriangularView.h

gtsam/3rdparty/Eigen/Eigen/SparseQR

gtsam/3rdparty/Eigen/blas/testing/zblat2.f

gtsam/3rdparty/Eigen/test/sparse_vector.cpp

gtsam/3rdparty/Eigen/doc/D01_StlContainers.dox

gtsam/3rdparty/ccolamd/Lib_Makefile.mk

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ArrayClass_cwise_other.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/Diagonal.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixFunctionAtomic.h

gtsam/3rdparty/Eigen/Eigen/CMakeLists.txt

gtsam/3rdparty/Eigen/src/plugins/CommonCwiseBinaryOps.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_setRandom.cpp

gtsam/3rdparty/Eigen/blas/ctbsv.f

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseTranspose.h

gtsam/3rdparty/Eigen/doc/snippets/TopicAliasing_mult2.cpp

gtsam/3rdparty/Eigen/test/resize.cpp

gtsam/3rdparty/Eigen/doc/CustomizingEigen.dox

gtsam/3rdparty/Eigen/src/Sparse/AmbiVector.h

gtsam/3rdparty/Eigen/Eigen/src/PardisoSupport/PardisoSupport.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_bug_132.cpp

gtsam/3rdparty/Eigen/Eigen/QtAlignedMalloc

gtsam/3rdparty/Eigen/bench/btl/libs/f77/smxm.f

gtsam/3rdparty/Eigen/unsupported/Eigen/Polynomials

gtsam/3rdparty/Eigen/lapack/dlamch.f

gtsam/3rdparty/Eigen/QR

gtsam/3rdparty/Eigen/src/QR/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/PassingByValue.dox

gtsam/3rdparty/Eigen/doc/snippets/DirectionWise_replicate_int.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_segment_int_int.cpp

gtsam/3rdparty/Eigen/unsupported/test/FFTW.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/CMakeLists.txt

gtsam/3rdparty/Eigen/test/sparse_solver.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/r1updt.h

gtsam/3rdparty/Eigen/cmake/FindGoogleHash.cmake

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ArrayClass_accessors.cpp

gtsam/3rdparty/Eigen/src/plugins/MatrixCwiseBinaryOps.h

gtsam/3rdparty/Eigen/doc/C04_TutorialBlockOperations.dox

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseTranspose.h

gtsam/3rdparty/Eigen/src/Eigenvalues/Makefile.am

gtsam/3rdparty/UFconfig/README.txt

gtsam/3rdparty/Eigen/doc/snippets/tut_matrix_assignment_resizing.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/VectorBlock.h

gtsam/3rdparty/Eigen/doc/Overview.dox

gtsam/3rdparty/Eigen/test/geo_eulerangles.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/eigen2/main_linear.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/StableNorm.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseVector.h

gtsam/3rdparty/Eigen/src/StlSupport/StdList.h

gtsam/3rdparty/Eigen/doc/PreprocessorDirectives.dox

gtsam/3rdparty/Eigen/test/eigen2/eigen2_regression.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_row.cpp

gtsam/3rdparty/Eigen/test/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/btl/libs/BLAS/c_interface_base.h

gtsam/3rdparty/Eigen/doc/C06_TutorialLinearAlgebra.dox

gtsam/3rdparty/Eigen/lapack/slarft.f

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_fixedBlock_int_int.cpp

gtsam/3rdparty/Eigen/doc/examples/QuickStart_example2_dynamic.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h

gtsam/3rdparty/Eigen/src/Core/util/DisableStupidWarnings.h

gtsam/3rdparty/Eigen/test/mapstride.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/BandMatrix.h

gtsam/3rdparty/Eigen/test/main.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_stdvector.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseCwiseUnaryOp.h

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setRandom_int_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h

gtsam/3rdparty/Eigen/test/array_for_matrix.cpp

gtsam/3rdparty/Eigen/doc/snippets/HouseholderSequence_HouseholderSequence.cpp

gtsam/3rdparty/Eigen/lapack/dsecnd_NONE.f

gtsam/3rdparty/Eigen/src/plugins/ArrayCwiseBinaryOps.h

gtsam/3rdparty/Eigen/src/Geometry/Hyperplane.h

gtsam/3rdparty/Eigen/unsupported/Eigen/SparseExtra

gtsam/3rdparty/Eigen/doc/snippets/ComplexEigenSolver_eigenvectors.cpp

gtsam/3rdparty/Eigen/blas/dtbsv.f

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h

gtsam/3rdparty/Eigen/doc/snippets/TopicStorageOrders_example.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Splines/Spline.h

gtsam/3rdparty/Eigen/bench/btl/libs/ublas/ublas_interface.hh

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/SparseLDLTLegacy.h

gtsam/3rdparty/Eigen/src/Core/arch/AltiVec/Complex.h

gtsam/3rdparty/Eigen/lapack/slamch.f

gtsam/3rdparty/Eigen/bench/README.txt

gtsam/3rdparty/Eigen/src/Core/products/GeneralMatrixMatrix.h

gtsam/3rdparty/Eigen/doc/UnalignedArrayAssert.dox

gtsam/3rdparty/Eigen/bench/btl/cmake/FindEigen3.cmake

gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h

gtsam/3rdparty/Eigen/src/Core/products/TriangularSolverVector.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseProduct.h

gtsam/3rdparty/Eigen/Eigen/PaStiXSupport

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseDiagonalProduct.h

gtsam/3rdparty/Eigen/Eigen/src/LU/FullPivLU.h

gtsam/3rdparty/Eigen/src/Core/products/SelfadjointMatrixVector.h

gtsam/3rdparty/Eigen/src/Eigenvalues/RealSchur.h

gtsam/3rdparty/Eigen/test/sparse.h

gtsam/3rdparty/Eigen/src/Sparse/SparseRedux.h

gtsam/3rdparty/UFconfig/UFconfig.h

gtsam/3rdparty/Eigen/lapack/ilazlr.f

gtsam/3rdparty/Eigen/test/eigen2/eigen2_sizeof.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/IterationController.h

gtsam/3rdparty/Eigen/src/Core/Diagonal.h

gtsam/3rdparty/Eigen/src/Core/PermutationMatrix.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_prod.cpp

gtsam/3rdparty/Eigen/test/eigen2/main.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/SparseLU.h

gtsam/3rdparty/Eigen/failtest/const_qualified_block_method_retval_0.cpp

gtsam/3rdparty/Eigen/test/product_large.cpp

gtsam/3rdparty/Eigen/Array

gtsam/3rdparty/Eigen/blas/testing/sblat2.dat

gtsam/3rdparty/Eigen/test/product_syrk.cpp

gtsam/3rdparty/Eigen/Eigen/SVD

gtsam/3rdparty/Eigen/doc/snippets/LLT_example.cpp

gtsam/3rdparty/Eigen/failtest/map_nonconst_ctor_on_const_ptr_2.cpp

gtsam/3rdparty/Eigen/blas/xerbla.cpp

gtsam/3rdparty/Eigen/test/geo_alignedbox.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/arch/Geometry_SSE.h

gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h

gtsam/3rdparty/Eigen/demos/mandelbrot/mandelbrot.cpp

gtsam/3rdparty/Eigen/src/Core/arch/AltiVec/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/TriangularSolver.h

gtsam/3rdparty/Eigen/blas/complex_double.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Quaternion.h

gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h

gtsam/3rdparty/Eigen/demos/opengl/icosphere.h

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/Rotation2D.h

gtsam/3rdparty/Eigen/test/superlu_support.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_random_int_int.cpp

gtsam/3rdparty/Eigen/unsupported/test/mpreal.h

gtsam/3rdparty/Eigen/Eigen/src/misc/Image.h

gtsam/3rdparty/CCOLAMD/Include/ccolamd.h

gtsam/3rdparty/Eigen/bench/btl/libs/f77/CMakeLists.txt

gtsam/3rdparty/Eigen/test/integer_types.cpp

gtsam/3rdparty/Eigen/doc/examples/tut_arithmetic_scalar_mul_div.cpp

gtsam/3rdparty/Eigen/src/SVD/JacobiSVD.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/ParametrizedLine.h

gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_solve_singular.cpp

gtsam/3rdparty/Eigen/Eigen/src/Jacobi/Jacobi.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_equal_equal.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/tvmet/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/products/Makefile.am

gtsam/3rdparty/Eigen/test/eigensolver_selfadjoint.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/StemFunction.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h

gtsam/3rdparty/Eigen/src/Eigen2Support/QR.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_rot.hh

gtsam/3rdparty/Eigen/unsupported/test/gmres.cpp

gtsam/3rdparty/Eigen/src/Core/util/Makefile.am

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_operatorInverseSqrt.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseSqrt.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_pivotL.h

gtsam/3rdparty/Eigen/doc/examples/tut_matrix_resize.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/TriangularSolver.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_cwiseop.cpp

gtsam/3rdparty/Eigen/Eigen/src/PaStiXSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/util/MKL_support.h

gtsam/3rdparty/Eigen/src/Geometry/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/ArrayWrapper.h

gtsam/3rdparty/Eigen/src/Core/arch/AltiVec/PacketMath.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/MappedSparseMatrix.h

gtsam/3rdparty/Eigen/doc/snippets/EigenSolver_pseudoEigenvectors.cpp

gtsam/3rdparty/Eigen/blas/dtpsv.f

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseMatrix.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/AmbiVector.h

gtsam/3rdparty/Eigen/failtest/const_qualified_transpose_method_retval.cpp

gtsam/3rdparty/Eigen/test/sparse_basic.cpp

gtsam/3rdparty/Eigen/src/Core/Makefile.am

gtsam/3rdparty/Eigen/src/Core/PlainObjectBase.h

gtsam/3rdparty/Eigen/src/Cholesky/Makefile.am

gtsam/3rdparty/Eigen/bench/btl/libs/STL_algo/STL_algo_interface.hh

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/LU.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MoreVectorization/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/HouseholderQR_solve.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/QR.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_geometry.cpp

gtsam/3rdparty/Eigen/doc/snippets/Matrix_resize_int.cpp

gtsam/3rdparty/Eigen/src/Core/util/ReenableStupidWarnings.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/AlignedBox.h

gtsam/3rdparty/Eigen/lapack/clarft.f

gtsam/3rdparty/Eigen/Eigen/src/Core/products/CMakeLists.txt

gtsam/3rdparty/Eigen/demos/mandelbrot/mandelbrot.h

gtsam/3rdparty/Eigen/bench/spbench/test_sparseLU.cpp

gtsam/3rdparty/Eigen/src/Core/ProductBase.h

gtsam/3rdparty/Eigen/src/Core/CMakeLists.txt

gtsam/3rdparty/Eigen/test/eigen2/eigen2_product_small.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Scaling.h

gtsam/3rdparty/Eigen/Geometry

gtsam/3rdparty/Eigen/doc/examples/Tutorial_BlockOperations_corner.cpp

gtsam/3rdparty/Eigen/StdVector

gtsam/3rdparty/Eigen/doc/snippets/FullPivLU_kernel.cpp

gtsam/3rdparty/Eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h

gtsam/3rdparty/Eigen/lapack/lu.cpp

gtsam/3rdparty/Eigen/doc/eigendoxy_layout.xml.in

gtsam/3rdparty/Eigen/Eigen/src/Core/Stride.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/CMakeLists.txt

gtsam/3rdparty/Eigen/test/eigen2/eigen2_qr.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/Default/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/test/matrix_square_root.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseDenseProduct.h

gtsam/3rdparty/Eigen/LGPL

gtsam/3rdparty/Eigen/bench/btl/libs/C_BLAS/blas.h

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/Hyperplane.h

gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h

gtsam/3rdparty/Eigen/blas/PackedTriangularSolverVector.h

gtsam/3rdparty/Eigen/src/Core/CwiseBinaryOp.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixLogarithm.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_AdvancedInitialization_CommaTemporary.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_array_const.cpp

gtsam/3rdparty/Eigen/cmake/RegexUtils.cmake

gtsam/3rdparty/Eigen/test/eigen2/eigen2_visitor.cpp

gtsam/3rdparty/Eigen/unsupported/test/matrix_exponential.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgComputeTwice.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/KroneckerProduct/CMakeLists.txt

gtsam/3rdparty/Eigen/scripts/eigen_gen_docs

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineProduct.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/STL_perf_analyzer.hh

gtsam/3rdparty/Eigen/blas/testing/dblat2.f

gtsam/3rdparty/Eigen/src/QR/Makefile.am

gtsam/3rdparty/Eigen/doc/I09_Vectorization.dox

gtsam/3rdparty/Eigen/test/pardiso_support.cpp

gtsam/3rdparty/Eigen/doc/TutorialSparse_example_details.dox

gtsam/3rdparty/Eigen/src/Sparse/SparseUtil.h

gtsam/3rdparty/Eigen/src/Core/ReturnByValue.h

gtsam/3rdparty/Eigen/unsupported/Eigen/AdolcForward

gtsam/3rdparty/Eigen/src/Core/util/BlasUtil.h

gtsam/3rdparty/Eigen/blas/dtbmv.f

gtsam/3rdparty/Eigen/failtest/block_nonconst_ctor_on_const_xpr_2.cpp

gtsam/3rdparty/Eigen/src/Core/SelfAdjointView.h

gtsam/3rdparty/Eigen/test/sparseLM.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/eigen2/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/IO.h

gtsam/3rdparty/Eigen/doc/examples/tut_matrix_coefficient_accessors.cpp

gtsam/3rdparty/Eigen/failtest/failtest_sanity_check.cpp

gtsam/3rdparty/Eigen/lapack/zladiv.f

gtsam/3rdparty/Eigen/bench/btl/libs/f77/sata.f

gtsam/3rdparty/Eigen/doc/snippets/ComplexEigenSolver_compute.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/AltiVec/Complex.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_dynalloc.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_computeInverseWithCheck.cpp

gtsam/3rdparty/Eigen/StdList

gtsam/3rdparty/Eigen/unsupported/test/forward_adolc.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Rotation2D.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_determinant.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/Quaternion.h

gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseNullaryOp.h

gtsam/3rdparty/Eigen/doc/snippets/RealSchur_compute.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/Array.h

gtsam/3rdparty/Eigen/Eigen/src/Cholesky/LLT_MKL.h

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_pruneL.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/AngleAxis.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_atv_product.hh

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/portable_perf_analyzer_old.hh

gtsam/3rdparty/Eigen/doc/special_examples/Tutorial_sparse_example.cpp

gtsam/3rdparty/Eigen/bench/benchEigenSolver.cpp

gtsam/3rdparty/ccolamd/UFconfig.h

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_AdvancedInitialization_ThreeWays.cpp

gtsam/3rdparty/Eigen/test/determinant.cpp

gtsam/3rdparty/Eigen/bench/spbench/spbenchsolver.h

gtsam/3rdparty/Eigen/test/sparse_solvers.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/DGMRES.h

gtsam/3rdparty/Eigen/scripts/buildtests.in

gtsam/3rdparty/Eigen/scripts/debug.in

gtsam/3rdparty/Eigen/doc/snippets/ComplexSchur_compute.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_identity_int_int.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/IterativeSolvers

gtsam/3rdparty/Eigen/blas/testing/sblat3.dat

gtsam/3rdparty/Eigen/Eigen/src/Sparse/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseRedux.h

gtsam/3rdparty/Eigen/src/Core/SelfCwiseBinaryOp.h

gtsam/3rdparty/Eigen/lapack/slarf.f

gtsam/3rdparty/Eigen/bench/btl/libs/blitz/btl_blitz.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/ublas/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparsePermutation.h

gtsam/3rdparty/Eigen/lapack/second_NONE.f

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseFuzzy.h

gtsam/3rdparty/Eigen/Eigen/src/Core/ArrayBase.h

gtsam/3rdparty/Eigen/Eigen/src/Core/Matrix.h

gtsam/3rdparty/Eigen/src/Core/products/SelfadjointMatrixMatrix.h

gtsam/3rdparty/Eigen/doc/I05_FixedSizeVectorizable.dox

gtsam/3rdparty/Eigen/Eigen/OrderingMethods

gtsam/3rdparty/Eigen/src/Core/NestByValue.h

gtsam/3rdparty/Eigen/Eigen/Core

gtsam/3rdparty/Eigen/bench/btl/libs/STL/CMakeLists.txt

gtsam/3rdparty/Eigen/test/cholesky.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/LU.h

gtsam/3rdparty/Eigen/Householder

gtsam/3rdparty/Eigen/doc/D03_WrongStackAlignment.dox

gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU_MKL.h

gtsam/3rdparty/ccolamd/UFconfig.c

gtsam/3rdparty/Eigen/cmake/FindGSL.cmake

gtsam/3rdparty/Eigen/bench/btl/libs/eigen2/main_adv.cpp

gtsam/3rdparty/Eigen/bench/bench_sum.cpp

gtsam/3rdparty/Eigen/src/Core/Dot.h

gtsam/3rdparty/Eigen/doc/snippets/tut_arithmetic_redux_minmax.cpp

gtsam/3rdparty/Eigen/test/sizeoverflow.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/SimplicialCholesky.h

gtsam/3rdparty/Eigen/test/redux.cpp

gtsam/3rdparty/Eigen/unsupported/test/jacobisvd.cpp

gtsam/3rdparty/Eigen/doc/C03_TutorialArrayClass.dox

gtsam/3rdparty/Eigen/bench/btl/libs/eigen3/btl_tiny_eigen3.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h

gtsam/3rdparty/Eigen/src/Core/products/TriangularMatrixMatrix.h

gtsam/3rdparty/Eigen/bench/btl/cmake/FindATLAS.cmake

gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h

gtsam/3rdparty/Eigen/doc/snippets/RealSchur_RealSchur_MatrixType.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseMax.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_Utils.h

gtsam/3rdparty/Eigen/test/denseLM.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/Default/Settings.h

gtsam/3rdparty/Eigen/test/householder.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/Solve.h

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_Map_using.cpp

gtsam/3rdparty/Eigen/doc/examples/DenseBase_middleCols_int.cpp

gtsam/3rdparty/Eigen/demos/mandelbrot/README

gtsam/3rdparty/Eigen/doc/QuickStartGuide.dox

gtsam/3rdparty/Eigen/test/first_aligned.cpp

gtsam/3rdparty/Eigen/src/Jacobi/Makefile.am

gtsam/3rdparty/Eigen/bench/btl/libs/blitz/blitz_interface.hh

gtsam/3rdparty/Eigen/failtest/map_nonconst_ctor_on_const_ptr_3.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_qtvector.cpp

gtsam/3rdparty/Eigen/bench/benchmark.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/mtl4/main.cpp

gtsam/3rdparty/Eigen/test/stdlist.cpp

gtsam/3rdparty/Eigen/unsupported/test/polynomialsolver.cpp

gtsam/3rdparty/Eigen/blas/zhbmv.f

gtsam/3rdparty/Eigen/test/cholmod_support.cpp

gtsam/3rdparty/Eigen/src/Geometry/arch/Makefile.am

gtsam/3rdparty/Eigen/src/Core/Swap.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseColEtree.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_ones_int_int.cpp

gtsam/3rdparty/Eigen/lapack/dlapy2.f

gtsam/3rdparty/Eigen/blas/testing/sblat1.f

gtsam/3rdparty/Eigen/cmake/FindSuperLU.cmake

gtsam/3rdparty/Eigen/test/eigen2/eigen2_first_aligned.cpp

gtsam/3rdparty/Eigen/blas/testing/sblat3.f

gtsam/3rdparty/Eigen/unsupported/test/BVH.cpp

gtsam/3rdparty/Eigen/bench/basicbenchmark.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_commainit_01b.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_isOnes.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/ArrayWrapper.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_end_int.cpp

gtsam/3rdparty/Eigen/failtest/diagonal_on_const_type_actually_const.cpp

gtsam/3rdparty/Eigen/src/Geometry/Quaternion.h

gtsam/3rdparty/Eigen/bench/btl/libs/hand_vec/hand_vec_interface.hh

gtsam/3rdparty/Eigen/Eigen

gtsam/3rdparty/CCOLAMD/README.txt

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_Map_rowmajor.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/BLAS/blas_interface_impl.hh

gtsam/3rdparty/Eigen/Eigen/src/Core/SelfAdjointView.h

gtsam/3rdparty/Eigen/Eigen/src/Core/util/ReenableStupidWarnings.h

gtsam/3rdparty/Eigen/Eigen/Sparse

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/CholmodSupport.h

gtsam/3rdparty/Eigen/Eigen/src/SVD/JacobiSVD.h

gtsam/3rdparty/Eigen/blas/testing/cblat2.f

gtsam/3rdparty/Eigen/unsupported/Eigen/FFT

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h

gtsam/3rdparty/Eigen/Eigen/src/Core/Select.h

gtsam/3rdparty/Eigen/doc/snippets/ColPivHouseholderQR_solve.cpp

gtsam/3rdparty/Eigen/unsupported/test/sparse_extra.cpp

gtsam/3rdparty/Eigen/src/Core/Redux.h

gtsam/3rdparty/Eigen/bench/bench_unrolling

gtsam/3rdparty/Eigen/bench/sparse_setter.cpp

gtsam/3rdparty/Eigen/bench/btl/cmake/FindGOTO2.cmake

gtsam/3rdparty/Eigen/unsupported/test/sparse_llt.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_diagonal_int.cpp

gtsam/3rdparty/Eigen/lapack/zlarfg.f

gtsam/3rdparty/Eigen/doc/snippets/tut_arithmetic_transpose_inplace.cpp

gtsam/3rdparty/Eigen/doc/QuickReference.dox

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Splines/SplineFitting.h

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Scaling.h

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_Memory.h

gtsam/3rdparty/Eigen/doc/snippets/PartialRedux_minCoeff.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tridiagonalization_diagonal.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/BLAS/blas_interface.hh

gtsam/3rdparty/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/AngleAxis.h

gtsam/3rdparty/Eigen/blas/dtpmv.f

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Translation.h

gtsam/3rdparty/Eigen/src/Core/Matrix.h

gtsam/3rdparty/Eigen/debug/msvc/eigen.natvis

gtsam/3rdparty/Eigen/unsupported/test/openglsupport.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_operatorNorm.cpp

gtsam/3rdparty/Eigen/src/Core/BandMatrix.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixPower_optimal.cpp

gtsam/3rdparty/Eigen/failtest/diagonal_nonconst_ctor_on_const_xpr.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_commainit_02.cpp

gtsam/3rdparty/Eigen/src/Core/TriangularMatrix.h

gtsam/3rdparty/Eigen/src/Jacobi/CMakeLists.txt

gtsam/3rdparty/Eigen/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/I08_Resizing.dox

gtsam/3rdparty/Eigen/bench/bench_norm.cpp

gtsam/3rdparty/Eigen/src/Cholesky/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/MappedSparseMatrix.h

gtsam/3rdparty/Eigen/unsupported/Eigen/UmfPackSupport

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_set.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_mixingtypes.cpp

gtsam/3rdparty/Eigen/bench/basicbenchmark.h

gtsam/3rdparty/UFconfig/xerbla/xerbla.h

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/ComplexSchur.h

gtsam/3rdparty/Eigen/blas/complex_single.cpp

gtsam/3rdparty/Eigen/lapack/ilaclc.f

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_start.cpp

gtsam/3rdparty/Eigen/doc/snippets/HessenbergDecomposition_packedMatrix.cpp

gtsam/3rdparty/Eigen/blas/srotm.f

gtsam/3rdparty/Eigen/doc/snippets/DenseBase_LinSpaced.cpp

gtsam/3rdparty/Eigen/doc/snippets/HessenbergDecomposition_matrixH.cpp

gtsam/3rdparty/Eigen/Eigen/src/UmfPackSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/.krazy

gtsam/3rdparty/Eigen/test/inverse.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tridiagonalization_decomposeInPlace.cpp

gtsam/3rdparty/Eigen/bench/btl/generic_bench/utils/size_log.hh

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseTriangularView.h

gtsam/3rdparty/Eigen/test/geo_quaternion.cpp

gtsam/3rdparty/Eigen/CTestConfig.cmake

gtsam/3rdparty/Eigen/Eigen/src/Geometry/OrthoMethods.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Minor.h

gtsam/3rdparty/Eigen/doc/A05_PortingFrom2To3.dox

gtsam/3rdparty/Eigen/bench/btl/actions/action_lu_solve.hh

gtsam/3rdparty/Eigen/bench/benchGeometry.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_ata_product.hh

gtsam/3rdparty/Eigen/bench/geometry.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/blitz/blitz_LU_solve_interface.hh

gtsam/3rdparty/Eigen/unsupported/Eigen/src/AutoDiff/CMakeLists.txt

gtsam/3rdparty/Eigen/src/plugins/BlockMethods.h

gtsam/3rdparty/CCOLAMD/Doc/lesser.txt

gtsam/3rdparty/Eigen/src/misc/Solve.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/BVH/KdBVH.h

gtsam/3rdparty/Eigen/src/Core/MatrixBase.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_isDiagonal.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/VectorBlock.h

gtsam/3rdparty/CCOLAMD/MATLAB/csymamd.m

gtsam/3rdparty/Eigen/Eigen/src/Core/NumTraits.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/MINRES.h

gtsam/3rdparty/Eigen/test/eigensolver_generalized_real.cpp

gtsam/3rdparty/Eigen/lapack/zlacgv.f

gtsam/3rdparty/Eigen/test/eigen2/eigen2_swap.cpp

gtsam/3rdparty/Eigen/eigen3.pc.in

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h

gtsam/3rdparty/CCOLAMD/Demo/ccolamd_example.out

gtsam/3rdparty/Eigen/bench/btl/libs/blitz/btl_tiny_blitz.cpp

gtsam/3rdparty/Eigen/doc/snippets/ComplexSchur_matrixT.cpp

gtsam/3rdparty/Eigen/doc/SparseLinearSystems.dox

gtsam/3rdparty/Eigen/doc/examples/QuickStart_example.cpp

gtsam/3rdparty/Eigen/test/swap.cpp

gtsam/3rdparty/Eigen/doc/snippets/AngleAxis_mimic_euler.cpp

gtsam/3rdparty/Eigen/bench/btl/generic_bench/static/bench_static.hh

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_computeInverseAndDetWithCheck.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/SSE/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/spbench/CMakeLists.txt

gtsam/3rdparty/Eigen/test/eigen2/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Core/Replicate.h

gtsam/3rdparty/Eigen/Eigen/src/QR/HouseholderQR_MKL.h

gtsam/3rdparty/Eigen/src/Core/products/CoeffBasedProduct.h

gtsam/3rdparty/Eigen/unsupported/Eigen/SVD

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_isZero.cpp

gtsam/3rdparty/Eigen/doc/C09_TutorialSparse.dox

gtsam/3rdparty/Eigen/unsupported/test/autodiff.cpp

gtsam/3rdparty/Eigen/doc/examples/class_FixedBlock.cpp

gtsam/3rdparty/Eigen/src/Geometry/AngleAxis.h

gtsam/3rdparty/Eigen/test/miscmatrices.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_unalignedassert.cpp

gtsam/3rdparty/Eigen/doc/snippets/LLT_solve.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/SVD.h

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_commainit_01.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_greater.cpp

gtsam/3rdparty/Eigen/lapack/ilaslc.f

gtsam/3rdparty/Eigen/doc/examples/Tutorial_simple_example_dynamic_size.cpp

gtsam/3rdparty/Eigen/src/misc/Makefile.am

gtsam/3rdparty/Eigen/src/Core/EigenBase.h

gtsam/3rdparty/Eigen/doc/examples/tut_matrix_resize_fixed_size.cpp

gtsam/3rdparty/Eigen/bench/btl/cmake/FindACML.cmake

gtsam/3rdparty/Eigen/doc/eigendoxy_footer.html.in

gtsam/3rdparty/Eigen/bench/btl/libs/eigen3/eigen3_interface.hh

gtsam/3rdparty/Eigen/doc/TutorialReductionsVisitorsBroadcasting.dox

gtsam/3rdparty/Eigen/src/Core/CwiseNullaryOp.h

gtsam/3rdparty/Eigen/bench/btl/cmake/FindMTL4.cmake

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/Translation.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_ger.hh

gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularSolverVector.h

gtsam/3rdparty/Eigen/bench/btl/README

gtsam/3rdparty/Eigen/src/Core/arch/SSE/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/examples/DenseBase_template_int_middleCols.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/AltiVec/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_topRightCorner.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseTranspose.h

gtsam/3rdparty/Eigen/Eigen/src/Core/util/NonMPL2.h

gtsam/3rdparty/Eigen/src/Sparse/SparseDot.h

gtsam/3rdparty/Eigen/failtest/block_on_const_type_actually_const_1.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h

gtsam/3rdparty/Eigen/bench/btl/cmake/FindCBLAS.cmake

gtsam/3rdparty/Eigen/src/Geometry/Translation.h

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgExSolveLDLT.cpp

gtsam/3rdparty/Eigen/bench/benchVecAdd.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/Functors.h

gtsam/3rdparty/Eigen/bench/btl/libs/C_BLAS/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_block_int_int_int_int.cpp

gtsam/3rdparty/Eigen/src/Core/MatrixStorage.h

gtsam/3rdparty/Eigen/src/StlSupport/StdDeque.h

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_broadcast_simple.cpp

gtsam/3rdparty/Eigen/bench/btl/generic_bench/init/init_function.hh

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/lmpar.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_all.cpp

gtsam/3rdparty/Eigen/src/Core/arch/SSE/PacketMath.h

gtsam/3rdparty/Eigen/lapack/slapy3.f

gtsam/3rdparty/Eigen/unsupported/test/dgmres.cpp

gtsam/3rdparty/Eigen/blas/sspr.f

gtsam/3rdparty/Eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h

gtsam/3rdparty/Eigen/doc/D09_StructHavingEigenMembers.dox

gtsam/3rdparty/Eigen/test/zerosized.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_asin.cpp

gtsam/3rdparty/Eigen/blas/single.cpp

gtsam/3rdparty/Eigen/doc/examples/TemplateKeyword_simple.cpp

gtsam/3rdparty/UFconfig/UFconfig.c

gtsam/3rdparty/Eigen/test/geo_hyperplane.cpp

gtsam/3rdparty/Eigen/doc/A10_Eigen2SupportModes.dox

gtsam/3rdparty/Eigen/src/Sparse/SparseFuzzy.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_matrix_matrix_product.hh

gtsam/3rdparty/Eigen/Eigen/src/plugins/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/test/matrix_functions.h

gtsam/3rdparty/Eigen/blas/PackedTriangularMatrixVector.h

gtsam/3rdparty/Eigen/test/conservative_resize.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_setOnes.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_isOrthogonal.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCholesky/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Geometry/Homogeneous.h

gtsam/3rdparty/Eigen/test/unalignedcount.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/mtl4/CMakeLists.txt

gtsam/3rdparty/Eigen/src/misc/Image.h

gtsam/3rdparty/Eigen/src/Core/DiagonalProduct.h

gtsam/3rdparty/Eigen/Eigen/src/Cholesky/LLT.h

gtsam/3rdparty/Eigen/doc/TutorialMatrixArithmetic.dox

gtsam/3rdparty/Eigen/LeastSquares

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/arch/Makefile.am

gtsam/3rdparty/Eigen/src/misc/Kernel.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_inverse.cpp

gtsam/3rdparty/Eigen/src/Core/NoAlias.h

gtsam/3rdparty/Eigen/bench/btl/libs/mtl4/mtl4_interface.hh

gtsam/3rdparty/Eigen/Eigen/src/Householder/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/LU/Determinant.h

gtsam/3rdparty/Eigen/lapack/CMakeLists.txt

gtsam/3rdparty/Eigen/demos/opengl/gpuhelper.cpp

gtsam/3rdparty/ccolamd/UFconfig.mk

gtsam/3rdparty/Eigen/test/qtvector.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/eigen3/main_linear.cpp

gtsam/3rdparty/Eigen/src/Core/Block.h

gtsam/3rdparty/Eigen/Eigen/Jacobi

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/examples/tut_arithmetic_add_sub.cpp

gtsam/3rdparty/Eigen/demos/opengl/camera.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/SSE/MathFunctions.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_abs.cpp

gtsam/3rdparty/Eigen/bench/btl/data/perlib_plot_settings.txt

gtsam/3rdparty/Eigen/blas/dspr.f

gtsam/3rdparty/Eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseAbs.cpp

gtsam/3rdparty/Eigen/test/product_symm.cpp

gtsam/3rdparty/Eigen/Eigen/QR

gtsam/3rdparty/Eigen/Eigen/src/Geometry/AlignedBox.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/timers/STL_timer.hh

gtsam/3rdparty/Eigen/src/Sparse/SparseMatrixBase.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/PolynomialSolver1.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixVector_MKL.h

gtsam/3rdparty/Eigen/doc/snippets/PartialRedux_squaredNorm.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/NonLinearOptimization

gtsam/3rdparty/Eigen/bench/btl/libs/f77/saat.f

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/RealQZ.h

gtsam/3rdparty/Eigen/src/Geometry/arch/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/EigenSolver_eigenvalues.cpp

gtsam/3rdparty/Eigen/doc/examples/.krazy

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_extract.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h

gtsam/3rdparty/Eigen/src/Core/DenseCoeffsBase.h

gtsam/3rdparty/Eigen/cmake/FindStandardMathLibrary.cmake

gtsam/3rdparty/Eigen/src/Core/Reverse.h

gtsam/3rdparty/Eigen/bench/btl/libs/f77/dmxm.f

gtsam/3rdparty/Eigen/Core

gtsam/3rdparty/Eigen/doc/I06_TopicEigenExpressionTemplates.dox

gtsam/3rdparty/Eigen/doc/examples/Tutorial_BlockOperations_print_block.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/DiagonalProduct.h

gtsam/3rdparty/Eigen/doc/examples/DenseBase_template_int_middleRows.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_col.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularSolverMatrix.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_zero_int_int.cpp

gtsam/3rdparty/Eigen/blas/chbmv.f

gtsam/3rdparty/Eigen/test/eigen2/eigen2_meta.cpp

gtsam/3rdparty/Eigen/doc/snippets/DenseBase_setLinSpaced.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/RealSchur.h

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ArrayClass_interop_matrix.cpp

gtsam/3rdparty/Eigen/lapack/clarfg.f

gtsam/3rdparty/Eigen/test/geo_homogeneous.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/TriangularMatrix.h

gtsam/3rdparty/Eigen/blas/testing/runblastest.sh

gtsam/3rdparty/Eigen/doc/snippets/IOFormat.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/Swap.h

gtsam/3rdparty/Eigen/doc/snippets/Map_inner_stride.cpp

gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/static/intel_bench_fixed_size.hh

gtsam/3rdparty/Eigen/Eigen/SuperLUSupport

gtsam/3rdparty/Eigen/doc/snippets/Cwise_abs2.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_miscmatrices.cpp

gtsam/3rdparty/Eigen/unsupported/test/alignedvector3.cpp

gtsam/3rdparty/Eigen/doc/B01_Experimental.dox

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_colwise.cpp

gtsam/3rdparty/Eigen/unsupported/test/NumericalDiff.cpp

gtsam/3rdparty/Eigen/CTestCustom.cmake.in

gtsam/3rdparty/Eigen/test/eigen2/eigen2_basicstuff.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/RandomSetter.h

gtsam/3rdparty/Eigen/signature_of_eigen3_matrix_library

gtsam/3rdparty/Eigen/src/Core/util/Macros.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_rightCols_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Cwise.h

gtsam/3rdparty/Eigen/blas/ztpsv.f

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamdtestmex.c

gtsam/3rdparty/Eigen/src/Householder/BlockHouseholder.h

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamdtestmex.m

gtsam/3rdparty/Eigen/doc/eigendoxy_header.html.in

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/AlignedBox.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_bottomLeftCorner.cpp

gtsam/3rdparty/Eigen/src/Core/util/Constants.h

gtsam/3rdparty/Eigen/failtest/map_nonconst_ctor_on_const_ptr_0.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tridiagonalization_compute.cpp

gtsam/3rdparty/CCOLAMD/Doc/ChangeLog

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h

gtsam/3rdparty/Eigen/bench/check_cache_queries.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/eigen2/btl_tiny_eigen2.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_marked.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_adjoint.cpp

gtsam/3rdparty/Eigen/test/smallvectors.cpp

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamd_make.m

gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h

gtsam/3rdparty/Eigen/test/conjugate_gradient.cpp

gtsam/3rdparty/Eigen/doc/TutorialLinearAlgebra.dox

gtsam/3rdparty/Eigen/doc/examples/tut_arithmetic_matrix_mul.cpp

gtsam/3rdparty/Eigen/doc/unsupported_modules.dox

gtsam/3rdparty/Eigen/doc/snippets/Cwise_not_equal.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h

gtsam/3rdparty/Eigen/doc/TutorialAdvancedInitialization.dox

gtsam/3rdparty/Eigen/Eigen/src/Sparse/TriangularSolver.h

gtsam/3rdparty/Eigen/cmake/FindCholmod.cmake

gtsam/3rdparty/Eigen/test/stddeque.cpp

gtsam/3rdparty/Eigen/doc/examples/class_Block.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/chkder.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/bench_parameter.hh

gtsam/3rdparty/Eigen/src/Core/MathFunctions.h

gtsam/3rdparty/Eigen/lapack/slarfg.f

gtsam/3rdparty/Eigen/doc/examples/MatrixBase_cwise_const.cpp

gtsam/3rdparty/Eigen/src/Householder/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/btl/generic_bench/bench.hh

gtsam/3rdparty/Eigen/src/Core/VectorBlock.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/static/static_size_generator.hh

gtsam/3rdparty/Eigen/Eigen/src/Core/util/Memory.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_transpose.cpp

gtsam/3rdparty/Eigen/blas/testing/zblat3.f

gtsam/3rdparty/Eigen/unsupported/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/arch/AltiVec/Makefile.am

gtsam/3rdparty/Eigen/src/SVD/Makefile.am

gtsam/3rdparty/Eigen/src/Core/Flagged.h

gtsam/3rdparty/Eigen/Eigen/src/Core/MapBase.h

gtsam/3rdparty/Eigen/src/LU/Makefile.am

gtsam/3rdparty/Eigen/blas/sspr2.f

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_segment.cpp

gtsam/3rdparty/Eigen/bench/quatmul.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/f77/saxpy.f

gtsam/3rdparty/Eigen/scripts/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/products/GeneralBlockPanelKernel.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Polynomials/CMakeLists.txt

gtsam/3rdparty/Eigen/test/array_reverse.cpp

gtsam/3rdparty/Eigen/src/Core/Map.h

gtsam/3rdparty/Eigen/unsupported/Eigen/AutoDiff

gtsam/3rdparty/Eigen/blas/stpsv.f

gtsam/3rdparty/Eigen/Eigen/src/Core/DenseBase.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_pow.cpp

gtsam/3rdparty/Eigen/doc/snippets/TopicAliasing_mult3.cpp

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseRedux.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Transform.h

gtsam/3rdparty/Eigen/bench/btl/actions/action_matrix_matrix_product_bis.hh

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/All.h

gtsam/3rdparty/Eigen/Eigen/src/QR/HouseholderQR.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/utils/size_lin_log.hh

gtsam/3rdparty/Eigen/unsupported/test/FFT.cpp

gtsam/3rdparty/Eigen/cmake/language_support.cmake

gtsam/3rdparty/Eigen/Eigen/src/LU/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/StdDeque

gtsam/3rdparty/Eigen/Eigen/src/misc/blas.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/btl/libs/C_BLAS/cblas.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_array.cpp

gtsam/3rdparty/Eigen/doc/SparseQuickReference.dox

gtsam/3rdparty/Eigen/doc/snippets/PartialPivLU_solve.cpp

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixPower.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_colwise.cpp

gtsam/3rdparty/Eigen/src/LU/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/examples/class_CwiseUnaryOp_ptrfun.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseProduct.h

gtsam/3rdparty/Eigen/src/Core/products/CMakeLists.txt

gtsam/3rdparty/Eigen/src/Core/util/Meta.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/Splines/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/ztbsv.f

gtsam/3rdparty/Eigen/failtest/transpose_nonconst_ctor_on_const_xpr.cpp

gtsam/3rdparty/Eigen/Eigen/src/Geometry/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Lazy.h

gtsam/3rdparty/Eigen/doc/snippets/PartialRedux_sum.cpp

gtsam/3rdparty/Eigen/cmake/FindGLEW.cmake

gtsam/3rdparty/Eigen/src/LU/Determinant.h

gtsam/3rdparty/Eigen/src/SVD/UpperBidiagonalization.h

gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h

gtsam/3rdparty/Eigen/unsupported/test/svd_common.h

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/Makefile.am

gtsam/3rdparty/Eigen/bench/btl/data/mk_new_gnuplot.sh

gtsam/3rdparty/Eigen/test/commainitializer.cpp

gtsam/3rdparty/Eigen/doc/snippets/Matrix_resize_NoChange_int.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h

gtsam/3rdparty/Eigen/doc/snippets/Tridiagonalization_householderCoefficients.cpp

gtsam/3rdparty/Eigen/doc/snippets/TopicAliasing_block.cpp

gtsam/3rdparty/Eigen/doc/snippets/HouseholderQR_householderQ.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/BVH/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/misc/Kernel.h

gtsam/3rdparty/Eigen/unsupported/Eigen/MPRealSupport

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_topLeftCorner_int_int.cpp

gtsam/3rdparty/Eigen/doc/I07_TopicScalarTypes.dox

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_rowwise.cpp

gtsam/3rdparty/Eigen/doc/TopicEigenExpressionTemplates.dox

gtsam/3rdparty/Eigen/test/eigen2/eigen2_adjoint.cpp

gtsam/3rdparty/Eigen/test/metis_support.cpp

gtsam/3rdparty/Eigen/test/eigen2/testsuite.cmake

gtsam/3rdparty/Eigen/lapack/clarfb.f

gtsam/3rdparty/Eigen/test/mapstaticmethods.cpp

gtsam/3rdparty/Eigen/src/Householder/Householder.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h

gtsam/3rdparty/Eigen/lapack/clarf.f

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLUImpl.h

gtsam/3rdparty/Eigen/bench/btl/libs/f77/f77_interface.hh

gtsam/3rdparty/Eigen/scripts/relicense.py

gtsam/3rdparty/Eigen/src/Eigenvalues/CMakeLists.txt

gtsam/3rdparty/Eigen/cmake/EigenDetermineVSServicePack.cmake

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/Scaling.h

gtsam/3rdparty/Eigen/unsupported/test/matrix_function.cpp

gtsam/3rdparty/Eigen/bench/btl/data/regularize.cxx

gtsam/3rdparty/Eigen/src/LU/arch/Inverse_SSE.h

gtsam/3rdparty/Eigen/bench/btl/libs/BLAS/main.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_cholesky.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_cos.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/MatrixFunctions

gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h

gtsam/3rdparty/Eigen/doc/I15_StorageOrders.dox

gtsam/3rdparty/Eigen/cmake/EigenDetermineOSVersion.cmake

gtsam/3rdparty/Eigen/bench/eig33.cpp

gtsam/3rdparty/Eigen/lapack/sladiv.f

gtsam/3rdparty/Eigen/unsupported/test/levenberg_marquardt.cpp

gtsam/3rdparty/Eigen/Eigen/src/StlSupport/StdDeque.h

gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointProduct.h

gtsam/3rdparty/Eigen/bench/btl/libs/C/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_reverse.cpp

gtsam/3rdparty/Eigen/src/Geometry/Makefile.am

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/CompressedStorage.h

gtsam/3rdparty/Eigen/src/Sparse/MappedSparseMatrix.h

gtsam/3rdparty/Eigen/test/eigen2/gsl_helper.h

gtsam/3rdparty/Eigen/doc/snippets/EigenSolver_EigenSolver_MatrixType.cpp

gtsam/3rdparty/Eigen/src/Core/products/TriangularMatrixVector.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseSelfAdjointView.h

gtsam/3rdparty/Eigen/bench/basicbench.cxxlist

gtsam/3rdparty/Eigen/bench/btl/cmake/FindPackageHandleStandardArgs.cmake

gtsam/3rdparty/Eigen/src/Core/arch/Default/Makefile.am

gtsam/3rdparty/Eigen/unsupported/test/mpreal/mpreal.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_block_int_int.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/CholmodSupport

gtsam/3rdparty/Eigen/doc/I12_ClassHierarchy.dox

gtsam/3rdparty/Eigen/src/Sparse/SparseDenseProduct.h

gtsam/3rdparty/Eigen/test/stdvector.cpp

gtsam/3rdparty/Eigen/unsupported/doc/examples/MatrixFunction.cpp

gtsam/3rdparty/Eigen/Eigen/src/plugins/BlockMethods.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/doneInBDCSVD.txt

gtsam/3rdparty/Eigen/src/LU/arch/CMakeLists.txt

gtsam/3rdparty/Eigen/test/eigen2/eigen2_hyperplane.cpp

gtsam/3rdparty/Eigen/doc/snippets/Tutorial_solve_triangular_inplace.cpp

gtsam/3rdparty/Eigen/unsupported/bench/bench_svd.cpp

gtsam/3rdparty/Eigen/doc/TopicLazyEvaluation.dox

gtsam/3rdparty/Eigen/test/nesting_ops.cpp

gtsam/3rdparty/Eigen/src/StlSupport/CMakeLists.txt

gtsam/3rdparty/Eigen/test/diagonalmatrices.cpp

gtsam/3rdparty/Eigen/test/gsl_helper.h

gtsam/3rdparty/Eigen/bench/btl/libs/tvmet/main.cpp

gtsam/3rdparty/Eigen/Eigen/Eigen

gtsam/3rdparty/Eigen/demos/opengl/quaternion_demo.h

gtsam/3rdparty/Eigen/.hgeol

gtsam/3rdparty/Eigen/doc/TutorialMatrixClass.dox

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h

gtsam/3rdparty/Eigen/doc/snippets/FullPivLU_image.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseView.h

gtsam/3rdparty/Eigen/src/Eigen2Support/VectorBlock.h

gtsam/3rdparty/Eigen/demos/opengl/trackball.cpp

gtsam/3rdparty/Eigen/test/qr_colpivoting.cpp

gtsam/3rdparty/Eigen/bench/sparse_transpose.cpp

gtsam/3rdparty/Eigen/doc/snippets/Matrix_setZero_int_int.cpp

gtsam/3rdparty/Eigen/src/QR/ColPivHouseholderQR.h

gtsam/3rdparty/Eigen/bench/bench_gemm.cpp

gtsam/3rdparty/Eigen/Eigen/src/QR/ColPivHouseholderQR_MKL.h

gtsam/3rdparty/Eigen/unsupported/doc/examples/FFT.cpp

gtsam/3rdparty/Eigen/lapack/zlarf.f

gtsam/3rdparty/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h

gtsam/3rdparty/CCOLAMD/Demo/my_ccolamd_l_example.out

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cast.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/EigenSolver.h

gtsam/3rdparty/ccolamd/ccolamd_Makefile.mk

gtsam/3rdparty/Eigen/doc/snippets/Jacobi_makeGivens.cpp

gtsam/3rdparty/Eigen/bench/btl/libs/STL_algo/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_sum.cpp

gtsam/3rdparty/Eigen/lapack/complex_single.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h

gtsam/3rdparty/Eigen/doc/eigendoxy_tabs.css

gtsam/3rdparty/Eigen/bench/benchFFT.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/DenseStorage.h

gtsam/3rdparty/Eigen/src/Sparse/SparseSparseProduct.h

gtsam/3rdparty/Eigen/test/eigen2/sparse.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseMatrixBase.h

gtsam/3rdparty/Eigen/Eigen/src/Core/GlobalFunctions.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/SuperLUSupport.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_commainitializer.cpp

gtsam/3rdparty/Eigen/test/nomalloc.cpp

gtsam/3rdparty/UFconfig/UFconfig.mk

gtsam/3rdparty/Eigen/test/array_replicate.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Hyperplane.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Memory.h

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU.h

gtsam/3rdparty/Eigen/blas/lsame.f

gtsam/3rdparty/Eigen/doc/D11_UnalignedArrayAssert.dox

gtsam/3rdparty/Eigen/bench/sparse_randomsetter.cpp

gtsam/3rdparty/Eigen/doc/C05_TutorialAdvancedInitialization.dox

gtsam/3rdparty/Eigen/doc/FunctionsTakingEigenTypes.dox

gtsam/3rdparty/Eigen/doc/snippets/Cwise_minus.cpp

gtsam/3rdparty/Eigen/lapack/dlarf.f

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_bottomLeftCorner_int_int.cpp

gtsam/3rdparty/Eigen/doc/snippets/Cwise_cube.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/RealSchur_MKL.h

gtsam/3rdparty/Eigen/src/Cholesky/LLT.h

gtsam/3rdparty/Eigen/doc/snippets/TopicAliasing_cwise.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/PermutationMatrix.h

gtsam/3rdparty/Eigen/Eigen/src/Sparse/SparseView.h

gtsam/3rdparty/Eigen/src/Core/util/StaticAssert.h

gtsam/3rdparty/Eigen/Eigen/src/LU/arch/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Block.h

gtsam/3rdparty/Eigen/test/qr.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Macros.h

gtsam/3rdparty/Eigen/Eigen/Householder

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_compute_MatrixType.cpp

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/CwiseOperators.h

gtsam/3rdparty/Eigen/test/schur_complex.cpp

gtsam/3rdparty/Eigen/src/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/WrongStackAlignment.dox

gtsam/3rdparty/Eigen/bench/btl/data/action_settings.txt

gtsam/3rdparty/Eigen/unsupported/Eigen/BVH

gtsam/3rdparty/Eigen/test/eigen2/eigen2_packetmath.cpp

gtsam/3rdparty/Eigen/bench/spbench/spbenchstyle.h

gtsam/3rdparty/Eigen/bench/benchCholesky.cpp

gtsam/3rdparty/Eigen/blas/level1_impl.h

gtsam/3rdparty/Eigen/doc/snippets/tut_arithmetic_transpose_aliasing.cpp

gtsam/3rdparty/Eigen/doc/tutorial.cpp

gtsam/3rdparty/Eigen/Eigen/src/Geometry/arch/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_template_int_int_topRightCorner_int_int.cpp

gtsam/3rdparty/Eigen/doc/C00_QuickStartGuide.dox

gtsam/3rdparty/Eigen/doc/snippets/SelfAdjointEigenSolver_eigenvalues.cpp

gtsam/3rdparty/Eigen/src/Sparse/TriangularSolver.h

gtsam/3rdparty/ccolamd/README.txt

gtsam/3rdparty/Eigen/doc/examples/Tutorial_ReductionsVisitorsBroadcasting_rowwise.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h

gtsam/3rdparty/Eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h

gtsam/3rdparty/Eigen/Sparse

gtsam/3rdparty/Eigen/Eigen/src/LU/Inverse.h

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgSetThreshold.cpp

gtsam/3rdparty/Eigen/test/bicgstab.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/arch/NEON/PacketMath.h

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/BDCSVD.h

gtsam/3rdparty/Eigen/bench/btl/data/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/stpmv.f

gtsam/3rdparty/Eigen/blas/testing/dblat3.f

gtsam/3rdparty/Eigen/test/real_qz.cpp

gtsam/3rdparty/Eigen/src/Sparse/SparseSelfAdjointView.h

gtsam/3rdparty/Eigen/doc/examples/TemplateKeyword_flexible.cpp

gtsam/3rdparty/Eigen/src/Core/Assign.h

gtsam/3rdparty/Eigen/test/product.h

gtsam/3rdparty/Eigen/StdDeque

gtsam/3rdparty/Eigen/src/Eigen2Support/Cwise.h

gtsam/3rdparty/Eigen/test/eigen2/eigen2_sparse_solvers.cpp

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_noalias.cpp

gtsam/3rdparty/Eigen/src/Eigen2Support/Geometry/Transform.h

gtsam/3rdparty/Eigen/doc/snippets/compile_snippet.cpp.in

gtsam/3rdparty/Eigen/bench/benchmarkSlice.cpp

gtsam/3rdparty/Eigen/src/Core/CwiseUnaryOp.h

gtsam/3rdparty/Eigen/src/Sparse/CompressedStorage.h

gtsam/3rdparty/Eigen/bench/btl/libs/ublas/main.cpp

gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h

gtsam/3rdparty/Eigen/Eigen/SparseLU

gtsam/3rdparty/Eigen/test/mixingtypes.cpp

gtsam/3rdparty/Eigen/blas/stbmv.f

gtsam/3rdparty/Eigen/Eigen/src/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/btl/data/smooth_all.sh

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_asDiagonal.cpp

gtsam/3rdparty/Eigen/doc/Doxyfile.in

gtsam/3rdparty/Eigen/src/SVD/CMakeLists.txt

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseDot.h

gtsam/3rdparty/Eigen/doc/examples/class_CwiseBinaryOp.cpp

gtsam/3rdparty/Eigen/scripts/cdashtesting.cmake.in

gtsam/3rdparty/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h

gtsam/3rdparty/Eigen/test/eigen2/runtest.sh

gtsam/3rdparty/Eigen/test/ref.cpp

gtsam/3rdparty/Eigen/doc/I00_CustomizingEigen.dox

gtsam/3rdparty/Eigen/COPYING.GPL

gtsam/3rdparty/Eigen/Eigen/src/Core/Visitor.h

gtsam/3rdparty/Eigen/Eigen/src/Core/util/StaticAssert.h

gtsam/3rdparty/Eigen/doc/examples/TutorialLinAlgExSolveColPivHouseholderQR.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/Splines

gtsam/3rdparty/Eigen/Eigen/StdList

gtsam/3rdparty/Eigen/lapack/dlarfg.f

gtsam/3rdparty/Eigen/Eigen/UmfPackSupport

gtsam/3rdparty/CCOLAMD/MATLAB/ccolamd.m

gtsam/3rdparty/Eigen/Eigen/src/Core/Flagged.h

gtsam/3rdparty/Eigen/doc/special_examples/Tutorial_sparse_example_details.cpp

gtsam/3rdparty/Eigen/unsupported/Eigen/Skyline

gtsam/3rdparty/Eigen/Eigen/src/Sparse/CompressedStorage.h

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseMatrix.h

gtsam/3rdparty/Eigen/Eigen/src/Core/GenericPacketMath.h

gtsam/3rdparty/Eigen/src/StlSupport/Makefile.am

gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseFuzzy.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/init/init_matrix.hh

gtsam/3rdparty/Eigen/COPYING.MINPACK

gtsam/3rdparty/Eigen/test/eigen2/eigen2_submatrices.cpp

gtsam/3rdparty/Eigen/doc/C10_TutorialMapClass.dox

gtsam/3rdparty/Eigen/doc/snippets/Cwise_square.cpp

gtsam/3rdparty/Eigen/Eigen/SparseCholesky

gtsam/3rdparty/Eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h

gtsam/3rdparty/Eigen/blas/testing/zblat1.f

gtsam/3rdparty/Eigen/.hgtags

gtsam/3rdparty/Eigen/test/eigen2/eigen2_triangular.cpp

gtsam/3rdparty/Eigen/doc/snippets/PartialRedux_maxCoeff.cpp

gtsam/3rdparty/Eigen/doc/StructHavingEigenMembers.dox

gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/CMakeLists.txt

gtsam/3rdparty/Eigen/doc/I03_InsideEigenExample.dox

gtsam/3rdparty/Eigen/bench/btl/libs/STL_algo/main.cpp

gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h

gtsam/3rdparty/Eigen/bench/btl/cmake/FindTvmet.cmake

gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h

gtsam/3rdparty/Eigen/bench/btl/generic_bench/btl.hh

gtsam/3rdparty/Eigen/unsupported/Eigen/CMakeLists.txt

gtsam/3rdparty/Eigen/bench/btl/libs/C/main.cpp

gtsam/3rdparty/Eigen/cmake/FindLAPACK.cmake

gtsam/3rdparty/Eigen/Eigen/src/Cholesky/CMakeLists.txt

gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/SVDBase.h

gtsam/3rdparty/Eigen/src/Eigen2Support/LeastSquares.h

gtsam/3rdparty/Eigen/Eigen/src/StlSupport/StdList.h

gtsam/3rdparty/Eigen/unsupported/test/polynomialutils.cpp

gtsam/3rdparty/Eigen/demos/mix_eigen_and_c/example.c

gtsam/3rdparty/Eigen/doc/I11_Aliasing.dox

gtsam/3rdparty/Eigen/bench/quat_slerp.cpp

gtsam/3rdparty/Eigen/test/eigen2/eigen2_newstdvector.cpp

gtsam/3rdparty/Eigen/blas/sspmv.f

gtsam/3rdparty/Eigen/lapack/zlarft.f

gtsam/3rdparty/Eigen/bench/btl/data/gnuplot_common_settings.hh

gtsam/3rdparty/Eigen/bench/btl/libs/f77/main.cpp

gtsam/3rdparty/Eigen/bench/sparse_trisolver.cpp

gtsam/3rdparty/Eigen/src/Core/arch/CMakeLists.txt

gtsam/3rdparty/Eigen/blas/level2_real_impl.h

gtsam/3rdparty/Eigen/doc/snippets/Cwise_less.cpp

gtsam/3rdparty/Eigen/QtAlignedMalloc

gtsam/3rdparty/Eigen/doc/I14_PreprocessorDirectives.dox

gtsam/3rdparty/Eigen/blas/testing/zblat3.dat

gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h

gtsam/3rdparty/Eigen/doc/snippets/MatrixBase_cwiseMin.cpp

From 3b4fd765ecef46b938050d2bbf1216d1bbd592ba Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 23 Dec 2013 14:41:49 -0500 Subject: [PATCH 04/15] Merged wrap improvements back from develop branch --- wrap/CMakeLists.txt | 14 +++++++++----- wrap/Module.cpp | 11 ++++++++++- wrap/matlab.h | 1 + wrap/tests/testWrap.cpp | 2 +- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/wrap/CMakeLists.txt b/wrap/CMakeLists.txt index 399600b7e..28f8bea48 100644 --- a/wrap/CMakeLists.txt +++ b/wrap/CMakeLists.txt @@ -2,6 +2,12 @@ set(WRAP_BOOST_LIBRARIES ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_THREAD_LIBRARY} ${Boost_REGEX_LIBRARY}) +# Allow for disabling serialization to handle errors related to Clang's linker +option(GTSAM_WRAP_SERIALIZATION "If enabled, allows for wrapped objects to be saved via boost.serialization" ON) +if (NOT GTSAM_WRAP_SERIALIZATION) + add_definitions(-DWRAP_DISABLE_SERIALIZE) +endif() + # Build the executable itself file(GLOB wrap_srcs "*.cpp") file(GLOB wrap_headers "*.h") @@ -17,11 +23,9 @@ file(RELATIVE_PATH relative_path "${PROJECT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE set_target_properties(wrap_lib wrap PROPERTIES FOLDER "${relative_path}") # Install wrap binary and export target -if (GTSAM_INSTALL_WRAP) - install(TARGETS wrap EXPORT GTSAM-exports DESTINATION bin) - list(APPEND GTSAM_EXPORTED_TARGETS wrap) - set(GTSAM_EXPORTED_TARGETS "${GTSAM_EXPORTED_TARGETS}" PARENT_SCOPE) -endif(GTSAM_INSTALL_WRAP) +install(TARGETS wrap EXPORT GTSAM-exports DESTINATION bin) +list(APPEND GTSAM_EXPORTED_TARGETS wrap) +set(GTSAM_EXPORTED_TARGETS "${GTSAM_EXPORTED_TARGETS}" PARENT_SCOPE) # Install matlab header install(FILES matlab.h DESTINATION include/wrap) diff --git a/wrap/Module.cpp b/wrap/Module.cpp index a31f57e79..3cfdf2903 100644 --- a/wrap/Module.cpp +++ b/wrap/Module.cpp @@ -20,7 +20,7 @@ #include "Module.h" #include "FileWriter.h" #include "TypeAttributesTable.h" -#include "utilities.h" +#include "utilities.h" //#define BOOST_SPIRIT_DEBUG #include "spirit_actors.h" @@ -382,14 +382,22 @@ void Module::parseMarkup(const std::string& data) { BOOST_FOREACH(Class& cls, classes) { Class::Methods::iterator serializable_it = cls.methods.find("serializable"); if (serializable_it != cls.methods.end()) { +#ifndef WRAP_DISABLE_SERIALIZE cls.isSerializable = true; +#else + cout << "Ignoring serializable() flag in class " << cls.name << endl; +#endif cls.methods.erase(serializable_it); } Class::Methods::iterator serialize_it = cls.methods.find("serialize"); if (serialize_it != cls.methods.end()) { +#ifndef WRAP_DISABLE_SERIALIZE cls.isSerializable = true; cls.hasSerialization= true; +#else + cout << "Ignoring serialize() flag in class " << cls.name << endl; +#endif cls.methods.erase(serialize_it); } } @@ -449,6 +457,7 @@ void Module::generateIncludes(FileWriter& file) const { file.oss << "#include <" << *it << ">" << endl; file.oss << "\n"; } + /* ************************************************************************* */ void Module::matlab_code(const string& toolboxPath, const string& headerPath) const { diff --git a/wrap/matlab.h b/wrap/matlab.h index 30e759c83..c84d6fdec 100644 --- a/wrap/matlab.h +++ b/wrap/matlab.h @@ -225,6 +225,7 @@ mxArray* wrap(const gtsam::Matrix& A) { template T unwrap(const mxArray* array) { error("wrap internal error: attempted unwrap of invalid type"); + return T(); } // specialization to string diff --git a/wrap/tests/testWrap.cpp b/wrap/tests/testWrap.cpp index 461f00405..8bf2c1412 100644 --- a/wrap/tests/testWrap.cpp +++ b/wrap/tests/testWrap.cpp @@ -58,7 +58,7 @@ TEST( wrap, ArgumentList ) { } /* ************************************************************************* */ -TEST_UNSAFE( wrap, check_exception ) { +TEST( wrap, check_exception ) { THROWS_EXCEPTION(Module("/notarealpath", "geometry",enable_verbose)); CHECK_EXCEPTION(Module("/alsonotarealpath", "geometry",enable_verbose), CantOpenFile); From ce7cf524ea7f0ad5be990d4ed8710756363c8acf Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 23 Dec 2013 19:36:24 -0500 Subject: [PATCH 05/15] Initial unit test --- .cproject | 356 +++++++++--------- gtsam/slam/EssentialMatrixFactor.h | 6 + .../slam/tests/testEssentialMatrixFactor.cpp | 89 ++++- 3 files changed, 266 insertions(+), 185 deletions(-) diff --git a/.cproject b/.cproject index 790f70daa..21ab6965c 100644 --- a/.cproject +++ b/.cproject @@ -365,6 +365,38 @@ true true + + make + -j2 + all + true + true + true + + + make + -j2 + testNonlinearConstraint.run + true + true + true + + + make + -j2 + testLieConfig.run + true + true + true + + + make + -j2 + testConstraintOptimizer.run + true + true + true + make -j5 @@ -445,38 +477,6 @@ true true - - make - -j2 - all - true - true - true - - - make - -j2 - testNonlinearConstraint.run - true - true - true - - - make - -j2 - testLieConfig.run - true - true - true - - - make - -j2 - testConstraintOptimizer.run - true - true - true - make -j2 @@ -551,7 +551,6 @@ make - tests/testBayesTree.run true false @@ -559,7 +558,6 @@ make - testBinaryBayesNet.run true false @@ -607,7 +605,6 @@ make - testSymbolicBayesNet.run true false @@ -615,7 +612,6 @@ make - tests/testSymbolicFactor.run true false @@ -623,7 +619,6 @@ make - testSymbolicFactorGraph.run true false @@ -639,12 +634,19 @@ make - tests/testBayesTree true false true + + make + -j2 + testVSLAMGraph + true + true + true + make -j2 @@ -727,6 +729,7 @@ make + testSimulated2DOriented.run true false @@ -766,6 +769,7 @@ make + testSimulated2D.run true false @@ -773,6 +777,7 @@ make + testSimulated3D.run true false @@ -786,14 +791,6 @@ true true - - make - -j2 - testVSLAMGraph - true - true - true - make -j2 @@ -833,21 +830,6 @@ false true - - make - -j2 - check - true - true - true - - - make - tests/testGaussianISAM2 - true - false - true - make -j5 @@ -986,7 +968,6 @@ make - testGraph.run true false @@ -994,7 +975,6 @@ make - testJunctionTree.run true false @@ -1002,7 +982,6 @@ make - testSymbolicBayesNetB.run true false @@ -1064,6 +1043,22 @@ true true + + make + -j2 + check + true + true + true + + + make + + tests/testGaussianISAM2 + true + false + true + make -j2 @@ -1424,6 +1419,22 @@ true true + + make + -j5 + testEssentialMatrixFactor.run + true + true + true + + + make + -j2 + testGaussianFactor.run + true + true + true + make -j2 @@ -1504,10 +1515,66 @@ true true - + make -j2 - testGaussianFactor.run + check + true + true + true + + + make + -j2 + testClusterTree.run + true + true + true + + + make + -j2 + testJunctionTree.run + true + true + true + + + make + -j2 + tests/testEliminationTree.run + true + true + true + + + make + -j2 + tests/testSymbolicFactor.run + true + true + true + + + make + -j2 + tests/testVariableSlots.run + true + true + true + + + make + -j2 + tests/testConditional.run + true + true + true + + + make + -j2 + tests/testSymbolicFactorGraph.run true true true @@ -1608,86 +1675,6 @@ true true - - make - -j2 - check - true - true - true - - - make - -j2 - testClusterTree.run - true - true - true - - - make - -j2 - testJunctionTree.run - true - true - true - - - make - -j2 - tests/testEliminationTree.run - true - true - true - - - make - -j2 - tests/testSymbolicFactor.run - true - true - true - - - make - -j2 - tests/testVariableSlots.run - true - true - true - - - make - -j2 - tests/testConditional.run - true - true - true - - - make - -j2 - tests/testSymbolicFactorGraph.run - true - true - true - - - make - -j2 - all - true - true - true - - - make - -j2 - clean - true - true - true - make -j5 @@ -1752,6 +1739,22 @@ true true + + make + -j2 + all + true + true + true + + + make + -j2 + clean + true + true + true + make -j2 @@ -2185,7 +2188,6 @@ cpack - -G DEB true false @@ -2193,7 +2195,6 @@ cpack - -G RPM true false @@ -2201,7 +2202,6 @@ cpack - -G TGZ true false @@ -2209,7 +2209,6 @@ cpack - --config CPackSourceConfig.cmake true false @@ -2383,30 +2382,6 @@ true true - - make - -j2 - check - true - true - true - - - make - -j2 - tests/testSPQRUtil.run - true - true - true - - - make - -j2 - clean - true - true - true - make -j5 @@ -2447,18 +2422,26 @@ true true - + make -j2 - tests/testPose2.run + check true true true - + make -j2 - tests/testPose3.run + tests/testSPQRUtil.run + true + true + true + + + make + -j2 + clean true true true @@ -2553,12 +2536,27 @@ make - testErrors.run true false true + + make + -j2 + tests/testPose2.run + true + true + true + + + make + -j2 + tests/testPose3.run + true + true + true + diff --git a/gtsam/slam/EssentialMatrixFactor.h b/gtsam/slam/EssentialMatrixFactor.h index d3f560b32..7ac992d79 100644 --- a/gtsam/slam/EssentialMatrixFactor.h +++ b/gtsam/slam/EssentialMatrixFactor.h @@ -22,6 +22,7 @@ class EssentialMatrixFactor: public NoiseModelFactor1 { Vector vA_, vB_; ///< Homogeneous versions typedef NoiseModelFactor1 Base; + typedef EssentialMatrixFactor This; public: @@ -33,6 +34,11 @@ public: vB_(EssentialMatrix::Homogeneous(pB)) { } + /// @return a deep copy of this factor + virtual gtsam::NonlinearFactor::shared_ptr clone() const { + return boost::static_pointer_cast( + gtsam::NonlinearFactor::shared_ptr(new This(*this))); } + /// print virtual void print(const std::string& s = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index 34a26adbe..e7cbb0ada 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -6,6 +6,53 @@ */ #include +#include + +namespace gtsam { + +/** + * Binary factor that optimizes for E and inverse depth: assumes measurement + * in image 1 is perfect, and returns re-projection error in image 2 + */ +class EssentialMatrixFactor2: public NoiseModelFactor2 { + + Point2 pA_, pB_; ///< Measurements in image A and B + + typedef NoiseModelFactor2 Base; + +public: + + /// Constructor + EssentialMatrixFactor2(Key key1, Key key2, const Point2& pA, const Point2& pB, + const SharedNoiseModel& model) : + Base(model, key1, key2), pA_(pA), pB_(pB) { + } + + /// print + virtual void print(const std::string& s = "", + const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { + Base::print(s); + std::cout << " EssentialMatrixFactor2 with measurements\n (" + << pA_.vector().transpose() << ")' and (" << pB_.vector().transpose() + << ")'" << std::endl; + } + + /// vector of errors returns 1D vector + Vector evaluateError(const EssentialMatrix& E, const LieScalar& d, + boost::optional H1 = boost::none, boost::optional H2 = + boost::none) const { + if (H1) + *H1 = zeros(2, 5); + if (H2) + *H2 = zeros(2, 1); + return (Vector(2) << 0,0); + } + +}; + +} // gtsam + #include #include #include @@ -22,7 +69,7 @@ const string filename = findExampleDataFile("5pointExample1.txt"); SfM_data data; bool readOK = readBAL(filename, data); Rot3 aRb = data.cameras[1].pose().rotation(); -Point3 aTb = data.cameras[1].pose().translation(); +Point3 aTb = data.cameras[1].pose().translation(); Point2 pA(size_t i) { return data.tracks[i].measurements[0].second; @@ -77,18 +124,18 @@ TEST (EssentialMatrixFactor, factor) { // Check evaluation Vector expected(1); expected << 0; - Matrix HActual; - Vector actual = factor.evaluateError(trueE, HActual); + Matrix Hactual; + Vector actual = factor.evaluateError(trueE, Hactual); EXPECT(assert_equal(expected, actual, 1e-7)); // Use numerical derivatives to calculate the expected Jacobian - Matrix HExpected; - HExpected = numericalDerivative11( + Matrix Hexpected; + Hexpected = numericalDerivative11( boost::bind(&EssentialMatrixFactor::evaluateError, &factor, _1, boost::none), trueE); // Verify the Jacobian is correct - EXPECT(assert_equal(HExpected, HActual, 1e-8)); + EXPECT(assert_equal(Hexpected, Hactual, 1e-8)); } } @@ -138,6 +185,36 @@ TEST (EssentialMatrixFactor, fromConstraints) { } +//************************************************************************* +TEST (EssentialMatrixFactor2, factor) { + EssentialMatrix trueE(aRb, aTb); + LieScalar d(5); + noiseModel::Unit::shared_ptr model = noiseModel::Unit::Create(1); + + for (size_t i = 0; i < 5; i++) { + EssentialMatrixFactor2 factor(100, i, pA(i), pB(i), model); + + // Check evaluation + Vector expected(1); + expected << 0; + Matrix Hactual1, Hactual2; + Vector actual = factor.evaluateError(trueE, d, Hactual1, Hactual2); + EXPECT(assert_equal(expected, actual, 1e-7)); + + // Use numerical derivatives to calculate the expected Jacobian + Matrix Hexpected1, Hexpected2; + boost::function f = + boost::bind(&EssentialMatrixFactor2::evaluateError, &factor, _1, _2, + boost::none, boost::none); + Hexpected1 = numericalDerivative21(f, trueE, d); + Hexpected2 = numericalDerivative22(f, trueE, d); + + // Verify the Jacobian is correct + EXPECT(assert_equal(Hexpected1, Hactual1, 1e-8)); + EXPECT(assert_equal(Hexpected2, Hactual2, 1e-8)); + } +} + /* ************************************************************************* */ int main() { TestResult tr; From 92c1398cd2e5c33dfd026a51e884c669e70e0d8c Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Mon, 23 Dec 2013 22:29:09 -0500 Subject: [PATCH 06/15] Checked evaluation and calculation --- .../slam/tests/testEssentialMatrixFactor.cpp | 79 +++++++++++++------ 1 file changed, 57 insertions(+), 22 deletions(-) diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index e7cbb0ada..be96af06c 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -6,27 +6,30 @@ */ #include +#include #include namespace gtsam { /** * Binary factor that optimizes for E and inverse depth: assumes measurement - * in image 1 is perfect, and returns re-projection error in image 2 + * in image 2 is perfect, and returns re-projection error in image 1 */ class EssentialMatrixFactor2: public NoiseModelFactor2 { Point2 pA_, pB_; ///< Measurements in image A and B + Cal3_S2 K_; ///< Calibration typedef NoiseModelFactor2 Base; + typedef EssentialMatrixFactor2 This; public: /// Constructor EssentialMatrixFactor2(Key key1, Key key2, const Point2& pA, const Point2& pB, - const SharedNoiseModel& model) : - Base(model, key1, key2), pA_(pA), pB_(pB) { + const Cal3_S2& K, const SharedNoiseModel& model) : + Base(model, key1, key2), pA_(pA), pB_(pB), K_(K) { } /// print @@ -42,16 +45,32 @@ public: Vector evaluateError(const EssentialMatrix& E, const LieScalar& d, boost::optional H1 = boost::none, boost::optional H2 = boost::none) const { + // We have point x,y in image 1 + // Given a depth Z, the corresponding 3D point P1 = Z*(x,y,1) = (x,y,1)/d + // We then convert to first camera by 2P = 1R2Õ*(P1-1T2) + // The homogeneous coordinates of can be written as + // 2R1*(P1-1T2) == 2R1*d*(P1-1T2) == 2R1*((x,y,1)-d*1T2) + // Note that this is just a homography for d==0 + Point3 dP1(pA_.x(), pA_.y(), 1); + Point3 P2 = E.rotation().unrotate(dP1 - d * E.direction().point3()); + + // Project to normalized image coordinates, then uncalibrate + const Point2 pn = SimpleCamera::project_to_camera(P2); + const Point2 pi = K_.uncalibrate(pn); + Point2 reprojectionError(pi - pB_); + if (H1) *H1 = zeros(2, 5); if (H2) *H2 = zeros(2, 1); - return (Vector(2) << 0,0); + + return reprojectionError.vector(); } }; -} // gtsam +} +// gtsam #include #include @@ -187,31 +206,47 @@ TEST (EssentialMatrixFactor, fromConstraints) { //************************************************************************* TEST (EssentialMatrixFactor2, factor) { - EssentialMatrix trueE(aRb, aTb); - LieScalar d(5); + EssentialMatrix E(aRb, aTb); noiseModel::Unit::shared_ptr model = noiseModel::Unit::Create(1); for (size_t i = 0; i < 5; i++) { - EssentialMatrixFactor2 factor(100, i, pA(i), pB(i), model); + Cal3_S2 K; + EssentialMatrixFactor2 factor(100, i, pA(i), pB(i), K, model); // Check evaluation - Vector expected(1); - expected << 0; + Point3 P1 = data.tracks[i].p, P2 = E.transform_to(P1); + LieScalar d(1.0 / P1.z()); + const Point2 pn = SimpleCamera::project_to_camera(P2); + const Point2 pi = K.uncalibrate(pn); + Point2 reprojectionError(pi - pB(i)); + Vector expected = reprojectionError.vector(); + + { + // Check calculations + Point3 dP1(pA(i).x(), pA(i).y(), 1); + EXPECT_DOUBLES_EQUAL(pA(i).x(), P1.x()/P1.z(), 1e-8); + EXPECT_DOUBLES_EQUAL(pA(i).y(), P1.y()/P1.z(), 1e-8); + EXPECT(assert_equal(P1,dP1/d)); + Point3 otherP2 = E.rotation().unrotate( + d * P1 - d * E.direction().point3()); + EXPECT(assert_equal(P2,otherP2/d)); + } + Matrix Hactual1, Hactual2; - Vector actual = factor.evaluateError(trueE, d, Hactual1, Hactual2); + Vector actual = factor.evaluateError(E, d, Hactual1, Hactual2); EXPECT(assert_equal(expected, actual, 1e-7)); - // Use numerical derivatives to calculate the expected Jacobian - Matrix Hexpected1, Hexpected2; - boost::function f = - boost::bind(&EssentialMatrixFactor2::evaluateError, &factor, _1, _2, - boost::none, boost::none); - Hexpected1 = numericalDerivative21(f, trueE, d); - Hexpected2 = numericalDerivative22(f, trueE, d); - - // Verify the Jacobian is correct - EXPECT(assert_equal(Hexpected1, Hactual1, 1e-8)); - EXPECT(assert_equal(Hexpected2, Hactual2, 1e-8)); +// // Use numerical derivatives to calculate the expected Jacobian +// Matrix Hexpected1, Hexpected2; +// boost::function f = +// boost::bind(&EssentialMatrixFactor2::evaluateError, &factor, _1, _2, +// boost::none, boost::none); +// Hexpected1 = numericalDerivative21(f, E, d); +// Hexpected2 = numericalDerivative22(f, E, d); +// +// // Verify the Jacobian is correct +// EXPECT(assert_equal(Hexpected1, Hactual1, 1e-8)); +// EXPECT(assert_equal(Hexpected2, Hactual2, 1e-8)); } } From 44d03e638ecfca12f6575500800df75e9f1d1fe4 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 00:19:08 -0500 Subject: [PATCH 07/15] Tedious derivatives, but right from the start! --- .../slam/tests/testEssentialMatrixFactor.cpp | 69 +++++++++++++------ 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index be96af06c..86284de50 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -43,8 +43,9 @@ public: /// vector of errors returns 1D vector Vector evaluateError(const EssentialMatrix& E, const LieScalar& d, - boost::optional H1 = boost::none, boost::optional H2 = + boost::optional DE = boost::none, boost::optional Dd = boost::none) const { + // We have point x,y in image 1 // Given a depth Z, the corresponding 3D point P1 = Z*(x,y,1) = (x,y,1)/d // We then convert to first camera by 2P = 1R2Õ*(P1-1T2) @@ -52,18 +53,46 @@ public: // 2R1*(P1-1T2) == 2R1*d*(P1-1T2) == 2R1*((x,y,1)-d*1T2) // Note that this is just a homography for d==0 Point3 dP1(pA_.x(), pA_.y(), 1); - Point3 P2 = E.rotation().unrotate(dP1 - d * E.direction().point3()); // Project to normalized image coordinates, then uncalibrate - const Point2 pn = SimpleCamera::project_to_camera(P2); - const Point2 pi = K_.uncalibrate(pn); - Point2 reprojectionError(pi - pB_); + Point2 pi; + if (!DE && !Dd) { + Point3 d1T2 = d * E.direction().point3(); + Point3 dP2 = E.rotation().unrotate(dP1 - d1T2); + Point2 pn = SimpleCamera::project_to_camera(dP2); + pi = K_.uncalibrate(pn); + } else { + // TODO, clean up this expensive mess w Mathematica + Matrix D_1T2_dir; // 3*2 + Point3 _1T2 = E.direction().point3(D_1T2_dir); - if (H1) - *H1 = zeros(2, 5); - if (H2) - *H2 = zeros(2, 1); + Matrix Dd1T2_dir = d * D_1T2_dir; // 3*2 + Matrix Dd1T2_d = _1T2.vector(); // 3*1 + Point3 d1T2 = d * _1T2; + Matrix Dpoint_dir = -Dd1T2_dir; // 3*2 + Matrix Dpoint_d = -Dd1T2_d; // 3*1 + Point3 point = dP1 - d1T2; + + Matrix DdP2_rot, DP2_point; + Point3 dP2 = E.rotation().unrotate(point, DdP2_rot, DP2_point); + Matrix DdP2_E(3, 5); + DdP2_E << DdP2_rot, DP2_point * Dpoint_dir; // (3*3), (3*3) * (3*2) + Matrix DdP2_d = DP2_point * Dpoint_d; // (3*3) * (3*1) + + Matrix Dpn_dP2; // 2*3 + Point2 pn = SimpleCamera::project_to_camera(dP2, Dpn_dP2); + Matrix Dpn_E = Dpn_dP2 * DdP2_E; // (2*3) * (3*5) + Matrix Dpn_d = Dpn_dP2 * DdP2_d; // (2*3) * (3*1) + + Matrix Dpi_pn; // 2*2 + pi = K_.uncalibrate(pn, boost::none, Dpi_pn); + if (DE) + *DE = Dpi_pn * Dpn_E; // (2*2) * (2*5) + if (Dd) + *Dd = Dpi_pn * Dpn_d; // (2*2) * (2*1) + } + Point2 reprojectionError = pi - pB_; return reprojectionError.vector(); } @@ -236,17 +265,17 @@ TEST (EssentialMatrixFactor2, factor) { Vector actual = factor.evaluateError(E, d, Hactual1, Hactual2); EXPECT(assert_equal(expected, actual, 1e-7)); -// // Use numerical derivatives to calculate the expected Jacobian -// Matrix Hexpected1, Hexpected2; -// boost::function f = -// boost::bind(&EssentialMatrixFactor2::evaluateError, &factor, _1, _2, -// boost::none, boost::none); -// Hexpected1 = numericalDerivative21(f, E, d); -// Hexpected2 = numericalDerivative22(f, E, d); -// -// // Verify the Jacobian is correct -// EXPECT(assert_equal(Hexpected1, Hactual1, 1e-8)); -// EXPECT(assert_equal(Hexpected2, Hactual2, 1e-8)); + // Use numerical derivatives to calculate the expected Jacobian + Matrix Hexpected1, Hexpected2; + boost::function f = + boost::bind(&EssentialMatrixFactor2::evaluateError, &factor, _1, _2, + boost::none, boost::none); + Hexpected1 = numericalDerivative21(f, E, d); + Hexpected2 = numericalDerivative22(f, E, d); + + // Verify the Jacobian is correct + EXPECT(assert_equal(Hexpected1, Hactual1, 1e-8)); + EXPECT(assert_equal(Hexpected2, Hactual2, 1e-8)); } } From d6edd1db07febfc9341424e617c7b0f149706153 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 00:36:54 -0500 Subject: [PATCH 08/15] Sanitized/collapsed derivatives --- .../slam/tests/testEssentialMatrixFactor.cpp | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index 86284de50..001fb15fe 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -57,40 +57,41 @@ public: // Project to normalized image coordinates, then uncalibrate Point2 pi; if (!DE && !Dd) { - Point3 d1T2 = d * E.direction().point3(); + + Point3 _1T2 = E.direction().point3(); + Point3 d1T2 = d * _1T2; Point3 dP2 = E.rotation().unrotate(dP1 - d1T2); Point2 pn = SimpleCamera::project_to_camera(dP2); pi = K_.uncalibrate(pn); + } else { + // TODO, clean up this expensive mess w Mathematica + Matrix D_1T2_dir; // 3*2 Point3 _1T2 = E.direction().point3(D_1T2_dir); - Matrix Dd1T2_dir = d * D_1T2_dir; // 3*2 - Matrix Dd1T2_d = _1T2.vector(); // 3*1 Point3 d1T2 = d * _1T2; - Matrix Dpoint_dir = -Dd1T2_dir; // 3*2 - Matrix Dpoint_d = -Dd1T2_d; // 3*1 - Point3 point = dP1 - d1T2; - Matrix DdP2_rot, DP2_point; - Point3 dP2 = E.rotation().unrotate(point, DdP2_rot, DP2_point); - Matrix DdP2_E(3, 5); - DdP2_E << DdP2_rot, DP2_point * Dpoint_dir; // (3*3), (3*3) * (3*2) - Matrix DdP2_d = DP2_point * Dpoint_d; // (3*3) * (3*1) + Point3 dP2 = E.rotation().unrotate(dP1 - d1T2, DdP2_rot, DP2_point); Matrix Dpn_dP2; // 2*3 Point2 pn = SimpleCamera::project_to_camera(dP2, Dpn_dP2); - Matrix Dpn_E = Dpn_dP2 * DdP2_E; // (2*3) * (3*5) - Matrix Dpn_d = Dpn_dP2 * DdP2_d; // (2*3) * (3*1) - + Matrix Dpi_pn; // 2*2 pi = K_.uncalibrate(pn, boost::none, Dpi_pn); - if (DE) - *DE = Dpi_pn * Dpn_E; // (2*2) * (2*5) + + if (DE) { + Matrix DdP2_E(3, 5); + DdP2_E << DdP2_rot, - DP2_point * d * D_1T2_dir; // (3*3), (3*3) * (3*2) + *DE = Dpi_pn * (Dpn_dP2 * DdP2_E); // (2*2) * (2*3) * (3*5) + } + if (Dd) - *Dd = Dpi_pn * Dpn_d; // (2*2) * (2*1) + // (2*2) * (2*3) * (3*3) * (3*1) + *Dd = - (Dpi_pn * (Dpn_dP2 * (DP2_point * _1T2.vector()))); + } Point2 reprojectionError = pi - pB_; return reprojectionError.vector(); From bba8368218024c794b205e62069d2b6fdf63d923 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 00:48:33 -0500 Subject: [PATCH 09/15] Added clone, minimization test; converges, but not to grund truth (which has high error) --- .../slam/tests/testEssentialMatrixFactor.cpp | 55 +++++++++++++++++-- 1 file changed, 50 insertions(+), 5 deletions(-) diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index 001fb15fe..fca3015b6 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -32,6 +32,12 @@ public: Base(model, key1, key2), pA_(pA), pB_(pB), K_(K) { } + /// @return a deep copy of this factor + virtual gtsam::NonlinearFactor::shared_ptr clone() const { + return boost::static_pointer_cast < gtsam::NonlinearFactor + > (gtsam::NonlinearFactor::shared_ptr(new This(*this))); + } + /// print virtual void print(const std::string& s = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { @@ -84,13 +90,13 @@ public: if (DE) { Matrix DdP2_E(3, 5); - DdP2_E << DdP2_rot, - DP2_point * d * D_1T2_dir; // (3*3), (3*3) * (3*2) + DdP2_E << DdP2_rot, -DP2_point * d * D_1T2_dir; // (3*3), (3*3) * (3*2) *DE = Dpi_pn * (Dpn_dP2 * DdP2_E); // (2*2) * (2*3) * (3*5) } if (Dd) // (2*2) * (2*3) * (3*3) * (3*1) - *Dd = - (Dpi_pn * (Dpn_dP2 * (DP2_point * _1T2.vector()))); + *Dd = -(Dpi_pn * (Dpn_dP2 * (DP2_point * _1T2.vector()))); } Point2 reprojectionError = pi - pB_; @@ -114,6 +120,8 @@ public: using namespace std; using namespace gtsam; +typedef noiseModel::Isotropic::shared_ptr Model; + const string filename = findExampleDataFile("5pointExample1.txt"); SfM_data data; bool readOK = readBAL(filename, data); @@ -133,6 +141,8 @@ Vector vB(size_t i) { return EssentialMatrix::Homogeneous(pB(i)); } +Cal3_S2 K; + //************************************************************************* TEST (EssentialMatrixFactor, testData) { CHECK(readOK); @@ -198,8 +208,7 @@ TEST (EssentialMatrixFactor, fromConstraints) { // We start with a factor graph and add constraints to it // Noise sigma is 1cm, assuming metric measurements NonlinearFactorGraph graph; - noiseModel::Isotropic::shared_ptr model = noiseModel::Isotropic::Sigma(1, - 0.01); + Model model = noiseModel::Isotropic::Sigma(1, 0.01); for (size_t i = 0; i < 5; i++) graph.add(EssentialMatrixFactor(1, pA(i), pB(i), model)); @@ -240,7 +249,6 @@ TEST (EssentialMatrixFactor2, factor) { noiseModel::Unit::shared_ptr model = noiseModel::Unit::Create(1); for (size_t i = 0; i < 5; i++) { - Cal3_S2 K; EssentialMatrixFactor2 factor(100, i, pA(i), pB(i), K, model); // Check evaluation @@ -280,6 +288,43 @@ TEST (EssentialMatrixFactor2, factor) { } } +//************************************************************************* +TEST (EssentialMatrixFactor2, minimization) { + // Here we want to optimize for E and inverse depths at the same time + + // We start with a factor graph and add constraints to it + // Noise sigma is 1cm, assuming metric measurements + NonlinearFactorGraph graph; + Model model = noiseModel::Isotropic::Sigma(2, 0.01); + for (size_t i = 0; i < 5; i++) + graph.add(EssentialMatrixFactor2(100, i, pA(i), pB(i), K, model)); + + // Check error at ground truth + Values truth; + EssentialMatrix trueE(aRb, aTb); + truth.insert(100, trueE); + for (size_t i = 0; i < 5; i++) { + Point3 P1 = data.tracks[i].p; + truth.insert(i, LieScalar(1.0 / P1.z())); + } + EXPECT_DOUBLES_EQUAL(0, graph.error(truth), 1e-8); + + // Optimize + LevenbergMarquardtParams parameters; + // parameters.setVerbosity("ERROR"); + LevenbergMarquardtOptimizer optimizer(graph, truth, parameters); + Values result = optimizer.optimize(); + + // Check result + EssentialMatrix actual = result.at(100); + EXPECT(assert_equal(trueE, actual,1e-1)); + for (size_t i = 0; i < 5; i++) + EXPECT(assert_equal(result.at(i), truth.at(i),1e-1)); + + // Check error at result + EXPECT_DOUBLES_EQUAL(0, graph.error(result), 1e-4); +} + /* ************************************************************************* */ int main() { TestResult tr; From 708665ca04aff61c10a68903132607b2afad7493 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 00:52:24 -0500 Subject: [PATCH 10/15] Moved new factor to header; Still fails! --- gtsam/slam/EssentialMatrixFactor.h | 104 +++++++++++++++++- .../slam/tests/testEssentialMatrixFactor.cpp | 102 ----------------- 2 files changed, 101 insertions(+), 105 deletions(-) diff --git a/gtsam/slam/EssentialMatrixFactor.h b/gtsam/slam/EssentialMatrixFactor.h index 7ac992d79..e78c16c85 100644 --- a/gtsam/slam/EssentialMatrixFactor.h +++ b/gtsam/slam/EssentialMatrixFactor.h @@ -9,6 +9,8 @@ #include #include +#include +#include #include namespace gtsam { @@ -36,8 +38,9 @@ public: /// @return a deep copy of this factor virtual gtsam::NonlinearFactor::shared_ptr clone() const { - return boost::static_pointer_cast( - gtsam::NonlinearFactor::shared_ptr(new This(*this))); } + return boost::static_pointer_cast < gtsam::NonlinearFactor + > (gtsam::NonlinearFactor::shared_ptr(new This(*this))); + } /// print virtual void print(const std::string& s = "", @@ -56,5 +59,100 @@ public: }; -} // gtsam +/** + * Binary factor that optimizes for E and inverse depth: assumes measurement + * in image 2 is perfect, and returns re-projection error in image 1 + */ +class EssentialMatrixFactor2: public NoiseModelFactor2 { + + Point2 pA_, pB_; ///< Measurements in image A and B + Cal3_S2 K_; ///< Calibration + + typedef NoiseModelFactor2 Base; + typedef EssentialMatrixFactor2 This; + +public: + + /// Constructor + EssentialMatrixFactor2(Key key1, Key key2, const Point2& pA, const Point2& pB, + const Cal3_S2& K, const SharedNoiseModel& model) : + Base(model, key1, key2), pA_(pA), pB_(pB), K_(K) { + } + + /// @return a deep copy of this factor + virtual gtsam::NonlinearFactor::shared_ptr clone() const { + return boost::static_pointer_cast < gtsam::NonlinearFactor + > (gtsam::NonlinearFactor::shared_ptr(new This(*this))); + } + + /// print + virtual void print(const std::string& s = "", + const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { + Base::print(s); + std::cout << " EssentialMatrixFactor2 with measurements\n (" + << pA_.vector().transpose() << ")' and (" << pB_.vector().transpose() + << ")'" << std::endl; + } + + /// vector of errors returns 1D vector + Vector evaluateError(const EssentialMatrix& E, const LieScalar& d, + boost::optional DE = boost::none, boost::optional Dd = + boost::none) const { + + // We have point x,y in image 1 + // Given a depth Z, the corresponding 3D point P1 = Z*(x,y,1) = (x,y,1)/d + // We then convert to first camera by 2P = 1R2Õ*(P1-1T2) + // The homogeneous coordinates of can be written as + // 2R1*(P1-1T2) == 2R1*d*(P1-1T2) == 2R1*((x,y,1)-d*1T2) + // Note that this is just a homography for d==0 + Point3 dP1(pA_.x(), pA_.y(), 1); + + // Project to normalized image coordinates, then uncalibrate + Point2 pi; + if (!DE && !Dd) { + + Point3 _1T2 = E.direction().point3(); + Point3 d1T2 = d * _1T2; + Point3 dP2 = E.rotation().unrotate(dP1 - d1T2); + Point2 pn = SimpleCamera::project_to_camera(dP2); + pi = K_.uncalibrate(pn); + + } else { + + // TODO, clean up this expensive mess w Mathematica + + Matrix D_1T2_dir; // 3*2 + Point3 _1T2 = E.direction().point3(D_1T2_dir); + + Point3 d1T2 = d * _1T2; + + Matrix DdP2_rot, DP2_point; + Point3 dP2 = E.rotation().unrotate(dP1 - d1T2, DdP2_rot, DP2_point); + + Matrix Dpn_dP2; // 2*3 + Point2 pn = SimpleCamera::project_to_camera(dP2, Dpn_dP2); + + Matrix Dpi_pn; // 2*2 + pi = K_.uncalibrate(pn, boost::none, Dpi_pn); + + if (DE) { + Matrix DdP2_E(3, 5); + DdP2_E << DdP2_rot, -DP2_point * d * D_1T2_dir; // (3*3), (3*3) * (3*2) + *DE = Dpi_pn * (Dpn_dP2 * DdP2_E); // (2*2) * (2*3) * (3*5) + } + + if (Dd) + // (2*2) * (2*3) * (3*3) * (3*1) + *Dd = -(Dpi_pn * (Dpn_dP2 * (DP2_point * _1T2.vector()))); + + } + Point2 reprojectionError = pi - pB_; + return reprojectionError.vector(); + } + +}; +// EssentialMatrixFactor2 + +}// gtsam diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index fca3015b6..4fb24b240 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -6,108 +6,6 @@ */ #include -#include -#include - -namespace gtsam { - -/** - * Binary factor that optimizes for E and inverse depth: assumes measurement - * in image 2 is perfect, and returns re-projection error in image 1 - */ -class EssentialMatrixFactor2: public NoiseModelFactor2 { - - Point2 pA_, pB_; ///< Measurements in image A and B - Cal3_S2 K_; ///< Calibration - - typedef NoiseModelFactor2 Base; - typedef EssentialMatrixFactor2 This; - -public: - - /// Constructor - EssentialMatrixFactor2(Key key1, Key key2, const Point2& pA, const Point2& pB, - const Cal3_S2& K, const SharedNoiseModel& model) : - Base(model, key1, key2), pA_(pA), pB_(pB), K_(K) { - } - - /// @return a deep copy of this factor - virtual gtsam::NonlinearFactor::shared_ptr clone() const { - return boost::static_pointer_cast < gtsam::NonlinearFactor - > (gtsam::NonlinearFactor::shared_ptr(new This(*this))); - } - - /// print - virtual void print(const std::string& s = "", - const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { - Base::print(s); - std::cout << " EssentialMatrixFactor2 with measurements\n (" - << pA_.vector().transpose() << ")' and (" << pB_.vector().transpose() - << ")'" << std::endl; - } - - /// vector of errors returns 1D vector - Vector evaluateError(const EssentialMatrix& E, const LieScalar& d, - boost::optional DE = boost::none, boost::optional Dd = - boost::none) const { - - // We have point x,y in image 1 - // Given a depth Z, the corresponding 3D point P1 = Z*(x,y,1) = (x,y,1)/d - // We then convert to first camera by 2P = 1R2Õ*(P1-1T2) - // The homogeneous coordinates of can be written as - // 2R1*(P1-1T2) == 2R1*d*(P1-1T2) == 2R1*((x,y,1)-d*1T2) - // Note that this is just a homography for d==0 - Point3 dP1(pA_.x(), pA_.y(), 1); - - // Project to normalized image coordinates, then uncalibrate - Point2 pi; - if (!DE && !Dd) { - - Point3 _1T2 = E.direction().point3(); - Point3 d1T2 = d * _1T2; - Point3 dP2 = E.rotation().unrotate(dP1 - d1T2); - Point2 pn = SimpleCamera::project_to_camera(dP2); - pi = K_.uncalibrate(pn); - - } else { - - // TODO, clean up this expensive mess w Mathematica - - Matrix D_1T2_dir; // 3*2 - Point3 _1T2 = E.direction().point3(D_1T2_dir); - - Point3 d1T2 = d * _1T2; - - Matrix DdP2_rot, DP2_point; - Point3 dP2 = E.rotation().unrotate(dP1 - d1T2, DdP2_rot, DP2_point); - - Matrix Dpn_dP2; // 2*3 - Point2 pn = SimpleCamera::project_to_camera(dP2, Dpn_dP2); - - Matrix Dpi_pn; // 2*2 - pi = K_.uncalibrate(pn, boost::none, Dpi_pn); - - if (DE) { - Matrix DdP2_E(3, 5); - DdP2_E << DdP2_rot, -DP2_point * d * D_1T2_dir; // (3*3), (3*3) * (3*2) - *DE = Dpi_pn * (Dpn_dP2 * DdP2_E); // (2*2) * (2*3) * (3*5) - } - - if (Dd) - // (2*2) * (2*3) * (3*3) * (3*1) - *Dd = -(Dpi_pn * (Dpn_dP2 * (DP2_point * _1T2.vector()))); - - } - Point2 reprojectionError = pi - pB_; - return reprojectionError.vector(); - } - -}; - -} -// gtsam - #include #include #include From adac9d209f8615df9d487b13908f7e0835bb6fcb Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 01:25:13 -0500 Subject: [PATCH 11/15] Fixed unit test (baseline of test-case was not 1, corrected for it) --- gtsam/slam/tests/testEssentialMatrixFactor.cpp | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index 4fb24b240..57fb47715 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -25,6 +25,7 @@ SfM_data data; bool readOK = readBAL(filename, data); Rot3 aRb = data.cameras[1].pose().rotation(); Point3 aTb = data.cameras[1].pose().translation(); +double baseline = 0.1; // actual baseline of the camera Point2 pA(size_t i) { return data.tracks[i].measurements[0].second; @@ -150,25 +151,14 @@ TEST (EssentialMatrixFactor2, factor) { EssentialMatrixFactor2 factor(100, i, pA(i), pB(i), K, model); // Check evaluation - Point3 P1 = data.tracks[i].p, P2 = E.transform_to(P1); - LieScalar d(1.0 / P1.z()); + Point3 P1 = data.tracks[i].p, P2 = data.cameras[1].pose().transform_to(P1); const Point2 pn = SimpleCamera::project_to_camera(P2); const Point2 pi = K.uncalibrate(pn); Point2 reprojectionError(pi - pB(i)); Vector expected = reprojectionError.vector(); - { - // Check calculations - Point3 dP1(pA(i).x(), pA(i).y(), 1); - EXPECT_DOUBLES_EQUAL(pA(i).x(), P1.x()/P1.z(), 1e-8); - EXPECT_DOUBLES_EQUAL(pA(i).y(), P1.y()/P1.z(), 1e-8); - EXPECT(assert_equal(P1,dP1/d)); - Point3 otherP2 = E.rotation().unrotate( - d * P1 - d * E.direction().point3()); - EXPECT(assert_equal(P2,otherP2/d)); - } - Matrix Hactual1, Hactual2; + LieScalar d(baseline / P1.z()); Vector actual = factor.evaluateError(E, d, Hactual1, Hactual2); EXPECT(assert_equal(expected, actual, 1e-7)); @@ -203,7 +193,7 @@ TEST (EssentialMatrixFactor2, minimization) { truth.insert(100, trueE); for (size_t i = 0; i < 5; i++) { Point3 P1 = data.tracks[i].p; - truth.insert(i, LieScalar(1.0 / P1.z())); + truth.insert(i, LieScalar(baseline / P1.z())); } EXPECT_DOUBLES_EQUAL(0, graph.error(truth), 1e-8); From e6a64ec5b25507a8780d55e03c22607082e74816 Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 01:25:52 -0500 Subject: [PATCH 12/15] Cleaned up derivatives somewhat more --- gtsam/slam/EssentialMatrixFactor.h | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/gtsam/slam/EssentialMatrixFactor.h b/gtsam/slam/EssentialMatrixFactor.h index e78c16c85..090a816ec 100644 --- a/gtsam/slam/EssentialMatrixFactor.h +++ b/gtsam/slam/EssentialMatrixFactor.h @@ -120,20 +120,14 @@ public: } else { - // TODO, clean up this expensive mess w Mathematica + // Calculate derivatives. TODO if slow: optimize with Mathematica + // 3*2 3*3 3*3 2*3 2*2 + Matrix D_1T2_dir, DdP2_rot, DP2_point, Dpn_dP2, Dpi_pn; - Matrix D_1T2_dir; // 3*2 Point3 _1T2 = E.direction().point3(D_1T2_dir); - Point3 d1T2 = d * _1T2; - - Matrix DdP2_rot, DP2_point; Point3 dP2 = E.rotation().unrotate(dP1 - d1T2, DdP2_rot, DP2_point); - - Matrix Dpn_dP2; // 2*3 Point2 pn = SimpleCamera::project_to_camera(dP2, Dpn_dP2); - - Matrix Dpi_pn; // 2*2 pi = K_.uncalibrate(pn, boost::none, Dpi_pn); if (DE) { @@ -142,8 +136,8 @@ public: *DE = Dpi_pn * (Dpn_dP2 * DdP2_E); // (2*2) * (2*3) * (3*5) } - if (Dd) - // (2*2) * (2*3) * (3*3) * (3*1) + if (Dd) // efficient backwards computation: + // (2*2) * (2*3) * (3*3) * (3*1) *Dd = -(Dpi_pn * (Dpn_dP2 * (DP2_point * _1T2.vector()))); } From 707c745aad93f2fbf0ff566cbac37b906dd9009d Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 16:47:30 -0500 Subject: [PATCH 13/15] Created second example --- .cproject | 356 ++++++++++++++++-------------- examples/CreateSFMExampleData.cpp | 65 +++++- examples/Data/5pointExample2.txt | 65 ++++++ 3 files changed, 305 insertions(+), 181 deletions(-) create mode 100644 examples/Data/5pointExample2.txt diff --git a/.cproject b/.cproject index 21ab6965c..19be6b629 100644 --- a/.cproject +++ b/.cproject @@ -365,38 +365,6 @@ true true - - make - -j2 - all - true - true - true - - - make - -j2 - testNonlinearConstraint.run - true - true - true - - - make - -j2 - testLieConfig.run - true - true - true - - - make - -j2 - testConstraintOptimizer.run - true - true - true - make -j5 @@ -477,6 +445,38 @@ true true + + make + -j2 + all + true + true + true + + + make + -j2 + testNonlinearConstraint.run + true + true + true + + + make + -j2 + testLieConfig.run + true + true + true + + + make + -j2 + testConstraintOptimizer.run + true + true + true + make -j2 @@ -551,6 +551,7 @@ make + tests/testBayesTree.run true false @@ -558,6 +559,7 @@ make + testBinaryBayesNet.run true false @@ -605,6 +607,7 @@ make + testSymbolicBayesNet.run true false @@ -612,6 +615,7 @@ make + tests/testSymbolicFactor.run true false @@ -619,6 +623,7 @@ make + testSymbolicFactorGraph.run true false @@ -634,19 +639,12 @@ make + tests/testBayesTree true false true - - make - -j2 - testVSLAMGraph - true - true - true - make -j2 @@ -729,7 +727,6 @@ make - testSimulated2DOriented.run true false @@ -769,7 +766,6 @@ make - testSimulated2D.run true false @@ -777,7 +773,6 @@ make - testSimulated3D.run true false @@ -791,6 +786,14 @@ true true + + make + -j2 + testVSLAMGraph + true + true + true + make -j2 @@ -830,6 +833,21 @@ false true + + make + -j2 + check + true + true + true + + + make + tests/testGaussianISAM2 + true + false + true + make -j5 @@ -968,6 +986,7 @@ make + testGraph.run true false @@ -975,6 +994,7 @@ make + testJunctionTree.run true false @@ -982,6 +1002,7 @@ make + testSymbolicBayesNetB.run true false @@ -1043,22 +1064,6 @@ true true - - make - -j2 - check - true - true - true - - - make - - tests/testGaussianISAM2 - true - false - true - make -j2 @@ -1427,14 +1432,6 @@ true true - - make - -j2 - testGaussianFactor.run - true - true - true - make -j2 @@ -1515,66 +1512,10 @@ true true - + make -j2 - check - true - true - true - - - make - -j2 - testClusterTree.run - true - true - true - - - make - -j2 - testJunctionTree.run - true - true - true - - - make - -j2 - tests/testEliminationTree.run - true - true - true - - - make - -j2 - tests/testSymbolicFactor.run - true - true - true - - - make - -j2 - tests/testVariableSlots.run - true - true - true - - - make - -j2 - tests/testConditional.run - true - true - true - - - make - -j2 - tests/testSymbolicFactorGraph.run + testGaussianFactor.run true true true @@ -1675,6 +1616,86 @@ true true + + make + -j2 + check + true + true + true + + + make + -j2 + testClusterTree.run + true + true + true + + + make + -j2 + testJunctionTree.run + true + true + true + + + make + -j2 + tests/testEliminationTree.run + true + true + true + + + make + -j2 + tests/testSymbolicFactor.run + true + true + true + + + make + -j2 + tests/testVariableSlots.run + true + true + true + + + make + -j2 + tests/testConditional.run + true + true + true + + + make + -j2 + tests/testSymbolicFactorGraph.run + true + true + true + + + make + -j2 + all + true + true + true + + + make + -j2 + clean + true + true + true + make -j5 @@ -1739,22 +1760,6 @@ true true - - make - -j2 - all - true - true - true - - - make - -j2 - clean - true - true - true - make -j2 @@ -1867,6 +1872,14 @@ true true + + make + -j5 + CreateSFMExampleData.run + true + true + true + make -j2 @@ -2188,6 +2201,7 @@ cpack + -G DEB true false @@ -2195,6 +2209,7 @@ cpack + -G RPM true false @@ -2202,6 +2217,7 @@ cpack + -G TGZ true false @@ -2209,6 +2225,7 @@ cpack + --config CPackSourceConfig.cmake true false @@ -2382,6 +2399,30 @@ true true + + make + -j2 + check + true + true + true + + + make + -j2 + tests/testSPQRUtil.run + true + true + true + + + make + -j2 + clean + true + true + true + make -j5 @@ -2422,26 +2463,18 @@ true true - + make -j2 - check + tests/testPose2.run true true true - + make -j2 - tests/testSPQRUtil.run - true - true - true - - - make - -j2 - clean + tests/testPose3.run true true true @@ -2536,27 +2569,12 @@ make + testErrors.run true false true - - make - -j2 - tests/testPose2.run - true - true - true - - - make - -j2 - tests/testPose3.run - true - true - true - diff --git a/examples/CreateSFMExampleData.cpp b/examples/CreateSFMExampleData.cpp index b62b1c6fa..bcc0b6320 100644 --- a/examples/CreateSFMExampleData.cpp +++ b/examples/CreateSFMExampleData.cpp @@ -17,28 +17,29 @@ #include #include + +#include #include using namespace boost::assign; using namespace std; using namespace gtsam; -void create5PointExample1() { +/* ************************************************************************* */ + +void createExampleBALFile(const string& filename, const vector& P, + const Pose3& pose1, const Pose3& pose2, const Cal3Bundler& K = + Cal3Bundler()) { // Class that will gather all data SfM_data data; - // Create two cameras and corresponding essential matrix E + // Create two cameras Rot3 aRb = Rot3::yaw(M_PI_2); Point3 aTb(0.1, 0, 0); Pose3 identity, aPb(aRb, aTb); - data.cameras.push_back(SfM_Camera(identity)); - data.cameras.push_back(SfM_Camera(aPb)); - - // Create test data, we need at least 5 points - vector P; - P += Point3(0, 0, 1), Point3(-0.1, 0, 1), Point3(0.1, 0, 1), // - Point3(0, 0.5, 0.5), Point3(0, -0.5, 0.5); + data.cameras.push_back(SfM_Camera(pose1, K)); + data.cameras.push_back(SfM_Camera(pose2, K)); BOOST_FOREACH(const Point3& p, P) { @@ -51,19 +52,59 @@ void create5PointExample1() { // Project points in both cameras for (size_t i = 0; i < 2; i++) - track.measurements.push_back(make_pair(i, data.cameras[i].project(p))); + track.measurements.push_back(make_pair(i, data.cameras[i].project(p))); // Add track to data data.tracks.push_back(track); } - // Assumes example is run in ${GTSAM_TOP}/build/examples - const string filename = "../../examples/data/5pointExample1.txt"; writeBAL(filename, data); } +/* ************************************************************************* */ + +void create5PointExample1() { + + // Create two cameras poses + Rot3 aRb = Rot3::yaw(M_PI_2); + Point3 aTb(0.1, 0, 0); + Pose3 pose1, pose2(aRb, aTb); + + // Create test data, we need at least 5 points + vector P; + P += Point3(0, 0, 1), Point3(-0.1, 0, 1), Point3(0.1, 0, 1), // + Point3(0, 0.5, 0.5), Point3(0, -0.5, 0.5); + + // Assumes example is run in ${GTSAM_TOP}/build/examples + const string filename = "../../examples/data/5pointExample1.txt"; + createExampleBALFile(filename, P, pose1, pose2); +} + +/* ************************************************************************* */ + +void create5PointExample2() { + + // Create two cameras poses + Rot3 aRb = Rot3::yaw(M_PI_2); + Point3 aTb(10, 0, 0); + Pose3 pose1, pose2(aRb, aTb); + + // Create test data, we need at least 5 points + vector P; + P += Point3(0, 0, 100), Point3(-10, 0, 100), Point3(10, 0, 100), // + Point3(0, 50, 50), Point3(0, -50, 50), Point3(-20, 0, 80), Point3(20, -50, 80); + + // Assumes example is run in ${GTSAM_TOP}/build/examples + const string filename = "../../examples/data/5pointExample2.txt"; + Cal3Bundler K(500, 0, 0); + createExampleBALFile(filename, P, pose1, pose2,K); +} + +/* ************************************************************************* */ + int main(int argc, char* argv[]) { create5PointExample1(); + create5PointExample2(); return 0; } diff --git a/examples/Data/5pointExample2.txt b/examples/Data/5pointExample2.txt new file mode 100644 index 000000000..1aa57d59d --- /dev/null +++ b/examples/Data/5pointExample2.txt @@ -0,0 +1,65 @@ +2 7 14 + +0 0 0 -0 +1 0 -3.0616169978683830426e-15 -50 +0 1 -50 -0 +1 1 -6.1232339957367660852e-15 -100 +0 2 50 -0 +1 2 0 -0 +0 3 0 -500 +1 3 500 -100.00000000000002842 +0 4 0 500 +1 4 -500 -99.999999999999957367 +0 5 -125 -0 +1 5 -1.1481063742006437494e-14 -187.5 +0 6 125 312.5 +1 6 -312.5 62.500000000000028422 + +3.141592653589793116 +0 +0 +-0 +0 +0 +500 +0 +0 + +2.2214414690791830509 +2.2214414690791826068 +0 +-6.1232339957367662824e-16 +-10 +0 +500 +0 +0 + +0 +0 +100 + +-10 +0 +100 + +10 +0 +100 + +0 +50 +50 + +0 +-50 +50 + +-20 +0 +80 + +20 +-50 +80 + From 606b9dce5ce132c00bacb9d780a4003c268bdd1b Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 17:14:28 -0500 Subject: [PATCH 14/15] Fixed bug: first point (pA) had to be calibrated and it was not. --- gtsam/slam/EssentialMatrixFactor.h | 3 +- .../slam/tests/testEssentialMatrixFactor.cpp | 66 ++++++++++++++++++- 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/gtsam/slam/EssentialMatrixFactor.h b/gtsam/slam/EssentialMatrixFactor.h index 090a816ec..e756cd43b 100644 --- a/gtsam/slam/EssentialMatrixFactor.h +++ b/gtsam/slam/EssentialMatrixFactor.h @@ -106,7 +106,8 @@ public: // The homogeneous coordinates of can be written as // 2R1*(P1-1T2) == 2R1*d*(P1-1T2) == 2R1*((x,y,1)-d*1T2) // Note that this is just a homography for d==0 - Point3 dP1(pA_.x(), pA_.y(), 1); + Point2 xy = K_.calibrate(pA_); + Point3 dP1(xy.x(), xy.y(), 1); // Project to normalized image coordinates, then uncalibrate Point2 pi; diff --git a/gtsam/slam/tests/testEssentialMatrixFactor.cpp b/gtsam/slam/tests/testEssentialMatrixFactor.cpp index 57fb47715..5f9233bb3 100644 --- a/gtsam/slam/tests/testEssentialMatrixFactor.cpp +++ b/gtsam/slam/tests/testEssentialMatrixFactor.cpp @@ -20,6 +20,8 @@ using namespace gtsam; typedef noiseModel::Isotropic::shared_ptr Model; +namespace example1 { + const string filename = findExampleDataFile("5pointExample1.txt"); SfM_data data; bool readOK = readBAL(filename, data); @@ -207,12 +209,74 @@ TEST (EssentialMatrixFactor2, minimization) { EssentialMatrix actual = result.at(100); EXPECT(assert_equal(trueE, actual,1e-1)); for (size_t i = 0; i < 5; i++) - EXPECT(assert_equal(result.at(i), truth.at(i),1e-1)); + EXPECT(assert_equal(truth.at(i),result.at(i),1e-1)); // Check error at result EXPECT_DOUBLES_EQUAL(0, graph.error(result), 1e-4); } +} // namespace example1 + +//************************************************************************* + +namespace example2 { + +const string filename = findExampleDataFile("5pointExample2.txt"); +SfM_data data; +bool readOK = readBAL(filename, data); +Rot3 aRb = data.cameras[1].pose().rotation(); +Point3 aTb = data.cameras[1].pose().translation(); +double baseline = 10; // actual baseline of the camera + +Point2 pA(size_t i) { + return data.tracks[i].measurements[0].second; +} +Point2 pB(size_t i) { + return data.tracks[i].measurements[1].second; +} + +// Matches Cal3Bundler K(500, 0, 0); +Cal3_S2 K(500, 500, 0, 0, 0); + +//************************************************************************* +TEST (EssentialMatrixFactor2, extraTest) { + // Additional test with camera moving in positive X direction + + // We start with a factor graph and add constraints to it + // Noise sigma is 1, assuming pixel measurements + NonlinearFactorGraph graph; + Model model = noiseModel::Isotropic::Sigma(2, 1); + for (size_t i = 0; i < data.number_tracks(); i++) + graph.add(EssentialMatrixFactor2(100, i, pA(i), pB(i), K, model)); + + // Check error at ground truth + Values truth; + EssentialMatrix trueE(aRb, aTb); + truth.insert(100, trueE); + for (size_t i = 0; i < data.number_tracks(); i++) { + Point3 P1 = data.tracks[i].p; + truth.insert(i, LieScalar(baseline / P1.z())); + } + EXPECT_DOUBLES_EQUAL(0, graph.error(truth), 1e-8); + + // Optimize + LevenbergMarquardtParams parameters; + // parameters.setVerbosity("ERROR"); + LevenbergMarquardtOptimizer optimizer(graph, truth, parameters); + Values result = optimizer.optimize(); + + // Check result + EssentialMatrix actual = result.at(100); + EXPECT(assert_equal(trueE, actual,1e-1)); + for (size_t i = 0; i < data.number_tracks(); i++) + EXPECT(assert_equal(truth.at(i),result.at(i),1e-1)); + + // Check error at result + EXPECT_DOUBLES_EQUAL(0, graph.error(result), 1e-4); +} + +} + /* ************************************************************************* */ int main() { TestResult tr; From e038fa4e6a7b422df280f98d0e3876f7a25074ff Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Tue, 24 Dec 2013 17:26:13 -0500 Subject: [PATCH 15/15] Do calibrate of pA in constructor (needs to happen only once) --- gtsam/slam/EssentialMatrixFactor.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/gtsam/slam/EssentialMatrixFactor.h b/gtsam/slam/EssentialMatrixFactor.h index e756cd43b..142005d3c 100644 --- a/gtsam/slam/EssentialMatrixFactor.h +++ b/gtsam/slam/EssentialMatrixFactor.h @@ -66,7 +66,8 @@ public: class EssentialMatrixFactor2: public NoiseModelFactor2 { - Point2 pA_, pB_; ///< Measurements in image A and B + Point3 dP1_; ///< 3D point corresponding to measurement in image 1 + Point2 p1_, p2_; ///< Measurements in image 1 and image 2 Cal3_S2 K_; ///< Calibration typedef NoiseModelFactor2 Base; @@ -77,7 +78,9 @@ public: /// Constructor EssentialMatrixFactor2(Key key1, Key key2, const Point2& pA, const Point2& pB, const Cal3_S2& K, const SharedNoiseModel& model) : - Base(model, key1, key2), pA_(pA), pB_(pB), K_(K) { + Base(model, key1, key2), p1_(pA), p2_(pB), K_(K) { + Point2 xy = K_.calibrate(p1_); + dP1_ = Point3(xy.x(), xy.y(), 1); } /// @return a deep copy of this factor @@ -91,7 +94,7 @@ public: const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { Base::print(s); std::cout << " EssentialMatrixFactor2 with measurements\n (" - << pA_.vector().transpose() << ")' and (" << pB_.vector().transpose() + << p1_.vector().transpose() << ")' and (" << p2_.vector().transpose() << ")'" << std::endl; } @@ -106,8 +109,7 @@ public: // The homogeneous coordinates of can be written as // 2R1*(P1-1T2) == 2R1*d*(P1-1T2) == 2R1*((x,y,1)-d*1T2) // Note that this is just a homography for d==0 - Point2 xy = K_.calibrate(pA_); - Point3 dP1(xy.x(), xy.y(), 1); + // The point d*P1 = (x,y,1) is computed in constructor as dP1_ // Project to normalized image coordinates, then uncalibrate Point2 pi; @@ -115,7 +117,7 @@ public: Point3 _1T2 = E.direction().point3(); Point3 d1T2 = d * _1T2; - Point3 dP2 = E.rotation().unrotate(dP1 - d1T2); + Point3 dP2 = E.rotation().unrotate(dP1_ - d1T2); Point2 pn = SimpleCamera::project_to_camera(dP2); pi = K_.uncalibrate(pn); @@ -127,7 +129,7 @@ public: Point3 _1T2 = E.direction().point3(D_1T2_dir); Point3 d1T2 = d * _1T2; - Point3 dP2 = E.rotation().unrotate(dP1 - d1T2, DdP2_rot, DP2_point); + Point3 dP2 = E.rotation().unrotate(dP1_ - d1T2, DdP2_rot, DP2_point); Point2 pn = SimpleCamera::project_to_camera(dP2, Dpn_dP2); pi = K_.uncalibrate(pn, boost::none, Dpi_pn); @@ -142,7 +144,7 @@ public: *Dd = -(Dpi_pn * (Dpn_dP2 * (DP2_point * _1T2.vector()))); } - Point2 reprojectionError = pi - pB_; + Point2 reprojectionError = pi - p2_; return reprojectionError.vector(); }