Skip to content
Snippets Groups Projects
Commit b8e7112f authored by Joan Solà Ortega's avatar Joan Solà Ortega
Browse files

Implement isConstrainedBy(factor)

parent ab9aec50
No related branches found
No related tags found
1 merge request!346Resolve "Frame/Capture/Feature/Landmark Other as list/vectors in FactorBase"
This commit is part of merge request !346. Comments created here will be created in the context of that merge request.
......@@ -79,6 +79,8 @@ class CaptureBase : public NodeBase, public HasStateBlocks, public std::enable_s
public:
unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr &_factor) const;
// State blocks
const std::string& getStructure() const;
......@@ -183,6 +185,7 @@ inline const FactorBasePtrList& CaptureBase::getConstrainedByList() const
return constrained_by_list_;
}
inline TimeStamp CaptureBase::getTimeStamp() const
{
return time_stamp_;
......
......@@ -95,6 +95,9 @@ class FeatureBase : public NodeBase, public std::enable_shared_from_this<Feature
unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr &_factor) const;
// all factors
void getFactorList(FactorBasePtrList & _fac_list) const;
......
......@@ -126,6 +126,7 @@ class FrameBase : public NodeBase, public HasStateBlocks, public std::enable_sha
void getFactorList(FactorBasePtrList& _fac_list) const;
unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr& _factor) const;
void link(TrajectoryBasePtr);
template<typename classType, typename... T>
static std::shared_ptr<classType> emplace(TrajectoryBasePtr _ptr, T&&... all);
......
......@@ -71,6 +71,8 @@ class LandmarkBase : public NodeBase, public HasStateBlocks, public std::enable_
unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr &_factor) const;
MapBasePtr getMap() const;
void link(MapBasePtr);
......
......@@ -130,6 +130,22 @@ void CaptureBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_fac_ptr);
}
bool CaptureBase::isConstrainedBy(const FactorBasePtr &_factor) const
{
FactorBaseConstIter cby_it = std::find_if(constrained_by_list_.begin(),
constrained_by_list_.end(),
[_factor](const FactorBasePtr & cby)
{
return cby == _factor;
}
);
if (cby_it != constrained_by_list_.end())
return true;
else
return false;
}
const std::string& CaptureBase::getStructure() const
{
if (getSensor())
......
......@@ -92,6 +92,21 @@ void FeatureBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_fac_ptr);
}
bool FeatureBase::isConstrainedBy(const FactorBasePtr &_factor) const
{
FactorBaseConstIter cby_it = std::find_if(constrained_by_list_.begin(),
constrained_by_list_.end(),
[_factor](const FactorBasePtr & cby)
{
return cby == _factor;
}
);
if (cby_it != constrained_by_list_.end())
return true;
else
return false;
}
const FactorBasePtrList& FeatureBase::getFactorList() const
{
return factor_list_;
......
......@@ -297,6 +297,21 @@ void FrameBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_fac_ptr);
}
bool FrameBase::isConstrainedBy(const FactorBasePtr &_factor) const
{
FactorBaseConstIter cby_it = std::find_if(constrained_by_list_.begin(),
constrained_by_list_.end(),
[_factor](const FactorBasePtr & cby)
{
return cby == _factor;
}
);
if (cby_it != constrained_by_list_.end())
return true;
else
return false;
}
void FrameBase::link(TrajectoryBasePtr _trj_ptr)
{
assert(!is_removing_ && "linking a removed frame");
......
......@@ -138,6 +138,21 @@ void LandmarkBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_fac_ptr);
}
bool LandmarkBase::isConstrainedBy(const FactorBasePtr &_factor) const
{
FactorBaseConstIter cby_it = std::find_if(constrained_by_list_.begin(),
constrained_by_list_.end(),
[_factor](const FactorBasePtr & cby)
{
return cby == _factor;
}
);
if (cby_it != constrained_by_list_.end())
return true;
else
return false;
}
LandmarkBasePtr LandmarkBase::create(const YAML::Node& _node)
{
unsigned int id = _node["id"] .as< unsigned int >();
......
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