/* ---------------------------------------------------------------------------- * 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 RangeFactor.H * @authors Frank Dellaert **/ #pragma once #include #include #include namespace gtsam { /** * Binary factor for a range measurement */ template class RangeFactor: public NonlinearFactor2 { private: double z_; /** measurement */ typedef NonlinearFactor2 Base; public: RangeFactor(); /* Default constructor */ RangeFactor(const PoseKey& i, const PointKey& j, double z, const SharedGaussian& model) : Base(model, i, j), z_(z) { } /** h(x)-z */ Vector evaluateError(const Pose2& pose, const Point2& point, boost::optional H1, boost::optional H2) const { double hx = pose.range(point, H1, H2); return Vector_(1, hx - z_); } /** return the measured */ inline double measured() const { return z_; } }; // RangeFactor } // namespace gtsam