//
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) ;
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 ;
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 ;
-
+*/
}
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) ;
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) ;
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 ;
}