00001 #ifndef FUNCTIONS_H
00002 #define FUNCTIONS_H
00003
00004 #include "SimulationMainWindow.h"
00005 #include "SimulationDialog.h"
00006 #include "valueIteration.h"
00007 #include "gui_canvas.h"
00008 #include "V24.h"
00009 #include "NNetwork.h"
00010
00011
00012 #define XMAX 100
00013 #define YMAX 100
00014 #define UP 00
00015 #define DOWN 01
00016 #define LEFT 02
00017 #define RIGHT 03
00018 #define NOTHING 04
00019
00020 #include <qapplication.h>
00021 #include <qpixmap.h>
00022 #include <qpainter.h>
00023 #include <qslider.h>
00024 #include <qpushbutton.h>
00025 #include <qtable.h>
00026 #include <qlineedit.h>
00027 #include <qlabel.h>
00028 #include <qstring.h>
00029 #include <qsignal.h>
00030 #include <qmutex.h>
00031 #include <qspinbox.h>
00032 #include <qtabwidget.h>
00033 #include <qpoint.h>
00034 #include <qfiledialog.h>
00035 #include <qfile.h>
00036 #include <qdatastream.h>
00037 #include <qmessagebox.h>
00038 #include <qcheckbox.h>
00039 #include <qradiobutton.h>
00040 #include <qtimer.h>
00041 #include <qcombobox.h>
00042
00043 #include "gui_debug.h"
00044 #include "V24.h"
00045
00046
00050 class Simulation : public QMainWindow
00051 {
00052 Q_OBJECT
00053
00054 public:
00055 void initDialog();
00056 Simulation(QApplication *_mainApp);
00057 ~Simulation();
00058
00059
00060 SimulationMainWindow *lg;
00061 ValueIterationThread *pkt;
00062 QTimer *st;
00063 V24Control *v24;
00064 SimulationDialog *sd;
00065
00066 char ki_in;
00067 float gamma;
00068 float expParameter;
00069 uchar expMode;
00070 uchar scalX, scalY;
00071
00072 private:
00073 int i_update;
00074 int speed;
00075 QApplication *dad;
00076 QPixmap pix[6];
00077 QWidget *_widget;
00078 QMutex *tableMutex;
00079 QMutex *debugMutex;
00080 QMutex *guiMutex;
00081 bool guiReady;
00082 int i_cell;
00083 int iMantisse;
00084 double feedbackMemory[YMAX][XMAX][5];
00085 float fValueMemory[YMAX][XMAX];
00086 int action[YMAX][XMAX];
00087 QPoint simuPos, simuPosNew;
00088 QDialog *simuDialog;
00089
00090 void setReward(int x, int y, int action, double reward);
00091 double getReward(int x, int y, int action);
00092
00093 private slots:
00094 void apply_button_clicked();
00095 void learn_button_clicked();
00096 void delete_button_clicked();
00097 void speed_slider_changed(int _value);
00098 void vi_train_random_values_changed (int _value);
00099 void iteration_button_clicked();
00100 void stop_button_clicked();
00101 void updatePolicyTable(int _row, int _column, double _value, int _bestdirection);
00102 void updateFeedbackTable(int _row, int _column, double _up, double _down, double _left, double _right);
00103 void debugOutput (QString _d);
00104 void feedbackClicked(int row, int col);
00105 void save_button_clicked();
00106 void save_matlab_button_clicked();
00107 void load_button_clicked();
00108 void save_feedback_clicked();
00109 void start_simulation_clicked();
00110 void stop_simulation_clicked();
00111 void resume_simulation_clicked();
00112 void simulationWalk();
00113 void stopLearningThread();
00114 void adjust_network_error(double _newError);
00115
00116
00117 void learn_method_vi_clicked();
00118 void learn_method_nn_clicked();
00119 void learn_method_vi_nn_clicked();
00120
00121
00122 void v24_start_walking_button_clicked();
00123 void v24_stop_walking_button_clicked();
00124 void v24_start_learning_button_clicked();
00125 void v24_copy_states_and_gamma_to_robot_button_clicked();
00126 void v24_get_states_and_gamma_from_robot_button_clicked();
00127 void v24_getPositionAndMode_button_clicked();
00128 void v24_ramtest_button_clicked();
00129 void v24_explore_feedback_button_clicked();
00130 void v24_accept_button_clicked();
00131 void v24_distance_button_clicked();
00132 void v24_reset_distance_button_clicked();
00133 void v24_exploration_accept_clicked();
00134 void v24_get_exploration_clicked();
00135 void v24_exploration_mode_changed();
00136 void v24_debug_button_clicked();
00137 };
00138
00139 #endif