X-Git-Url: https://git.llucax.com/z.facultad/75.68/celdas.git/blobdiff_plain/44029734cc5263d0548dc78ce9d71c43719d1ea7..f3c411b92e7877dbbad3a3af2a1399f47a6d7977:/trunk/src/main.cpp?ds=sidebyside diff --git a/trunk/src/main.cpp b/trunk/src/main.cpp index 648505a..a259805 100644 --- a/trunk/src/main.cpp +++ b/trunk/src/main.cpp @@ -1,34 +1,36 @@ + #include "main.h" +#include // -double CMiEntorno::AvanzarX() +double AvanzarX(CEntorno& e) { avanzo_en_x = true ; return 0 ; } -double CMiEntorno::AvanzarY() +double AvanzarY(CEntorno& e) { avanzo_en_y = true ; return 0 ; } -double CMiEntorno::AvanzarZ() +double AvanzarZ(CEntorno& e) { avanzo_en_z = true ; return 0 ; } -CMiEntorno::CMiEntorno(): - avanzo_en_x(true), avanzo_en_y(true), avanzo_en_z(true) +// +void CMiEntorno::inicializar() { // Inicializo el Entorno - datos.add("robot.avanzo_en_x", 1) ; - datos.add("robot.avanzo_en_y", 1) ; - datos.add("robot.avanzo_en_z", 1) ; + datos.add("robot.avanzo_en_x", 0) ; + datos.add("robot.avanzo_en_y", 0) ; + datos.add("robot.avanzo_en_z", 0) ; datos.add("robot.sensor_1", 0) ; datos.add("robot.sensor_2", 0) ; @@ -49,76 +51,84 @@ void CMiEntorno::actualizar() } -struct CMiTeoria1: CTeoria< CMiEntorno > -{ - CMiTeoria1(CMiEntorno& e): - CTeoria< CMiEntorno >("Avanzar_X_1", 1, 1, e) - { - datos_iniciales.add ("robot.sensor_1", 0) ; - datos_finales.add ("robot.avanzo_en_x", 1) ; - } - double funcion() - { - entorno.avanzo_en_x = true ; - return 0 ; - } -}; - -struct CMiTeoria2: CTeoria< CMiEntorno > -{ - CMiTeoria2(CMiEntorno& e): - CTeoria< CMiEntorno >("Avanzar_Y_1", 1, 1, e) - { - datos_iniciales.add ("robot.sensor_2", 0) ; - datos_finales.add ("robot.avanzo_en_y", 1) ; - } - double funcion() - { - entorno.avanzo_en_y = true ; - return 0 ; - } -}; - -struct CMiTeoria3: CTeoria< CMiEntorno > -{ - CMiTeoria3(CMiEntorno& e): - CTeoria< CMiEntorno >("Avanzar_Z_1", 1, 1, e) - { - datos_iniciales.add ("robot.sensor_3", 0) ; - datos_finales.add ("robot.avanzo_en_z", 1) ; - } - double funcion() - { - entorno.avanzo_en_z = true ; - return 0 ; - } -}; + // int main(int argc, char** argv) { // - CMiEntorno e ; - CSistemaAutonomo< CMiEntorno > a(e) ; + CMiEntorno e ; + CSistemaAutonomo a ; + e.inicializar() ; // Inicializo las teorias - a.teorias.add("teoria1", new CMiTeoria1(e)) ; - a.teorias.add("teoria2", new CMiTeoria2(e)) ; - a.teorias.add("teoria3", new CMiTeoria3(e)) ; + CTeoria t1("Avanzar_X_1", &AvanzarX, 1, 1) ; + t1.datos_iniciales.add ("robot.sensor_1", 0) ; + t1.datos_iniciales.add ("robot.sensor_2", ANY) ; + t1.datos_iniciales.add ("robot.sensor_3", ANY) ; + t1.datos_iniciales.add ("robot.avanzo_en_x", ANY) ; + t1.datos_iniciales.add ("robot.avanzo_en_y", ANY) ; + t1.datos_iniciales.add ("robot.avanzo_en_z", ANY) ; + t1.datos_finales.add ("robot.avanzo_en_x", 1) ; + t1.datos_finales.add ("robot.avanzo_en_y", 0) ; + t1.datos_finales.add ("robot.avanzo_en_z", 0) ; + t1.datos_finales.add ("robot.sensor_1", ANY) ; + t1.datos_finales.add ("robot.sensor_2", ANY) ; + t1.datos_finales.add ("robot.sensor_3", ANY) ; + + CTeoria t2("Avanzar_Y_1", &AvanzarY, 1, 1) ; + t2.datos_iniciales.add ("robot.sensor_1", ANY) ; + t2.datos_iniciales.add ("robot.sensor_2", 0) ; + t2.datos_iniciales.add ("robot.sensor_3", ANY) ; + t2.datos_iniciales.add ("robot.avanzo_en_x", ANY) ; + t2.datos_iniciales.add ("robot.avanzo_en_y", ANY) ; + t2.datos_iniciales.add ("robot.avanzo_en_z", ANY) ; + t2.datos_finales.add ("robot.avanzo_en_x", 0) ; + t2.datos_finales.add ("robot.avanzo_en_y", 1) ; + t2.datos_finales.add ("robot.avanzo_en_z", 0) ; + t2.datos_finales.add ("robot.sensor_1", ANY) ; + t2.datos_finales.add ("robot.sensor_2", ANY) ; + t2.datos_finales.add ("robot.sensor_3", ANY) ; + + CTeoria t3("Avanzar_Z_1", &AvanzarZ, 1, 1) ; + t3.datos_iniciales.add ("robot.sensor_1", ANY) ; + t3.datos_iniciales.add ("robot.sensor_2", ANY) ; + t3.datos_iniciales.add ("robot.sensor_3", 0) ; + t3.datos_iniciales.add ("robot.avanzo_en_x", ANY) ; + t3.datos_iniciales.add ("robot.avanzo_en_y", ANY) ; + t3.datos_iniciales.add ("robot.avanzo_en_z", ANY) ; + t3.datos_finales.add ("robot.avanzo_en_x", 0) ; + t3.datos_finales.add ("robot.avanzo_en_y", 0) ; + t3.datos_finales.add ("robot.avanzo_en_z", 1) ; + t3.datos_finales.add ("robot.sensor_1", ANY) ; + t3.datos_finales.add ("robot.sensor_2", ANY) ; + t3.datos_finales.add ("robot.sensor_3", ANY) ; + + a.teorias.add(t1.nombre.c_str(), t1) ; + a.teorias.add(t2.nombre.c_str(), t2) ; + a.teorias.add(t3.nombre.c_str(), t3) ; + + + // Inicializo el SA + a.p_entorno = (CEntorno*)(&e) ; // Obtengo un plan double p = 1 ; - CIndiceMagico* >* p_plan ; + CIndiceMagico plan ; CIndiceMagico datos_finales ; + + datos_finales.add ("robot.avanzo_en_y", 1) ; + + a.planificar (a.p_entorno->datos, datos_finales, plan, p) ; - datos_finales.add ("robot.avanzo_en_x", 1) ; + for (unsigned i=0; icount(); i++) - std::cout << (*p_plan)[i]->nombre << std::endl ; + // Ejecuto el plan + a.ejecutar(plan) ; return 0 ;