26 namespace application {
 
   38         hidden_maze_number(
"hidden_maze", 0),
 
   39         hidden_x(
"hidden_x", 0),
 
   40         hidden_y(
"hidden_y", 0),
 
   42         epsilon(
"epsilon", 0.0),
 
   43         hit_factor(
"hit_factor", 0.6),
 
   44         miss_factor(
"miss_factor", 0.2),
 
   45         exact_move_probability(
"exact_move_probability", 1.0),
 
   46         overshoot_move_probability(
"overshoot_move_probability", 0.0),
 
   47         undershoot_move_probability(
"undershoot_move_probability", 0.0),
 
   48         max_number_of_iterations(
"max_number_of_iterations",100),
 
   49         min_maze_confidence(
"min_maze_confidence",0.99),
 
   50         statistics_filename(
"statistics_filename",
"statistics_filename.csv")
 
   71     LOG(LINFO) << 
"Properties registered";
 
   82     VGL_MANAGER->initializeGLUT(argc, argv);
 
   86     collector_ptr = std::make_shared < mic::utils::DataCollector<std::string, float> >( );
 
   90     collector_ptr->createContainer(
"Iteration", mic::types::color_rgba(255, 0, 0, 180));
 
   91     collector_ptr->createContainer(
"Converged", mic::types::color_rgba(0, 255, 0, 180));
 
   92     collector_ptr->createContainer(
"Max(Pm)", mic::types::color_rgba(0, 0, 255, 180));
 
   99         LOG(LERROR) << 
"The dataset must consists of at least one maze!";
 
  104     LOG(LNOTICE) << 
"Loaded mazes";
 
  105     for (
size_t m=0; m<
importer.size(); m++) {
 
  107         LOG(LNOTICE) << 
"maze(" <<m<<
"):\n" << (
importer.data()[m]);
 
  117     LOG(LWARNING) << 
"Start new episode";
 
  134     LOG(LWARNING) << 
"End current episode";
 
  145     if (number_of_episodes==(
long)0) {
 
  148     } 
else if ( episode >= (
size_t) number_of_episodes)
 
  155     LOG(LTRACE) << 
"Performing a single step (" << iteration << 
")";
 
  157     short tmp_action = 
action;
 
  161         if (RAN_GEN->uniRandReal() < (double)
epsilon)
 
  166     mic::types::Action2DInterface act;
 
  169             LOG(LINFO) << 
"Random action selection";
 
  170             act = A_RANDOM; 
break;
 
  172             LOG(LINFO) << 
"Sum Of Most Unique Patches action selection";
 
  175             LOG(LINFO) << 
"Most Unique Patch action selection";
 
  178         act = mic::types::NESWAction((mic::types::NESW) (
short)tmp_action);
 
  199     for (
size_t m=0; m<
importer.size(); m++) {
 
void probabilisticMove(mic::types::Action2DInterface ac_, double exact_move_probability_, double overshoot_move_probability_, double undershoot_move_probability_)
 
void setHiddenPose(int hidden_maze_number_, int hidden_x_, int hidden_y_)
 
mic::utils::DataCollectorPtr< std::string, float > collector_ptr
Data collector. 
 
virtual void initializePropertyDependentVariables()
 
void assignInitialProbabilities()
 
EpisodicHistogramFilterMazeLocalization(std::string node_name_="application")
 
mic::configuration::Property< double > exact_move_probability
Property: variable storing the probability that we made the exact move (x+dx). 
 
mic::configuration::Property< short > max_number_of_iterations
Property: stop condition 1: maximal number of iterations - if exceeded, we finish the episode claimin...
 
mic::algorithms::MazeHistogramFilter hf
Histogram filter. 
 
virtual void startNewEpisode()
 
mic::configuration::Property< short > hidden_y
Property: variable denoting the y position are we right now (unknown, to be determined). 
 
mic::configuration::Property< double > epsilon
Property: variable denoting epsilon in aciton selection (the probability "below" which a random actio...
 
void sense(double hit_factor_, double miss_factor_)
 
virtual void finishCurrentEpisode()
 
mic::configuration::Property< std::string > statistics_filename
Property: name of the file to which the statistics (convergence) will be exported. 
 
mic::configuration::Property< short > action
Property: performed action (0-3: NESW, -3: random, -2: sumOfMostUniquePatchesActionSelection, -1: mostUniquePatchActionSelection). 
 
mic::types::Action2DInterface sumOfMostUniquePatchesActionSelection()
 
double max_pm
Maximum maze probability for given episode. 
 
mic::configuration::Property< double > miss_factor
Property: variable denoting the miss factor (the gain when the observation does not coincide with cur...
 
virtual void initialize(int argc, char *argv[])
 
virtual ~EpisodicHistogramFilterMazeLocalization()
 
mic::types::Action2DInterface mostUniquePatchActionSelection()
 
std::vector< double > maze_probabilities
Variable storing the probability that we are currently moving in/observing a given maze...
 
mic::importers::MazeMatrixImporter importer
Importer responsible for loading mazes from file. 
 
void updateAggregatedProbabilities()
 
void setMazes(std::vector< mic::types::MatrixXiPtr > &mazes_, unsigned int number_of_distinctive_patches_)
 
WindowCollectorChart< float > * w_localization_time_chart
Window for displaying chart with statistics on current maze number. 
 
mic::configuration::Property< short > hidden_maze_number
Property: variable denoting in which maze are we right now (unknown, to be determined). 
 
void RegisterApplication(void)
Registers application. 
 
mic::configuration::Property< double > hit_factor
Property: variable denoting the hit factor (the gain when the observation coincides with current posi...
 
mic::configuration::Property< double > undershoot_move_probability
Property: variable storing the probability that we made the "undershoot" move (d+dx-1). 
 
Application for episodic testing of convergence of histogram filter based maze-of-digits localization...
 
mic::configuration::Property< double > min_maze_confidence
Property: stop condition 2: minimal maze confidence - if exceeded, we finish the episode claiming tha...
 
mic::configuration::Property< double > overshoot_move_probability
Property: variable storing the probability that we made the "overshoot" move (d+dx+1). 
 
virtual bool performSingleStep()
 
mic::configuration::Property< short > hidden_x
Property: variable denoting the x position are we right now (unknown, to be determined).