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

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

Desconectado gab163

  • PIC16
  • ***
  • Mensajes: 111
Re: Robot equilibrista
« Respuesta #510 en: 03 de Junio de 2013, 22:18:53 »
Esta genial! Que estrategia de control estas utilizando?

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #511 en: 03 de Junio de 2013, 22:48:20 »
El control lo realice de 2 maneras, una fue usando un PID y la otra fue usando un control por retroalimentacion de estado, ambos tuvieron prácticamente la misma respuesta. aunque cada uno tiene sus pros y sus contras.

para el de espacio de estados se tuvo que modelar todo el sistema para calcular las constantes del controlador
en cambio para el PID no se necesita conocer el modelo del sistema, pero se calibra a prueba y error
"Nada es imposible, no si puedes imaginarlo"

Desconectado gab163

  • PIC16
  • ***
  • Mensajes: 111
Re: Robot equilibrista
« Respuesta #512 en: 03 de Junio de 2013, 23:09:49 »
Y alguna otra en cuenta yo andare probando con retro linealizante y Takagi-sugeno, con un prototipo muy similar que construí estaré posteando los resultados para ver si podemos comparar resultados y obtener algo mejor entre los dos.
Saludos :-/

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #513 en: 03 de Junio de 2013, 23:29:22 »
Y alguna otra en cuenta yo andare probando con retro linealizante y Takagi-sugeno, con un prototipo muy similar que construí estaré posteando los resultados para ver si podemos comparar resultados y obtener algo mejor entre los dos.
Saludos :-/

me agrada tu idea,  el takagi-sugeno nunca lo había escuchado, ha, se me olvido comentar que también use un control ON-OFF como consejo de un profesor, solo para ver si el sistema se podía estabilizar y en efecto funcionó con el ON-OFF :shock:
"Nada es imposible, no si puedes imaginarlo"

Desconectado gab163

  • PIC16
  • ***
  • Mensajes: 111
Re: Robot equilibrista
« Respuesta #514 en: 04 de Junio de 2013, 01:26:44 »
Citar
me agrada tu idea,  el takagi-sugeno nunca lo había escuchado
EL controlador sugerido por Takagui-Sugeno es un controlador difuso para sistemas no lineales, el cual por medio del modelo no-lineal y las premisas ,linealiza el sistema esto permite implementar una ley de control según el punto donde este operando el sistema. Este y la retro linealizante son controladores no lineales. Pues haber que sale de todo esto. :-/

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #515 en: 05 de Junio de 2013, 13:50:42 »
otro videito, el carrito se estaba quedando sin pila, por eso se movía tan lento

"Nada es imposible, no si puedes imaginarlo"

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3155
    • Automation Media Lab
Re: Robot equilibrista
« Respuesta #516 en: 05 de Junio de 2013, 14:02:16 »
 :-/ :-/ :-/ :-/

Excelente!!


Felicitaciones!!  ((:-)) ((:-)) ((:-))

Mas videos porfavor!!

Saludos!

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Robot equilibrista
« Respuesta #517 en: 06 de Junio de 2013, 04:18:28 »
Excelente trabajo rivale, y que sana envidia dais a la gente del montón de la cual yo soy el que esta abajo. :5]

Saludos!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado gab163

  • PIC16
  • ***
  • Mensajes: 111
Re: Robot equilibrista
« Respuesta #518 en: 22 de Agosto de 2013, 22:54:45 »
Rivale que consejos me das para ajustar las ganancias del PID en  las primeras pruebas se ve así
no se, ya probe con un pasajero pero aun le falta un poco de reacción.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #519 en: 22 de Agosto de 2013, 23:12:51 »
 :oops: me equivoque y te respondí en el otro post (el cual estoy siguiendo).

Felicidades por lo que llevas logrado ((:-))
"Nada es imposible, no si puedes imaginarlo"

Desconectado tarribas

  • PIC10
  • *
  • Mensajes: 2
Re: Robot equilibrista
« Respuesta #520 en: 20 de Febrero de 2014, 09:40:03 »
Hola,

En el código c de la implementación del filtro de kalman hay un error:

La corrección de la matriz de covarianza en la funcion kalman_update debe quedar así:


   P[0][0] -= K_0 * P[0][0];
   P[0][1] -= K_0 * P[0][1];
   P[1][0] -= K_1 * P[1][0];
   P[1][1] -= K_1 * P[1][1];


Un saludo.

Desconectado zas97

  • PIC10
  • *
  • Mensajes: 1
Re: Robot equilibrista
« Respuesta #521 en: 09 de Agosto de 2014, 19:15:30 »
Hola,

En el código c de la implementación del filtro de kalman hay un error:

La corrección de la matriz de covarianza en la funcion kalman_update debe quedar así:


   P[0][0] -= K_0 * P[0][0];
   P[0][1] -= K_0 * P[0][1];
   P[1][0] -= K_1 * P[1][0];
   P[1][1] -= K_1 * P[1][1];


Un saludo.


Wow gracias, justo ahora iba a usar ese codigo y he visto esta respuesta.
Entonces la función quedaria así?:

void kalman_update( float angle_m )
{
   float      K_0;
   float      K_1;

   K_0 = P[0][0] / (R_angle + P[0][0]);
   K_1 = P[1][0] / (R_angle + P[0][0]);

   P[0][0] -= K_0 * P[0][0];
   P[0][1] -= K_0 * P[0][1];
   P[1][0] -= K_1 * P[1][0];
   P[1][1] -= K_1 * P[1][1];

   th   += K_0 * (angle_m - th);
   q_bias   += K_1 * (angle_m - th);
}
Lo pregunto porque no estoy seguro de si el codigo que has corregido és el mismo que el que yo he visto.

Desconectado Pacio

  • PIC10
  • *
  • Mensajes: 8
Re:Robot equilibrista
« Respuesta #522 en: 25 de Febrero de 2016, 00:35:07 »
Hola gente como les va?
Mil perdones por revivir un tema viejo (pero mis dudas tienen que ver con el tema y me parece innecesario hacer otro post por esto):oops: pero estoy trabajando con el mpu6050 y estoy complicado para lograr calcular correctamente los angulos,concretamente del acelerometro, no sé si se deba a algún error en el tipo de variables o a algún error mio en la interpretación,estoy usando ccs y el codigo que estoy usando es este:

Código: C
  1.  
  2. signed int16  AcX, AcY, AcZ;  
  3.  
  4. float ang_ACC[2]={0,0};
  5.  
  6. float acc_x,acc_y,acc_z;
  7.  
  8.  ACELEROMETRO();
  9.  
  10.  
  11. acc_x=(float)AcX/A_R;   //Conversión de valores RAW de acelerómetro a g’s,              
  12. acc_y=(float)AcY/A_R;   // esto se logra dividiendo entre sensibilidad LSB según el rango de escala
  13. acc_z=(float)AcZ/A_R;
  14.  
  15.  
  16.   //    ang_ACC[0] = atan((acc_y)/sqrt(pow((acc_x),2) +pow((acc_z),2)))*RAD_TO_DEG;
  17.  
  18.  
  19. ang_ACC[0]=atan2(acc_z,acc_y);
  20.  

Donde AcX,AcY y AcZ son los registros que obtengo del mpu del acelerometro, A_R es 16384.0
ACELEROMETRO(); es la funcion que utilizo para refrescar los datos del imu,
el problema es que con estas funciones obtengo como angulo valores que van desde -3.00 a 0.00 (girando el imu hasta lograr -90 respecto al eje horizontal hasta 90 positivos)
alguien me podra dar una mano a obtener correctamente el angulo con el acelerometro?

Muchas gracias
« Última modificación: 25 de Febrero de 2016, 00:37:55 por Pacio »

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2174
Re:Robot equilibrista
« Respuesta #523 en: 25 de Febrero de 2016, 08:25:27 »
Creo que te está dando en Radianes. Al resultado multiplicalo * 360.0 / (2*PI)
Mirá esto:
http://www.todopic.com.ar/foros/index.php?topic=41980.msg349613#msg349613

Por cierto, estás obteniendo el Offset del acelerómetro para corregir las mediciones?

Saludos!
-
Leonardo Garberoglio

Desconectado Pacio

  • PIC10
  • *
  • Mensajes: 8
Re:Robot equilibrista
« Respuesta #524 en: 25 de Febrero de 2016, 11:42:16 »
Gracias por responder elgarbe!

tenías razón, solamente faltaba pasarlo a radianes :oops: ahora si obtengo ángulos del acelerómetro que van desde  los -180 a 180

Aunque para imprementarlo en las funciones que puse mas arriba los tengo que dejar en radianes, cierto?

ahora mi duda viene por el giroscopo, como las tengo que aplicar en esa funcion? yo lo obtengo  con estas operaciones:
Código: C
  1.  
  2.   X_COR=GyX-off_GY[0];
  3.    
  4.   Gy[0] = (float)X_COR/G_R;
  5.  
  6.   ang_GY[0] = ang_GY[0]+ (Gy[0] * 0.01);

donde off_GY[0] es el offset que calculo apenas inicia el micro haciendo un promedio de 10 medidas sobre ese eje del giroscopo,¿es esto correcto?

GyX es el valor leido del imu
y G_R es 131

Qué offset es el que tengo que obtener del acelerometro?

ahora mi duda es que al implementar las funciones de kalman de mi msj anterior (que estan posteadas unas paginas mas atrás) no obtengo nada coherente, que valor del giro es el que tengo que asignar a la variable "gyro"? el valor del registro directamente o que operacion hay que hacer antes? perdon por tantas preguntas, en este momento estoy algo confundido,igual voy a seguir leyendo a ver si logro dar con el bendito angulo

por lo menos ya logro obtener los angulos tanto por el gyro como por el acelerometro por mi cuenta, ahora me falta saber implementar bien las funciones de kalman
muchas gracias por la ayuda!

PACIO
« Última modificación: 25 de Febrero de 2016, 11:49:56 por Pacio »