]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/main.cpp
Bugfixes varios. Lo más importante es que ahora se almacenan las teorías en los plane...
[z.facultad/75.68/celdas.git] / trunk / src / main.cpp
index 3076aa1c521570faa5391d452273450f320e491a..ea0826e858b6f5b170b875602e45a18808e7ae2d 100644 (file)
@@ -5,6 +5,16 @@
 //
 void CMiEntorno::inicializar()
 {
+       // Inicializo el Entorno
+       datos.add("robot.sensor_adelante",      1) ;
+       datos.add("robot.sensor_atras",         0) ;
+       datos.add("robot.sensor_derecha",       0) ;
+       datos.add("robot.sensor_izquierda", 0) ;
+       datos.add("robot.avanzo_adelante",      0) ;
+       datos.add("robot.avanzo_atras",         0) ;
+       datos.add("robot.avanzo_derecha",       0) ;
+       datos.add("robot.avanzo_izquierda", 0) ;
+/*
        // Inicializo el Entorno
        datos.add("robot.avanzo_en_x", 0) ;
        // old datos.add("robot.avanzo_en_y", 0) ;
@@ -14,11 +24,22 @@ void CMiEntorno::inicializar()
        datos.add("robot.sensor_2", 0) ;
        datos.add("robot.sensor_3", 0) ;
        datos.add("robot.sensor_4", 0) ; // new
+*/
 }
 
 
 void CMiEntorno::actualizar()
 {
+       datos.find("robot.avanzo_adelante")             = 0 ;
+       datos.find("robot.avanzo_atras")                = 0 ;
+       datos.find("robot.avanzo_derecha")              = 0 ;
+       datos.find("robot.avanzo_izquierda")            = 0 ;
+       datos.find("robot.sensor_adelante")             = 0 ;
+       datos.find("robot.sensor_atras")                = 0 ;
+       datos.find("robot.sensor_derecha")              = 0 ;
+       datos.find("robot.sensor_izquierda")            = 0 ;
+
+/*
        datos.find("robot.sensor_1") = sensor_1 ;
        datos.find("robot.sensor_2") = sensor_2 ;
        datos.find("robot.sensor_3") = sensor_3 ;
@@ -27,7 +48,7 @@ void CMiEntorno::actualizar()
        datos.find("robot.avanzo_en_x") = avanzo_en_x?1:0 ;
        datos.find("robot.avanzo_en_y") = avanzo_en_y?1:0 ;
        datos.find("robot.avanzo_en_z") = avanzo_en_z?1:0 ;
-
+*/
        
 }
 
@@ -87,6 +108,7 @@ int main(int argc, char* argv[])
        t3.datos_finales.add ("robot.sensor_3", ANY) ;
 */
 
+/*
        // Inicializo las teorias
        CTeoria t1("Avanzar_X_1", "AvanzarX", 1, 1) ;
        t1.datos_iniciales.add ("robot.sensor_1", ANY) ;
@@ -113,6 +135,7 @@ int main(int argc, char* argv[])
        t2.datos_finales.add ("robot.sensor_3", ANY) ;
        t2.datos_finales.add ("robot.sensor_4", ANY) ;
 
+
        a.teorias.add(t1.nombre.c_str(), t1) ;
        a.teorias.add(t2.nombre.c_str(), t2) ;
        // OLD a.teorias.add(t3.nombre.c_str(), t3) ;
@@ -125,38 +148,136 @@ int main(int argc, char* argv[])
        std::cout << "  .datos_finales:\n" << t2.datos_finales << "\n";
 #endif // DEBUG
 
-       
+*/
+
+       // Inicializo las teorias
+       CTeoria t1("Avanzar", "avanzar", 1, 1) ;
+       t1.datos_iniciales.add ("robot.sensor_adelante",        0) ;
+       t1.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
+       t1.datos_iniciales.add ("robot.sensor_derecha",         ANY) ;
+       t1.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
+       t1.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
+       t1.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
+       t1.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
+       t1.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
+       t1.datos_finales.add ("robot.sensor_adelante",          ANY) ;
+       t1.datos_finales.add ("robot.sensor_atras",             ANY) ;
+       t1.datos_finales.add ("robot.sensor_derecha",           ANY) ;
+       t1.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
+       t1.datos_finales.add ("robot.avanzo_adelante",          1) ;
+       t1.datos_finales.add ("robot.avanzo_atras",             0) ;
+       t1.datos_finales.add ("robot.avanzo_derecha",           0) ;
+       t1.datos_finales.add ("robot.avanzo_izquierda",         0) ;
+
+
+       CTeoria t2("Retroceder", "retroceder", 1, 1) ;
+       t2.datos_iniciales.add ("robot.sensor_adelante",        ANY) ;
+       t2.datos_iniciales.add ("robot.sensor_atras",           0) ;
+       t2.datos_iniciales.add ("robot.sensor_derecha",         ANY) ;
+       t2.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
+       t2.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
+       t2.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
+       t2.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
+       t2.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
+       t2.datos_finales.add ("robot.sensor_adelante",          ANY) ;
+       t2.datos_finales.add ("robot.sensor_atras",             ANY) ;
+       t2.datos_finales.add ("robot.sensor_derecha",           ANY) ;
+       t2.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
+       t2.datos_finales.add ("robot.avanzo_adelante",          0) ;
+       t2.datos_finales.add ("robot.avanzo_atras",             1) ;
+       t2.datos_finales.add ("robot.avanzo_derecha",           0) ;
+       t2.datos_finales.add ("robot.avanzo_izquierda",         0) ;
+
+
+       CTeoria t3("Derecha", "derecha", 1, 1) ;
+       t3.datos_iniciales.add ("robot.sensor_adelante",        ANY) ;
+       t3.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
+       t3.datos_iniciales.add ("robot.sensor_derecha",         0) ;
+       t3.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
+       t3.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
+       t3.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
+       t3.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
+       t3.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
+       t3.datos_finales.add ("robot.sensor_adelante",          ANY) ;
+       t3.datos_finales.add ("robot.sensor_atras",             ANY) ;
+       t3.datos_finales.add ("robot.sensor_derecha",           ANY) ;
+       t3.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
+       t3.datos_finales.add ("robot.avanzo_adelante",          0) ;
+       t3.datos_finales.add ("robot.avanzo_atras",             0) ;
+       t3.datos_finales.add ("robot.avanzo_derecha",           1) ;
+       t3.datos_finales.add ("robot.avanzo_izquierda",         0) ;
+
+
+       CTeoria t4("Eludir.1", "derecha", 1, 1) ;
+       t4.datos_iniciales.add ("robot.sensor_adelante",        1) ;
+       t4.datos_iniciales.add ("robot.sensor_atras",           ANY) ;
+       t4.datos_iniciales.add ("robot.sensor_derecha",         0) ;
+       t4.datos_iniciales.add ("robot.sensor_izquierda",       ANY) ;
+       t4.datos_iniciales.add ("robot.avanzo_adelante",        ANY) ;
+       t4.datos_iniciales.add ("robot.avanzo_atras",           ANY) ;
+       t4.datos_iniciales.add ("robot.avanzo_derecha",         ANY) ;
+       t4.datos_iniciales.add ("robot.avanzo_izquierda",       ANY) ;  
+       t4.datos_finales.add ("robot.sensor_adelante",          0) ;
+       t4.datos_finales.add ("robot.sensor_atras",             ANY) ;
+       t4.datos_finales.add ("robot.sensor_derecha",           ANY) ;
+       t4.datos_finales.add ("robot.sensor_izquierda",         ANY) ;
+       t4.datos_finales.add ("robot.avanzo_adelante",          0) ;
+       t4.datos_finales.add ("robot.avanzo_atras",             ANY) ;
+       t4.datos_finales.add ("robot.avanzo_derecha",           1) ;
+       t4.datos_finales.add ("robot.avanzo_izquierda",         ANY) ;
+
+
+       a.teorias.add(t1.nombre, &t1) ;
+       a.teorias.add(t2.nombre, &t2) ;
+       a.teorias.add(t3.nombre, &t3) ;
+       a.teorias.add(t4.nombre, &t4) ;
+#ifdef DEBUG
+       std::cout << "Agrega teoria: " << t1 << "\n";
+       std::cout << "\tdatos_iniciales:\n" << t1.datos_iniciales << "\n";
+       std::cout << "\tdatos_finales:\n" << t1.datos_finales << "\n";
+       std::cout << "Agrega teoria: " << t2 << "\n";
+       std::cout << "\tdatos_iniciales:\n" << t2.datos_iniciales << "\n";
+       std::cout << "\tdatos_finales:\n" << t2.datos_finales << "\n";
+       std::cout << "Agrega teoria: " << t3 << "\n";
+       std::cout << "\tdatos_iniciales:\n" << t3.datos_iniciales << "\n";
+       std::cout << "\tdatos_finales:\n" << t3.datos_finales << "\n";
+       std::cout << "Agrega teoria: " << t4 << "\n";
+       std::cout << "\tdatos_iniciales:\n" << t4.datos_iniciales << "\n";
+       std::cout << "\tdatos_finales:\n" << t4.datos_finales << "\n";
+#endif // DEBUG
+
        // Inicializo el SA
        delete a.p_entorno;
        a.p_entorno = e;
 
-
        // Obtengo un plan
        CIndiceMagico<t_dato> datos_finales;
 
-       a.m_datos_finales.add ("robot.avanzo_en_x", 1) ;
-       a.plan();
-       for (unsigned i=0; i<a.m_plan.count(); i++)
-               std::cout << a.m_plan[i].nombre.c_str() << std::endl ;
-       
-       if (a.has_next_theory())
-       {
-               CTeoria* t = a.get_next_theory();
-               if (a.validate_theory(t))
-                       std::cout << "Valida\n";
-       }
-//     datos_finales.add ("robot.avanzo_en_x", 1) ;
+       a.m_datos_finales.add ("robot.avanzo_adelante", 1) ;
+       //a.m_datos_finales.add ("robot.avanzo_en_x", 1) ;
 
-//     a.planificar (a.p_entorno->datos, datos_finales, plan, p) ;
+       for (int i = 0; i < 3; ++i)
+       {
 
-//     for (unsigned i=0; i<plan.count(); i++)
-//             std::cout << plan[i].nombre.c_str() << std::endl ;
+               std::cout << "Teorias:\n" << a.teorias << "\n";
 
+               a.plan();
 
-       // Ejecuto el plan
-//     a.ejecutar(plan) ;
+               while (a.has_next_theory())
+               {
+                       CTeoria* t = a.get_next_theory();
+                       if (a.validate_theory(t))
+                       {
+                               std::cout << "Valida\n";
+                       }
+                       else
+                       {
+                               std::cout << "No valida, planificamos de nuevo\n";
+                               break;
+                       }
+               }
 
+       }
 
        return 0 ;
 }