override print methods and update wrapper

release/4.3a0
Varun Agrawal 2021-04-29 19:43:27 -04:00
parent 14314071ff
commit 4d6eef2c2f
27 changed files with 155 additions and 94 deletions

View File

@ -74,13 +74,14 @@ public:
/// @name Testable
/// @{
// equals
/// equals
virtual bool equals(const DiscreteFactor& lf, double tol = 1e-9) const = 0;
// print
virtual void print(const std::string& s = "DiscreteFactor\n",
const KeyFormatter& formatter = DefaultKeyFormatter) const {
Factor::print(s, formatter);
/// print
virtual void print(
const std::string& s = "DiscreteFactor\n",
const KeyFormatter& formatter = DefaultKeyFormatter) const override {
Base::print(s, formatter);
}
/** Test whether the factor is empty */

View File

@ -129,8 +129,9 @@ public:
double operator()(const DiscreteFactor::Values & values) const;
/// print
void print(const std::string& s = "DiscreteFactorGraph",
const KeyFormatter& formatter =DefaultKeyFormatter) const;
void print(
const std::string& s = "DiscreteFactorGraph",
const KeyFormatter& formatter = DefaultKeyFormatter) const override;
/** Solve the factor graph by performing variable elimination in COLAMD order using
* the dense elimination function specified in \c function,

View File

@ -144,7 +144,7 @@ public:
bool equals(const PinholeBase &camera, double tol = 1e-9) const;
/// print
void print(const std::string& s = "PinholeBase") const;
virtual void print(const std::string& s = "PinholeBase") const;
/// @}
/// @name Standard Interface
@ -324,6 +324,11 @@ public:
/// Return canonical coordinate
Vector localCoordinates(const CalibratedCamera& T2) const;
/// print
void print(const std::string& s = "CalibratedCamera") const override {
PinholeBase::print(s);
}
/// @deprecated
inline size_t dim() const {
return dimension;

View File

@ -148,7 +148,7 @@ public:
}
/// print
void print(const std::string& s = "PinholeCamera") const {
void print(const std::string& s = "PinholeCamera") const override {
Base::print(s);
K_.print(s + ".calibration");
}

View File

@ -340,7 +340,7 @@ public:
}
/// print
void print(const std::string& s = "PinholePose") const {
void print(const std::string& s = "PinholePose") const override {
Base::print(s);
if (!K_)
std::cout << "s No calibration given" << std::endl;

View File

@ -986,7 +986,7 @@ class CalibratedCamera {
static gtsam::CalibratedCamera Level(const gtsam::Pose2& pose2, double height);
// Testable
void print(string s = "") const;
void print(string s = "CalibratedCamera") const;
bool equals(const gtsam::CalibratedCamera& camera, double tol) const;
// Manifold
@ -1163,7 +1163,8 @@ virtual class SymbolicFactor {
// From Factor
size_t size() const;
void print(string s = "", const gtsam::KeyFormatter& keyFormatter =
void print(string s = "SymbolicFactor",
const gtsam::KeyFormatter& keyFormatter =
gtsam::DefaultKeyFormatter) const;
bool equals(const gtsam::SymbolicFactor& other, double tol) const;
gtsam::KeyVector keys();
@ -1177,7 +1178,8 @@ virtual class SymbolicFactorGraph {
// From FactorGraph
void push_back(gtsam::SymbolicFactor* factor);
void print(string s = "", const gtsam::KeyFormatter& keyFormatter =
void print(string s = "SymbolicFactorGraph",
const gtsam::KeyFormatter& keyFormatter =
gtsam::DefaultKeyFormatter) const;
bool equals(const gtsam::SymbolicFactorGraph& rhs, double tol) const;
size_t size() const;
@ -1242,7 +1244,8 @@ class SymbolicBayesNet {
SymbolicBayesNet();
SymbolicBayesNet(const gtsam::SymbolicBayesNet& other);
// Testable
void print(string s = "", const gtsam::KeyFormatter& keyFormatter =
void print(string s = "SymbolicBayesNet",
const gtsam::KeyFormatter& keyFormatter =
gtsam::DefaultKeyFormatter) const;
bool equals(const gtsam::SymbolicBayesNet& other, double tol) const;
@ -2097,7 +2100,8 @@ class NonlinearFactorGraph {
NonlinearFactorGraph(const gtsam::NonlinearFactorGraph& graph);
// FactorGraph
void print(string s = "", const gtsam::KeyFormatter& keyFormatter =
void print(string s = "NonlinearFactorGraph: ",
const gtsam::KeyFormatter& keyFormatter =
gtsam::DefaultKeyFormatter) const;
bool equals(const gtsam::NonlinearFactorGraph& fg, double tol) const;
size_t size() const;

View File

@ -28,15 +28,15 @@ namespace gtsam {
/* ************************************************************************* */
template <class CONDITIONAL>
void BayesNet<CONDITIONAL>::print(const std::string& s, const KeyFormatter& formatter) const
{
void BayesNet<CONDITIONAL>::print(
const std::string& s, const KeyFormatter& formatter) const {
Base::print(s, formatter);
}
/* ************************************************************************* */
template <class CONDITIONAL>
void BayesNet<CONDITIONAL>::saveGraph(const std::string &s, const KeyFormatter& keyFormatter) const
{
void BayesNet<CONDITIONAL>::saveGraph(const std::string& s,
const KeyFormatter& keyFormatter) const {
std::ofstream of(s.c_str());
of << "digraph G{\n";
@ -52,4 +52,4 @@ namespace gtsam {
of.close();
}
}
} // namespace gtsam

View File

@ -58,15 +58,17 @@ namespace gtsam {
/// @{
/** print out graph */
void print(const std::string& s = "BayesNet",
const KeyFormatter& formatter = DefaultKeyFormatter) const;
void print(
const std::string& s = "BayesNet",
const KeyFormatter& formatter = DefaultKeyFormatter) const override;
/// @}
/// @name Standard Interface
/// @{
void saveGraph(const std::string &s, const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
void saveGraph(const std::string& s,
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
};
}

View File

@ -33,7 +33,7 @@ namespace gtsam {
/* ************************************************************************* */
void Factor::printKeys(const std::string& s, const KeyFormatter& formatter) const {
std::cout << s << " ";
std::cout << (s.empty() ? "" : s + " ");
for (Key key : keys_) std::cout << " " << formatter(key);
std::cout << std::endl;
}

View File

@ -135,10 +135,14 @@ typedef FastSet<FactorIndex> FactorIndexSet;
/// @{
/// print
void print(const std::string& s = "Factor", const KeyFormatter& formatter = DefaultKeyFormatter) const;
virtual void print(
const std::string& s = "Factor",
const KeyFormatter& formatter = DefaultKeyFormatter) const;
/// print only keys
void printKeys(const std::string& s = "Factor", const KeyFormatter& formatter = DefaultKeyFormatter) const;
virtual void printKeys(
const std::string& s = "Factor",
const KeyFormatter& formatter = DefaultKeyFormatter) const;
protected:
/// check equality

View File

@ -37,7 +37,7 @@ namespace gtsam {
template <class FACTOR>
void FactorGraph<FACTOR>::print(const std::string& s,
const KeyFormatter& formatter) const {
std::cout << s << std::endl;
std::cout << (s.empty() ? "" : s + " ") << std::endl;
std::cout << "size: " << size() << std::endl;
for (size_t i = 0; i < factors_.size(); i++) {
std::stringstream ss;

View File

@ -285,8 +285,8 @@ class FactorGraph {
/// @name Testable
/// @{
/** print out graph */
void print(const std::string& s = "FactorGraph",
/// print out graph
virtual void print(const std::string& s = "FactorGraph",
const KeyFormatter& formatter = DefaultKeyFormatter) const;
/** Check equality */

View File

@ -177,6 +177,13 @@ namespace gtsam {
*/
VectorValues backSubstituteTranspose(const VectorValues& gx) const;
/// print graph
virtual void print(
const std::string& s = "",
const KeyFormatter& formatter = DefaultKeyFormatter) const override {
Base::print(s, formatter);
}
/**
* @brief Save the GaussianBayesNet as an image. Requires `dot` to be
* installed.

View File

@ -54,8 +54,11 @@ namespace gtsam {
virtual ~GaussianFactor() {}
// Implementing Testable interface
virtual void print(const std::string& s = "",
const KeyFormatter& formatter = DefaultKeyFormatter) const = 0;
/// print
virtual void print(
const std::string& s = "",
const KeyFormatter& formatter = DefaultKeyFormatter) const override = 0;
/** Equals for testable */
virtual bool equals(const GaussianFactor& lf, double tol = 1e-9) const = 0;

View File

@ -42,7 +42,8 @@ Vector AttitudeFactor::attitudeError(const Rot3& nRb,
//***************************************************************************
void Rot3AttitudeFactor::print(const string& s,
const KeyFormatter& keyFormatter) const {
cout << s << "Rot3AttitudeFactor on " << keyFormatter(this->key()) << "\n";
cout << (s.empty() ? "" : s + " ") << "Rot3AttitudeFactor on "
<< keyFormatter(this->key()) << "\n";
nZ_.print(" measured direction in nav frame: ");
bRef_.print(" reference direction in body frame: ");
this->noiseModel_->print(" noise model: ");

View File

@ -114,7 +114,7 @@ public:
}
/** print */
void print(const std::string& s, const KeyFormatter& keyFormatter =
void print(const std::string& s = "", const KeyFormatter& keyFormatter =
DefaultKeyFormatter) const override;
/** equals */
@ -188,7 +188,7 @@ public:
}
/** print */
void print(const std::string& s, const KeyFormatter& keyFormatter =
void print(const std::string& s = "", const KeyFormatter& keyFormatter =
DefaultKeyFormatter) const override;
/** equals */

View File

@ -24,7 +24,8 @@ namespace gtsam {
//***************************************************************************
void GPSFactor::print(const string& s, const KeyFormatter& keyFormatter) const {
cout << s << "GPSFactor on " << keyFormatter(key()) << "\n";
cout << (s.empty() ? "" : s + " ") << "GPSFactor on " << keyFormatter(key())
<< "\n";
cout << " GPS measurement: " << nT_ << "\n";
noiseModel_->print(" noise model: ");
}

View File

@ -71,7 +71,7 @@ public:
}
/// print
void print(const std::string& s, const KeyFormatter& keyFormatter =
void print(const std::string& s = "", const KeyFormatter& keyFormatter =
DefaultKeyFormatter) const override;
/// equals
@ -143,7 +143,7 @@ public:
}
/// print
void print(const std::string& s, const KeyFormatter& keyFormatter =
void print(const std::string& s = "", const KeyFormatter& keyFormatter =
DefaultKeyFormatter) const override;
/// equals

View File

@ -70,8 +70,9 @@ public:
/// @{
/** print */
virtual void print(const std::string& s = "",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
virtual void print(
const std::string& s = "",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override;
/** Check if two factors are equal */
virtual bool equals(const NonlinearFactor& f, double tol = 1e-9) const;

View File

@ -99,8 +99,9 @@ namespace gtsam {
NonlinearFactorGraph(const FactorGraph<DERIVEDFACTOR>& graph) : Base(graph) {}
/** print */
void print(const std::string& str = "NonlinearFactorGraph: ",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
void print(
const std::string& str = "NonlinearFactorGraph: ",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override;
/** print errors along with factors*/
void printErrors(const Values& values, const std::string& str = "NonlinearFactorGraph: ",

View File

@ -64,8 +64,8 @@ private:
/// @name Testable
/// @{
void print(const std::string &s,
const KeyFormatter &keyFormatter = DefaultKeyFormatter) const {
void print(const std::string &s, const KeyFormatter &keyFormatter =
DefaultKeyFormatter) const override {
std::cout << s << "BinaryMeasurement(" << keyFormatter(this->key1()) << ","
<< keyFormatter(this->key2()) << ")\n";
traits<T>::Print(measured_, " measured: ");

View File

@ -63,6 +63,13 @@ namespace gtsam {
/** Check equality */
GTSAM_EXPORT bool equals(const This& bn, double tol = 1e-9) const;
/// print
GTSAM_EXPORT void print(
const std::string& s = "SymbolicBayesNet",
const KeyFormatter& formatter = DefaultKeyFormatter) const override {
Base::print(s, formatter);
}
/// @}
/// @name Standard Interface

View File

@ -23,15 +23,14 @@ namespace gtsam {
using namespace std;
/* ************************************************************************* */
void SymbolicConditional::print(const std::string& str, const KeyFormatter& keyFormatter) const
{
void SymbolicConditional::print(const std::string& str,
const KeyFormatter& keyFormatter) const {
BaseConditional::print(str, keyFormatter);
}
/* ************************************************************************* */
bool SymbolicConditional::equals(const This& c, double tol) const
{
bool SymbolicConditional::equals(const This& c, double tol) const {
return BaseFactor::equals(c) && BaseConditional::equals(c);
}
}
} // namespace gtsam

View File

@ -105,7 +105,9 @@ namespace gtsam {
/// @name Testable
/** Print with optional formatter */
virtual void print(const std::string& str = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const;
virtual void print(
const std::string& str = "",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override;
/** Check equality */
bool equals(const This& c, double tol = 1e-9) const;

View File

@ -92,6 +92,20 @@ namespace gtsam {
bool equals(const This& other, double tol = 1e-9) const;
/// print
void print(
const std::string& s = "SymbolicFactor",
const KeyFormatter& formatter = DefaultKeyFormatter) const override {
Base::print(s, formatter);
}
/// print only keys
void printKeys(
const std::string& s = "SymbolicFactor",
const KeyFormatter& formatter = DefaultKeyFormatter) const override {
Base::printKeys(s, formatter);
}
/// @}
/// @name Advanced Constructors

View File

@ -88,6 +88,13 @@ namespace gtsam {
bool equals(const This& fg, double tol = 1e-9) const;
/// print
void print(
const std::string& s = "SymbolicFactorGraph",
const KeyFormatter& formatter = DefaultKeyFormatter) const override {
Base::print(s, formatter);
}
/// @}
/// @name Standard Interface

View File

@ -37,8 +37,9 @@ public:
typedef boost::shared_ptr<InequalityFactorGraph> shared_ptr;
/** print */
void print(const std::string& str, const KeyFormatter& keyFormatter =
DefaultKeyFormatter) const {
void print(
const std::string& str = "",
const KeyFormatter& keyFormatter = DefaultKeyFormatter) const override {
Base::print(str, keyFormatter);
}