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"
...@@ -79,6 +79,8 @@ class CaptureBase : public NodeBase, public HasStateBlocks, public std::enable_s ...@@ -79,6 +79,8 @@ class CaptureBase : public NodeBase, public HasStateBlocks, public std::enable_s
public: public:
unsigned int getHits() const; unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const; const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr &_factor) const;
// State blocks // State blocks
const std::string& getStructure() const; const std::string& getStructure() const;
...@@ -183,6 +185,7 @@ inline const FactorBasePtrList& CaptureBase::getConstrainedByList() const ...@@ -183,6 +185,7 @@ inline const FactorBasePtrList& CaptureBase::getConstrainedByList() const
return constrained_by_list_; return constrained_by_list_;
} }
inline TimeStamp CaptureBase::getTimeStamp() const inline TimeStamp CaptureBase::getTimeStamp() const
{ {
return time_stamp_; return time_stamp_;
......
...@@ -95,6 +95,9 @@ class FeatureBase : public NodeBase, public std::enable_shared_from_this<Feature ...@@ -95,6 +95,9 @@ class FeatureBase : public NodeBase, public std::enable_shared_from_this<Feature
unsigned int getHits() const; unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const; const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr &_factor) const;
// all factors // all factors
void getFactorList(FactorBasePtrList & _fac_list) const; void getFactorList(FactorBasePtrList & _fac_list) const;
......
...@@ -126,6 +126,7 @@ class FrameBase : public NodeBase, public HasStateBlocks, public std::enable_sha ...@@ -126,6 +126,7 @@ class FrameBase : public NodeBase, public HasStateBlocks, public std::enable_sha
void getFactorList(FactorBasePtrList& _fac_list) const; void getFactorList(FactorBasePtrList& _fac_list) const;
unsigned int getHits() const; unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const; const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr& _factor) const;
void link(TrajectoryBasePtr); void link(TrajectoryBasePtr);
template<typename classType, typename... T> template<typename classType, typename... T>
static std::shared_ptr<classType> emplace(TrajectoryBasePtr _ptr, T&&... all); static std::shared_ptr<classType> emplace(TrajectoryBasePtr _ptr, T&&... all);
......
...@@ -71,6 +71,8 @@ class LandmarkBase : public NodeBase, public HasStateBlocks, public std::enable_ ...@@ -71,6 +71,8 @@ class LandmarkBase : public NodeBase, public HasStateBlocks, public std::enable_
unsigned int getHits() const; unsigned int getHits() const;
const FactorBasePtrList& getConstrainedByList() const; const FactorBasePtrList& getConstrainedByList() const;
bool isConstrainedBy(const FactorBasePtr &_factor) const;
MapBasePtr getMap() const; MapBasePtr getMap() const;
void link(MapBasePtr); void link(MapBasePtr);
......
...@@ -130,6 +130,22 @@ void CaptureBase::removeConstrainedBy(FactorBasePtr _fac_ptr) ...@@ -130,6 +130,22 @@ void CaptureBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_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 const std::string& CaptureBase::getStructure() const
{ {
if (getSensor()) if (getSensor())
......
...@@ -92,6 +92,21 @@ void FeatureBase::removeConstrainedBy(FactorBasePtr _fac_ptr) ...@@ -92,6 +92,21 @@ void FeatureBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_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 const FactorBasePtrList& FeatureBase::getFactorList() const
{ {
return factor_list_; return factor_list_;
......
...@@ -297,6 +297,21 @@ void FrameBase::removeConstrainedBy(FactorBasePtr _fac_ptr) ...@@ -297,6 +297,21 @@ void FrameBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_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) void FrameBase::link(TrajectoryBasePtr _trj_ptr)
{ {
assert(!is_removing_ && "linking a removed frame"); assert(!is_removing_ && "linking a removed frame");
......
...@@ -138,6 +138,21 @@ void LandmarkBase::removeConstrainedBy(FactorBasePtr _fac_ptr) ...@@ -138,6 +138,21 @@ void LandmarkBase::removeConstrainedBy(FactorBasePtr _fac_ptr)
constrained_by_list_.remove(_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) LandmarkBasePtr LandmarkBase::create(const YAML::Node& _node)
{ {
unsigned int id = _node["id"] .as< unsigned int >(); 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