From a4c9e136c32a1686046eaf6c6e1902cac4b7bb73 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Fri, 15 Dec 2006 21:20:36 +0000 Subject: [PATCH] Agrega mejor info de debug y limpia las pruebas. --- trunk/src/Makefile | 2 +- trunk/src/SistemaAutonomo.tz | 2 - trunk/src/SistemaAutonomoDemo.tz | 93 +++++++++++++++++++++----------- trunk/src/indicemagico.h | 10 +++- trunk/src/main.cpp | 18 +++++-- trunk/src/plugin.cpp | 13 +++-- trunk/src/sistemaautonomo.cpp | 18 ++++++- trunk/src/sistemaautonomo.h | 7 ++- 8 files changed, 118 insertions(+), 45 deletions(-) diff --git a/trunk/src/Makefile b/trunk/src/Makefile index 3cd014c..1b5a2fe 100644 --- a/trunk/src/Makefile +++ b/trunk/src/Makefile @@ -1,6 +1,6 @@ BREVEDIR=../../breve_2.4/plugins -CXXFLAGS=-Wall -g -I$(BREVEDIR) +CXXFLAGS=-Wall -g -I$(BREVEDIR) -DDEBUG targets=test plugin.so diff --git a/trunk/src/SistemaAutonomo.tz b/trunk/src/SistemaAutonomo.tz index 9861302..e301d6d 100644 --- a/trunk/src/SistemaAutonomo.tz +++ b/trunk/src/SistemaAutonomo.tz @@ -54,14 +54,12 @@ Object : SistemaAutonomo { + to update-entorno entorno theEntorno (hash): nombre (string). foreach nombre in keys(theEntorno): { - print "Seteando valor de entorno ", nombre, " con ", theEntorno{nombre}. self set-entorno value theEntorno{nombre} with-name nombre. } + to update-datos-finales datos-finales datos (hash): nombre (string). foreach nombre in keys(datos): { - print "Seteando valor de dato final ", nombre, " con ", datos{nombre}. self set-dato-final value datos{nombre} with-name nombre. } diff --git a/trunk/src/SistemaAutonomoDemo.tz b/trunk/src/SistemaAutonomoDemo.tz index 391d5bc..ad22ae2 100644 --- a/trunk/src/SistemaAutonomoDemo.tz +++ b/trunk/src/SistemaAutonomoDemo.tz @@ -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". diff --git a/trunk/src/indicemagico.h b/trunk/src/indicemagico.h index e52b220..adbc0cc 100644 --- a/trunk/src/indicemagico.h +++ b/trunk/src/indicemagico.h @@ -9,7 +9,7 @@ #include #include -#include +#include template @@ -112,6 +112,12 @@ public: }; - +template < typename T > +std::ostream& operator<< (std::ostream& os, CIndiceMagico& im) +{ + for (unsigned i = 0; i < im.count(); ++i) + os << "\t" << im.keys(i) << "=" << im[i] << "\n"; + return os; +} #endif diff --git a/trunk/src/main.cpp b/trunk/src/main.cpp index 93ad8a6..3076aa1 100644 --- a/trunk/src/main.cpp +++ b/trunk/src/main.cpp @@ -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 plan ; CIndiceMagico datos_finales; a.m_datos_finales.add ("robot.avanzo_en_x", 1) ; a.plan(); for (unsigned i=0; i +#endif // DEBUG /////////////////////////// CTeoria ///////////////////////// @@ -42,9 +45,8 @@ int SAbrTeoriaGetNombre(brEval args[], brEval* result, void* data) // string TeoriaGetAccion(pointer{Teoria}) int SAbrTeoriaGetAccion(brEval args[], brEval* result, void* data) { - // TODO CTeoria* t = (CTeoria*) BRPOINTER(args); - // TODO result->set(t->accion.c_str()); - result->set("avanzar"); // FIXME + CTeoria* t = (CTeoria*) BRPOINTER(args); + result->set(t->funcion.c_str()); return EC_OK; } @@ -71,6 +73,11 @@ int SAbrSistemaAutonomoAddTeoria(brEval args[], brEval* result, void* data) CSistemaAutonomo* sa = (CSistemaAutonomo*) BRPOINTER(args); CTeoria* t = (CTeoria*) BRPOINTER(args+1); sa->teorias.add(t->nombre.c_str(), *t); +#ifdef DEBUG + std::cout << "Agrega teoria " << t->nombre << ":\n"; + std::cout << " .datos_iniciales:\n" << t->datos_iniciales << "\n"; + std::cout << " .datos_finales:\n" << t->datos_finales << "\n"; +#endif // DEBUG return EC_OK; } diff --git a/trunk/src/sistemaautonomo.cpp b/trunk/src/sistemaautonomo.cpp index 0efe70a..2eeb8dd 100644 --- a/trunk/src/sistemaautonomo.cpp +++ b/trunk/src/sistemaautonomo.cpp @@ -1,6 +1,10 @@ #include "sistemaautonomo.h" +#ifdef DEBUG +#include +#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 // XXX FIXME bool CSistemaAutonomo::has_next_theory() { return curr_theory != m_plan.end(); diff --git a/trunk/src/sistemaautonomo.h b/trunk/src/sistemaautonomo.h index fa83348..dd82f82 100644 --- a/trunk/src/sistemaautonomo.h +++ b/trunk/src/sistemaautonomo.h @@ -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& datos) ; -- 2.43.0