/** * @file planarSLAM.h * @brief: bearing/range measurements in 2D plane * @authors Frank Dellaert **/ #pragma once #include "BearingRangeFactor.h" #include "TupleConfig.h" #include "NonlinearEquality.h" #include "PriorFactor.h" #include "BetweenFactor.h" #include "NonlinearFactorGraph.h" #include "NonlinearOptimizer.h" // We use gtsam namespace for generally useful factors namespace gtsam { // Use planarSLAM namespace for specific SLAM instance namespace planarSLAM { // Keys and Config typedef TypedSymbol PoseKey; typedef TypedSymbol PointKey; typedef LieConfig PoseConfig; typedef LieConfig PointConfig; typedef PairConfig Config; // Factors typedef NonlinearEquality Constraint; typedef PriorFactor Prior; typedef BetweenFactor Odometry; typedef BearingFactor Bearing; typedef RangeFactor Range; typedef BearingRangeFactor BearingRange; // Graph struct Graph: public NonlinearFactorGraph { 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); }; // Optimizer typedef NonlinearOptimizer Optimizer; } // planarSLAM } // namespace gtsam