# Carrito con arduino (logica difusa)



## Antony Vargas (Jul 11, 2014)

Hola que tal soy estudiante de ingeniería de sistemas ... estoy realizando un proyecto en arduino sobre un carrito que no debe chocarse al avanzar ... el carrito tiene 3 sensores ya  esta realizando la funcion avanza y no se choca pero el profesor quiere que este programado con logica difusa ..alguien que me pueda ayudar o dar un consejo se lo agradeceria ...


----------



## Scooter (Jul 12, 2014)

Pues algo de lógica difusa estudié en su día pero no como programarla en C


----------



## Hellmut1956 (Jul 13, 2014)

Pues en si la cosa no me parece muy difícil. Básicamente se trata de que expresiones a diferencia de las reglas usuales que una expresión puede ser o válida o falsa, aquí básicamente se trata de asignar un valor entre "0" y "1" como número real, creando así la posibilidad de hacer la transición de que si una expresión es válida o falsa de forma continua entre falso=0 y verdad=1. En aplicación técnica así regulamos algún parámetro entre su valor máximo y su valor mínimo de forma proporcional al valor entre "0" y "1".

Digamos que algo tiene una validez del 50%, entonces el parámetro tendrá asignado un valor en la mitad entre sus 2 extremos. me imagino que los ejemplos sobre regulación de temperatura o de la velocidad con la cual se mueve un ascenso te son ampliamente familiares. 

Creo que realmente una vez que el concepto lo tengas claro en la mente, su uso resulta banal. Claro, que si se mete a profundidad en la teoría y su representación matemática es posible complicar su uso básico. En tu caso, elige un parámetro adecuado, como por ejemplo la distancia entre los dos vehículos que van a chocar y asigna proporcionalmente la velocidad con la que se mueven los 2 coches. 

Elegante se volvería la cosa si, considerando la distancia de frenado seleccionas un cierto valor de la distancia entre los vehículos adecuada, defines esto como el "threshold" equivalente al valor hasta el cual el parámetro de la intensidad de frenado es nula, "0", vehículo no frena, y el valor "1" cuando los vehículos se tocan, distancia nula. Ahora defines una función de frenado que resulte en una curva "S", empezando a frenar levemente al principio, alcanzar cierto valor de frenado máximo hasta volver a reducir el valor de frenado (la aceleración negativa) y que al alcanzar la distancia "0" entre los vehiculos tambien el frenado es no existente. Juegas con los parámetros hasta lograr una operación visualmente atractiva!

Así logras un experimento que no solo muestra de que forma algorítmica sencilla, simple algebra, como usando lógica fuzzy se logra un frenado visualmente atractivo!

http://www.bytecraft.com/downloads/fuzlogic.pdf
http://www.bytecraft.com/Fuzzy_Logic

Pongo aquí 2 enlaces, pero estoy seguro que eso lo conoces!


----------

