BrutenCristian / TP_Maquina-de-estado

Emulación de un lazarillo electrónico
0 stars 0 forks source link

Cosas a modificar #1

Open BrutenCristian opened 4 years ago

DamRCorba commented 4 years ago

Cristian, la maquina no esta bien. Asi como la planteaste una vez que no hay obstaculos avanza hasta el infinito. Lo cual no es correcto. Deberias reformularla. Vas a tener que avanza, se queda quieto, dobla a la derecha, dobla a la izquierda. Para cada una de estos estados se tiene que analizar las condiciones y esto no pasa en un estado de analisis, sino en cada uno de ellos.

BrutenCristian commented 4 years ago

Profe yo lo había pensado para que siga a una persona, si coloco alguna señal que haga de comunicación con la persona, y si se aleja una cierta distancia, para, estaría bien?

DamRCorba commented 4 years ago

no del todo. Lo que esta mal es el estado de analisis central que estas usando y que el estado de avanzar no vuelve a ningun otro nunca.

BrutenCristian commented 4 years ago

Si pongo como estado inicial el de estar en el rango de distancia cerca de la persona, el estado de avanzar volvería a ese estado continuamente, sino dejaría de avanzar, ahí sigue mal la maquina?

BrutenCristian commented 4 years ago

Profe, recién me di cuenta que igual me falto la flecha que conecta avanza con volver a analizar si hay obstáculos

BrutenCristian commented 4 years ago

Nota: investigar time.h, librería para el espera

BrutenCristian commented 4 years ago

Revisar la parte de Analizo que hay un error, mal funcionamiento

BrutenCristian commented 4 years ago

Poner en el main, con un swtich case, la representación en código del diagrama

DamRCorba commented 4 years ago

Aun dista bastante del codigo objetivo. Y otra cosa, cuanto mas veo la maquina de estados mas dudas me da. No me termina de cerrar.

Los estados de que usas de analisis no estan del todo bien.

Entiendo tu idea. Pero no me cierra para el funcionamiento correcto del lazarillo. Por ejemplo tu primer estado es "Dentro del rango" y de ahi vas los estados de "analizo" esos no son estados son mas bien acciones. Y eso es lo que queda mal en tu codigo. Deberías replantearte cuales son los estados de tu lazarillo. En mi opinion esos 4 estados los deberias dejar dentro de un estado reposo que sea el encargado de analizar todas las opciones y decida si se mueve derecho, si hace un giro a la izquierda o a la derecha para esquivar un obstaculo. Con eso la maquina quedara mas clara. Aunque las funciones sean mas grandes. Tu duda con usar o no a la espera como una función de estado esta justamente en que esa espera en realidad tambien es una accion y no un estado. Te pido que lo pienses con tranquilidad teniendo en cuenta lo que te escribo. Pensalo y el viernes me comentas lo que concluiste.

BrutenCristian commented 4 years ago

Profe, para poder replantear bien la maquina le hago una consulta, el estado que es lo que debe plantear en la máquina?, por ejemplo un estado de analisis, y dentro de ese estado todos los analisis del lazarillo?

El mar., 8 sept. 2020 a las 18:18, DamRCorba (notifications@github.com) escribió:

Aun dista bastante del codigo objetivo. Y otra cosa, cuanto mas veo la maquina de estados mas dudas me da. No me termina de cerrar.

Los estados de que usas de analisis no estan del todo bien.

Entiendo tu idea. Pero no me cierra para el funcionamiento correcto del lazarillo. Por ejemplo tu primer estado es "Dentro del rango" y de ahi vas los estados de "analizo" esos no son estados son mas bien acciones. Y eso es lo que queda mal en tu codigo. Deberías replantearte cuales son los estados de tu lazarillo. En mi opinion esos 4 estados los deberias dejar dentro de un estado reposo que sea el encargado de analizar todas las opciones y decida si se mueve derecho, si hace un giro a la izquierda o a la derecha para esquivar un obstaculo. Con eso la maquina quedara mas clara. Aunque las funciones sean mas grandes. Tu duda con usar o no a la espera como una función de estado esta justamente en que esa espera en realidad tambien es una accion y no un estado. Te pido que lo pienses con tranquilidad teniendo en cuenta lo que te escribo. Pensalo y el viernes me comentas lo que concluiste.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BrutenCristian/TP_Maquina-de-estado/issues/1#issuecomment-689141510, or unsubscribe https://github.com/notifications/unsubscribe-auth/APHMJJ5I2NQQOSMYYED3FDTSE2NR5ANCNFSM4PL355YA .

DamRCorba commented 4 years ago

No. No es eso. Vos estas pensando que es lo que tiene que hacer, y no estas pensando en cual es la situacion para que tenga que hacerlo. El estado es la situacion y las acciones se ejecutan en el estado hasta que produzcano detecten un cambio de situacion, osea un cambio de estado. Pensalo

BrutenCristian commented 4 years ago

Ah, creo que ya entendi, un estado sería, por ejemplo, que el lazarillo se esté moviendo, y la acción sería que este revisando continuamente el rango de distancia y si aparece un obstáculo, o no es así?

El mar., 8 sept. 2020 a las 19:13, DamRCorba (notifications@github.com) escribió:

No. No es eso. Vos estas pensando que es lo que tiene que hacer, y no estas pensando en cual es la situacion para que tenga que hacerlo. El estado es la situacion y las acciones se ejecutan en el estado hasta que produzcano detecten un cambio de situacion, osea un cambio de estado. Pensalo

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BrutenCristian/TP_Maquina-de-estado/issues/1#issuecomment-689164034, or unsubscribe https://github.com/notifications/unsubscribe-auth/APHMJJY5QCZCLM4T7QXRCGLSE2UANANCNFSM4PL355YA .

DamRCorba commented 4 years ago

Si, es por ahi.

BrutenCristian commented 4 years ago

Profe, pero en ese caso, no me quedarían muy pocos estados?, osea esta bien la maquina, porque yo creo que me quedarían dos o tres estados con muchas acciones, porque en si el lazarillo tiene que moverse, o estar en reposo esperando que un camino se libere

El mar., 8 sept. 2020 a las 19:31, DamRCorba (notifications@github.com) escribió:

Si, es por ahi.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BrutenCristian/TP_Maquina-de-estado/issues/1#issuecomment-689170087, or unsubscribe https://github.com/notifications/unsubscribe-auth/APHMJJ6QG45WRFQWVHAM45TSE2WDPANCNFSM4PL355YA .

DamRCorba commented 4 years ago

Puede ser, eso no seria un problema. El problema seria que consideres a una accion como un estado o a un estado como una accion. Por eso repensalo, tomate tu tiempo, y lo vemos.

BrutenCristian commented 4 years ago

Ok, profe, cuando tenga el diagrama replanteado le aviso. Muchas gracias

El mar., 8 sept. 2020 a las 19:49, DamRCorba (notifications@github.com) escribió:

Puede ser, eso no seria un problema. El problema seria que consideres a una accion como un estado o a un estado como una accion. Por eso repensalo, tomate tu tiempo, y lo vemos.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BrutenCristian/TP_Maquina-de-estado/issues/1#issuecomment-689176580, or unsubscribe https://github.com/notifications/unsubscribe-auth/APHMJJYFDJWMVJ6XMD57O4LSE2YHTANCNFSM4PL355YA .

DamRCorba commented 4 years ago

Cristian, Despues de la actualizacion del diagrama no veo actualizaciones en el codigo. Por favor reorganiza tu repo con una carpeta codigo que contega una carpeta src con los archivos.c y otra carpeta lib con los archivos.h

BrutenCristian commented 4 years ago

El código lo hice todo devuelta pero no subi nada todavia, lo que esta ahora en git, que esta todo para corregir, lo junto en una carpeta aparte y aclaró que es lo que estaba mal? y después subo lo nuevo?

El mar., 15 sept. 2020 a las 8:57, DamRCorba (notifications@github.com) escribió:

Cristian, Despues de la actualizacion del diagrama no veo actualizaciones en el codigo. Por favor reorganiza tu repo con una carpeta codigo que contega una carpeta src con los archivos.c y otra carpeta lib con los archivos.h

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BrutenCristian/TP_Maquina-de-estado/issues/1#issuecomment-692667318, or unsubscribe https://github.com/notifications/unsubscribe-auth/APHMJJ2FFO6U4747BZFW22TSF5JC5ANCNFSM4PL355YA .

BrutenCristian commented 4 years ago

Profe lo que ordene recién que era lo viejo, se me modifico la fecha porque no lo había subido con el githubdesktop, así que como ahora lo modifique se modifico la fecha, igual se lo entregue todo en las fechas puestas, solo que estaba lleno de errores. Ahora voy a subir lo nuevo

BrutenCristian commented 4 years ago

Buenas profe, ya subí todo, creo que el ordenamiento esta bien, aguardo sus correcciones. Desde ya muchas gracias, y disculpe las reiteradas molestias por mail.

DamRCorba commented 4 years ago

No hay problema Cristian, mientras que la casilla no te tome como spam jaja. Revise el codigo, esta bastante bien. Por un lado tengo una correccion semantica en la funcion en la que determinas los giros, ahi cada case es un caracter, deberias hacer que el case se haga por medio de una etiqueta mas representativa del tipo de giro. Por ejemplo para 'd' hace un #define DERECHA 'd' y usa DERECHA en el case y no la letra 'd'.

Lo otro que no entiendo es poque tenes un while que i<2 en tu main.

BrutenCristian commented 4 years ago

Lo del i<2 lo hice para que antes de preguntar si desea dejar el lazarillo encendido haga el análisis, y después el movimiento, porque sino lo sacaba antes de moverse. Igual eso de i<2 quería ver de cambiarlo para poner algo un poco mejor, pero me olvide la verdad

DamRCorba commented 4 years ago

En principio sacalo, y deja un while(1) para que este siempre en movimiento. Usa la funcion kbhit dentro del bucle infinito para que al precionar una tecla te de la opcion de apagarlo.

BrutenCristian commented 4 years ago

Ok profe, entonces le cambio lo del while y los caracteres de switch de giros

BrutenCristian commented 4 years ago

Profe, ya agregue el kbhit, y las constantes para los giros

DamRCorba commented 4 years ago

Cristian, esta bastante cerca, pero esta mal porque no esta cumpliendo con la maquiena de estados. Tu puntero a funciones corre por los tres estados que evalua i cuando en realidad deberia arracar por el estado de analiza y esta devolver el proximo estado, ese proximo estado deberia evaluar si sigue siendo el que se va a ejecutar, o si tiene que volver a analiza. Los que haces vos es recorrerlos en forma secuencia y lo que deberias hacer es dejar que la logica de la maquina decida que estado ejecutar. Tal como lo mostre en el ejemplo.

BrutenCristian commented 4 years ago

Osea que tendría que hacer que lo que yo hago en el while, la máquina lo haga sola

El mié., 16 de septiembre de 2020 8:43 p. m., DamRCorba < notifications@github.com> escribió:

Cristian, esta bastante cerca, pero esta mal porque no esta cumpliendo con la maquiena de estados. Tu puntero a funciones corre por los tres estados que evalua i cuando en realidad deberia arracar por el estado de analiza y esta devolver el proximo estado, ese proximo estado deberia evaluar si sigue siendo el que se va a ejecutar, o si tiene que volver a analiza. Los que haces vos es recorrerlos en forma secuencia y lo que deberias hacer es dejar que la logica de la maquina decida que estado ejecutar. Tal como lo mostre en el ejemplo.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/BrutenCristian/TP_Maquina-de-estado/issues/1#issuecomment-693723525, or unsubscribe https://github.com/notifications/unsubscribe-auth/APHMJJZCPVOG34NG6NKHJALSGFERRANCNFSM4PL355YA .

BrutenCristian commented 4 years ago

Profe si creo un función general de distancia, que mantenga un bucle siempre que sea menor a la del archivo de configuración, y después le agrego un dato mas a la estructura que tengo definida con un carácter que indique el estado próximo estaría bien ?

BrutenCristian commented 4 years ago

Profe si creo un función general de distancia, que mantenga un bucle siempre que sea menor a la del archivo de configuración, y después le agrego un dato mas a la estructura que tengo definida con un carácter que indique el estado próximo estaría bien ?

Profe acabo de subir lo que puse en este mensaje al repositorio

DamRCorba commented 4 years ago

Cristian. No es correcto. Guiate con el ejemplo que di en clase. El main te tiene que quedar igual. Cada estado tiene que estar llamado por un case de un switch o un vector de punteros a funciones. El estado es representado por una funcion que devuelve un estado. No esta asi en tu codigo.

BrutenCristian commented 4 years ago

Buenas profe, recién modifique el main, aguardo las correcciones

DamRCorba commented 4 years ago

Cristian, dentro del while 1 solo deberias estar recorriendo los estados de la maquina. Esto no es lo pedido.

     while(valores.rango_d==FUERA)
        {
            Distancia(var);
        }

En todo caso deberias estar llamando a un estado de analisis, o hacer que Distancia (Var) sea llamado en cada uno de tus estados, ya que siempre la usas.

BrutenCristian commented 4 years ago

Recién metí a distancia en las funciones reposo y movimiento, también lo saque del main

BrutenCristian commented 3 years ago

Buenas profe, le llego el ultimo commit que hice?

DamRCorba commented 3 years ago

Ahora si, tp aprobado.

BrutenCristian commented 3 years ago

Muchas gracias profe!