10 #include <gtsam/discrete/DiscreteFactor.h>
11 #include <gtsam/discrete/DiscreteKey.h>
12 #include <gtsam/nonlinear/NonlinearFactor.h>
13 #include <gtsam/nonlinear/Symbol.h>
42 gtsam::DiscreteKeys discreteKeys_;
43 boost::shared_ptr<DCFactor> dcfactor_;
47 using Base = gtsam::NonlinearFactor;
52 : discreteKeys_(dcfactor->discreteKeys()), dcfactor_(dcfactor) {
53 keys_ = dcfactor->keys();
56 double error(
const gtsam::Values& continuousVals)
const override {
58 return dcfactor_->error(continuousVals, discreteVals_);
62 const gtsam::Values& continuousVals)
const override {
64 return dcfactor_->linearize(continuousVals, discreteVals_);
69 discreteKeys_ = rhs.discreteKeys_;
70 dcfactor_ = rhs.dcfactor_;
71 discreteVals_ = rhs.discreteVals_;
79 for (
const gtsam::DiscreteKey& dk : discreteKeys_) {
80 const gtsam::Key k = dk.first;
81 if (discreteVals.find(k) != discreteVals.end()) {
82 if (discreteVals.at(k) != discreteVals_[k]) {
83 discreteVals_[k] = discreteVals.at(k);
91 size_t dim()
const override {
return dcfactor_->dim(); }
94 for (
const gtsam::DiscreteKey& dk : discreteKeys_) {
95 const gtsam::Key k = dk.first;
96 if (discreteVals_.find(k) == discreteVals_.end())
return false;
Custom discrete-continuous factor.
Some convenient types for DCSAM.
Implementation of a discrete-continuous factor. This is used internally within the DCSAM solver....
Definition: DCContinuousFactor.h:40
DCContinuousFactor & operator=(const DCContinuousFactor &rhs)
Definition: DCContinuousFactor.h:67
bool updateDiscrete(const DiscreteValues &discreteVals)
Definition: DCContinuousFactor.h:77
~DCContinuousFactor()=default
DCContinuousFactor(boost::shared_ptr< DCFactor > dcfactor)
Definition: DCContinuousFactor.h:51
double error(const gtsam::Values &continuousVals) const override
Definition: DCContinuousFactor.h:56
size_t dim() const override
Definition: DCContinuousFactor.h:91
gtsam::NonlinearFactor Base
Definition: DCContinuousFactor.h:47
boost::shared_ptr< gtsam::GaussianFactor > linearize(const gtsam::Values &continuousVals) const override
Definition: DCContinuousFactor.h:61
bool allInitialized() const
Definition: DCContinuousFactor.h:93
DCContinuousFactor()=default
Definition: DCContinuousFactor.h:24
gtsam::DiscreteFactor::Values DiscreteValues
Definition: DCSAM_types.h:19