Buenos días a todos.
Estoy haciendo desde hace varios meses (discontinuos) un robot equilibrador. Lleva montado: acelerometro, giroscopio, driver de motores por PWM y motores con encoders.
Calculo los grados mediante acelerometro y el girocopio por separado. Los combino mediante un filtro de Kalman y obtengo la medida del angulo de un modo bastante preciso. Los motores entregan mas o menos potencia dependiendo del angulo obtenido mediante la funcion map(). A todo esto, se produce el calculo (ciclo completo) cada 10ms.
En esta configuración, el robot corrige bien las perturbaciones grandes (choque con pared, con la mano, etc).
El problema está en que no consigue quedarse en la misma posición, si no que SIEMPRE se mueve hacia un lado y hacia otro los metros que quiera. No se cae, pero siempre se esta moviendo.
Mi pregunta es: Añadiendo un PID al control de los motores conseguiré esto que estoy hablando? Imagino que sera siguiendo como referencia el angulo y siendo la salida los motores.
Intentare por ahora que se quede quieto mediante los encoders, pero quería tener otra solución.
Cuando vaya para casa os subo unas fotos del bicho.
Un saludo.
EDITO: una fotillo del robot, aun tengo que incorporarle algunas cosas :-D
