Skip to content
Snippets Groups Projects
Commit 9be1e9d5 authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

removed frame factory

parent c4f664b3
No related branches found
No related tags found
1 merge request!274Resolve "Emplace API inconsistent with ProcessorTrackerFeature/Landmark functions"
...@@ -155,18 +155,19 @@ class FrameBase : public NodeBase, public std::enable_shared_from_this<FrameBase ...@@ -155,18 +155,19 @@ class FrameBase : public NodeBase, public std::enable_shared_from_this<FrameBase
CaptureBasePtr addCapture(CaptureBasePtr _capt_ptr); CaptureBasePtr addCapture(CaptureBasePtr _capt_ptr);
void removeCapture(CaptureBasePtr _capt_ptr); void removeCapture(CaptureBasePtr _capt_ptr);
void setTrajectory(TrajectoryBasePtr _trj_ptr); void setTrajectory(TrajectoryBasePtr _trj_ptr);
public:
static FrameBasePtr create_PO_2D (const FrameType & _tp,
const TimeStamp& _ts,
const Eigen::VectorXs& _x = Eigen::VectorXs::Zero(3));
static FrameBasePtr create_PO_3D (const FrameType & _tp,
const TimeStamp& _ts,
const Eigen::VectorXs& _x = Eigen::VectorXs::Zero(7));
static FrameBasePtr create_POV_3D(const FrameType & _tp,
const TimeStamp& _ts,
const Eigen::VectorXs& _x = Eigen::VectorXs::Zero(10));
virtual FactorBasePtr addConstrainedBy(FactorBasePtr _fac_ptr); virtual FactorBasePtr addConstrainedBy(FactorBasePtr _fac_ptr);
virtual void removeConstrainedBy(FactorBasePtr _fac_ptr); virtual void removeConstrainedBy(FactorBasePtr _fac_ptr);
// public:
// static FrameBasePtr create_PO_2D (const FrameType & _tp,
// const TimeStamp& _ts,
// const Eigen::VectorXs& _x = Eigen::VectorXs::Zero(3));
// static FrameBasePtr create_PO_3D (const FrameType & _tp,
// const TimeStamp& _ts,
// const Eigen::VectorXs& _x = Eigen::VectorXs::Zero(7));
// static FrameBasePtr create_POV_3D(const FrameType & _tp,
// const TimeStamp& _ts,
// const Eigen::VectorXs& _x = Eigen::VectorXs::Zero(10));
}; };
} // namespace wolf } // namespace wolf
......
...@@ -386,42 +386,6 @@ void FrameBase::removeConstrainedBy(FactorBasePtr _fac_ptr) ...@@ -386,42 +386,6 @@ void FrameBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_fac_ptr); constrained_by_list_.remove(_fac_ptr);
} }
FrameBasePtr FrameBase::create_PO_2D(const FrameType & _tp,
const TimeStamp& _ts,
const Eigen::VectorXs& _x)
{
assert(_x.size() == 3 && "Wrong state vector size. Should be 3 for 2D!");
StateBlockPtr p_ptr ( std::make_shared<StateBlock> (_x.head <2> ( ) ) );
StateBlockPtr o_ptr ( std::make_shared<StateAngle> ((Scalar) _x(2) ) );
StateBlockPtr v_ptr ( nullptr );
FrameBasePtr f ( std::make_shared<FrameBase>(_tp, _ts, p_ptr, o_ptr, v_ptr) );
f->setType("PO 2D");
return f;
}
FrameBasePtr FrameBase::create_PO_3D(const FrameType & _tp,
const TimeStamp& _ts,
const Eigen::VectorXs& _x)
{
assert(_x.size() == 7 && "Wrong state vector size. Should be 7 for 3D!");
StateBlockPtr p_ptr ( std::make_shared<StateBlock> (_x.head <3> ( ) ) );
StateBlockPtr o_ptr ( std::make_shared<StateQuaternion> (_x.tail <4> ( ) ) );
StateBlockPtr v_ptr ( nullptr );
FrameBasePtr f ( std::make_shared<FrameBase>(_tp, _ts, p_ptr, o_ptr, v_ptr) );
f->setType("PO 3D");
return f;
}
FrameBasePtr FrameBase::create_POV_3D(const FrameType & _tp,
const TimeStamp& _ts,
const Eigen::VectorXs& _x)
{
assert(_x.size() == 10 && "Wrong state vector size. Should be 10 for 3D!");
StateBlockPtr p_ptr ( std::make_shared<StateBlock> (_x.head <3> ( ) ) );
StateBlockPtr o_ptr ( std::make_shared<StateQuaternion> (_x.segment <4> (3) ) );
StateBlockPtr v_ptr ( std::make_shared<StateBlock> (_x.tail <3> ( ) ) );
FrameBasePtr f ( std::make_shared<FrameBase>(_tp, _ts, p_ptr, o_ptr, v_ptr) );
f->setType("POV 3D");
return f;
}
void FrameBase::link(TrajectoryBasePtr _ptr) void FrameBase::link(TrajectoryBasePtr _ptr)
{ {
if(_ptr) if(_ptr)
...@@ -436,14 +400,8 @@ void FrameBase::link(TrajectoryBasePtr _ptr) ...@@ -436,14 +400,8 @@ void FrameBase::link(TrajectoryBasePtr _ptr)
WOLF_WARN("Linking with a nullptr"); WOLF_WARN("Linking with a nullptr");
} }
} }
} // namespace wolf
#include "core/common/factory.h"
namespace wolf
{ {
namespace{ const bool WOLF_UNUSED Frame_PO_2D_Registered = FrameFactory::get().registerCreator("PO 2D", FrameBase::create_PO_2D ); }
namespace{ const bool WOLF_UNUSED Frame_PO_3D_Registered = FrameFactory::get().registerCreator("PO 3D", FrameBase::create_PO_3D ); }
namespace{ const bool WOLF_UNUSED Frame_POV_3D_Registered = FrameFactory::get().registerCreator("POV 3D", FrameBase::create_POV_3D); }
void FrameBase::setProblem(ProblemPtr _problem) void FrameBase::setProblem(ProblemPtr _problem)
{ {
if (_problem == nullptr || _problem == this->getProblem()) if (_problem == nullptr || _problem == this->getProblem())
...@@ -456,4 +414,52 @@ void FrameBase::setProblem(ProblemPtr _problem) ...@@ -456,4 +414,52 @@ void FrameBase::setProblem(ProblemPtr _problem)
for (auto cap : capture_list_) for (auto cap : capture_list_)
cap->setProblem(_problem); cap->setProblem(_problem);
} }
//FrameBasePtr FrameBase::create_PO_2D(const FrameType & _tp,
// const TimeStamp& _ts,
// const Eigen::VectorXs& _x)
//{
// assert(_x.size() == 3 && "Wrong state vector size. Should be 3 for 2D!");
// StateBlockPtr p_ptr ( std::make_shared<StateBlock> (_x.head <2> ( ) ) );
// StateBlockPtr o_ptr ( std::make_shared<StateAngle> ((Scalar) _x(2) ) );
// StateBlockPtr v_ptr ( nullptr );
// FrameBasePtr f ( std::make_shared<FrameBase>(_tp, _ts, p_ptr, o_ptr, v_ptr) );
// f->setType("PO 2D");
// return f;
//}
//
//FrameBasePtr FrameBase::create_PO_3D(const FrameType & _tp,
// const TimeStamp& _ts,
// const Eigen::VectorXs& _x)
//{
// assert(_x.size() == 7 && "Wrong state vector size. Should be 7 for 3D!");
// StateBlockPtr p_ptr ( std::make_shared<StateBlock> (_x.head <3> ( ) ) );
// StateBlockPtr o_ptr ( std::make_shared<StateQuaternion> (_x.tail <4> ( ) ) );
// StateBlockPtr v_ptr ( nullptr );
// FrameBasePtr f ( std::make_shared<FrameBase>(_tp, _ts, p_ptr, o_ptr, v_ptr) );
// f->setType("PO 3D");
// return f;
//}
//
//FrameBasePtr FrameBase::create_POV_3D(const FrameType & _tp,
// const TimeStamp& _ts,
// const Eigen::VectorXs& _x)
//{
// assert(_x.size() == 10 && "Wrong state vector size. Should be 10 for 3D!");
// StateBlockPtr p_ptr ( std::make_shared<StateBlock> (_x.head <3> ( ) ) );
// StateBlockPtr o_ptr ( std::make_shared<StateQuaternion> (_x.segment <4> (3) ) );
// StateBlockPtr v_ptr ( std::make_shared<StateBlock> (_x.tail <3> ( ) ) );
// FrameBasePtr f ( std::make_shared<FrameBase>(_tp, _ts, p_ptr, o_ptr, v_ptr) );
// f->setType("POV 3D");
// return f;
//}
} // namespace wolf } // namespace wolf
//#include "core/common/factory.h"
//namespace wolf
//{
//namespace{ const bool WOLF_UNUSED Frame_PO_2D_Registered = FrameFactory::get().registerCreator("PO 2D", FrameBase::create_PO_2D ); }
//namespace{ const bool WOLF_UNUSED Frame_PO_3D_Registered = FrameFactory::get().registerCreator("PO 3D", FrameBase::create_PO_3D ); }
//namespace{ const bool WOLF_UNUSED Frame_POV_3D_Registered = FrameFactory::get().registerCreator("POV 3D", FrameBase::create_POV_3D); }
//} // namespace wolf
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment