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).