fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Algoritmo 6 CNY70 robot siguelineas

9 Respuestas
4 Usuarios
0 Reactions
4,943 Visitas
juanolo
Respuestas: 124
Topic starter
(@juanolo)
Estimable Member
Registrado: hace 18 años

Hola!

Perdonar x preguntar esto.. pero me he vuelto loco intentando programar un siguelineas con 6CNY

Os explico, es para saber leer las bifurcaciones y elegir la correcta... asi como girar en el momento adecuado... sabriais donde puedo encontrar algun ejemplo de programacion en basic?

o me podriais hexar una manita?

un saludo

Responder
8 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

Juanolo, yo lo haría comparándolo con la lectura anterior. De esta forma se puede detectar una línea "nueva" a partir de aquí puedes ver en que posición está (derecha, izquierda o en los dos) y decidir en la próxima bifurcación dónde ir.

S2

Ranganok Schahzaman

Responder
fj_sanchez
Respuestas: 1083
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Bueno, lo del PID yo no estaría tan seguro. Es más, creo que habría que hacer una máquina de estados, y que en uno de los estados (o varios, según) se aplique un PID, más concretamente un PD, ya que el término integral en caso de rastreadores sobra, debido a que hay muchos cambios y la verdad es que da igual ir un poco más a la izquierda o un poco más a la derecha, ya que a la larga se anulan unos errores con otros.

En cualquier caso, para implementar un control PID o PD lo más importante sería definir la referencia y obtener una forma de medir el error que tenemos en cada momento. La referencia puede ser claramente que los 2 sensores centrales estén sobre la linea, en ese caso el error sería 0. Luego según la separación entre sensores habría que asignar un error, positivo a un lado y negativo al otro.

También se podría dar al valor central un valor igual al nº de sensores+1, es decir, si tenemos 6 sensores, podríamos dar a la referencia el valor de 7, así no usariamos números negativos. Para ganar en precisión habría que hacer que el ancho de la linea a seguir siempre esté sobre 1 o 2 sensores. Si lo ponemos de forma que siempre esté sobre 2, estaremos desperdiciando precisión, ya que dispondrás de menos pasos, me explico, si hay 4 sensores tendríamos de izquierda a derecha:
1 2 3 4
[ ] ----> representa la linea

n = nº de sensores
Las posibilidades serían: n+3
[ ]1 2 3 4
[1] 2 3 4
[1 2] 3 4
1 [2 3] 4
1 2 [3 4]
1 2 3 [4]
1 2 3 4[ ]

Mientras que si nos aseguramos que la separación entre sensores es tal que permite que la linea pueda estar sobre 1 solo sensor, las posibilidades serían 2n+1=9. Si hablamos de 6 sensores, según la separación podremos tener 9 posiciones o 13.

Espero haber sido de ayuda en esta parte.

Responder
juanolo
Respuestas: 124
Topic starter
(@juanolo)
Estimable Member
Registrado: hace 18 años

bueno la verdad es que con lo de PID y PD me he liado un poco...

yo habia pensado... que retubiera el 1 cuando detecte la linea de direccion y cuando al llegar a la esquina que gira en el momento detecte un 0 el sensor del centro, gire en la bifurcacion, hacia la direccion del dato que ha retenido... es decir:

si la linea esta a la izquierda, se queda retenido un uno... y cuando uno de los dos sensores del centro, exactamente el de la derecha, detecte blanco, gire hacia la izquierda (cogiendo el dato retenido de la linea que indica la bifurcacion) hasta que ese sensor derecho del centro vuelva a ser uno...

que tal seria eso?

Responder
fj_sanchez
Respuestas: 1083
(@fj_sanchez)
Ardero
Registrado: hace 18 años

Bueno por partes, primero lo del PID. No voy a explicar al completo cómo funciona un PID, pero básicamente cada letra aporta un tipo de corrección al error. La P viene de proporcional, y lo que pretende es que la corrección sea proporcional a lo que nos hemos salido, algo que sin duda queremos. La D (viene de derivativo) lo que hace es que añade una corrección según la velocidad a la que se mueve la trayectoria de nuestra referencia, no es lo mismo una curva cerrada que una muy abierta, por lo que en la abierta añadiría mayor corrección, ya que se movería más rápido de la referencia. La I viene de integral, y su efecto no se hace presente hasta lo que se conoce como régimen permanente (es decir, un tiempo elevado respecto a la velocidad del sistema), lo que nos permite es hacer el error en régimen permanente tan pequeño como queramos, es decir que vaya exáctamente por el centro.

Explicado esto espero que entiendas porque la parte integral sobra, ya que nosotros no vamos a alcanzar un régimen permanente casi nunca y el incluir este factor puede afectar al sistema de otras formas.

Ahora lo que tu has comentado, símplemente no funcionará correctamente en algunos casos. Ejemplo, imagina una linea recta y que a la mitad formado 90º hay una bifurcación, es decir como una T. Ahora imagina que tu robot se desplaza por la parte horizontal de la T de izquierda a derecha y encuentra la marca para que tome la bifurcación de la derecha... Tu algoritmo se quedaría esperando a ver blanco... pero no llega ese blanco....

Responder
Página 2 / 2
Compartir: