Skip to content
Snippets Groups Projects
Commit 8bff4cb6 authored by Timo Weberruß's avatar Timo Weberruß
Browse files

Simplify design

parent 85571bbd
No related branches found
No related tags found
2 merge requests!109Social layers,!55Draft: Implement human grouping
Showing
with 51 additions and 79 deletions
...@@ -11,18 +11,16 @@ armarx_add_component(dynamic_scene_provider ...@@ -11,18 +11,16 @@ armarx_add_component(dynamic_scene_provider
ArVizDrawer.cpp ArVizDrawer.cpp
HumanTracker.cpp HumanTracker.cpp
HumanGrouper.cpp HumanGrouper.cpp
DistanceFunctionDecorator.cpp
OrientationDecorator.cpp
EuclideanDistance.cpp EuclideanDistance.cpp
OrientationDistance.cpp
HEADERS HEADERS
Component.h Component.h
ArVizDrawer.h ArVizDrawer.h
HumanTracker.h HumanTracker.h
HumanGrouper.h HumanGrouper.h
DistanceFunction.h DistanceFunction.h
DistanceFunctionDecorator.h
OrientationDecorator.h
EuclideanDistance.h EuclideanDistance.h
OrientationDistance.h
DEPENDENCIES DEPENDENCIES
# ArmarXCore # ArmarXCore
ArmarXCore ArmarXCore
......
#pragma once #pragma once
template <typename T> #include <armarx/navigation/human/types.h>
class DistanceFunction
namespace armarx::navigation::components::dynamic_scene_provider
{ {
public: using Human = armarx::navigation::human::Human;
DistanceFunction();
virtual double computeDistance(T& t1, T& t2) = 0; class DistanceFunction
}; {
public:
DistanceFunction();
virtual ~DistanceFunction();
virtual double computeDistance(Human &h1, Human &h2) = 0;
};
}
#include "DistanceFunctionDecorator.h"
namespace armarx::navigation::components::dynamic_scene_provider
{
template<typename T>
DistanceFunctionDecorator<T>::DistanceFunctionDecorator(DistanceFunction<T> &subject)
{
this->subject = subject;
}
template<typename T>
double DistanceFunctionDecorator<T>::computeDistance(T &t1, T &t2)
{
return subject.computeDistance(t1, t2);
}
}
#include "DistanceFunction.h"
#include "EuclideanDistance.h" #include "EuclideanDistance.h"
#include <armarx/navigation/human/types.h>
namespace armarx::navigation::components::dynamic_scene_provider namespace armarx::navigation::components::dynamic_scene_provider
{ {
using Human = armarx::navigation::human::Human;
double EuclideanDistance::computeDistance(Human &h1, Human &h2) double EuclideanDistance::computeDistance(Human &h1, Human &h2)
{ {
return (h1.pose.translation() - h2.pose.translation()).norm(); return (h1.pose.translation() - h2.pose.translation()).norm();
......
#pragma once
#include "DistanceFunction.h" #include "DistanceFunction.h"
#include "armarx/navigation/human/types.h"
#pragma once
namespace armarx::navigation::components::dynamic_scene_provider namespace armarx::navigation::components::dynamic_scene_provider
{ {
using Human = armarx::navigation::human::Human; class EuclideanDistance : DistanceFunction
class EuclideanDistance : DistanceFunction<Human>
{ {
public: public:
EuclideanDistance(); EuclideanDistance(double min = 0);
double computeDistance(Human &h1, Human &h2); double computeDistance(Human &h1, Human &h2);
}; };
} }
#include "OrientationDecorator.h"
namespace armarx::navigation::components::dynamic_scene_provider
{
OrientationDecorator::OrientationDecorator(DistanceFunction<Human> &subject, double influenceFactor)
: DistanceFunctionDecorator<Human>(subject)
{
this->influenceFactor = influenceFactor;
}
double OrientationDecorator::computeDistance(Human &t1, Human &t2)
{
double orientationFactor = 1; // TODO: implement
return 0;
}
}
#pragma once
#include "DistanceFunctionDecorator.h"
#include <armarx/navigation/human/types.h>
namespace armarx::navigation::components::dynamic_scene_provider
{
using Human = armarx::navigation::human::Human;
class OrientationDecorator : DistanceFunctionDecorator<Human>
{
public:
OrientationDecorator(DistanceFunction<Human> &subject, double influenceFactor);
virtual double computeDistance(Human &t1, Human &t2);
private:
double influenceFactor;
};
}
#include "OrientationDistance.h"
namespace armarx::navigation::components::dynamic_scene_provider
{
OrientationDistance::OrientationDistance(double max, double min)
{
}
double OrientationDistance::computeDistance(Human &h1, Human &h2)
{
}
}
#pragma once
#include "DistanceFunction.h" #include "DistanceFunction.h"
#pragma once
namespace armarx::navigation::components::dynamic_scene_provider namespace armarx::navigation::components::dynamic_scene_provider
{ {
template <typename T> class OrientationDistance : DistanceFunction
class DistanceFunctionDecorator : DistanceFunction<T>
{ {
public: public:
DistanceFunctionDecorator(DistanceFunction<T>& subject); OrientationDistance(double max = 1, double min = 0);
virtual double computeDistance(T& t1, T& t2); virtual double computeDistance(Human &h1, Human &h2);
private:
DistanceFunction<T> subject;
}; };
} }
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