- worked on about everything - grid walker using plugable modules - wifi models - new distributions - worked on geometric data-structures - added typesafe timestamps - worked on grid-building - added sensor-classes - added sensor analysis (step-detection, turn-detection) - offline data reader - many test-cases
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#ifndef WALKMODULE_H
|
|
#define WALKMODULE_H
|
|
|
|
#include "../../../Grid.h"
|
|
|
|
/** base-class for all WalkStates */
|
|
struct WalkState {
|
|
|
|
/** position where the walk starts */
|
|
GridPoint startPos;
|
|
|
|
/** ctor */
|
|
WalkState(const GridPoint& startPos) : startPos(startPos) {;}
|
|
|
|
};
|
|
|
|
|
|
/**
|
|
* base-class for all walk-modules that influence p(e)
|
|
*/
|
|
template <typename Node, typename WalkState> class WalkModule {
|
|
|
|
public:
|
|
|
|
/** update the given WalkState before starting the walk. e.g. based on sensor readings */
|
|
virtual void updateBefore(WalkState& state) = 0;
|
|
|
|
/** get the probability p(e) from curNode to potentialNode */
|
|
virtual double getProbability(const WalkState& state, const Node& startNode, const Node& curNode, const Node& potentialNode) const = 0;
|
|
|
|
/** one step (edge) is taken */
|
|
virtual void step(WalkState& state, const Node& curNode, const Node& nextNode) = 0;
|
|
|
|
/** update the walk state based on the given transition (if any update is necssary) */
|
|
virtual void updateAfter(WalkState& state, const Node& startNode, const Node& endNode) = 0;
|
|
|
|
};
|
|
|
|
#endif // WALKMODULE_H
|