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

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

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot equilibrista
« Respuesta #495 en: 05 de Noviembre de 2012, 20:11:11 »
Buenas amigos! Q tal?
Paso por aquí para pedirles algo de información acerca del filtro complementario. Específicamente lo que necesito es el fundamento matemático. O sea, explicar cómo es que esto es un filtro pasa bajo en combinación con un pasa alto:
angle = (1-alpha)*(angle + gyro * dt) + (alpha)*(acc)

Es para mi trabajo de fin de carrera. Estoy motorizando un bipedestador (algo asi como una silla de ruedas), para una niña sin brazos, y el metodo de control es con movimientos del torso, los cuales senso con una IMU similar a la que use en mi robot equilibrista :)
Les agradezco cualquier tipo de información. La verdad que ya me canse de googlear sin resultados jeje.
Saludos y gracias!!

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

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6743
    • Micros-Designs
Re: Robot equilibrista
« Respuesta #496 en: 05 de Noviembre de 2012, 21:58:11 »
Aplicando Laplace?  :undecided:

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot equilibrista
« Respuesta #497 en: 05 de Noviembre de 2012, 22:32:30 »
Buceando por ahí, encontré esto: http://dspace.mit.edu/handle/1721.1/17007
En el capítulo 6 habla del filtro complementario y su función de transferencia. Está muy piola, pero todavía me falta ver cómo se llega a esa línea de código. Seguramente es lo mismo, pero con la transformada z.
Seguiré investigando. Muchas gracias!! :D

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


Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot equilibrista
« Respuesta #499 en: 05 de Noviembre de 2012, 23:06:29 »
Muchas gracias rivale! La parte de los diagramas en bloques y las funciones de transferencia me es muy útil! El funcionamiento del filtro se entiende a la perfección, pero sigo buscando como eso se traduce en la famosa linea:
angle = (1-alpha)*(angle + gyro * dt) + (alpha)*(acc)

Gracias a todos por su buena predisposición! :D

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

Desconectado clynter.volt

  • PIC10
  • *
  • Mensajes: 3
Re: Robot equilibrista
« Respuesta #500 en: 10 de Noviembre de 2012, 12:53:29 »
Saludos a todos...
Quisiera que atudara con un proyecto que tengo actualmente en la escuela... lo que pasa es que tenemos que realizar un medidor de angulos y actualmente eestamos trabajando con un giroscopio IDG300, la verdad no tenemos amplios conocimientos al respecto de ello y unicamente sabemos que mide velocidad angular, hemos visto las señales que nos da con un osciloscopio, pero al momento de integrar la señal con un ampli-op nos da como resultado una señal minima con bastante ruido.. he querido meter esa señal al pic para verlos en una pantalla LCD pero los resultados que aparecen varian desde 0-255 con una frecuencia demasiado alta y no se mantiene estable en el angulo.. la verdad no se bien como tiene que ir conectado si alguien me pudiese orientar se los agradeceria bastante, eh visto ya varios temas en internet pero no eh encontrado ningun esquema de como conectarlos..  :8}
Porcierto el pic es el 18F4580 y utilizo MPLAB

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #501 en: 10 de Noviembre de 2012, 15:38:06 »
Saludos a todos...
Quisiera que atudara con un proyecto que tengo actualmente en la escuela... lo que pasa es que tenemos que realizar un medidor de angulos y actualmente eestamos trabajando con un giroscopio IDG300, la verdad no tenemos amplios conocimientos al respecto de ello y unicamente sabemos que mide velocidad angular, hemos visto las señales que nos da con un osciloscopio, pero al momento de integrar la señal con un ampli-op nos da como resultado una señal minima con bastante ruido.. he querido meter esa señal al pic para verlos en una pantalla LCD pero los resultados que aparecen varian desde 0-255 con una frecuencia demasiado alta y no se mantiene estable en el angulo.. la verdad no se bien como tiene que ir conectado si alguien me pudiese orientar se los agradecería bastante, eh visto ya varios temas en internet pero no eh encontrado ningún esquema de como conectarlos..  :8}
Por cierto el pic es el 18F4580 y utilizo MPLAB

antes que nada, debes tomar en cuenta que la lectura del giroscopio es un voltaje proporcional a la velocidad angular, no es la velocidad directamente.
en cuanto a tu lectura desde el pic, dependiendo de tu modelo de micro, tu resolución puede ser de 8 o de 10 bits,(para el 4550 puedes configurarlo a 10 bits) y la frecuencia no se como la estés tomando, pero tu debes definir tu tiempo de muestreo y asi dar el tiempo de integración para calcular tu angulo.

Te recomiendo que subas tu código para poder ayudarte un poco mas
"Nada es imposible, no si puedes imaginarlo"

Desconectado clynter.volt

  • PIC10
  • *
  • Mensajes: 3
Re: Robot equilibrista
« Respuesta #502 en: 26 de Noviembre de 2012, 10:24:29 »
antes que nada, debes tomar en cuenta que la lectura del giroscopio es un voltaje proporcional a la velocidad angular, no es la velocidad directamente.
en cuanto a tu lectura desde el pic, dependiendo de tu modelo de micro, tu resolución puede ser de 8 o de 10 bits,(para el 4550 puedes configurarlo a 10 bits) y la frecuencia no se como la estés tomando, pero tu debes definir tu tiempo de muestreo y asi dar el tiempo de integración para calcular tu angulo.

Te recomiendo que subas tu código para poder ayudarte un poco mas

Pues este es el codigo aue tenemos... se que esta hecho todo un relajo y no esta terminado aun :P y disculpa pero no entendi eso del muestreo y la integracion del resultado :s porcierto yo tambien soy de mexico, pero estamos estudiando en francia :)
-***********************************-
#include<18F4580.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=20000000)
#include<lcd.c>
int16 unite, dizaine, centaine, centaine2;
unsigned int32 resultat; //déclaration d'une variable (non signée sur 32 bits)
void main()
setup_adc(ADC_clock_div_64); //conversion lente pour garantir le résultat
setup_adc_ports(AN0);        //entrée AN0 de type analogique
   

while (true)
   {
   set_adc_channel(0);     //selection canal 0 (entrée AN0) pour la conversion
   resultat=read_adc()/4;  //affectation de la lecture dans la variable "resultat" avec division par 4 pour un affichage sur 8 bits
   centaine=(resultat/100);
   dizaine=(resultat%100)/10;
   unite=(resultat%100)%10;
   lcd_init();
   lcd_putc("\f");
   lcd_gotoxy(1,1);
   lcd_putc("U=");
   lcd_putc(centaine+0x30);
   lcd_putc(dizaine+0x30);
   lcd_putc(unite+0x30);
   lcd_putc("\n");
   delay_ms(300);
   }
}
« Última modificación: 26 de Noviembre de 2012, 10:30:55 por clynter.volt »

Desconectado clynter.volt

  • PIC10
  • *
  • Mensajes: 3
Re: Robot equilibrista
« Respuesta #503 en: 29 de Noviembre de 2012, 09:10:12 »
Bueno despues de modificar un poco el programa, ahora estoy mostrando los valores en la pantalla de la computadora porque con el lcd me daba muchos problemas, y eh aqui el programa actual que tengo solo me falta saber como hacerle para poder tomar las muestras en el tiempo  correcto... porqe asi nadamas me entrega el angulo/seg.... si alguien sabe como hacerlos se los agradeceria mucho!!!!!!!!
**************************************************
#include<18F4580.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay (clock=20000000)
#use rs232(baud=19200,xmit=PIN_C6,rcv=PIN_C7)
unsigned int16 Vy,Vx;
int i;
float y,x,Valim,Vref;
void main()
{setup_adc(ADC_clock_div_64);
setup_adc_ports( AN0_to_AN3_ANALOG);
while (true)
{set_adc_channel(0);
Valim=read_adc();
set_adc_channel(1);
Vref=read_adc();
set_adc_channel(2);
Vy=read_adc();
set_adc_channel(3);
Vx=read_adc();
Valim=(Valim/204.8 );
Vref=(Vref/204.8 );
//AxeY=(((ValeurAxeY*Valimentation(V)/1023)–VoltageReference(V))/Sensitivity(V/°/s)= °/s;
y=((((Vy*Valim)/1023)-Vref)/0.002);
x=((((Vx*Valim)/1023)-Vref)/0.002);
printf("\r\n Valim:%fV",Valim);
printf("\r\n Vref:%fV",Vref);
printf("\r\n Vy:%lu",Vy);
printf("\r\n AxeY:%fdeg/s",y);
printf("\r\n AxeX:%fdeg/s",x);
delay_ms(100);
}
}

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: Robot equilibrista
« Respuesta #504 en: 06 de Febrero de 2013, 16:14:02 »
HOla... en que quedo eso clynter.volt ??? yo encare este proyecto y me lei el post de punta a punta sumado a los 2 millones de link q hay dentro. lo que note y nadie dejo en claro en que momento del calculo uso el encore??

la verda eso no me quedo claro. y me gustaria saber si alguno lo termino al 100% y como le quedo.. es un lindo proyecto

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #505 en: 06 de Febrero de 2013, 19:14:15 »
Una disculpa por no responder antes.

un problema que tienes en tu codigo es que el tiempo de muestreo no es fijo, ya que las operaciones con punto flotante no tienen un numero de ciclos determinado, te recomiendo hacer tu muestreo usando interrupciones, asi aseguras que siempre tengas el mismo tiempo de muestero
"Nada es imposible, no si puedes imaginarlo"

Desconectado gab163

  • PIC16
  • ***
  • Mensajes: 111
Re: Robot equilibrista
« Respuesta #506 en: 27 de Mayo de 2013, 16:28:37 »
Revisando el tema, este tipo de robots tiene la forma de un péndulo invertido sobre carro, el cual es un sistema altamente no lineal, subactuado, difícil de controlar, como comentan existen muchas técnicas de control como el clásico PID y lógica difusa que no ocupan del conocimiento de la planta, y las modernas como retro de estados lineal, control optimo, adaptivo, entre muchas otras que ofrecen buenos resultados todos estos son metodos lineales, existen tambien tecnicas como control optimo no lineal, sliding mode, Takagi-sugeno (difuso), retro linealizante, entre otros, estos ocupan el conocer el modelo matematico del sistema.

Aplicaciones de estas hay muchas como lanzamiento de naves y cohetes, misiles, vehiculos autobalanceados, etc,



yo en particular estoy con la construcción de un vehículo auto balanceado el cual aun no he concretado que técnica de control usare pero conforme avance estaré subiendo los avances.
saludos.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #507 en: 03 de Junio de 2013, 15:32:21 »
Les presento mi robot :mrgreen:
"Nada es imposible, no si puedes imaginarlo"

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17615
    • MicroPIC
Re: Robot equilibrista
« Respuesta #508 en: 03 de Junio de 2013, 18:10:30 »
Magnífico trabajo, Rivale, da gusto verlo.
¿Es para subirse encima?
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Robot equilibrista
« Respuesta #509 en: 03 de Junio de 2013, 19:03:50 »
Gracias Manolo, en Efecto la idea es que soporte un pasajero aunque por el momento solo se equilibra sin peso, faltan los Encoders para que compensen la velocidad de las llantas al Tener peso extra. Actualmente ya tiene asiento y esta mejor estéticamente. Subiré fotos en Unos dias
"Nada es imposible, no si puedes imaginarlo"


 

anything