Updated interfaces and wrapped LinearContainerFactor
parent
0ef12f2f20
commit
1985758d35
|
@ -10,6 +10,14 @@ virtual class gtsam::Pose2;
|
|||
virtual class gtsam::Pose3;
|
||||
virtual class gtsam::noiseModel::Base;
|
||||
virtual class gtsam::NonlinearFactor;
|
||||
virtual class gtsam::GaussianFactor;
|
||||
virtual class gtsam::HessianFactor;
|
||||
virtual class gtsam::JacobianFactor;
|
||||
class gtsam::GaussianFactorGraph;
|
||||
class gtsam::NonlinearFactorGraph;
|
||||
class gtsam::Ordering;
|
||||
class gtsam::Values;
|
||||
class gtsam::InvertedOrdering;
|
||||
|
||||
namespace gtsam {
|
||||
|
||||
|
@ -167,7 +175,46 @@ virtual class DGroundConstraint : gtsam::NonlinearFactor {
|
|||
};
|
||||
|
||||
//*************************************************************************
|
||||
// General nonlinear factor types
|
||||
// nonlinear
|
||||
//*************************************************************************
|
||||
#include <gtsam_unstable/nonlinear/LinearContainerFactor.h>
|
||||
virtual class LinearContainerFactor : gtsam::NonlinearFactor {
|
||||
|
||||
LinearContainerFactor(gtsam::GaussianFactor* factor, const gtsam::Ordering& ordering,
|
||||
const gtsam::Values& linearizationPoint);
|
||||
LinearContainerFactor(gtsam::GaussianFactor* factor, const gtsam::Values& linearizationPoint);
|
||||
LinearContainerFactor(gtsam::GaussianFactor* factor, const gtsam::InvertedOrdering& ordering,
|
||||
const gtsam::Values& linearizationPoint);
|
||||
|
||||
LinearContainerFactor(gtsam::GaussianFactor* factor, const gtsam::Ordering& ordering);
|
||||
LinearContainerFactor(gtsam::GaussianFactor* factor);
|
||||
LinearContainerFactor(gtsam::GaussianFactor* factor, const gtsam::InvertedOrdering& ordering);
|
||||
|
||||
gtsam::GaussianFactor* factor() const;
|
||||
// const boost::optional<Values>& linearizationPoint() const;
|
||||
|
||||
gtsam::GaussianFactor* order(const gtsam::Ordering& ordering) const;
|
||||
gtsam::GaussianFactor* negate(const gtsam::Ordering& ordering) const;
|
||||
gtsam::NonlinearFactor* negate() const;
|
||||
|
||||
bool isJacobian() const;
|
||||
gtsam::JacobianFactor* toJacobian() const;
|
||||
gtsam::HessianFactor* toHessian() const;
|
||||
|
||||
static gtsam::NonlinearFactorGraph convertLinearGraph(const gtsam::GaussianFactorGraph& linear_graph,
|
||||
const gtsam::Ordering& ordering, const gtsam::Values& linearizationPoint);
|
||||
static gtsam::NonlinearFactorGraph convertLinearGraph(const gtsam::GaussianFactorGraph& linear_graph,
|
||||
const gtsam::InvertedOrdering& invOrdering, const gtsam::Values& linearizationPoint);
|
||||
|
||||
static gtsam::NonlinearFactorGraph convertLinearGraph(const gtsam::GaussianFactorGraph& linear_graph,
|
||||
const gtsam::Ordering& ordering);
|
||||
static gtsam::NonlinearFactorGraph convertLinearGraph(const gtsam::GaussianFactorGraph& linear_graph,
|
||||
const gtsam::InvertedOrdering& invOrdering);
|
||||
|
||||
}; // \class LinearContainerFactor
|
||||
|
||||
//*************************************************************************
|
||||
// slam
|
||||
//*************************************************************************
|
||||
#include <gtsam/geometry/Pose2.h>
|
||||
|
||||
|
|
|
@ -219,17 +219,20 @@ NonlinearFactor::shared_ptr LinearContainerFactor::negate() const {
|
|||
|
||||
/* ************************************************************************* */
|
||||
NonlinearFactorGraph LinearContainerFactor::convertLinearGraph(
|
||||
const GaussianFactorGraph& linear_graph, const Ordering& ordering) {
|
||||
const GaussianFactorGraph& linear_graph, const Ordering& ordering,
|
||||
const Values& linearizationPoint) {
|
||||
return convertLinearGraph(linear_graph, ordering.invert());
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
NonlinearFactorGraph LinearContainerFactor::convertLinearGraph(
|
||||
const GaussianFactorGraph& linear_graph, const InvertedOrdering& invOrdering) {
|
||||
const GaussianFactorGraph& linear_graph, const InvertedOrdering& invOrdering,
|
||||
const Values& linearizationPoint) {
|
||||
NonlinearFactorGraph result;
|
||||
BOOST_FOREACH(const GaussianFactor::shared_ptr& f, linear_graph)
|
||||
if (f)
|
||||
result.push_back(NonlinearFactorGraph::sharedFactor(new LinearContainerFactor(f, invOrdering)));
|
||||
result.push_back(NonlinearFactorGraph::sharedFactor(
|
||||
new LinearContainerFactor(f, invOrdering, linearizationPoint)));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -132,10 +132,10 @@ public:
|
|||
* If the inverse ordering is present, it will be faster.
|
||||
*/
|
||||
static NonlinearFactorGraph convertLinearGraph(const GaussianFactorGraph& linear_graph,
|
||||
const Ordering& ordering);
|
||||
const Ordering& ordering, const Values& linearizationPoint = Values());
|
||||
|
||||
static NonlinearFactorGraph convertLinearGraph(const GaussianFactorGraph& linear_graph,
|
||||
const InvertedOrdering& invOrdering);
|
||||
const InvertedOrdering& invOrdering, const Values& linearizationPoint = Values());
|
||||
|
||||
protected:
|
||||
void rekeyFactor(const Ordering& ordering);
|
||||
|
|
Loading…
Reference in New Issue