Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola a todos,
Me hago eco en este hilo de un comentario que salió en otro: Robots para concursos. Kits o lo que veais que pueda interesar al principiante, intermedio o experto.
Esto es lo que JMV comentaba :
Hablando de minisumo (y por hablar un poco de robots para concursos en este foro.. ¬¬) on enlazo un kit que he pedido para hacer uno, a ver si me llega y le hago unas fotos: http://www.fingertechrobotics.com/proddetail.php?prod=ft-kit-cobra-4wd-chassis " onclick="window.open(this.href);return false; , lo he pedido con motores 20:1 ya que los 50:1 me parecen que tienen demasiado par según unos primeros cálculos para 500 gr y lentos @ 6V.
El kit tiene muy buena pinta:
Por si alguno estuviese, por ejemplo, pensando en presentarse a AESSBot (4-6 Mayo) lo mismo está a tiempo.
Saludos,
Sphinx.
Efectivamente, me refiero a eso. Se trata de aplicar un perfil de velocidad que sea continuo y derivable, como es el caso de la "jerk s-curve". En el caso del perfil trapezoidal, justo en el punto de aceleración máxima y al inicio de la de la desaceleración, aparecen unos puntos conflictivos que perturban al sistema. He estado leyendo algún artículo sobre esto, y la respuesta del sistema cambia bastante (en cuanto a oscilaciones), si en vez de utilizar un perfil trapezoidal, se utiliza este que yo comento.
Realmente, sí que es afinar ya mucho, pero viendo tu video (ya lo había visto por youtube en una de esas tardes de visionado de videos de otros robots...), se puede apreciar como al desacelerar, oscila un poco el robot (un ligero cabeceo). No es muy pronunciado, pero en algunas de las vueltas lo he podido intuir. En mi caso pasa lo mismo, algunas vueltas son bastante buenas, pero este tipo de perfil trapezoidal, perturba al sistema en esos dos puntos que te he comentado.
Seguiré investigando, y cuando encuentre una solución que evite esas pequeñas oscilaciones, lo cuelgo aquí. De momento estoy probando diferentes topologías de controladores, entre ellas, la del robot zero con algún pequeño cambio. Aquí os dejo una de las pruebas que he realizado con un controlador PD incremental:
http://www.youtube.com/watch?v=yqAsrHkf3gc&feature=youtu.be " onclick="window.open(this.href);return false;
Pues parece que os va muy bien el robot.
En el mio tienes razón, oscila un poco, pero es la solución más fácil que encontré para que fuese más o menos bien, poner una velocidad intermedia antes de la máxima. Si no lo hago y pongo la velocidad al máximo nada más salir de curva, como dices, el robot oscilaba demasiado.
Otra opción hubiese sido hacer velocidad = velocidad + número; cada x tiempo hasta alcanzar la máxima, y acelerar en muchos pasos pequeños y rápidos, evaluando la respuesta experimentalmente para distintos valores de x, no sé sólo son ideas.
Creo que los únicos que se han puesto a trabajar en este punto son silvestre y piolin, en mejorar la frenada, además su robot es bastante más pesado por lo que es más inmune a las perturbaciones y además creo que va a ser más inmune a esa sacudida debida a la aceleración.
En mi caso utilizo un vector para velocidades correspondiente al pwm que le das al motor.
V={100, 110,120,130,140,150,160,170,...,250} y utilizo la variable "marcha" para controlar la celeridad del robot: velocidad=V(marcha).
Cuando acelera y frena, cambia de marcha cada x ticks. Se pueden hacer pruebas para que los cambios sean rapidos y suaves pero el resultado dependera mucho de cada robot. Yo aceleraba con una marcha cada cm y frenaba con tres marchas por cm con un robot, pero los mismos parámetros no me servían con uno parecido.
Mi programa persigue hacer lo del suavizado de una manera sencilla.
Una pregunta con eso de las constantes de frenada. Si yo utilizo kp=velocidad/2 y kd=velocidad*10 para seguir la linea, para la frenada suave tendría que poner unas constantes menos restrictivas como por ejemplo kp=velocidad/4 y kd=velocidad*5?
Otro comentario con respecto a la rigidez del chasis, los coches de carreras llevan unas suspensiones muy duras no? Supongo que es para las curvas ... No parecería con este símil que tendrían que funcionar mejor los chasis rígidos?
Saludos!
Para la velocidad... ¿No has probado a tener un PD? Así cuando llegas a una recta tan sólo marcas la velocidad que quieres alcanzar, y ya será el PD el que se encargue de llegar a dicha velocidad, de forma más o menos agresiva según Kp ❓
En cuanto a lo del chasis, (el tema de la frenada no sabría qué decirte), depende de la superficie. Los coches de F1 efectivamente tienen suspensiones muy duras, pero los de rallys pueden llegar a tener un suspensión muy blanda.
La dureza óptima será en la cual el coche sea capaz de absorber las irregularidades de la pista sin que la rueda se "despegue" de la pista. Ya es cosa de cada uno el ver cuál es dicha dureza. Si el motor vibra, también deberá de absorber dicha vibración.
Para hacer un control de velocidad por PID necesitas tener un encóder con suficiente resolución, sino no es viable. Con los encóders a rueda que lleva mucha gente la resolución es muy pobre para eso. Lo suyo es un encóder directo al motor y de buena resolución.