/* ---------------------------------------------------------------------------- * 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 planarSLAM.h * @brief: bearing/range measurements in 2D plane * @authors Frank Dellaert **/ #pragma once #include #include #include #include #include #include #include // We use gtsam namespace for generally useful factors namespace gtsam { // Use planarSLAM namespace for specific SLAM instance namespace planarSLAM { // Keys and Values typedef TypedSymbol PoseKey; typedef TypedSymbol PointKey; typedef LieValues PoseValues; typedef LieValues PointValues; typedef TupleValues2 Values; // Factors typedef NonlinearEquality Constraint; typedef PriorFactor Prior; typedef BetweenFactor Odometry; typedef BearingFactor Bearing; typedef RangeFactor Range; typedef BearingRangeFactor BearingRange; // Graph struct Graph: public NonlinearFactorGraph { Graph(){} Graph(const NonlinearFactorGraph& graph); void addPrior(const PoseKey& i, const Pose2& p, const SharedGaussian& model); void addPoseConstraint(const PoseKey& i, const Pose2& p); void addOdometry(const PoseKey& i, const PoseKey& j, const Pose2& z, const SharedGaussian& model); void addBearing(const PoseKey& i, const PointKey& j, const Rot2& z, const SharedGaussian& model); void addRange(const PoseKey& i, const PointKey& j, double z, const SharedGaussian& model); void addBearingRange(const PoseKey& i, const PointKey& j, const Rot2& z1, double z2, const SharedGaussian& model); }; // Optimizer typedef NonlinearOptimizer Optimizer; } // planarSLAM } // namespace gtsam