Autor Tema: Robot equilibrista  (Leído 303392 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #465 en: 29 de Mayo de 2012, 00:45:33 »
Gracias por preguntar!
Mi robot esta en stand by por razones academicas. Estoy trabajando en mi tesis que es un proyecto similar: Un control electronico para un bipedestador movil motorizado, utilizando la misma IMU del robot ;) (es para una niña que tiene paralizadas sus extremidades, y sólo puede mover el torso, por lo tanto uso la IMU para sensar ese movimiento)

Luego nos lo presumes  ;-).

"Nada es imposible, no si puedes imaginarlo"

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Robot equilibrista
« Respuesta #466 en: 29 de Mayo de 2012, 08:38:23 »
Hola a todos,

Rivale el mío está echo con tres plataformas de 16x12cm de acrilico unido con varillas roscadas de 38cm de altura, uso el kit MD25 para controlas las ruedas de 10cm de diámetro. Esta tarde saco una foto y la subo, hasta que pueda preparar el video.

Ayer quise ponerme a trabajar sobre el control, pero desafortunadamente tuve problemas con mi PIC, haciendo un verify con el MPLAB y mi programadora, de tecta un error en la memoria de programa. Creo que se me jodio el PIC. Esta tarde voy a comprar un 18F4550 nuevo y comenzar las pruebas

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Robot equilibrista
« Respuesta #467 en: 29 de Mayo de 2012, 08:54:40 »
gary_servin estaba leyendo que usas un giro y un acelerómetro para medir el ángulo de inclinación. Como integras la lectura de ambos sensores para calcular dicha inclinación?

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #468 en: 29 de Mayo de 2012, 10:35:40 »
En general se usa el filtro kalman, pero tu propuesta me parecio interezante, aun asi deberias confirmar que las vibraciones no interfieren con tu medicion

Yo hice esta prueba


y me parece que gera hizo algo similar para confirmar la lectura
"Nada es imposible, no si puedes imaginarlo"

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Robot equilibrista
« Respuesta #469 en: 29 de Mayo de 2012, 13:04:52 »
Esta muy buena esa prueba!!! Ese software lo hiciste vos? O es libre?

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot equilibrista
« Respuesta #470 en: 29 de Mayo de 2012, 13:10:36 »
y me parece que gera hizo algo similar para confirmar la lectura

Yo probe con el filtro complementario y filtro de kalman. Ambos me dieron buenos resultados. El mayor desafio fue calibrar el gyro. Haciendo los calculos teoricos siempre me quedaba una deriva, entonces lo que hice fue lo siguiente:
Calculo el angulo con el acelerometro y aparte lo calculo integrando el gyro. Luego empiezo a jugar con la ganancia y offset del gyro hasta que las lecturas sean iguales. Para compararlas, graficaba ambas lecturas en pantalla.

Otro problema es el periodo de muestreo. Hay dos tecnicas para esto:
1- Utilizar un periodo de muestreo constante con la ayuda de una interrupcion de timer.
2- Tomar muestras y realizar los calculos constantemente, y utilizar el timer para medir el tiempo que demora.

Esto es fundamental, ya que para integrar el valor del gyro, necesitamos saber el dt (tiempo de muestreo). Tambien es importante que el PID se ejecute periodicamente, ya que el termino derivativo depende de este periodo.

Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #471 en: 29 de Mayo de 2012, 13:20:41 »
El software lo programe yo en C#, pero hay otros como el processing que creo que te podria servir
"Nada es imposible, no si puedes imaginarlo"

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #472 en: 29 de Mayo de 2012, 13:29:07 »
Otro problema es el periodo de muestreo. Hay dos tecnicas para esto:
1- Utilizar un periodo de muestreo constante con la ayuda de una interrupcion de timer.
2- Tomar muestras y realizar los calculos constantemente, y utilizar el timer para medir el tiempo que demora.

Yo utilice un periodo constante de entre 3 y 10 ms. si enviaba los datos por rs232 el tiempo era de 10 ms y sin esto lo podia bajar hasta 3 ms, considernato que en este periodo el micro debia poder realizar las operaciones del filtro y del controlador
"Nada es imposible, no si puedes imaginarlo"

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Robot equilibrista
« Respuesta #473 en: 29 de Mayo de 2012, 15:46:03 »
Yo hago el cálculo del tiempo de ciclo de lectura del giro en cada uno de ellos. Actualmente tengo un ciclo de aproximadamente 4mseg. Lo que sucede con mi giro, es que el número de cuentas en reposo, tiene una variación de +-2 cuentas, con un rango de 1024. estas dos cuentas cada 4mseg, dan una deriva considerable.

Hay algún método para eliminar o atenuar esta deriva?

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: Robot equilibrista
« Respuesta #474 en: 29 de Mayo de 2012, 18:00:55 »
Gracias a todos por los comentarios!
Comparto lo que dijo rivale, probablemente el punto de equilibrio no este en 0 grados, solo que todavía no tuve mucho tiempo para probar.

El periodo que uso es de 10 ms, pero puedo llegar a bajarlo hasta 3 ms, el problema podía ser el ancho de banda del gyro que uso.

Saludos

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Robot equilibrista
« Respuesta #475 en: 30 de Mayo de 2012, 19:24:22 »
Estoy ajustando el cálculo del ángulo con el giro, y observo una fluctuación constante de dos cuentas en la lectura del giro. Lo cual genera una deriva bastante grande teniendo en cuenta mi ciclo de 5mseg. Cual podría ser la causa de esta fluctuación? A alguien le ha ocurrido? Habrá un modo de filtrarla?

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Robot equilibrista
« Respuesta #476 en: 11 de Junio de 2012, 22:58:54 »
hola gente!

Sigo trabajando sobre el robot! Lo que quiero intentar es establecer un período fijo de tiempo para mi ciclo de ejecución, ya que hasta el momento no he logrado estabilizarlo con la técnica de ejecutar un programa cíclico. No logro ajustar las ganancias proporcional y derivativa. Creo que mi problema viene a que la variación del tiempo hace que mi sistema de control varíe continuamente.

Puede ser que al no tener un ciclo de programa de tiempo fijo me impida ajustar el control?
Como podría hacer para que mi ciclo de programa tenga una duranción determinada?

Saludos!!!!

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #477 en: 11 de Junio de 2012, 23:16:22 »
Hola marito, para tener un periodo de muestreo continuo yo uso el timer para que cada que genere interrupcion se activen la bandera para ejecutar la lectura de los sensores. posteriormente llamo a la funcion del controlador.

tienes que verificar que las funciones se cumplan antes de que el timer se vuelva a desbordar.
"Nada es imposible, no si puedes imaginarlo"

Desconectado marito

  • PIC16
  • ***
  • Mensajes: 217
Re: Robot equilibrista
« Respuesta #478 en: 21 de Junio de 2012, 08:37:52 »
Se mantiene en pie!

Finalmente logré que se mantenga vertical. Lo que hice fue ejecutar el ciclo de control con un período fijo llamando a la subrutina desde el timer0 cada 5 mseg.

Estoy usando un control PID.

Me gustaría suavizar los movimientos que realiza el robot para mantenerse en pie. Pensaba que podría lograrlo usando un filtro kalman.

Puede ser que usando un filtro kalman suavice las respuestas del robot?

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #479 en: 21 de Junio de 2012, 11:42:31 »
un videito ;-)

Con el filtro kalman lo que lograrias seria mejorar la medida del angulo ante vibraciones, lo ideal seria modificar las ganancias del controlador PID para esto
"Nada es imposible, no si puedes imaginarlo"