update docstrings and format

release/4.3a0
Varun Agrawal 2021-05-29 21:47:13 -04:00
parent ab92779b25
commit a55e474426
1 changed files with 30 additions and 23 deletions

View File

@ -59,10 +59,10 @@ private:
double error_gain_; double error_gain_;
// typedef to this class // typedef to this class
typedef NonlinearEquality<VALUE> This; using This = NonlinearEquality<VALUE>;
// typedef to base class // typedef to base class
typedef NoiseModelFactor1<VALUE> Base; using Base = NoiseModelFactor1<VALUE>;
public: public:
@ -73,7 +73,7 @@ public:
CompareFunction compare_; CompareFunction compare_;
// bool (*compare_)(const T& a, const T& b); // bool (*compare_)(const T& a, const T& b);
/** default constructor - only for serialization */ /// Default constructor - only for serialization
NonlinearEquality() { NonlinearEquality() {
} }
@ -109,9 +109,11 @@ public:
void print(const std::string& s = "", void print(const std::string& s = "",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override { const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override {
std::cout << s << "Constraint: on [" << keyFormatter(this->key()) << "]\n"; std::cout << (s.empty() ? s : s + " ") << "Constraint: on ["
<< keyFormatter(this->key()) << "]\n";
traits<VALUE>::Print(feasible_, "Feasible Point:\n"); traits<VALUE>::Print(feasible_, "Feasible Point:\n");
std::cout << "Variable Dimension: " << traits<T>::GetDimension(feasible_) << std::endl; std::cout << "Variable Dimension: " << traits<T>::GetDimension(feasible_)
<< std::endl;
} }
/** Check if two factors are equal */ /** Check if two factors are equal */
@ -125,7 +127,7 @@ public:
/// @name Standard Interface /// @name Standard Interface
/// @{ /// @{
/** actual error function calculation */ /// Actual error function calculation
double error(const Values& c) const override { double error(const Values& c) const override {
const T& xj = c.at<T>(this->key()); const T& xj = c.at<T>(this->key());
Vector e = this->unwhitenedError(c); Vector e = this->unwhitenedError(c);
@ -136,7 +138,7 @@ public:
} }
} }
/** error function */ /// Error function
Vector evaluateError(const T& xj, Vector evaluateError(const T& xj,
boost::optional<Matrix&> H = boost::none) const override { boost::optional<Matrix&> H = boost::none) const override {
const size_t nj = traits<T>::GetDimension(feasible_); const size_t nj = traits<T>::GetDimension(feasible_);
@ -157,7 +159,7 @@ public:
} }
} }
// Linearize is over-written, because base linearization tries to whiten /// Linearize is over-written, because base linearization tries to whiten
GaussianFactor::shared_ptr linearize(const Values& x) const override { GaussianFactor::shared_ptr linearize(const Values& x) const override {
const T& xj = x.at<T>(this->key()); const T& xj = x.at<T>(this->key());
Matrix A; Matrix A;
@ -179,7 +181,7 @@ public:
private: private:
/** Serialization function */ /// Serialization function
friend class boost::serialization::access; friend class boost::serialization::access;
template<class ARCHIVE> template<class ARCHIVE>
void serialize(ARCHIVE & ar, const unsigned int /*version*/) { void serialize(ARCHIVE & ar, const unsigned int /*version*/) {
@ -212,7 +214,7 @@ protected:
typedef NoiseModelFactor1<VALUE> Base; typedef NoiseModelFactor1<VALUE> Base;
typedef NonlinearEquality1<VALUE> This; typedef NonlinearEquality1<VALUE> This;
/** default constructor to allow for serialization */ /// Default constructor to allow for serialization
NonlinearEquality1() { NonlinearEquality1() {
} }
@ -231,12 +233,12 @@ public:
* @param value feasible value that values(key) shouild be equal to * @param value feasible value that values(key) shouild be equal to
* @param key the key for the unknown variable to be constrained * @param key the key for the unknown variable to be constrained
* @param mu a parameter which really turns this into a strong prior * @param mu a parameter which really turns this into a strong prior
*
*/ */
NonlinearEquality1(const X& value, Key key, double mu = 1000.0) : NonlinearEquality1(const X& value, Key key, double mu = 1000.0)
Base( noiseModel::Constrained::All(traits<X>::GetDimension(value), : Base(noiseModel::Constrained::All(traits<X>::GetDimension(value),
std::abs(mu)), key), value_(value) { std::abs(mu)),
} key),
value_(value) {}
~NonlinearEquality1() override { ~NonlinearEquality1() override {
} }
@ -247,7 +249,7 @@ public:
gtsam::NonlinearFactor::shared_ptr(new This(*this))); gtsam::NonlinearFactor::shared_ptr(new This(*this)));
} }
/** g(x) with optional derivative */ /// g(x) with optional derivative
Vector evaluateError(const X& x1, Vector evaluateError(const X& x1,
boost::optional<Matrix&> H = boost::none) const override { boost::optional<Matrix&> H = boost::none) const override {
if (H) if (H)
@ -256,7 +258,7 @@ public:
return traits<X>::Local(value_,x1); return traits<X>::Local(value_,x1);
} }
/** Print */ /// Print
void print(const std::string& s = "", void print(const std::string& s = "",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override { const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override {
std::cout << s << ": NonlinearEquality1(" << keyFormatter(this->key()) std::cout << s << ": NonlinearEquality1(" << keyFormatter(this->key())
@ -269,7 +271,7 @@ public:
private: private:
/** Serialization function */ /// Serialization function
friend class boost::serialization::access; friend class boost::serialization::access;
template<class ARCHIVE> template<class ARCHIVE>
void serialize(ARCHIVE & ar, const unsigned int /*version*/) { void serialize(ARCHIVE & ar, const unsigned int /*version*/) {
@ -287,7 +289,7 @@ struct traits<NonlinearEquality1<VALUE> > : Testable<NonlinearEquality1<VALUE> >
/* ************************************************************************* */ /* ************************************************************************* */
/** /**
* Simple binary equality constraint - this constraint forces two factors to * Simple binary equality constraint - this constraint forces two variables to
* be the same. * be the same.
*/ */
template<class VALUE> template<class VALUE>
@ -301,7 +303,7 @@ protected:
GTSAM_CONCEPT_MANIFOLD_TYPE(X) GTSAM_CONCEPT_MANIFOLD_TYPE(X)
/** default constructor to allow for serialization */ /// Default constructor to allow for serialization
NonlinearEquality2() { NonlinearEquality2() {
} }
@ -309,7 +311,12 @@ public:
typedef boost::shared_ptr<NonlinearEquality2<VALUE> > shared_ptr; typedef boost::shared_ptr<NonlinearEquality2<VALUE> > shared_ptr;
///TODO: comment /**
* Constructor
* @param key1 the key for the first unknown variable to be constrained
* @param key2 the key for the second unknown variable to be constrained
* @param mu a parameter which really turns this into a strong prior
*/
NonlinearEquality2(Key key1, Key key2, double mu = 1000.0) : NonlinearEquality2(Key key1, Key key2, double mu = 1000.0) :
Base(noiseModel::Constrained::All(traits<X>::dimension, std::abs(mu)), key1, key2) { Base(noiseModel::Constrained::All(traits<X>::dimension, std::abs(mu)), key1, key2) {
} }
@ -322,7 +329,7 @@ public:
gtsam::NonlinearFactor::shared_ptr(new This(*this))); gtsam::NonlinearFactor::shared_ptr(new This(*this)));
} }
/** g(x) with optional derivative2 */ /// g(x) with optional derivative2
Vector evaluateError(const X& x1, const X& x2, boost::optional<Matrix&> H1 = Vector evaluateError(const X& x1, const X& x2, boost::optional<Matrix&> H1 =
boost::none, boost::optional<Matrix&> H2 = boost::none) const override { boost::none, boost::optional<Matrix&> H2 = boost::none) const override {
static const size_t p = traits<X>::dimension; static const size_t p = traits<X>::dimension;
@ -335,7 +342,7 @@ public:
private: private:
/** Serialization function */ /// Serialization function
friend class boost::serialization::access; friend class boost::serialization::access;
template<class ARCHIVE> template<class ARCHIVE>
void serialize(ARCHIVE & ar, const unsigned int /*version*/) { void serialize(ARCHIVE & ar, const unsigned int /*version*/) {