]> git.llucax.com Git - z.facultad/75.68/celdas.git/commitdiff
Agrega mejor info de debug y limpia las pruebas.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 15 Dec 2006 21:20:36 +0000 (21:20 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 15 Dec 2006 21:20:36 +0000 (21:20 +0000)
trunk/src/Makefile
trunk/src/SistemaAutonomo.tz
trunk/src/SistemaAutonomoDemo.tz
trunk/src/indicemagico.h
trunk/src/main.cpp
trunk/src/plugin.cpp
trunk/src/sistemaautonomo.cpp
trunk/src/sistemaautonomo.h

index 3cd014c6f500dfafa8383f56df7063fdb8f36e90..1b5a2fe946b29979c7443c54d0e3d5383a417b79 100644 (file)
@@ -1,6 +1,6 @@
 \r
 BREVEDIR=../../breve_2.4/plugins\r
-CXXFLAGS=-Wall -g -I$(BREVEDIR)\r
+CXXFLAGS=-Wall -g -I$(BREVEDIR) -DDEBUG\r
 \r
 targets=test plugin.so\r
 \r
index 98613023384364ca04805f2c8edff50cd7be727f..e301d6d1330f13c5c35d815acffecadd5943768a 100644 (file)
@@ -54,14 +54,12 @@ Object : SistemaAutonomo {
        + to update-entorno entorno theEntorno (hash):\r
                nombre (string).\r
                foreach nombre in keys(theEntorno): {\r
-                       print "Seteando valor de entorno ", nombre, " con ", theEntorno{nombre}.\r
                        self set-entorno value theEntorno{nombre} with-name nombre.\r
                }\r
 \r
        + to update-datos-finales datos-finales datos (hash):\r
                nombre (string).\r
                foreach nombre in keys(datos): {\r
-                       print "Seteando valor de dato final ", nombre, " con ", datos{nombre}.\r
                        self set-dato-final value datos{nombre} with-name nombre.\r
                }\r
 \r
index 391d5bc9bfc170df4060edf4077ebbb4cf7676a0..ad22ae2042981319147b52210d69ac587572f05c 100644 (file)
@@ -12,54 +12,82 @@ Control : SistemaAutonomoController {
                entorno (hash).
                datos-finales (hash).
 
+               print "Crea Sistema autonomo".
+               sa = new SistemaAutonomo.
+
                print "Llena entorno".
-               entorno{"sensor"} = 0.
+               entorno{"sensor1"} = 0.
+               entorno{"sensor2"} = 0.
+               entorno{"sensor3"} = 0.
+               entorno{"sensor4"} = 0.
                entorno{"movido"} = 0.
 
-               print "Crea Sistema autónomo".
-               sa = new SistemaAutonomo.
+               print "Actualiza entorno".
+               sa update-entorno entorno entorno.
 
-               print "Crea Teorías".
+               print "Crea Teoria 1".
                teorias = 2 new Teorias.
-               teorias{0} init named "t1" with-action "avanza".
-               (teorias{0}) set-dato-inicial name "sensor" value 0.
-               (teorias{0}) set-dato-inicial name "movido" value -3000000.
-               (teorias{0}) set-dato-final name "sensor" value -3000000.
-               (teorias{0}) set-dato-final name "movido" value 1.
-
-               teorias{1} init named "t2" with-action "retrocede".
-               (teorias{1}) set-dato-inicial name "sensor" value 1.
-               (teorias{1}) set-dato-inicial name "movido" value -3000000.
-               (teorias{1}) set-dato-final name "sensor" value -3000000.
-               (teorias{1}) set-dato-final name "movido" value 1.
-
-               print "Agrega teorías al sistema autónomo".
+               teorias{0} init named "avanzar X 1" with-action "avanzarX".
+
+               print "Carga datos iniciales Teoria 1".
+               (teorias{0}) set-dato-inicial name "sensor1" value ANY.
+               (teorias{0}) set-dato-inicial name "sensor2" value ANY.
+               (teorias{0}) set-dato-inicial name "sensor3" value ANY.
+               (teorias{0}) set-dato-inicial name "sensor4" value ANY.
+               (teorias{0}) set-dato-inicial name "movido" value ANY.
+
+               print "Carga datos finales Teoria 1".
+               (teorias{0}) set-dato-final name "sensor1" value ANY.
+               (teorias{0}) set-dato-final name "sensor2" value ANY.
+               (teorias{0}) set-dato-final name "sensor3" value ANY.
+               (teorias{0}) set-dato-final name "sensor4" value ANY.
+               (teorias{0}) set-dato-final name "movido" value ANY.
+
+               print "Crea Teoria 2".
+               teorias{1} init named "avanzar X 2" with-action "avanzarX".
+
+               print "Carga datos iniciales Teoria 2".
+               (teorias{1}) set-dato-inicial name "sensor1" value ANY.
+               (teorias{1}) set-dato-inicial name "sensor2" value ANY.
+               (teorias{1}) set-dato-inicial name "sensor3" value ANY.
+               (teorias{1}) set-dato-inicial name "sensor4" value ANY.
+               (teorias{1}) set-dato-inicial name "movido" value ANY.
+
+               print "Carga datos finales Teoria 1".
+               (teorias{1}) set-dato-final name "sensor1" value ANY.
+               (teorias{1}) set-dato-final name "sensor2" value ANY.
+               (teorias{1}) set-dato-final name "sensor3" value ANY.
+               (teorias{1}) set-dato-final name "sensor4" value ANY.
+               (teorias{1}) set-dato-final name "movido" value ANY.
+
+               print "Agrega teorias al sistema autonomo".
                sa add teoria (teorias{0}).
                sa add teoria (teorias{1}).
-               print "Actualiza entorno".
-               sa update-entorno entorno entorno.
-               print "Ponemos condición final esperada para el plan".
+
+               print "Ponemos condicion final esperada para el plan".
                datos-finales{"movido"} = 1.
                sa update-datos-finales datos-finales datos-finales.
+
                print "Calcula el plan".
                sa plan.
-               print "Vemos si tiene una teoría más".
+
+               print "Vemos si tiene una teoria mas".
                while (sa has-next-theory): {
-                       print "Sí, tiene".
-                       print "Obtiene próxima teoría".
+
+                       print "Si, tiene".
+                       print "Obtiene proxima teoria".
                        teoria = sa get-next-theory.
-                       print "Obtiene datos de la teoría teoría".
+
+                       print "Obtiene datos de la teoria".
                        print(teoria get-nombre).
                        print(teoria get-accion).
-                       if ((teoria get-accion) == "avanza"): {
-                               entorno{"sensor"} = 1.
-                               entorno{"movido"} = 1.
-                       }
-                       if ((teoria get-accion) == "retrocede"): {
-                               entorno{"sensor"} = 0.
+
+                       if ((teoria get-accion) == "avanzarX"): {
+                               entorno{"sensor1"} = 1.
                                entorno{"movido"} = 1.
                        }
-                       print "Valida teoría".
+
+                       print "Valida teoria".
                        sa update-entorno entorno entorno.
                        if (sa validate theory teoria): {
                                print "valida".
@@ -67,7 +95,8 @@ Control : SistemaAutonomoController {
                        else {
                                print "Teoria no valida, salimos".
                        }
-                       print "Vemos si tiene una teoría más".
+
+                       print "Vemos si tiene una teoria mas".
                }
                print "No, no tiene".
 
index e52b2207cee66e19fd92458298a8129829d8cce7..adbc0ccb1c36493ea5267c12d188986f8d783de4 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <string>
 #include <vector>
-#include <iostream>
+#include <ostream>
 
 
 template <class T>
@@ -112,6 +112,12 @@ public:
 
 };
 
-
+template < typename T >
+std::ostream& operator<< (std::ostream& os, CIndiceMagico<T>& im)
+{
+       for (unsigned i = 0; i < im.count(); ++i)
+               os << "\t" << im.keys(i) << "=" << im[i] << "\n";
+       return os;
+}
 
 #endif
index 93ad8a6020c865ec7a07fb4ef45a99bbd23dfa5a..3076aa1c521570faa5391d452273450f320e491a 100644 (file)
@@ -116,6 +116,14 @@ int main(int argc, char* argv[])
        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) ;
+#ifdef DEBUG
+       std::cout << "Agrega teoria " << t1.nombre << ":\n";
+       std::cout << "  .datos_iniciales:\n" << t1.datos_iniciales << "\n";
+       std::cout << "  .datos_finales:\n" << t1.datos_finales << "\n";
+       std::cout << "Agrega teoria " << t2.nombre << ":\n";
+       std::cout << "  .datos_iniciales:\n" << t2.datos_iniciales << "\n";
+       std::cout << "  .datos_finales:\n" << t2.datos_finales << "\n";
+#endif // DEBUG
 
        
        // Inicializo el SA
@@ -124,15 +132,19 @@ int main(int argc, char* argv[])
 
 
        // Obtengo un plan
-       double p = 1 ;
-       CIndiceMagico<CTeoria> 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) ;
 
index 3669ba5c2db509cf48b1a606f77d1e835a086ea0..5ac1614d8fbe83ecb8f5142f3f65d6793cb902c4 100644 (file)
@@ -1,6 +1,9 @@
 #include "sistemaautonomo.h"\r
 #include "slBrevePluginAPI.h"\r
+\r
+#ifdef DEBUG\r
 #include <iostream>\r
+#endif // DEBUG\r
 \r
 /////////////////////////// CTeoria /////////////////////////\r
 \r
@@ -42,9 +45,8 @@ int SAbrTeoriaGetNombre(brEval args[], brEval* result, void* data)
 // string TeoriaGetAccion(pointer{Teoria})\r
 int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data)\r
 {\r
-       // TODO CTeoria* t = (CTeoria*) BRPOINTER(args);\r
-       // TODO result->set(t->accion.c_str());\r
-       result->set("avanzar"); // FIXME\r
+       CTeoria* t = (CTeoria*) BRPOINTER(args);\r
+       result->set(t->funcion.c_str());\r
        return EC_OK;\r
 }\r
 \r
@@ -71,6 +73,11 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data)
        CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args);\r
        CTeoria* t = (CTeoria*) BRPOINTER(args+1);\r
        sa->teorias.add(t->nombre.c_str(), *t);\r
+#ifdef DEBUG\r
+       std::cout << "Agrega teoria " << t->nombre << ":\n";\r
+       std::cout << "  .datos_iniciales:\n" << t->datos_iniciales << "\n";\r
+       std::cout << "  .datos_finales:\n" << t->datos_finales << "\n";\r
+#endif // DEBUG\r
        return EC_OK;\r
 }\r
 \r
index 0efe70abb023fec851d8d44d14af3a3a84460d4f..2eeb8dd64b5905ce9984e5a67909d729dd8ce9e1 100644 (file)
@@ -1,6 +1,10 @@
 
 #include "sistemaautonomo.h"
 
+#ifdef DEBUG
+#include <iostream>
+#endif // DEBUG
+
 
 //--------------------------------------------------------------------------------------------
 //-- Funciones Auxiliares
@@ -26,13 +30,25 @@ void CSistemaAutonomo::plan()
 {
        double p = 1.0;
        m_plan.clear();
+#ifdef DEBUG
+       std::cout << "entorno:\n" << p_entorno->datos << "\n";
+       std::cout << "datos finales:\n" << m_datos_finales << "\n";
+#endif // DEBUG
        planificar(p_entorno->datos, m_datos_finales, m_plan, p);
+#ifdef DEBUG
+       std::cout << "plan:\n" << m_plan << "\n";
+#endif // DEBUG
        curr_theory = m_plan.begin();
+#ifdef DEBUG
+       if (curr_theory == m_plan.end())
+               std::cout << "No hay teorías\n";
+       else
+               std::cout << "curr teoria: " << &*curr_theory << "=" << curr_theory->nombre << "\n";
+#endif // DEBUG
 }
 
 //--------------------------------------------------------------------------------------------
 //--
-#include <iostream> // XXX FIXME
 bool CSistemaAutonomo::has_next_theory()
 {
        return curr_theory != m_plan.end();
index fa833486ce3b6baa1835487bdde99a5918cbefe4..dd82f8296299caaa5b51d1cbb16747073ee9e218 100644 (file)
@@ -137,6 +137,11 @@ public:
 
 } ;
 
+inline
+std::ostream& operator<< (std::ostream& os, CTeoria& t)
+{
+       return os << t.nombre << " > " << t.funcion;
+}
 
 
 // CEntorno
@@ -193,7 +198,7 @@ public:
        // Retorna true si los valores de la condicion coinciden con los valores del entorno.
        bool validate_theory(CTeoria*) ;
 
-protected:
+//protected:
        // Retorna true si los valores de la condicion coinciden con los valores del entorno.
        bool verificar_condicion(CIndiceMagico<t_dato>& datos) ;