/* ---------------------------------------------------------------------------- * 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 pose3SLAM.h * @brief: 3D Pose SLAM * @authors Frank Dellaert **/ #pragma once #include #include #include #include #include #include #include #include namespace gtsam { // Use pose3SLAM namespace for specific SLAM instance namespace pose3SLAM { // Keys and Values typedef TypedSymbol Key; typedef LieValues Values; /** * Create a circle of n 3D poses tangent to circle of radius R, first pose at (R,0) * @param n number of poses * @param R radius of circle * @param c character to use for keys * @return circle of n 3D poses */ Values circle(size_t n, double R); // Factors typedef PriorFactor Prior; typedef BetweenFactor Constraint; typedef NonlinearEquality HardConstraint; // Graph struct Graph: public NonlinearFactorGraph { void addPrior(const Key& i, const Pose3& p, const SharedGaussian& model); void addConstraint(const Key& i, const Key& j, const Pose3& z, const SharedGaussian& model); void addHardConstraint(const Key& i, const Pose3& p); }; // Optimizer typedef NonlinearOptimizer Optimizer; } // pose3SLAM /** * Backwards compatibility */ typedef pose3SLAM::Values Pose3Values; typedef pose3SLAM::Prior Pose3Prior; typedef pose3SLAM::Constraint Pose3Factor; typedef pose3SLAM::Graph Pose3Graph; } // namespace gtsam