]> git.llucax.com Git - z.facultad/75.68/celdas.git/blob - trunk/src/main.cpp
Se mejora el demo, se agrega una rueda más (central) al robot para que sea más
[z.facultad/75.68/celdas.git] / trunk / src / main.cpp
1 #include "main.h"
2
3 //
4 double CMiEntorno::AvanzarX()
5 {
6         avanzo_en_x = true ;
7         return 0 ;
8 }
9
10
11 double CMiEntorno::AvanzarY()
12 {
13         avanzo_en_y = true ;
14         return 0 ;
15 }
16
17
18 double CMiEntorno::AvanzarZ()
19 {
20         avanzo_en_z = true ;
21         return 0 ;
22 }
23
24
25 CMiEntorno::CMiEntorno():
26         avanzo_en_x(true), avanzo_en_y(true), avanzo_en_z(true)
27 {
28         // Inicializo el Entorno
29         datos.add("robot.avanzo_en_x", 1) ;
30         datos.add("robot.avanzo_en_y", 1) ;
31         datos.add("robot.avanzo_en_z", 1) ;
32
33         datos.add("robot.sensor_1", 0) ;
34         datos.add("robot.sensor_2", 0) ;
35         datos.add("robot.sensor_3", 0) ;
36 }
37
38
39 void CMiEntorno::actualizar()
40 {
41         datos.find("robot.sensor_1") = sensor_1 ;
42         datos.find("robot.sensor_2") = sensor_2 ;
43         datos.find("robot.sensor_3") = sensor_3 ;
44
45         datos.find("robot.avanzo_en_x") = avanzo_en_x?1:0 ;
46         datos.find("robot.avanzo_en_y") = avanzo_en_y?1:0 ;
47         datos.find("robot.avanzo_en_z") = avanzo_en_z?1:0 ;
48
49         
50 }
51
52 struct CMiTeoria1: CTeoria< CMiEntorno >
53 {
54         CMiTeoria1(CMiEntorno& e):
55                 CTeoria< CMiEntorno >("Avanzar_X_1", 1, 1, e)
56         {
57                 datos_iniciales.add ("robot.sensor_1", 0) ;
58                 datos_finales.add ("robot.avanzo_en_x", 1) ;
59         }
60         double funcion()
61         {
62                 entorno.avanzo_en_x = true ;
63                 return 0 ;
64         }
65 };
66
67 struct CMiTeoria2: CTeoria< CMiEntorno >
68 {
69         CMiTeoria2(CMiEntorno& e):
70                 CTeoria< CMiEntorno >("Avanzar_Y_1", 1, 1, e)
71         {
72                 datos_iniciales.add ("robot.sensor_2", 0) ;
73                 datos_finales.add ("robot.avanzo_en_y", 1) ;
74         }
75         double funcion()
76         {
77                 entorno.avanzo_en_y = true ;
78                 return 0 ;
79         }
80 };
81
82 struct CMiTeoria3: CTeoria< CMiEntorno >
83 {
84         CMiTeoria3(CMiEntorno& e):
85                 CTeoria< CMiEntorno >("Avanzar_Z_1", 1, 1, e)
86         {
87                 datos_iniciales.add ("robot.sensor_3", 0) ;
88                 datos_finales.add ("robot.avanzo_en_z", 1) ;
89         }
90         double funcion()
91         {
92                 entorno.avanzo_en_z = true ;
93                 return 0 ;
94         }
95 };
96
97 //
98 int main(int argc, char** argv)
99 {
100         //
101         CMiEntorno                     e ;
102         CSistemaAutonomo< CMiEntorno > a(e) ;
103
104
105         // Inicializo las teorias
106         a.teorias.add("teoria1", new CMiTeoria1(e)) ;
107         a.teorias.add("teoria2", new CMiTeoria2(e)) ;
108         a.teorias.add("teoria3", new CMiTeoria3(e)) ;
109
110
111         // Obtengo un plan
112         double p = 1 ;
113         CIndiceMagico<CTeoria< CMiEntorno >* >* p_plan ;
114         CIndiceMagico<t_dato> datos_finales ;
115
116         datos_finales.add ("robot.avanzo_en_x", 1) ;
117
118         p_plan = a.new_plan(datos_finales, p) ;
119
120         for (int i=0; i<p_plan->count(); i++)
121                 std::cout << (*p_plan)[i]->nombre << std::endl ;
122
123
124         return 0 ;
125 }
126
127