TODOPIC

Mecatrónica => Robótica => Mensaje iniciado por: Nocturno en 01 de Julio de 2006, 06:57:51

Título: Robot equilibrista
Publicado por: Nocturno en 01 de Julio de 2006, 06:57:51
Desde que en Junio de 2004 (¡¡ ya hace más de dos años !!) descubriera esta maravilla no he dejado de soñar con hacer algo parecido.

(http://www.geology.smu.edu/~dpa-www/robo/balance/b08_x.jpg) (http://www.geology.smu.edu/~dpa-www/robo/nbot/)

Y creo que después de un tiempo de reclusión en El Rebujito (http://www.elrebujito.es), ha llegado el momento de por lo menos intentarlo.

Mi intención es hacer un artilugio con dos ruedas, con un esquema algo parecido al de la foto, aunque más pequeño, y que sea capaz de responder con movimientos a las instrucciones que se le transmitan por infrarrojos con el mando de la tele (sí, el mismo del minidimmer (http://www.elrebujito.es/modules.php?name=News&file=article&sid=180&mode=&order=0&thold=0)).

El corazón del aparato será un dsPIC 30F4011 y utilizará para comunicarse con el exterior un buzzer, un display de Nokia 3310 (http://www.elrebujito.es/modules.php?name=News&file=article&sid=60&mode=&order=0&thold=0), y algunos leds. Para recibir instrucciones por infrarrojos le montaré un TSOP (http://www.elrebujito.es/modules.php?name=News&file=article&sid=90&mode=&order=0&thold=0).

Para mantener el equilibrio, lo intentaré con un acelerómetro, puesto que no tengo giroscopio. Creo que seré capaz de hacerlo puesto que la influencia de la aceleración de los movimientos del bicho será residual, al ser movimientos lentos. Tengo algunos acelerómetros; ADXL210 y ADXL250 de Analog, y MMA1270D de Freescale. Aún no sé cuál será más conveniente para este uso así que creo que empezaré por estudiarlos y compararlos.

Todavía me queda mucho trabajo por delante: estructura, motores, placas de control, software... pero iré posteando aquí todo lo que vaya haciendo y por supuesto estaré atento a vuestros consejos.

De momento montaré el 4011 con el Display y empezaré a jugar con los acelerómetros, a ver qué consigo.

Continuará...

Título: Re: Robot equilibrista
Publicado por: J1M en 01 de Julio de 2006, 07:41:25
jejeje ole! al final te has decidido ehh!! :):):) me alegro, voy a seguir tu proyecto desde muyyy cerca q me interesan estos caxarrillos, esto lo tengo exao en la pila FIFO que tengo montada en mi cabeza! jajaja a ver si este verano le saco unas cuantas cosas ;)

saludos Manolo :)

pd: sigo con mis examenes, voy a por el 5:5 ... solo me kean tres mas... espero contarlo ^^
Título: Re: Robot equilibrista
Publicado por: Artifox en 01 de Julio de 2006, 13:53:26
Trabajo de titanes que te espera Nocturno... Animos que nada es imposible :mrgreen: :mrgreen: Por cierto, vas a implementar algun algoritmo de control especial para mantener vertical el bot??

Saludos  :-/
Título: Re: Robot equilibrista
Publicado por: Nocturno en 01 de Julio de 2006, 13:59:25
Pues aún no he llegado a esa fase, aunque tengo dos opciones en la cabeza y que cuando llegue el momento evaluaré para probarlas:
1.- aplicar un PWM proporcional a la inclinación del bicho sobre la vertical, con sentido favorable a la inclinación, de manera que la contrarreste.
2.- implementar un control PID que aplique más fuerza a los motores mientras más lejos esté de la vertical

Los dos métodos son parecidos, aunque sospecho que el segundo se portará mejor cuando el bicho tenga que subir cuestas.

Por cierto, ya me estoy hartando de llamarle "bicho". Tendré que pensar un nombre.
Título: Re: Robot equilibrista
Publicado por: RedPic en 01 de Julio de 2006, 14:05:21
Tu nuevo proyecto se ve como GRANDE en ideas y en esfuerzo de desarrollo ... por eso: por favor no le pongas un nombre en diminutivo ....  :D  :D  :D  :D  :D  :D  :D

Rebujito, Frijolito, ... ¿Xxxxxx-ito?  :D  :D  :D  :D


Título: Re: Robot equilibrista
Publicado por: Nocturno en 01 de Julio de 2006, 14:08:21
Ya sabes que me gustan las cosas chiquititas, y ya lo advertía al principio: "...parecido al de la foto, aunque más pequeño,..."
Título: Re: Robot equilibrista
Publicado por: RedPic en 01 de Julio de 2006, 14:11:28
Pues me lo pones a güebo:  :mrgreen:

Ahí tienes a Manolito Balancín .... ja ja ja ja  :D  :D  :D ... Ay que me dá ...  :D  :D  :D

Título: Re: Robot equilibrista
Publicado por: jfh900 en 01 de Julio de 2006, 16:42:57
Los dos sistemas que propones no son excluyentes, de tal forma que podrias utilizar un PID que controle un PWM (de echo hay un hilo en el que se utiliza este sistema). Con esto conseguiras mediante el PWM un control sencilllo y mediante PID evitaras oscilaciones y el control será menos brusco y mas suave. El inconveniente, pues que el PID hay que sintonizarle. Otra posible opción, pero un poco mas farragosa de implementar es utilizar lógica difusa.

Un saludo.
Título: Re: Robot equilibrista
Publicado por: J1M en 01 de Julio de 2006, 16:51:26
Como creeis que se comportaría el sistema con otro tipo de controles como el predictivo y el sliding?

Supongo que el primero no podría utilizarse, ya que en principio no se conoce el modelo de las perturbaciones... se supone que es ante lo q debe autocontrolarse el robotillo... Sin embargo el sliding podría aplicarse no?? ya q ni se conoce la planta (aunq si q se puede hacer una buena estimación...) ni se conoce el modelo de las perturbaciones. Hablo un poco desde el desconocimiento ya q no conozco demasiado esos controladores....

saludos!
Título: Re: Robot equilibrista
Publicado por: jfh900 en 01 de Julio de 2006, 16:59:38
El control predictivo no se puede aplicar ya que no conocemos las perturbaciones antes de entrar al sistema, en cuanto al control sliding es un control poco utilizado (yo practicamente no lo conozco).

Un saludo.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 01 de Julio de 2006, 17:05:40
Yo ni sabia de su existencia, así que me tocará estudiar de que va.
Título: Re: Robot equilibrista
Publicado por: J1M en 01 de Julio de 2006, 17:30:40
Creo que es poco utilizado un poco por el desconocimiento de su existencia, es 'relativamente' moderno y lleva un cálculo algo engorrosillo tras de él... gracias al amigo liapunov (q vela por todos nosotros! jajaja pd: esto es una tonteria q quizá solo entienda algun compañero de clase y yo xDDD) pero en cualquier caso es 'lo mejor' para sistemas no lineales. El PID comete un cierto error ya que hay que linealizar al sistema en torno al punto de funcionamiento, si se sale demasiado de él... aaaaaadios! :P

Manolo para empezar pegale un ojo a la wikipedia:
http://en.wikipedia.org/wiki/Control_theory
http://en.wikipedia.org/wiki/Sliding_mode_control

La verdad estos temas son bonitos, a ver si la pila esa FIFO que comentaba se vacía un poco y le añado algún ejercicio práctico en el que pruebe varios controladores con un péndulo invertido (creo q me emociono yo solo! jajajaja)

saludos!
Título: Re: Robot equilibrista
Publicado por: Nocturno en 01 de Julio de 2006, 17:37:11
Mientras escribías tu post he encontrado un PDF gue tiene muy buena pinta.
Lo dejo aquí para vuestra consulta.
http://servicio.cid.uc.edu.ve/ingenieria/revista/v11n2/11-2-4.pdf
Título: Re: Robot equilibrista
Publicado por: Nocturno en 01 de Julio de 2006, 17:59:20
He estudiado los tres acelerómetros y creo que la primera prueba la haré con el ADXL210, que entrega dos señales PWM, una por cada eje y es capaz de medir +-10G:

- descarto el ADXL250 porque es para golpes duros, llega a medir +-50G y por tanto no tiene la precisión que yo quiero para variaciones pequeñas de aceleración. De hecho, los +-10G del ADXL210 me parecen demasiados, pero no tengo nada mejor.

- descarto el MMA1270D porque entrega como resultado una tensión analógica. La diferencia entre 0 y 1G (90º de giro) es sólo de 0,75V , es decir, cada grado de giro se representa con 8,3mV. Considero que esta resolución es muy alta para un ambiente donde habrá motores y probablemente la oscilación de la tensión de referencia sea mayor a esos 8mV.

En fin, mañana espero comenzar con las pruebas y os iré contando.
Título: Re: Robot equilibrista
Publicado por: patolinec en 01 de Julio de 2006, 18:11:31
Pues muy bueno Nocturno, yo te comento que he construido un pendulo invertido, pero que equilibra una barra de 80cm de largo y todo el control lo hago mediante electronica analogica, para el sensado de inclinacion estoy utilizando un potenciometro lineal de 10k, que me da el cero osea el punto en donde la barra esta equilibrada, uso un control PID, osea proporcional, integrador y derivador, pero no tengo aun los resultados que espero voy a colocar algunas fotos de lo que tengo.

Una pregunta de que forma tu desea implementar el dspic en el control
Título: Re: Robot equilibrista
Publicado por: Nocturno en 02 de Julio de 2006, 02:32:38
Mi intención es que el dsPIC gobierne todo el robot. Teóricamente debe ir sobrado para mover los motores, mostrar mensajes por el display, estar pendiente de las lecturas del acelerómetro y leer el periódico mientras tanto.

¿Cómo es eso de mantener el equilibrio con una barra y un potenciómetro?, cuenta, cuenta...
Título: Re: Robot equilibrista
Publicado por: Flugplatz en 02 de Julio de 2006, 06:37:27
¿Cómo es eso de mantener el equilibrio con una barra y un potenciómetro?, cuenta, cuenta...

Creo que en la página de David P. Anderson o en alguna de las que referencia en sus links, hay un paso intermedio que utiliza un patin a modo de varilla de invidente y solidario al eje de una resitencia variable para empezar a hacer pruebas de verticalidad.

Mientras tanto, Manolo, si me permites que te llame por tu nombre, como decía aquel, Dios los cria y ellos se juntan. Te voy a poner unas afotos del chisme en el que estuve trabajando ayer y estaba trabajando haste hace un rato  :shock: :mrgreen: y en el que voy a seguir cuando escriba esto.

Vista completa del chasis ... aún sin terminar ...

(http://img69.imageshack.us/img69/6020/dscn20040vf.th.jpg) (http://img69.imageshack.us/my.php?image=dscn20040vf.jpg)

Vista de los servos propulsores ...

(http://img76.imageshack.us/img76/3379/dscn20054ye.th.jpg) (http://img76.imageshack.us/my.php?image=dscn20054ye.jpg)

El giróscopo de aeromodelismo (me lo ha regalado un amiguete) ...

(http://img104.imageshack.us/img104/2162/dscn20070db.th.jpg) (http://img104.imageshack.us/my.php?image=dscn20070db.jpg)

El sensor de inclinación (Parallax Memsic)

(http://img104.imageshack.us/img104/9338/dscn20099yu.th.jpg) (http://img104.imageshack.us/my.php?image=dscn20099yu.jpg)

La batería (6 x 2/3A NIMh)

(http://img230.imageshack.us/img230/2397/dscn20108io.th.jpg) (http://img230.imageshack.us/my.php?image=dscn20108io.jpg)


Aunque la forma de dirigirlo será diferente a la tuya, yo voy a hacerlo teledirigido con un mando de RC, creo que las bases a seguir y los pasos iniciales, son básicamente los mismos, aunque yo segúramente al final voy a usar un micro solo para controlar los motores y otro para lo demás.

He usado servos sin electrónica, porque son las cajas de engranajes mas precisas y con menos holgura , algo muy importante, a las que podemos tener acceso nosotros. He probado con varias que tengo en casa, las Tamiya incluidas, y todas tienen una holgura del copón, y eso motivo suficiente para descartarlas. Como voy a tenerlos que controlar de todas formas, pues, de momento, prefiero usar solo los motores, y ya que tengo que generar las señales, pues las genero enteras y los muevo con un L293.

La batería va pegada con un sistema de placas deslizántes a la parte inferior de plancha de fibra de vidrio superior (la amarilla no la verde). Como esto funciona por el principio físico del pendulo invertido, como el típico juegecillo de mantener vertical una escoba con el cepillo para arriba, el peso principal del Robot Balancín debe ir en la parte de arriba. Según mi opinión, la parte física del robot debe ir casi-perfectamente equilibrada, al menos en la dirección de marcha, y por eso, en lugar de pegar diréctamente la batería, esta se va a poder mover de detrás a adelante unos milímetros para dejar el centro de gravedad lo más centrado posible con el bot apagado. Es lo que iba a empezar a hacer ahora, por eso no pongo foto.

La fase uno es hacer la parte mecánica, o sea, en la que estoy yo. En cuanto termine, pasaré a la fase dos, que es conseguir que el bot mantenga el equilibrio en parado. Según David P. Anderson, para esto se usa solo el sensor de inclinación, y una vez que ya queramos que se mueva, es cuando implementaremos el giroscopio, que la única función que tendrá será amplificar cambios bruscos de inclinación y pérdidas de equilibrio.

De todas formas, aunque David P. Anderson aporta muchísima información, creo que la página que es fundamental es esta:

http://www.tlb.org/scooter.html

Aquí nos dá datos claves para la implementación electrónica de un Robot Tentenpié, como por ejemplo, porqué solo hace falta una batería ... Para mis motores, 4 Voltios (PWM 60%) y 7.2 para momentos críticos (PWM 100%) son ideales.

Hace un calor del copón y no volveré a encender el PC hasta la tarde, parece un calefactor  :shock: :mrgreen:

Ta luego ...

Mario

PD: Espero que todo esto te sirva para ir dándole forma a Manolito Balancín  :mrgreen: :D ... mientras tanto yo seguiré con Marito Balancín  :shock: ... aunque bueno, el mío ya tiene nombre, 130R, en honor a la mítica curva de Suzuka y a dos crack de la F1: Ayrton Senna da Silva y Fernando Alonso.  :)
Título: Re: Robot equilibrista
Publicado por: Nocturno en 02 de Julio de 2006, 06:50:10
Andaaaaaaaaa, otro para el club.
Pero macho, si lo tuyo va mucho más adelantado. Y tiene buena pinta esa estructura.

Bueno, pues estamos junto en el barco, aunque veo que tú tienes giroscopio  :lol:

Ve posteando aquí tus avances, ¿vale?
Título: Re: Robot equilibrista
Publicado por: Flugplatz en 02 de Julio de 2006, 06:54:54
OK, no lo dudes  :-/

Me has ganado por la mano, ya que estaba a punto de crear el topic. Está claro que si todos seguimos lineas paralelas seguro que llegamos antes a la resolución del problema ...  :mrgreen:

Cuando me tenga que poner a hacer el programa, ya os daré la brasa ...  :)

Un saludo

Mario
Título: Re: Robot equilibrista
Publicado por: Nocturno en 02 de Julio de 2006, 11:14:54
Toda la mañana entretenido con el acelerómetro y ya puedo presentaros novedades.

Finalmente he usado un ADXL213 que he encontrado en un rincón, y se me antoja que es el modelo ideal para este cometido porque está optimizado para +-1,2G , entrega salida PWM y tiene dos ejes, aunque sólo usaremos uno.

Tiene una resolución buena, puesto que 90º de giro sobre su vertical representan un 30% de variación del Duty, lo que arroja una precisión de 3º por cada punto % de Duty, y creo que será suficiente.

La única putada es que viene en un encapsulado de los que te obliga a tomar un vaso de ron antes de meterle mano, lo que por otra parte no está nada mal. En fin, que he tardado un buen rato hasta que lo he adaptado sobre un zócalo DIP.

Os dejo un vídeo de su funcionamiento, haciendo click sobre la foto.

(http://www.elrebujito.es/images/nivel.jpg) (http://www.elrebujito.es/descargas/nivel.avi)

Si alguien quiere consultar más detalles, he dejado un artículo con una explicación del código fuente en El Rebujito (http://elrebujito.es/modules.php?name=News&file=article&sid=181&mode=&order=0&thold=0).
Continuará...
Título: Re: Robot equilibrista
Publicado por: Nocturno en 02 de Julio de 2006, 14:04:21
Sigo con la siguiente fase.
He estado buscando entre el almacén de cacharros viejos y he encontrado los que serán los motores de mi bicho (por cierto, a partir de ahora Funamito). Os dejo una foto:
(http://www.elrebujito.es/images/funamito motores.jpg)

Son motores DC con reductora y rueda de goma, que creo que irán bien para este uso.

Mi duda es en cuanto a las baterías, he encontrado este par de paquetes:
(http://www.elrebujito.es/images/funamito baterias.JPG)

El paquete verde es de 6V y 1800mA y el amarillo es de 7,2V y 700mA.
¿Me podéis recomendar cuál usar?

Otra duda: me gustaría poner un jack hembra al Funamito para enchufarle directamente el cargador de baterías y que se cargasen sin necesidad de desmontarlas. ¿Qué circuitería tendría que implementarle para poder hacerlo?

Tengo otra duda más: ¿será mejor dejar unas baterías para los motores y otras para la lógica?

Gracias por vuestros consejos. Un saludo
Título: Re: Robot equilibrista
Publicado por: patolinec en 02 de Julio de 2006, 16:16:45
Pues dejame felictarte por tu inclinmometro manolo, esta muy chevere, y sinceramente te tengo envidia ya que por mi parte mi pendulo lo puedo realizar uncamente a partir de 741 y transistores :mrgreen:

Pues bien te explico:

Consiste en un carrito de 3 ruedas que lleva consigo a un eje movil donde se sostioene una barra, me entenderas mejor en la foto, al moerse la barra mueve en el eje tambien a un potenciometro que me da la señal de refernecia de inclinacion del pendulo,
Título: Re: Robot equilibrista
Publicado por: Nocturno en 02 de Julio de 2006, 16:20:31
Ah, ahora creo que te he entendido. En realidad tu robot siempre tiene las tres ruedas en el suelo y su objetivo es mantener vertical la barra, que sí se puede balancear.
Es simpático, sí. Y tiene mérito, yo no tendría ni idea de cómo hacerlo sin micros :S
Título: Re: Robot equilibrista
Publicado por: jfh900 en 02 de Julio de 2006, 17:19:34
Lo que has resuelto patolinec es lo que se conoce como péndulo invertido y habras utilizado el principio de las calculadores analógicas (solo se utilizan operacionales). De todas formas enhorabuena por el proyecto, ya que es algo que no está al alcance de cualquiera. Por cierto podrias poner un video donde lo veamos funcionando.

Un saludo
Título: Re: Robot equilibrista
Publicado por: LordLafebre en 03 de Julio de 2006, 01:03:18
Lo que has resuelto patolinec es lo que se conoce como péndulo invertido y habras utilizado el principio de las calculadores analógicas (solo se utilizan operacionales). De todas formas enhorabuena por el proyecto, ya que es algo que no está al alcance de cualquiera. Por cierto podrias poner un video donde lo veamos funcionando.

Un saludo

Hola:

precisamente Patolinec comento eso en su primer post... :D
Título: Re: Robot equilibrista
Publicado por: Nocturno en 03 de Julio de 2006, 02:58:44
Definitivamente creo que me quedaré con el paquete de pilas de 1800mA, porque encima resulta que son de Ni-Mh (mientras que las otras son de Ni-Cd) y he leído que no tienen efecto memoria.
(http://www.elrebujito.es/images/funamito baterias.JPG)

He estado buscando algún diseño que sirva para cargar las baterías sin desmontarlas de Funamito, y he encontrado el que os pego aquí.
(http://www.ea1uro.com/tecnico/cargador1.gif)

¿Cómo lo veis?, ¿creeis que funcionará bien?

Y otra duda: ¿dónde conecto ahí mi circuito?, supongo que en los bornes de la batería pero, ¿qué tensión llega mientras está cargándose?

Graciaaaaaaaaaaas
Título: Re: Robot equilibrista
Publicado por: patolinec en 03 de Julio de 2006, 14:05:15
Pues me encantaria colocar un vide cuando funcione :mrgreen:, por el momento tengo algunos probelmas que los estoy solucionando y apenas lo logre cuenten con ello, ahora alguien pudiera darem otra idea de como poder sensar la inclinacion de la barra
Título: Re: Robot equilibrista
Publicado por: J1M en 03 de Julio de 2006, 15:35:53
patolinec con un giroscopio de un grado de libertad podrías hacerlo... lo pones paralelo al eje de rotación de la barra y en principio no deberías tener problemas para medirlo.

Manolo ese circuito no lleva un documento explicativo en algún lado?? las baterías a recargar si q van conectadas donde dices, lo q no se es como calcular la relación entre las baterias q cargues y la tensión de alimentación :S (eso es algo q depende del propio funcionamiento o bueno mejor dicho de la forma en que se carga cada tipo de pila?)
Título: Re: Robot equilibrista
Publicado por: Nocturno en 03 de Julio de 2006, 15:38:39
Sí que lo lleva, este es el link:
http://www.ea1uro.com/tecnico/cargador.html
Título: Re: Robot equilibrista
Publicado por: J1M en 03 de Julio de 2006, 16:00:50
ummm vale, tonces utiliza el lm317 como fuente de corriente a 1/10 parte de la intensidad de la pila... el lm necesita 3v y cada pila 1,5... vamos q si quieres cargar 2 pilas le pones una tensión de alimentación de 6v y en unas 10h las pilas deberían estar cargadas, aunq tb comenta q si le pones algo más de tensión d la cuenta a la entrada no sucede nada pq se asegura una intensidad de 180mAh (1/10) por la línea de las pilas. Está gracioso el bicho este :p ... Vale despues de mi pensamiento en voz alta, creo q no se responder a tú pregunta ^o^ ... aunq puestos a hablar... si es una fuente de corriente y esta es fija, la tensión será variable no? :S (ahora es cuando vuelvo a mirarme los apuntes de 1º) jajaja
Título: Re: Robot equilibrista
Publicado por: MSK en 03 de Julio de 2006, 16:04:35
Hola este es un circuito para cargar baterias NiCd - NiMH, esta para tres salidas de corriente de acuerdo a la capacidad de la bateria, la formula parece esta..   Rx=(1,25 + 0,1) / I  ,  x = 1,2,3.   para la de tu bateria es  I= 1/10  180ma +-

Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 03 de Julio de 2006, 16:05:54
Bueno, como no podía esperar a la respuesta, lo monté y lo he tenído todo el día cargando el paquete de 4 baterías de 1800 mA. A la vez tenía el polímetro junto a las baterías y comenzó el día marcando 5,15V. Al final de la tarde ya marcaba 5,7V por lo que deduzco que todo ha ido bien.

La alimentación que le metía era de 12V, pero las tensiones en la batería nunca han pasado de esas que comento. Y tampoco se han calentado, ni mucho menos.

Así que creo que tal cual está lo montaré en el circuito, dejando el circuito permanentemente enganchado de las baterías, puesto que al enchufar el cargador la tensión no sube de forma que pueda dañarlo. ¿Alguna recomendación?

P.D. Gracias por ese esquema, MSK.
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 03 de Julio de 2006, 16:42:40
Bien por el bot manolo.
Normalmente la clavija donde se conecta el alimentador es un conmutador y cuando se introduce la clavija del alimentador la electrónica queda al aire, por si hay algún accidente, por ejemplo una célula sube de impedancia y entonces sube el voltaje al circuito.
y otra razón es que el circuito si esta en paralelo con las baterías también consume con lo que la carga de estas es mas lenta y mas dificil de controlar.
Normalmente no se aconseja cargar las baterias con la carga conectada.

De todas formas mientras las baterias estén sanas nunca dejaran subir la tensión (y menos si el cargador es lento) ya que estas tenderán a aumentar el consumo durante la carga para oponerse al incremento de tensión en sus bornes.

y ese circuito ultimo que te indicaron es excelente e incluso se podria simplificar de la siguiente forma, a ver si me acuerdo.
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 03 de Julio de 2006, 17:34:02
Aqui esta
http://img320.imageshack.us/img320/5229/cargador4ke.jpg
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 03 de Julio de 2006, 17:36:50
La Rz determina la corriente de carga, y la RL  representa a la bateria o baterias.
Título: Re: Robot equilibrista
Publicado por: patolinec en 03 de Julio de 2006, 21:59:36
Hola J1M gracias por tu aporte, ahora tengo un problema les escribi a los de una tienda por aca en Ecuador y me contaban que no concoian ninguno, tu talvez has utilizado uno ¿CUAL?, o alguno por ahi ha usado un giroscopio le agradeceria la infromacion
Título: Re: Robot equilibrista
Publicado por: J1M en 04 de Julio de 2006, 01:47:01
Mira en esta tienda tienen algunas plakitas para pruebas, te pueden servir como referencias para encontrarlos:
http://www.sparkfun.com/commerce/product_info.php?products_id=754
http://www.sparkfun.com/commerce/product_info.php?products_id=741

Creo recordar que el del primer link es digital y el del segundo analógico, los dos son giroscopios de 2dof, miden 'balanceo' y 'cabeceo' pero no 'derrape' por lo que tendrías que ponerlo perpendicular al eje de giro.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 04 de Julio de 2006, 01:53:49
Ufff, una pasada de caros.
A mí al menos, más me vale tener un amigo aeromodelista que haya destrozado algún helicóptero y hacerle la pelota...
Título: Re: Robot equilibrista
Publicado por: J1M en 04 de Julio de 2006, 02:17:45
jejeje lo del helicoptero es buena opción si :p ... creo q los sensores andan sobre los 15€, las placas la verdad esq estan muy caras... aunq tb es cierto q una es de 5dof y la otra de 6... q si bien no lo necesita para su aplicación como decía lo mismo para orientarse un poco... :p aun así la de 5dof analógica no me parece cara del todo (q tampoco barata!)
Título: Re: Robot equilibrista
Publicado por: patolinec en 04 de Julio de 2006, 10:32:23
Pues voy a desistir de adquiri esa maravilla, esta recara y a eso tengo que sumarle 35$ por motivo de envio y aduana, asi que tengo que buscar otra opcion, estado intentando con fotodiodos que miden la distancia respecto a un punto fijo y segun como esta varia, el voltaje que entrega este sensor tambien variará estoy en etapa de pruebas voy a ver que sucede y les cuento.
Título: Re: Robot equilibrista
Publicado por: J1M en 04 de Julio de 2006, 10:47:00
patolinec tienes la opción de (si te tomas un vasico de ron como hace el compañero Manolo jejje :p) intentar soldarlo tú si los encuentras como samples, voy a ver si localizo alguno y te cuento ;)

s2!
Título: Re: Robot equilibrista
Publicado por: Veguepic en 04 de Julio de 2006, 13:35:07
Patolinec:

Por lo que veo la varilla solo tiene un eje con lo cual se balancea hacia adelante o atras no?

Por que no pruebas ponerle un encoder como los de mouse, con lo cual podras saber hacia que lado se va.

Si haces que el eje sea solidario con la barra y este sobresalga un poco podrias ponerle una rueda y mediante una correa unirla a otra rueda mas pequeña, y en el eje de esta rueda pequeña estaria el encoder.

Asi aumentarias la precision y no tendrias el juego de ponerle engranajes. Porque si unes el encoder directo al eje de la barra, creo que seria poca la precision.

Bueno es solo una idea. Espero te sirva.

Un saludo.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 04 de Julio de 2006, 14:09:43
Ya he montado la estructura con los dos motores y sus ruedas, las baterías y la protoboard con el acelerómetro.

Los primeros intentos por mantener el equilibro son un puñetero desastre. El acelerómetro se ve demasiado afectado por los movimientos de corrección y vuelve loco a los motores. Así que todo movimiento se traduce en caída inmediata :(

Título: Re: Robot equilibrista
Publicado por: patolinec en 04 de Julio de 2006, 20:47:28
Exactamente como tu dices venguepic funciona, Ahora el problema al utilizar un Encoder (Que es un encoder: Aqui la respuesta: http://www.forosdeelectronica.com/about34.html (http://www.forosdeelectronica.com/about34.html)), es que para determinar la pocision exacta se necesitaria contar los pulsos, pulsos que son discretos osea digitales, y mi aplicacion es un pedulo invertido utilizando control analogico por lo que no puedo usar este tipo de sensado, pero gracias por tu ayuda.

He encontrado una posible solucion basada en el sistema del mouse, ya que he implementado un sistemita con fotodiodos que varian el un voltaje de cero a cinco voltios dependidenod de la inclinacion, apenas lo termine subire una fotografia
Título: Re: Robot equilibrista
Publicado por: Flugplatz en 05 de Julio de 2006, 08:00:46
Hola ...

Bueno Nocturno, yo también empezé a montar el Cybot, y compré dos veces el fascículo 1, que creo que era en el que venían el chasis y las dos cajas de engranajes. Seguí comprando varios números para terminar uno, pero, al final, en vista de que aquello no era muy expandible, lo dejé a la mitad. El caso es que tengo los motores repetidos y también los valoré a la hora de elegir la propulsión para mi tentenpié, pero los descarté, porque, aunque tienen muy buén aspecto, tienen poca desmultiplicación, y lo que es peor, los engranajes tienen muchísima holgura. Prueba a girar la rueda, hacia detrás y hacia delante sin hacer mucha fuerza, y verás que tienes un movimiento en vano de 1mm o 1.5mm. Al mismo tiempo, coge un servo y haz lo mismo con el "cuerno" (horn en ingles) ... verás que aunque tiene una pizca de vano, es casi inapreciable, y es muchiiiiiiiiiiisimo menor que el de la caja de engranajes del Cybot. Creo que esto, al igual que unas cosas más es tan importante o más que un buen software y unos buenos sensores. Yo diría que más que importante, es imprescindible, una buena y lo más precisa posible base macánica.

(http://img97.imageshack.us/img97/3773/dscn20140ue.th.jpg) (http://img97.imageshack.us/my.php?image=dscn20140ue.jpg)

Independiéntemente de que el objetivo final, sea un péndulo invertido, está claro que es fundamental que el centro de gravedad esté en todo momento lo más cercano posible a la vertical de los ejes de los motores. En mi chasis, incluso he dispuesto un soporte y el plomo, para lograr que esté centrado incluso teniendo solo el piso de abajo. Lo podéis ver en las fotos. Me falta poner en el piso de abajo el giroscopio, así que es  probable que tenga que reajustarlo.

(http://img217.imageshack.us/img217/3410/dscn20159gy.th.jpg) (http://img217.imageshack.us/my.php?image=dscn20159gy.jpg)

Además de en el piso inferior, en el piso superior, que es el que hace de péndulo invertido formado principálmente por el peso de la batería y la placa controladora, también tenemos que tener la posibilidad de poner el centro de gravedad lo más cercano a la vertical del eje de los motores. Como el peso del los componentes que vaya poniendo en la placa irá variando, pues he montado la batería con un sistema de placas deslizantes.

(http://img218.imageshack.us/img218/6520/dscn20170xx.th.jpg) (http://img218.imageshack.us/my.php?image=dscn20170xx.jpg)

Esta batería va fija, y el sistema es única y exclusivamente para variar la posición del centro de gravedad. Una vez ajustado, la batería queda fija, es decir, que no es que con este sistema el procesador la vaya a mover para mantener el equilibrio. Para eso se monta el péndulo invertido, para que solo moviendo el piso inferior, se mantenga el equilibrio.

Por si alguien no tiene claro el tema del péndulo invertido, es fácil, coged una escoba, poned el extremo del palo en la palma de la mano, el cepillo para arriba, e intentad moviendo la mano mantener el palo vertical.

Manolo, además del tema mecánico, quizás hay que hacer un software que sea muy preciso midiendo, pero no demasiado rápido corrigiendo. Como véis, la placa de control provisional es una de Melabs, y voy a usar un 18f248, el único de 28 pines que tenían en Conectrol, a 40 Mhz, para que haga las mediciónes muy rápido y con la mayor precisión posible, y además le de tiempo a aplicar algún algoritmo PID o algo así, que por cierto, no tengo no pajolera idea de lo que es, así que, ahora me toca pegarme la empollada, ya que sospecho que va a ser más que necesario.

Creo también que es necesario el giróscopo, así que, $$$$$ ... Aunque a lo mejor, alguno de los que han puesto por aquí es más apropiado, pero los de aeromodelismo los encuentras por 40 o 50 Euritos.

Un saludo

Mario

PD: por cierto ... aunque te parezca un tontería, si no te importa, estaría bien que sustituyeras "equilibrista", por "tentempié", que es la traducción real. Lo de "robot equilibrista" me suena algo despreciativo.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 05 de Julio de 2006, 08:19:47
Gracias por tus consejos y comentarios, Mario.

Es cierto que estos motores tienen holgura, pero me temo que el problema del equilibro en mi caso no está en esa holgura, sino en el error que se introduce a la lectura de la aceleración de la gravedad como consecuencia del movimiento.

Estoy ideando un algoritmo que minimice este efecto utilizando los dos ejes del acelerómetro, pero aún no me ha dado tiempo de terminarlo. Espero que vaya algo mejor.

Si no lo consigo, tendré que estudiar el cambiarlos por servos, pero de momento seguiré probando con esos conjuntos de motores y ruedas.

Totalmente de acuerdo en que un giroscopio es lo mejor, pero por el momento lo voy a intentar sin gastarme pasta, utilizando cosas que tenía por aquí.

Y también totalmente de acuerdo que el robot debe permanecer vertical en estado de reposo, con el centro de gravedad en el centro del eje. De hecho, mis baterías también son desplazables para ayudar a conseguirlo.

Con respecto al nombre :D , a mí me gusta "equilibrista" y no me parece despreciativo. Pero tú puedes poner el nombre que quieras cuando postees, faltaría mas. Por cierto, ahora que lo pienso, jeje, un "tentempié" es lo que me voy a meter entre pecho y espalda en unos minutos, jaja. Supongo que querías decir un "tententieso".
Título: Re: Robot equilibrista
Publicado por: ramon en 05 de Julio de 2006, 09:20:42
El proyecto es una maravilla, pero tengo una preguntilla. No seria mejor intentar ponerr el centro de gravedad lo mas abajo posible, que aunque la intencion es mantener el equilibrio si se bajara el entro de grabedad mas abajo, las inclinaciones seria menos "agresivas" porque no es lo mismo sostener una escoba que una fregona con el cubo y con mas peso arriba. 

Un saludo
Título: Re: Robot equilibrista
Publicado por: Nocturno en 05 de Julio de 2006, 09:37:16
Claro, pero entonces dejaría de ser un "Péndulo invertido" para convertirse en un "Péndulo".

Es más fácil de hacer, pero ya no tiene sentido ni la electrónica, ni los PIC ni nada...  :D
Título: Re: Robot equilibrista
Publicado por: ramon en 05 de Julio de 2006, 10:48:55
 :D :D :D la verdad esque si    :D :D :D :D
Título: Re: Robot equilibrista
Publicado por: patolinec en 05 de Julio de 2006, 12:13:48
Pues parece que en el protoboard me funciona  :-/ el acople con fotodiodos, ahora hay que pasarlo al pendulo y ver que sucede, a proposito nocturno ayer revisando unos apuntes en algun momento de la Universidad construi un sensor de inclinacion, y encontre los apuntes de el, pero no es aplicable a un pedulo con barra libre, sino unicamente a un carro de dos ruedas, como el que tu estas construyendo, el circuito esta basado en un medidor de distancia con 2 pares de Infrarojos que de acuerdo a la distancia existente entre la parte mas baja del carro y el piso da un nivel de voltaje, y si la inclinacion es hacia la derecha o izquierda se obtiene de la resta utilizando un 741, era bastante bueno.
Título: Re: Robot equilibrista
Publicado por: Flugplatz en 05 de Julio de 2006, 12:14:15
.... Por cierto, ahora que lo pienso, jeje, un "tentempié" es lo que me voy a meter entre pecho y espalda en unos minutos, jaja. Supongo que querías decir un "tententieso".

 :D :D :D :D

Ufff ... es que tentetieso también me suena fatal ...  :shock: ... con lo de ir en el metro, las ropitas de verano de las hommo sapiens, y los aires acondicionados ... Buff .... malo me estoy poniendo  :mrgreen: :mrgreen: :D :D

Ramón, lo del péndulo invertido, es cuestión de altura. Si la masa principal está muy alta con respecto al punto de apoyo, los movimientos son muy suaves y controlables. En cualquier caso, esto es un hobby, y se trata de pasar el rato  :)  y mantener la neurona activa.

Manolo, supongo que el Memsic y el tuyo funcionan de forma parecida, un puso de anchura variable en función de la inclinación. Ese algoritmo seguro que es interesante ... y mi famosa precisión imprecisa seguro que es clave.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 05 de Julio de 2006, 12:26:30
No sé cómo será el memsic, pero si te sirve el algoritmo, en cuanto compruebe que funciona lo cuelgo.

Patolinec, lo de los infrarrojos es mi plan B si no consigo hacerlo con el acelerómetro, así que seguro le echo un vistazo.
Título: Re: Robot equilibrista
Publicado por: patolinec en 05 de Julio de 2006, 12:34:55
Maldicion, me han clavado una espinita y apenas acabe mi pendulo invertido analogico empezare con uno controlado por DSPIC y aghi les cuento
Título: Re: Robot equilibrista
Publicado por: GustavoT en 05 de Julio de 2006, 20:48:13
Alguien dujo por ahí que seria mas fácil colocar el centro de gravedad lo mas bajo posible, bueno no, lo que pasas que el péndulo tiene pívot en el punto donde tocan las ruedas con el piso, todo péndulo tiene un radio y una masa, a los efectos de simplificar el estudio suponemos que toda la masa se encuentra alojada en el punto ese que llamas centro de gravedad.(es totalmente legar)
Bien redondeando tenemos radio y masa,  ahora si ese radio es largo.......  nuestro sistemas tiene un momento de inercia grande, si es corto tenemos momento de inercia, si claro, chico, ahora momento de inercia tiene el mismo concepto que masa que estudiamos en física 1, por lo que si hay menos masa hay mas aceleración (newton no se puede equivocar) por lo que el sistema se nos escapa mas rápidamente.
Vayan y busquen una escoban.... ya la tiene muy bien, no no no... no me mientan no buscaron nada la escoban VAYAN
Bien armen un péndulo invertido con el mango para arriba,.,.. ahora con las pajas para arriba ... y pueden ver la diferencia.. espero que si

Mucha suerte, para estudiar el péndulo invertido generalmente no se usa un robot, sino un carro que mueve el péndulo sobre un riel , pero claro mas entretenido es el robots

Saludos Gustavo T
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 09 de Julio de 2006, 13:28:52
Hola Nocturno:

Respecto al diagrama del cargador de baterías que publicaste, no sé si sabrás que apareció en el ejemplar de septiembre de la revista Elektor (página 52). Incluyen un artículo en el que explica su funcionamiento.

Ánimo con tu robot; me parece muy interesante.
Título: Re: Robot equilibrista
Publicado por: jfh900 en 09 de Julio de 2006, 13:39:55
GustavoT lo que comentas sobre masa e inercia, no es cierto. Masa e inercia no son lo mismo, ni remotamente parecido. La inercia es una propiedad de la masa que hace que esta no cambie de estado (de reposo a movimiento y viceversa). Efectivamente si ponemos un peso a una varilla y lo cogemos por el extremo contrario a la masa, el momento de inercia aumenta, con lo cual será mas facil de mantener el equilibrio que si no tuvieramos masa. La demostración es bien facil, basta intentar mantener en equilibrio un martillo por el mango y el mismo mango sin la parte metálica.

Un saludo.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 09 de Julio de 2006, 14:52:44
Gracias por el apunte, jfmateos, a ver si pillo la revista en el kiosko.
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 09 de Julio de 2006, 15:36:53
Si no la tienen en tu kiosko, quizás pueda pedírtela en el mío (es en la versión en castellano). :mrgreen:
Por cierto, en tu vídeo del acelerómetro me pareció que éste no respondía demasiado rápido a los cambios de inclinación. Es sólo una apreciación; no hace falta que me contestes. Este agosto le dedicaré algo de tiempo a recordar la dinámica del péndulo invertido (la tengo ya muy olvidada) y quizás pueda hablar con más propiedad. El proyecto me parece muy interesante porque llevo poco tiempo con los PIC y me resulta alucinante que permitan integrar un problema en tiempo real. Lo dicho: mucho ánimo... y cuando acabes con éste a ver si te atreves con uno con una sola rueda (monociclo)
Título: Re: Robot equilibrista
Publicado por: GustavoT en 10 de Julio de 2006, 09:43:14
Sin animo de polemizar, yo lo que dije fue que "momento de inercia tiene el mismo concepto que masa que estudiamos en física 1", nunca me refería exclusivamente a la inercia

Para ser mas claro, "momento de inercia" tiene en movimiento circular  una correlación directa con la "masa" en movimiento rectilíneo, esta todo en la ley de newton para movimiento circular, "Troqué es igual a Momento de Inercia por Aceleración Angular"

Y si lo pienso bien esto de movimiento circular también se estudia en física 1

Saludos

PD: uno de estos días deberíamos organizar un campeonato de ajedrez
Título: Re: Robot equilibrista
Publicado por: Flugplatz en 11 de Julio de 2006, 09:58:05
Hola ... tengo un ligero problemilla  :?

Por motivos que no vienen al caso, he decidido usar la versión demo del MikroBasic ...

Es un poco derrochón y le faltan algunas cosillas, pero por lo demás está bien. Como lo que importa aquí son los algoritmos, pues si es necesario, ya lo  pasaré a otra plataforma.

De todas formas, el problema no es con el compilador, es con mi sensor de inclinación Memsickit de Parallax.

No se si es un problema del chip Memsic o de la placa de prototipos, pero me hace una cosa un tanto puñetera. Manolo, me gustaría que me dijéras si a tí te pasa con el adxl, o es que esto del Memsic es una porquería, ya que electrónicamente lo he montado como en todos los sitios que he visto en la WEB.

Quizas me he pasado con la velocidad de proceso obsesionado por la precisión. El caso es que he utilizado el timer1 para medir la anchura del pulso, y para que no haya imprecisiónes en instrucciónes preprogramadas del compilador, tipo 'pulsin', le he incrustado el código en ensamblador. Si observáis en el código parece que sobran cosas, pero tanta historia es para asegurarme de que estoy leyendo un pulso positivo puro y entero.

El problema que tengo es que cuando el timer1 solo debería variar cuatro arriba o cuatro abajo, según haga o no el último bucle, en realidad el valor que me devuelve no para quieto, pegando saltos de 20 o 30 unidades. Puede ser que sea ruido en la alimentación, o que el mismo chisme no de para más. Evidentemente, dividiendo el valor entre 100 p.e. aquello no se mueve, pero disminuye mucho la precisión de la medida. Ahora mismo no recuerdo, pero a 40 Mhz, creo que el valor del Timer1 está entorno a 12000, con lo cual, en cuanto empezemos a dividir, la precisión deja bastante que desear.

También he hecho la prueba de los 30 pavos; como tengo dos Memsickit, pues he probado con los dos, y los dos se comportan igual.

Aquí teneis el código ... pero podéis obviar todo lo que tiene que ver con las variables i y j ... suelo poner este tipo de cosas en mis programas para verificar que el procesador está rulando.

Código: [Seleccionar]
'***************************************************************
' Microcontrolador PIC18F452
' Reloj a 40Mhz en modo HSPLL
' (la función WordToStrWithZeros solo funciona con 18Fxxx)
'***************************************************************
program prueba_lcd

dim j as word
dim i as word
dim pw as word
dim txt as string[6]

main:
     delay_ms(100)
     Lcd_Config(PORTC,1,0,2,7,6,5,4)
     Lcd_cmd(LCD_CURSOR_OFF)
     Lcd_cmd(LCD_CLEAR)
     j=0
     i=0
     ADCON1 = 7
     PORTA = 0
     TRISA = %11111110
     PORTB = 0
     TRISB = %11111111
bucle:
     asm
        movlw $00
        movwf T1CON
        clrf TMR1H
        clrf TMR1L
bucle1:
        btfsc PORTB,7
        goto bucle1
bucle2:
        btfss PORTB,7
        goto bucle2
        movlw $21
        movwf T1CON
bucle3:
        btfsc PORTB,7
        goto bucle3
        movlw $00
        movwf T1CON
     end asm
     pw = (TMR1L + (TMR1H * 256))/4
     WordToStrWithZeros(i,txt)
     Lcd_out(1,1,txt)
     WordToStrWithZeros(j,txt)
     Lcd_out(1,6,txt)
     WordToStrWithZeros(pw,txt)
     Lcd_out(2,1,txt)
     j=j+1
     if j = 0 then
        i = i + 1
     end if
     delay_ms(100)
     goto bucle
end.

Por cierto Manolo, aunque tu eres un tipo con coco :mrgreen: y es casi seguro que hayas llegado tambien a esta conclusión, te lo pongo por si acaso. Coge la escoba y piensa ... ¿que es lo que se tiene que mantener quieto? ... evidéntemente; el cepillo ... o sea, que el sensor de inclinación tiene que estár lo más cerca posible del peso superior y lejos de la base, que es la que se tiene que mover en sentido longitudinal para mantener el equilibrio. Aunque yo voy más retrasado y todavía no lo he montado en el BOT, creo que si el sensor está pegado a la batería (en el cepillo), de momento, solo te tienes que preocupar de mantenerlo horizontal. Cuando haya que andar, otro gallo nos cantará, pero para mantener el equilibrio, pues según he deducido, debería ser mejor.

un saludo
Mario
Título: Re: Robot equilibrista
Publicado por: Nocturno en 11 de Julio de 2006, 12:49:06
Hola Mario,

si te refieres a que el periodo del PWM no es exacto estamos ante el mismo problema exactamente, pero además es un problema con el que supongo que tendremos que aprender a convivir. Dudo mucho que el oscilador interno que este chip tiene consiga la misma precisión que un cristal y, por tanto, siempre oscilará un poco arriba y abajo.

De hecho, en mi inclinómetro, en una posición de reposo absoluto, hay una pequeña oscilación arriba y abajo.

Creo que un buen método es hacer la media de un montón de lecturas, como tú sugieres, y no creo que eso deba restar demasiada precisión porque comparado con la velocidad de los motores y de corrección de estabilidad de la estructura, la lectura del acelerómetro es muy rápida.

También pensé en el lugar más adecuado para colocar el acelerómetro, y también llegué a la conclusión de que el lugar donde menos influencia por aceleraciones laterales sería en la cabeza del chisme, y ahí lo he colocado. Aunque creo que tu giroscopio no debería dejarse influir por aceleraciones laterales, ¿no?.
Título: Re: Robot equilibrista
Publicado por: J1M en 11 de Julio de 2006, 13:27:06
no se explicar muy bien el pq, pero... no deberían ponerse los sensores lo mas cercanos al centro de masas o gravedad del bicho en cuestión??, creo q respecto a ese punto es donde mejor se puede medir la inercia del sistema y apartir de ahí operar. No tengo mucha idea del tema pero generalmente en los problemas de física, fuerzas, etc. Lo primero que se hacía era determinar el centro de gravedad del sistema y despues se operaba con ella, en principio por simplicidad, pero creo q se puede extrapolar a este caso no?........
Título: Re: Robot equilibrista
Publicado por: Nocturno en 11 de Julio de 2006, 13:38:34
Sí, exacto, en el centro de gravedad.
Pero el centro de gravedad es una línea vertical que recorre el aparato en toda su longitud. Y dentro de esa línea, yo he elegido ponerlo en la parte superior, que es donde se supone que "cabeceará" menos.
Título: Re: Robot equilibrista
Publicado por: Flugplatz en 11 de Julio de 2006, 13:39:17
Tienes razón J1M, pero precísamente lo que estamos haciendo con poner el peso arriba, es subir lo más posible el centro de gravedad. De todas formas, para comprender mejor cual es nuestro fin, lo mejor es que hagas la prueba de la escoba.  :mrgreen:

Respecto al sensor ...

En casa tengo un programa con el comando 'pulsin' que hace 10 mediciones y luego las divide por 10, y tiene menos tembleque, pero sigue pasando lo que tu dices, que estándo en reposo, hay variaciones fortuitas. De todas formas, a 40Mhz, nos podemos permitir el lujo de medir 10 veces el pulso y sacar la media.

El giroscopio, lo único que hace es detectar cambios bruscos de giro, inclinacion en este caso.

Esto si que lo he probado. Con un 12F629 hice un sencillo programa que lo único que hace es generar una señal fija o patron, como la que genera el receptor de RC.

Código: [Seleccionar]
   while(true)
   {
      output_high(PIN_A0);
      delay_us(150);
      output_low(PIN_A0);
      delay_us(19850);
   }

Conectando el servo a este generador patrón se mantiene quieto, cosa evidente.

Si conecto el giróscopo a esta señal, y un servo al giróscopo mientras no lo mueva, el servo permanece quieto, pero si lo giro brúscamente, el servo hace el contragiro para compensar. Si hago este giro muuuy suavemente, el servo ni se inmuta.

No olvides que estos chismes son para estabilizar la cola de los helicopteros manipulando el paso del rotor de cola, y se ponen principalmente para absorber movimientos exagerados del Stick de acelerador y sobre todo, para absorber golpes de viento laterales.

A ver si puedo ñapear un video con la cámara de fotos ...

Este tema del tentenpié es tremendamente complicado. Por eso te decía que una base mecánica con pocas holguras y bien equilibrada es fundamental. El caso es que "aparéntemente" el giróscopo solo debería hacer falta para que úna vez que ya se mueva, se detécten tropiezos o cambios repentinos de inclinación, como por ejemplo, que reciba un toquecillo. Lo que pasa es que estoy empezándo a dudar de si reálmente también hace falta para mantenerlo parado en equilibrio.
Título: Re: Robot equilibrista
Publicado por: J1M en 11 de Julio de 2006, 15:25:13
Si pero...el problema de poner muy arriba el centro de gravedad es que para contrarestar un pequeño cambio de este será necesario un gran desplazamiento de la parte inferior y muy rápida, además de que se desequilibrará muy fácilmente no??.. No sería mejor bajarlo un poquitín, no demasiado por el problema comentado de la 'escoba al revés'... Pienso que la mejor zona estaría entre la mitad de su tamaño total y la mitad superior de esa mitad... supongo q estabilizar ahí al cacharro sería mas sencillo .... o no?
Título: Re: Robot equilibrista
Publicado por: Nocturno en 11 de Julio de 2006, 16:34:06
No tengo argumentos científicos para rebatir los tuyos, Jaime, pero me da en la nariz, tengo la corazonada y hasta la impresión subjetiva que mientras más alto esté el centro de gravedad, mejor nos vendrá.
En fin, el rodaje nos lo irá diciendo y yo lo transcribiré aquí con cualquier avance que consiga.

Mario, no me cabe ninguna duda, para mantener el equilibrio necesitarás el giroscopio o cualquier otro invento, pero por mucho que equilibres el bicho, no se va a quedar de pie porque sí.
Título: Re: Robot equilibrista
Publicado por: Modulay en 11 de Julio de 2006, 17:15:23
Cuanto más alto esté ese centro de gravedad más fácil será contrarrestar las pérdidas de equilibrio,y también más tiempo de margén habrá entre el momento en que se empieza a perder equilibrio y el momento en que se actúa para corregirlo.
Mi opinión es que cuanto más alto esté,mejor en todos los aspectos
Título: Re: Robot equilibrista
Publicado por: J1M en 11 de Julio de 2006, 18:34:40
oooook :D puesss como decía aquel, nunca te acostarás sin saber algo más, apuntado queda ;)
Título: Re: Robot equilibrista
Publicado por: MSK en 12 de Julio de 2006, 15:50:34
Hola a todos aunque esto no es electronica que mejor mirar en la naturaleza, como mantenemos el equilibrio los seres humanos.
  Encontre esta informacion...


El sentido del equilibrio, o sea, aquellas sensaciones que nos informan en todo momento de la posición de nuestra cabeza con respecto al espacio tridimensional en que nos movemos, reside en el oído interno.
El equilibrio dinámico, el que mantiene nuestro cuerpo en los movimientos de giro y aceleración, es posible gracias a los canales semicirculares del aparato vestibular: el canal superior, el canal posterior y el canal externo. En la ampolla o extremo de cada canal se encuentra la cresta, provista de finos cilios inervados por un nervio craneal.
El movimiento del liquido que contienen los canales, la endolinfa, empuja los cilios, cuya torsión representa el estímulo eficaz para la creación del impulso nervioso.
El equilibrio estático, el que mantiene el cuerpo cuando permanece quieto o se desplaza de forma rectilínea, se controla desde el utrículo, una cámara del aparato vestibular. En su interior se localiza la mácula, un conjunto de células ciliadas, y pequeñas masas óseas o calcáreas llamadas otolitos. Cuando se altera la posición del cuerpo respecto al campo gravitatorio, los otolitos tuercen los cilios de las células de la mácula, que inician la descarga de impulsos en las neuronas vestibulares
Título: Re: Robot equilibrista
Publicado por: sanpic en 12 de Julio de 2006, 17:10:05
 :shock:  Creo q está todo dicho , no ?
Cuanto se aprende.
Gracias.



Saludos a todos.
Título: Re: Robot equilibrista
Publicado por: patolinec en 19 de Julio de 2006, 16:58:56
Uff por fin he acabdo mis examenes de fin de ciclo, me reintegro y pues bunas noticias me funciono de peluches mi pendulo ahora q tenga un poco de tie tiempo subire un videillo, pero aun persisten unos problemas ya que no tengo tan buena respuesta ante oscilaciones grandes es decir cuando muevo bruscamente se me cae y ahi muere todo.

Pues creo que el analisis de este robotillo esta un poco complejo, pero siempre me he dado cuenta que la solucion mas simple y sencilla siempre es la mejor de todas, por lo que supuestamente no deberia importar la ubicacion del centro de gravedad ya que esto se considera importante cuando se desea mantener o llegar al equilibrio, cosa que el robot nunca lo hara, el mejor modo de solucionar es mediante un controlador PID, proporcional integrador y derivador, que segun lo que escuchado es facil de realizar con un dsPIC, pero aun no se hacerlo, eso voy a aprender este ciclo que viene en la universidad asi que vamos aver que ondas.
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 13 de Agosto de 2006, 17:23:06
Hola Nocturno. Puedo preguntarte ¿cómo narices soldaste el inclinómetro? Por lo que he visto en el foro sé que eres un fiera del soldador, pero leches, mi vista apenas da para ver los pines. Si no es mucho pedir, ¿podrías poner una foto (en la que tienes en elrebujito.es no acabo de verlo claro)?
Gracias
Título: Re: Robot equilibrista
Publicado por: Nocturno en 13 de Agosto de 2006, 17:51:55
No es que me sienta muy orgulloso de esta soldadura, de hecho la hice hace un par de años, cuando empezaba con esto, y guardé el acelerómetro en el cajón porque no sabía sacarle partido.
En fin, de cobardes es esconderse, ahí va la foto.
(http://img122.imageshack.us/img122/8974/acelerometrovu4.th.jpg) (http://img122.imageshack.us/my.php?image=acelerometrovu4.jpg)
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 13 de Agosto de 2006, 18:37:50
Muchas gracias Nocturno. ¿Has puesto algún tipo de adhesivo sobre el estaño de las soldaduras?

Te cuento de dónde viene mi interés: Creo que fue en un mensaje tuyo donde leí algo sobre acelerómetros de 3 ejes, pedí unos samples y... ahora no sé qué hacer con ellos.
Concretamente es este de freescale (http://www.freescale.com/files/sensors/doc/data_sheet/MMA7260Q.pdf).

Sabes si existe algún tipo de socket para poder utilizarlo. Me temo que éste es aún más pequeño que el que tu utilizaste.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 14 de Agosto de 2006, 01:05:46
No, no hay ningún adhesivo. Sólo que ese acelerómetro estuvo en un cajón durante mucho tiempo guardado, y no me di cuenta que se había mezclado con un bote de sosa cáustica (de la que guardaba para revelados). Cuando lo cojí estaba todo pringado y por eso tiene tan mala pinta.
Título: Re: Robot equilibrista
Publicado por: xocas en 14 de Agosto de 2006, 07:43:40
hola

como que me gustaria hacer una pequeña aportacion al proyecto os dejo un enlace con un par de articulos tecnicos y sendos videos: http://www.msl.ri.cmu.edu/projects/ballbot/  ...espero que le saqueis algun partido.

una pregunta: no seria mejor dedicar un pic exclusivamente a las tareas de equilibrio? ...es un pensamiento en voz alta, porque tengo el mismo conocimiento sobre dspic como de ruso.

saludos

pd: Nocturno, suerte que todos conocemos tu experiencia en soldar aquello que parece imposible porque sino esa foto nos haria pensar otra cosa bien diferente...
jfmateos2, no existe ningun socket que yo sepa para ese encapsulado. es necesario el uso de un horno con temperatura controlada para poder soldarlo ya que sus pines quedan ocultos. hay un documento en freescale donde se explica el proceso pero ahora no recuerdo el enlace.
Título: Re: Robot equilibrista
Publicado por: xocas en 14 de Agosto de 2006, 07:48:56
aqui tienes el enlace sobre como soldar tu acelerometro jfmateos2: http://www.freescale.com/files/sensors/doc/app_note/AN3111.pdf

saludos
Título: Re: Robot equilibrista
Publicado por: RedPic en 14 de Agosto de 2006, 14:15:23
Dadle un vistazo a este puto Robot equilibrista ¡¡¡ sobre una pelota !!! El Ballbot Balances Itself On One Ball (http://hackedgadgets.com/2006/08/11/ballbot-balances-itself-on-one-ball/)  :shock:  :shock:  :shock:



Título: Re: Robot equilibrista
Publicado por: xocas en 14 de Agosto de 2006, 14:21:55
hola

es el mismo que puse un par de lineas antes... esta vez te gane por la mano amigo RedPic..

un saludo
Título: Re: Robot equilibrista
Publicado por: RedPic en 14 de Agosto de 2006, 14:24:32
¡Yeah! .... igual que en la guerra: para el segundo no hay premio ... ja ja ja  :D  :D  :D

Claro, como lo has incrustado entre los asuntos de la soldadura de los acelerómetros no me he dado cuenta de él.
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 14 de Agosto de 2006, 14:25:32
Me parece alucinante y debe funcionar muy bien... aunque esa cámara de biclicleta alrededor del bicho da a entender que también tiene sus limitaciones. Estuve leyendo uno de los documentos técnicos que aportó xocas06 y me temo que, ya sólo por cómo está fabricada la esfera de abajo (acero recubierto de no sé qué goma), este proyecto está al alcance de muy pocos.
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 15 de Agosto de 2006, 13:15:20
Hola Nocturno,

En un momento de este hilo surgió el tema de los cargadores de baterías. Por un casual hoy me he topado con éste (http://www.oshonsoft.com/picchargerlcd.html), que tiene bastante buena pinta.

Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 15 de Agosto de 2006, 16:07:15
Gracias por la info. Se ve interesante, aunque es demasiado sofisticado para lo que yo necesito.
Título: Re: Robot equilibrista
Publicado por: Veguepic en 20 de Agosto de 2006, 00:28:06
Hola amigos:

Alguien ha soldado algun acelerometro de Freescale, este bichito ha caido en mis manos:

(http://img83.imageshack.us/img83/3585/2so9.th.jpg) (http://img83.imageshack.us/my.php?image=2so9.jpg)

es un MMA6261 y es de solo 6x6 mm, para colmo la imagen de la hoja de datos no coincide exactamente con el que tengo y la guia que puso Xocas06 es usando un horno.

Estoy pensando ponerlo boca arriba y soldarlo a un socket dip de 8 pines. Pero antes queria ver si alguien lo ha hecho.

Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 20 de Agosto de 2006, 01:39:44
Yo lo hice con uno de Analog que viene en el mismo formato y aunque me quedó hecho un churro, el caso es que funcionó.
Hay una foto en algún sitio del foro, pero no m'acuerdo ahora mismo.

Por cierto, ese bicho no tiene 8 pines, le cuento 16 (o 20 si también son las esquinas).
Título: Re: Robot equilibrista
Publicado por: Veguepic en 20 de Agosto de 2006, 03:32:36
Justo esos pines de las esquinas me confunden, pues el chip es de 16 pines, aunque al final solo usa  5 pines, 2 de alimentacion, 1 del eje Y, 1 del eje X y 1 para hacer self test.

Me guiare de la marca que tiene en el lado de la serigrafia para ubicar los pines en sentido anti-horario segun la hoja tecnica, ya veremos como queda.

Si he visto la foto del que soldaste de analog Nocturno, lo voy a montar similar al que pusiste, aunque tambien evaluo la opcion de ponerlo en una PCB con su conector de 5 pines tipo disco duro para asi poder conectarlo facilmente al protoboard y tambien me facilitara el montaje en cualquier otro lado.

Aqui pueden ver un video de una aplicacion usando una interface con labview:

http://www.freescale.com/files/sensors/doc/reports_presentations/LOWG_VIDEOS.html
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 20 de Agosto de 2006, 07:43:52
Parece que los Robot de una sola rueda no tardaran en aparecer...  :o
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 20 de Agosto de 2006, 08:29:11
La foto a la que se refiere nocturno es ésta http://img122.imageshack.us/my.php?image=acelerometrovu4.jpg (http://img122.imageshack.us/my.php?image=acelerometrovu4.jpg)

La publicó a petición mía para ver cómo demonios se puede soldar algo tan pequeño. La verdad es que si no veo esa foto no me creo que algo tan diminuto se pueda soldar.

Respecto a estos robots de péndulo invertido con 2 ruedas, me pregunto qué aplicaciones creeis que podrían tener (aparte de la de dejarnos a todos con la boca abierta).

A mi forma de ver, lo interesante de estos móviles es que puedes cargarles con lo que quieras, y ellos seguirán manteniendo el equilibrio, pero eso también sería posible con tres ruedas.

El de 1 esfera en lugar de dos ruedas, sí me parece que tiene una aplicación directa en lugares de difícil acceso, pues puede cambiar inmediatamente el sentido de avance sin rotar. En fin ¿qué aplicaciones prácticas les veis a estos robots equilibristas?
Título: Re: Robot equilibrista
Publicado por: Nocturno en 20 de Agosto de 2006, 08:44:55
Yo te digo ya una aplicación comercial: los Segways
(http://image.www.rakuten.co.jp/robocafe/img10391993588.jpeg)

Ni te imaginas lo que me cobran por contratar unas horas un Segway con una azafata repartiendo publicidad de mi empresa. Pero te aseguro que merece la pena porque a todo el mundo se le va la vista detrás.
Sí, también miran el Segway.
Título: Re: Robot equilibrista
Publicado por: Veguepic en 22 de Agosto de 2006, 02:15:19
Uffff, que dificil fue soldar este bichito  :5], bien que mal ahi esta por si le sirve a alguien:

(http://img206.imageshack.us/img206/4808/pic0003newdn8.th.jpg) (http://img206.imageshack.us/my.php?image=pic0003newdn8.jpg)

Solo queda probarlo a ver que tal funciona.  :(
Título: Re: Robot equilibrista
Publicado por: Nocturno en 22 de Agosto de 2006, 02:22:44
Enhorabuena Veguepic, se ve bien.
¡Veo que le has dado fuerte al ron, eh!
Título: Re: Robot equilibrista
Publicado por: Veguepic en 22 de Agosto de 2006, 03:04:31
Ni te imaginas, he tenido que dobletear el ron, pues justo despues de poner la foto me doy cuenta que estaba al reves el sensor  :5] :5]

Y con lo que costo soldarlo la primera vez.

Bueno acabo de correjirlo y revisarlo 10 veces. Espero todo este bien sino tendre que volverme socio de alcoholicos anonimos.

(http://img205.imageshack.us/img205/8152/beerxv3.gif)(http://img205.imageshack.us/img205/8152/beerxv3.gif)(http://img205.imageshack.us/img205/8152/beerxv3.gif)(http://img205.imageshack.us/img205/8152/beerxv3.gif)

Salud!!!!!!      hip     os!!!!!!!!
Título: Re: Robot equilibrista
Publicado por: RedPic en 22 de Agosto de 2006, 06:16:40
Hay dos clubs muy famosos: El de Alcohólicos Anónimos y el mucho mas amplio de Borrachos Conocidos.

Para hacer esa soldadura no se puede pertenecer al primero de ellos, el síndrome de abstinencia no te deja ... ja ja ja  :D  :D  :D

Título: Re: Robot equilibrista
Publicado por: Nocturno en 27 de Agosto de 2006, 06:15:53
No es que me sienta muy orgulloso de esta soldadura, de hecho la hice hace un par de años, cuando empezaba con esto, y guardé el acelerómetro en el cajón porque no sabía sacarle partido.
En fin, de cobardes es esconderse, ahí va la foto.
(http://img122.imageshack.us/img122/8974/acelerometrovu4.th.jpg) (http://img122.imageshack.us/my.php?image=acelerometrovu4.jpg)

Esto no podía quedar así, mi dignidad estaba por los suelos, así que he estado peleándome con estos integrados. Aquí os dejo una foto del resultado, y si hacéis click podréis ver un Tutorial de cómo lo hice.

(http://elrebujito.es/images/qfn-acabado.jpg) (http://elrebujito.es/modules.php?name=News&file=article&sid=186&mode=&order=0&thold=0)
Título: Re: Robot equilibrista
Publicado por: RedPic en 27 de Agosto de 2006, 07:14:46
Manolo:

Lo que mas me ha sorprendido de tu Tutorial es la habilidad que te has dado para sujetar la plancha y con una mano usar las pinzas para colocar el mini-integrado en su sitio y con la otra usar la camara de fotos ... de circo, oiga. ja ja ja  :D  :D  :D

Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 27 de Agosto de 2006, 07:15:24
Muchas gracias Nocturno por compartir tus trucos. Realmente es muy ingenioso, pero también muy habilidoso.

Sólo me queda una duda. He estado leyendo por ahí sobre el Flux y no me queda muy claro si sirve para ayudar a que el estaño se deposite en ciertas zonas o justo lo contrario. ¿Es un líquido verdad?
Título: Re: Robot equilibrista
Publicado por: Nocturno en 27 de Agosto de 2006, 07:24:27
Pues sí, realmente de circo querido Diego. Y lo mejor de todo es que salí ileso sin ninguna quemadura :D

José Félix, el flux es un líquido, y se unta con una brochita que viene en el mismo bote. En mi artículo de Soldadura TQFP (http://www.elrebujito.es/modules.php?name=News&file=article&sid=50&mode=&order=0&thold=0) tienes una foto.
Título: Re: Robot equilibrista
Publicado por: xocas en 27 de Agosto de 2006, 10:15:24
enhorabuena Nocturno, la verdad es que ya no esperaba menos del maestro del smd..

y aun no hace mucho me decias en otro hilo que no habias soldado nunca un qfn. mira, pues ya esta, ya lo has hecho!!!

gracias por compartirlo, porque yo tambien tengo un par de acelerometros de esos por aqui perdidos y siempre pensando en un horno... ya ves.

saludos
Título: Re: Robot equilibrista
Publicado por: ESTECA55 en 27 de Agosto de 2006, 14:04:32
Muy buen trabajo Nocturno!!

Quería consultarte donde se consigue el flux, en los locales de electrónica?, es especifico para eso??

Perdona mi ignorancia

Título: Re: Robot equilibrista
Publicado por: Nocturno en 27 de Agosto de 2006, 16:19:20
Sí, lo venden en las tiendas de electrónica, y no es nada raro, lo normal será que lo tengan.
Título: Re: Robot equilibrista
Publicado por: Veguepic en 27 de Agosto de 2006, 20:28:31
Me he quedado perplejo.   :shock: :shock:

Felicitaciones por el ingenio y me siento un poco avergonzado por el zafarrancho que hice.  :( :(

Voy a desoldar el mio para hacerlo como se debe y esto evitara que sea socio honorario de los Borrachos Conocidos.  :D :D

Solo un detalle para que tengan en cuenta es que los pines de este chip son bastante delicados, pues como comente en un post anterior me equivoque en la orientacion empece a desoldar todo y en un pin que pense que estaba desoldado jale el cablecito pero aun estaba unido, sucede que al parecer este se salio con la capa de estaño o que se yo que tenia el pin.

El punto es que ahora ya no acepta la soldadura. Por mas que lo he lijado, rayado, etc. La soldadura no pega como deberia, parece como una soldadura fria, al mas minimo choque se sale.

Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 28 de Agosto de 2006, 01:58:56
Si te funciona como está, no lo toques Veguepic. Son muy jodidos como para andar quitando y poniendo.
Y no te sientas avergonzado, hombre. Soldarlos como tú lo hiciste tiene mérito de buen alcohólico.
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 03 de Septiembre de 2006, 13:43:09
Aquí os dejo otro enlace a otro robot equilibrista. Me ha gustado la explicación del sistema de control para mantener el equilibro.
GYROBOT (http://www.barello.net/Robots/gyrobot/)
Título: Re: Robot equilibrista
Publicado por: elmasvital en 04 de Septiembre de 2006, 12:36:52
compraos el flux... yo tengo aqui un bote en pasata del año de la polca y de la marca carrefour (me venia en un pack) y que aun uso pq es interminable. Y sobre todo para desoldar viene uncreible... el estaño se caliente homogeneamente al instante al igual que los pads y por lo general ayuda a que el estaño no salte de pista y las comunique. No dudadlo.

Ahora y aunque sea algo off topic quiero pedir por favor que alguien me hable del cable wrapping o como se diga... lo vi en unas pistas de una placa de dogflu que trajo a la concentración y que lo ponia en sustitución de las pistas que se habia comido el atacado. Preguntas... suelda eso bien? viene preestañado? tiene aislante? Tenia la sensación de que estaba pegado a la placa... tiene algun tipo de adhesivo o fue mi impresión

1 saludo.


1 saludo.
Título: Re: Robot equilibrista
Publicado por: RedPic en 04 de Septiembre de 2006, 14:04:27
Si te funciona como está, no lo toques ...

Ja, ja, ja  :D  :D  :D

Hay un principio ingenieril que dice: Si algo funciona correctamente ... es que se le ha probado poco ¡¡¡ Hay que ponerlo en carga de verdad !!!

Título: Re: Robot equilibrista
Publicado por: J1M en 24 de Octubre de 2006, 14:38:48
Aquí unas fotillos de un equilibrista Tailandés :P

http://www.wara.com/modules.php?name=robot&file=robot&topicid=35&sid=205
Título: Re: Robot equilibrista
Publicado por: Nocturno en 24 de Octubre de 2006, 14:58:33
Interesante equilibrista. Dos cosas a destacar:
1.- La soldadura del cristal y los condensadores sobre la plaquita del 30F6010  :shock:
2.- Lo bien que trabajan el metacrilato, macho
Título: Re: Robot equilibrista
Publicado por: J1M en 02 de Noviembre de 2006, 11:11:38
Pegandole un ojo a la Revista Nuts & Volts de Octubre 2006, he visto que han escrito un articulillo para la realización de un robot equilibrista, aunque es algo simple ya que no ponen código si que muestran una visión global de lo que se necesita, como hacer el control (P, PD, PID)... supongo que a estas alturas lo q comentan ya está claro, pero bueno, ahí queda como curiosidad ;)

saludos!
Título: Re: Robot equilibrista
Publicado por: hsen en 08 de Abril de 2007, 01:52:03
Hola nocturno y los demás del foro, ¿en que quedo la cosa tan interesante del robot equilibrista o como se llame?
Me gustó mucho la idea.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 08 de Abril de 2007, 02:38:33
El mío está en el fondo del armario y de vez en cuando me mira con cara de pena.
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 01 de Junio de 2007, 14:27:00
Pues que paso entonces compañero nocturno, que ya lei la mayoria de los post y al parecer quedo en veremos terminar el equilibrista. Por mi parte estoy realizando uno pero este trabaja con sensor infrarojo de distancia, el alcance del mismo es de 4-30 cm. Ya tengo armada la estructura pero aun no he probado con el programa que estoy haciendo en el PIC, los avances que tenga del mismo los posteare por si aun queda interes.. :?

Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 02 de Junio de 2007, 01:31:22
Pues pasó lo que me ha ocurrido con otros tantos proyectos. Que llegan cosas más urgentes y finalmente tengo que dejarlos abandonados. Lo tengo ahí, en un cajón, y cada vez que lo abro me mira con cara de pena, así que cualquier día vuelvo a meterle mano.
Por supuesto que hay interés, así que será un placer ver tus avances.
Título: Re: Robot equilibrista
Publicado por: PalitroqueZ en 02 de Junio de 2007, 16:38:24
Leyendo sus mensajes, me vino a la mente las bicicletas que poseen giroscopio


http://www.microsiervos.com/archivo/tecnologia/gyrobike.html


los videos
https://www.dartmouth.edu/~gyrobike/works.htm

Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 13 de Julio de 2007, 14:08:36
Otro balancín bastante bien documentado http://coecsl.ece.uiuc.edu/ge423/spring04/group9/index.htm
(http://coecsl.ece.uiuc.edu/ge423/spring04/group9/images/seg.gif)
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 13 de Julio de 2007, 15:34:46
compraos el flux... yo tengo aqui un bote en pasata del año de la polca y de la marca carrefour (me venia en un pack) y que aun uso pq es interminable. Y sobre todo para desoldar viene uncreible... el estaño se caliente homogeneamente al instante al igual que los pads y por lo general ayuda a que el estaño no salte de pista y las comunique. No dudadlo.

Ahora y aunque sea algo off topic quiero pedir por favor que alguien me hable del cable wrapping o como se diga... lo vi en unas pistas de una placa de dogflu que trajo a la concentración y que lo ponia en sustitución de las pistas que se habia comido el atacado. Preguntas... suelda eso bien? viene preestañado? tiene aislante? Tenia la sensación de que estaba pegado a la placa... tiene algun tipo de adhesivo o fue mi impresión

1 saludo.


1 saludo.





Mas vale tarde que nunca:

El grapin es un cable unifilar muy fino con funda, viene en distintos colores,
creo que el que tengo es de 0.4mm con funda incluida (pasa por agujeros de 0.5mm).
se utiliza en los talleres de electrónica para reparar pistas, corregir o añadir pistas en
las primeras versiones de prototipos e incluso construir placas de prototipos a base
de hilos. Necesita estaño para ser soldado pero queda bien si se suelda directamente
en las soldaduras antiguas sin necesidad de añadir mas estaño. Se pela facil con la
punta del soldador y mas facil si se apoya en una maderita, se pone la punta del soldador
encima y se tira del cable, y salta facil la pequeña porcion de funda pero si se
tiene maña con los alicates de corte tambien. Es rígido por lo que parece que queda
pegado a la placa y mas si son tiradas de unos pocos centimetros en el peor de los caso
se puede pegar a la placa. Me vienen en rollitos de 15mtrs y salen por unos 6euros.
Es una buena herramienta para el profesional y el aficionado...
Grapin creo que es la marca, pero es la unica forma de que te entiendan cuando lo
Pides..
Título: Re: Robot equilibrista
Publicado por: Nocturno en 13 de Julio de 2007, 15:43:59
Otro balancín bastante bien documentado http://coecsl.ece.uiuc.edu/ge423/spring04/group9/index.htm
(http://coecsl.ece.uiuc.edu/ge423/spring04/group9/images/seg.gif)

Qué movimiento más suave
Título: Re: Robot equilibrista
Publicado por: jfh900 en 13 de Julio de 2007, 20:26:08
El cable denominado grapin coloquialmente, es parte de un sistema de realización de prototipos denominado: Wire wrap. El realidad el nombre del cable es igual que el de la técnica: cable de wire wrap que se ha ido modificando con el uso y se ha pasado de wraping a grapin. Esta técnica de realización de prototipos es un poco cara y muy trabajosa, ya que cada pista se cablea mediante este hilo. Los zócalos para C.I. son especiales teniendo sus patillas muy largas y rectangulares con aristas agudas para que el hilo quede fijo a la misma.

Se puede consultar mas en:

http://en.wikipedia.org/wiki/Wire_wrap

Una imagen de un prototipo:

(http://img183.imageshack.us/img183/5876/800pxwrappedbackplanepa3.th.png) (http://img183.imageshack.us/my.php?image=800pxwrappedbackplanepa3.png)

Un saludo
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 14 de Julio de 2007, 13:03:08
jeje, en realidad una vez que se tiene el manejo es bastante rapido.
Lo importante es clasificar las señales por colores.
Y para lo que son pequeños prototipos es muy muy rapido.
De hecho hay amigos foreros que eran pesimistas al usarlo, pero
una vez que lo probaron ya no pueden vivir sin el..  :D

(http://img54.imageshack.us/img54/8909/prototiposgrapinhd3.jpg)
Título: Re: Robot equilibrista
Publicado por: LordLafebre en 14 de Julio de 2007, 16:05:06
De hecho hay amigos foreros que eran pesimistas al usarlo, pero
una vez que lo probaron ya no pueden vivir sin el..  :D

Hola:

Eso me llegó a mi  :D :D, yo ahora lo uso para cada placa de prototipos, grande o pequeña y para cualquier aplicación, y no he tenido problemas  :mrgreen:
Título: Re: Robot equilibrista
Publicado por: jfh900 en 14 de Julio de 2007, 21:10:13
Esa no es la técnica de  Wire Wrap. La técnica original consiste en enrollar el cable alrededor de las patillas de los componentes, no soldarlos en el circuito impreso. Para ello se emplea esta herramienta:

(http://img179.imageshack.us/img179/3204/180pxwu6.jpg) (http://imageshack.us)

Herramienta que permite: pelar, enrollar y desenrollar el cable.

Estos son los zócalos empleados:

(http://img151.imageshack.us/img151/7517/zrw08fq1.th.jpg) (http://img151.imageshack.us/my.php?image=zrw08fq1.jpg)

Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 15 de Julio de 2007, 03:02:24
Carlos, ¿y dices que se suelda directamente sin quitar la funda?
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 15 de Julio de 2007, 08:37:10
Esa no es la técnica de  Wire Wrap. La técnica original consiste en enrollar el cable alrededor de las patillas de los componentes, no soldarlos en el circuito impreso. Para ello se emplea esta herramienta:

(http://img179.imageshack.us/img179/3204/180pxwu6.jpg) (http://imageshack.us)

Herramienta que permite: pelar, enrollar y desenrollar el cable.

Estos son los zócalos empleados:

(http://img151.imageshack.us/img151/7517/zrw08fq1.th.jpg) (http://img151.imageshack.us/my.php?image=zrw08fq1.jpg)

Saludos


Tienes toda la razon esa es la tecnica original, de hecho en la antigua empresa
para el I+D pedimos un kit completo para trabajar de la forma que indicas.
Pero con el tiempo la fui degenerando en la forma que mostre y pienso
que cogio lo mejor de ambas.

Hay que pelar menos de 1mm Manolo, pero una vez que le coges el
manejo se pela bien y rapido (un par de segundos), yo para pelarlo
no uso ningun tipo de cuchilla o alicates, en fin cuado coja un rato
hago un video del pelado y soldado...
Título: Re: Robot equilibrista
Publicado por: Nocturno en 27 de Julio de 2007, 12:53:25
Hoy he comprado dos rollos de hilo de wrapping (hilo de rapinar según el ticket de la tienda  :lol: )

Estoy esperando ese vídeo como agua de mayo, querido Carlos.
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 27 de Julio de 2007, 14:50:17
jeje, lo de pedir grapin en el comercio es porque es mas conocido asi...  :mrgreen:
y si te dieron el bueno debe de pasar por un agujero de 0.5mm con funda y todo.
Título: Re: Robot equilibrista
Publicado por: Nocturno en 27 de Julio de 2007, 15:36:45
Bueno, ya he visto el vídeo privado. Ahora sólo falta probarlo y depurar la técnica.
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 27 de Septiembre de 2007, 18:40:16
Hola a todos y todas(por supuesto), quiero compartir con uds el proyecto que realicé para la materia de Robotica en la U, mas tarde comento los por menores del mismo. Pero en esencia, fue necesario implementar un control PD, ademas de un control ON-OFF que se activa para cierto grado de inclinación.
Saludos a PICMOUSE y PAO!

foto (http://www.hi5.com/friend/photos/displayPhotoUser.do?albumId=111335337&ownerId=56770633&currentIndex=1)
Me queda pendiente subir el video a youtube pero entre hoy y mañana lo hago.
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 28 de Septiembre de 2007, 04:53:09
Ahora lo que sigue es hacerlo andar manteniendo el equilibrio, bueno para eso me valgo del tiempo libre que tenga (es decir mientras entrego la tesis), saludos
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 28 de Septiembre de 2007, 11:08:36
Tiene muy buen aspecto PICpegaso, ¿qué tipo de sensores utiliza, giróscopos, acelerómetros, ...?
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 28 de Septiembre de 2007, 13:59:38
Hola, el sensor que utiliza es un GP2D120X, sensor infrarojo de distancia (4 - 30 cm), el robot sufrió de tres transformaciones en apariencia hasta la versión final que se vé en la foto, todo con tal de hacer uso de los elementos más adecuados para hacerlo funcionar bien, por ejemplo, al principio utilicé motores DC sin caja y fué un desastre, luego cambié a servos y mejoró mucho las respuesta, la inercia es mucho menor dado el torque. Las ruedas tambien se cambiaron, estas finales tienen mayor adherencia al piso lo cual aumenta el torque ademas de tener una superficie de contacto mayor.
Estaré atento a sus inquietudes, saludos
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 30 de Septiembre de 2007, 02:51:09
Bueno amigos, esta semana que viene le pienso dedicar tiempito a "Robotino". Quiero hacerlo andar con fluidez, sin embargo no he pensado como hacer este movimiento, para comenzar voy a probar cambiando la referencia tal que sea un poco inclinada en lugar de la vertical que tiene pero no estoy muy seguro que sea el camino correcto, si uds tienen ideas para hacerlo me gustaria mucho que me las digan, seria de gran ayuda  :-/
saludos
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 30 de Septiembre de 2007, 05:08:35
Hola Picpegaso; en la mayoría de los "equilibristas" usan un control PID para el movimiento. En algunos de los enlaces que se han ido poniendo en este hilo hay algoritmos e incluso ejemplos de código.

Lo que no veo muy claro es el tipo de sensor que has elegido. No he visto ningún caso en el que se use un medidor de distancias para hacer un "equilibrista". Además, ése en concreto que has elegido tiene una curva de respuesta no biyectiva; por ejemplo, al leer un voltaje de 1.6 no sabrás si el sensor está a 0,5 o a 8 cm del suelo.

Espero que tengas suerte en tus progresos.
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 30 de Septiembre de 2007, 12:06:10
Hola JFMateos, la razon por la cual el sensor emite un mismo valor de tensión para dos distancias es dado la operación del circuito interno por lo que el rango definido por el fabricante se restringe desde 4cm, cualquier medida que tomes menor a esta se considera inestable, región inoperable o zona muerta del sensor. Por lo demas no tienes inconvenientes al utilizar este sensor.

Y quizas no me he hecho enter bien, pero el robot funcina correctamente para el equilibrio, es decir se mantiene de'pie' sin caerse al suelo, ese ya no es un problema, ahora lo que quiero es que 'camine', que pueda recorrer una pista o un segmento de recta sin caerse, el problema es un poco mas complejo que utilizar un control PID (que si te das cuenta fue necesario implementarlo para el equilibrio), espero haber aclarado tu inquietud y para los interesados he puesto la curva de operación del GP,
saludos
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 30 de Septiembre de 2007, 12:39:47
Gracias por la aclaración PICpegaso; no te había entendido.

Habiendo conseguido ya que se mantenga en equilibrio (a ver si puedes ponernos un vídeo; será muy interesante de ver), quizás podrías lograr que avanzase engañando al PID haciéndole creer que el robot está ligeramente inclinado en la dirección en la que quieres que avance. El PID intentará reequilibrar al robot avanzando en esa dirección...

Título: Re: Robot equilibrista
Publicado por: dogflu66 en 30 de Septiembre de 2007, 17:19:52
Estare pendiente... :-/
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 30 de Septiembre de 2007, 17:39:56
Hola jfmateos2 y dorflu66, no he puesto el video en youtube ya que desafortunadamente no tengo camara  :( y el video que prometo subir lo tiene una compañera de la U que grabó la presentación, asi que bueno proximamente estará allí  :?,  por otra parte ya he pensado en esa posibilidad que planteas jfmateos pero creo que no va a ser suficiente dada la inercia proveida por la estructura cuando se inclina, pienso que es necesario variar el set point continuamente, es decir:
*durante cierto tiempo t1 en la vertical
*el siguiente tiempo t2 en 0.5º de inclinación con respecto a la vertical
*el t3 para 1º de inclinación
para t4 volver a 0.5º y asi continuamente, de esta forma es posible que la inercia logre estabilisarce tal que robotino avance pero recobre continuamente el equilibrio sin salirce de un rango de inclinación, por supùesto todo esto lo voy a probar para ver que tal funciona, pero si tienen mas ideas son bienvenidas, sé que entre más logramos mejores cosas  :-)
Título: Re: Robot equilibrista
Publicado por: LABmouse en 30 de Septiembre de 2007, 21:33:30
Felicidades!!!! Te ha quedado de pelicula!!!!!!   :-/
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 01 de Octubre de 2007, 03:31:54
PICpegaso, quizás esto pueda ayudarte http://coecsl.ece.uiuc.edu/ge423/spring04/group9/technical_control.htm o esto otro http://leiwww.epfl.ch/publications/grasser_darrigo_colombi_rufer_mic_01.pdf
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 08 de Octubre de 2007, 12:14:54
Hola amigos, que pena la demora en responder, estaba un poquin ocupado, al fin puedo mostrarles uno de  los videos que se tomaron el día de la presentación, esta en formato swf, asi que por si las moscas abranlo desde el navegador web.

Gracias por tu aporte JFmateos, la verdad es un poco complicado aplicar esas tecnicas que describen, más cuando la dinamica es tan complicada, ademas debería realizar muchas mediciones como la inercia, el centro de masa exacto, aceleraciones por doquier, sin embargo lo voy a revisar con mas cuidado para ver que tanto puedo aplicar a el Robotino.

Saludos
Robotino! (http://www.4shared.com/file/25943746/99d84fd/robot_mio.html)
Título: Re: Robot equilibrista
Publicado por: jfh900 en 08 de Octubre de 2007, 13:14:03
PICpegaso Enhorabuena por tu robot, se ve muy bien. Ademas me llama la atención la forma de solucionar el sistema de equilibrio, aunque piendo que con los datos que se miden pueda resultar un poco inestable, ya que solo sabes posición pero no velocidad o aceleración de caida y eso es básico para aplicar la corrección y que no oscile y se caiga.

Un saludo.
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 08 de Octubre de 2007, 13:38:59
jfh900 tienes razon en cuanto a un poco inestable, pero para solucionarlo no es necesario tener un acelerometro u otros sensores, fijate que con la posicion puedo encontrar la velocidad, y hasta la aceleracion, ya que estas medidas estan en funcion del tiempo, realizando derivadas en cada caso puedo encontrar sus valores.
Me hace falta dedicarle tiempito para arreglar muchas cositas pero creo que no va a ser necesario implementar mas sensores, pienso que la clave esta en la programación. Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 08 de Octubre de 2007, 15:35:12
Muy chulo, PICpegaso. Con las ganas que tengo de terminar el mío; me has puesto los dientes largos.
Título: Re: Robot equilibrista
Publicado por: jfh900 en 08 de Octubre de 2007, 15:45:28
Posiblemente tengas razón, aunque logicamente te costará más trabajo. Creo recordar que habia un video de un equilibrista echo con piezas de Lego que utilizava el mismo sistema que tú. Animo por que la cosa va por buen camino.

Un saludo
Título: Re: Robot equilibrista
Publicado por: LABmouse en 08 de Octubre de 2007, 16:39:46
En ese video se ve Magnifico!!!!!  :-/

NUEVAMENTE FELICITACIONES ESTA EXPECTACULAR ESE ROBOT  8)
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 08 de Octubre de 2007, 17:20:50
Agradezco tu comment ernesto, pero sé que para dejarlo como quiero me falta un buen trecho :)
Título: Re: Robot equilibrista
Publicado por: Leon Pic en 08 de Octubre de 2007, 18:35:13
Hola PICpegaso. La verdad de lujo el "bípedo".

Voy a seguir atentamente este hilo para aprender más.

Saludos.  :-/ :-/
Título: Re: Robot equilibrista
Publicado por: jfh900 en 08 de Octubre de 2007, 18:47:51
Bueno, aquí te dejo un documento, donde se explica la cinemática de los pendulos invertidos, seguro que le sabras sacar provecho.

http://www.4shared.com/file/25973298/1ae06f8c/grasser_darrigo_colombi_rufer_mic_01.html

Un saludo
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 08 de Octubre de 2007, 19:29:34
Listo jfh900, voy recopilando info para ver cual adecuar mejor a mis circunstancias,
saludos
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 09 de Octubre de 2007, 01:53:53
Muy chulo, PICpegaso. Con las ganas que tengo de terminar el mío; me has puesto los dientes largos.
Por aqui a la orden en la medida de mis posibilidades te ayudaré en lo que más pueda amigo Nocturno.
Saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 09 de Octubre de 2007, 02:06:56
Dudo que seas capaz de ayudarme. Necesitaría que estirases mis días para que tuvieran más de 30 horas. De todas formas, gracias por el ofrecimiento.
Título: Re: Robot equilibrista
Publicado por: jfh900 en 09 de Octubre de 2007, 07:29:04
Dudo que seas capaz de ayudarme. Necesitaría que estirases mis días para que tuvieran más de 30 horas. De todas formas, gracias por el ofrecimiento.

Manolo ya has llegado a las 30 horas por día?  :shock: :shock: :shock:

Un saludo
Título: Re: Robot equilibrista
Publicado por: Nocturno en 09 de Octubre de 2007, 08:29:57
Bueno, al día le saco poquitas, la verdad. Donde Nocturno se activa cual lobo con luna llena es por la noche.
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 09 de Octubre de 2007, 10:50:40
Dudo que seas capaz de ayudarme. Necesitaría que estirases mis días para que tuvieran más de 30 horas. De todas formas, gracias por el ofrecimiento.
O.k. en ese caso no me queda mas que darte apoyo y servirte de respaldo en lo que requieras, no creo aguantar con un ritmo de 30 Horas!
Título: Re: Robot equilibrista
Publicado por: J1M en 09 de Octubre de 2007, 12:41:38
entonces cuando duermes?? en esas 30-24 = 6h ??? :p
Título: Re: Robot equilibrista
Publicado por: Nocturno en 09 de Octubre de 2007, 13:33:36
¿Dormir?, ¿eso qué es?

P.D.: No te había reconocido desde que te has hecho japo, quizás sea por ese pelado.
Título: Re: Robot equilibrista
Publicado por: J1M en 09 de Octubre de 2007, 13:40:26
jajajaja En realidad solo quería cambiar la imagen, pero me obligaba a nacionalizarme!!!

He cambiado la dualidad partícula-antiparticula del CeRN por el logo del robotillo de Automator, un programa para 'crear macros'  en el que será el nuevo MAC OS. Vaya rollo me he marcado!

Y sí..... para que dormir! me encantan esas noches en que miras por la ventana como se pone el sol mientras tecleas y cuando vuelves a mirar, está amaneciendo! y sigues tecleando..... :D
Título: Re: Robot equilibrista
Publicado por: Leon Pic en 09 de Octubre de 2007, 13:57:09
Hola. Para mi, dormir, es sagrado. No lo cambio por nada.  :) Lo peor es que en la mayoría de mis turnos, en el trabajo, son de noche.  :8}.

Saludos.  :-/ :-/
Título: Re: Robot equilibrista
Publicado por: PalitroqueZ en 09 de Octubre de 2007, 14:23:11
cuando voy a dormir es a dormir, el problema es que a veces me acuesto pensando en una idea, y cuando me doy cuenta estoy sentado en la máquina tecleando sentencias de programas  :D

Título: Re: Robot equilibrista
Publicado por: PICpegaso en 09 de Octubre de 2007, 14:58:40
Quiza lo que pasa es que muchos tenemos sueños lúcidos, Un sueño lúcido es un sueño en el cual el soñador se da cuenta de estar soñando. Y ya no hay arreglo hasta en los sueños le damos a esto!!!
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 18 de Octubre de 2007, 03:12:16
Hola amigos!!,
por lo que veo ha estado un poco dormido este hilo desde hace unos dias asi que para moverlo un poco traigo algo mas de informacion acerca de la construcción de este robot tan Bacano (lease en terminos generales y no haciendo enfasis en el que he hecho). Una ves más se reciben comentarios o sugerencias, muchas gracias a todos por el interés,
SALUDOS!!!

INFORME (http://www.4shared.com/file/26765166/6b6fed9c/Construccion_robot_equilibristarobot_balancinbalance_robot.html)
Título: Re: Robot equilibrista
Publicado por: LordLafebre en 18 de Octubre de 2007, 17:16:30
Hola:

Es un muy buen trabajo, felicidades.
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 23 de Octubre de 2007, 23:40:21
Holaa
Hola:

Es un muy buen trabajo, felicidades.
Gracias!,
pero viendo las estadisticas de descarga muy pocos lo han visto.. pero bueno, en algun momento será de utilidad para el interesado.
Saludos
Título: Re: Robot equilibrista
Publicado por: ojqr en 29 de Noviembre de 2007, 18:08:17
aunque no lo hayan descargado...es un excelente trabajo; yo tambien estudio en la UIS, en este moemnto estoy viendo Sistemas de Control y mi proyecto será precisamente este, este informe suyo creo que es lo mas completo que he encontrado, y espero poder basarme en este sin que te molestes por plagio...jeje.... :D
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 07 de Diciembre de 2007, 07:08:59
Alucinante; guarda mejor el equilibrio que yo.

http://revver.com/video/443032/botka-the-barely-standing-robot/
Título: Re: Robot equilibrista
Publicado por: Nocturno en 07 de Diciembre de 2007, 07:28:06
Joe, qué maravilla  :shock::shock::shock::shock:
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 07 de Diciembre de 2007, 07:34:35
¡Qué fastidio que sean tan caros los giróscopos! El IDG-300 que utiliza este señor sale por unos $35. Si tuviera un poco más de tiempo...
Título: Re: Robot equilibrista
Publicado por: ESTECA55 en 07 de Diciembre de 2007, 09:11:45
Muy Bueno!!!

Impresionante como se levanta luego de caer!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 07 de Diciembre de 2007, 09:31:26
sin palabras  :shock:  :shock: encima relaja golpeadolo para ver si pierde el equilibrio  :D jajajaja.... un verdadero maestro
Título: Re: Robot equilibrista
Publicado por: Leon Pic en 07 de Diciembre de 2007, 12:27:55
 :shock: :shock: Impresionante. Y además con muy pocos componentes.
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 07 de Diciembre de 2007, 20:27:52
 :shock: :shock: :shock: :shock:
Título: Re: Robot equilibrista
Publicado por: PICpegaso en 15 de Diciembre de 2007, 21:10:02
Puedo asegurar que para poder hacer algo como eso, sus diseñadores demoraron varias noches en vela, asi como para hacer ese video, esta muy bien editado y hasta con musica relajante y todo. De verdad impresionante, a ese nivel debemos apuntar nosotros tambien.
;)
Título: Re: Robot equilibrista
Publicado por: jfh900 en 15 de Diciembre de 2007, 21:21:55
Aquí hay un vídeo (ademas de mucha más información en ficheros PDF), sobre los giroscopios y los acelerómetros.

http://www.invensense.com/support/library.html

Un saludo
Título: Re: Robot equilibrista
Publicado por: Nocturno en 16 de Diciembre de 2007, 03:29:29
Es muy ilustrativo ese vídeo. A mí me ha enseñado lo siguiente:
- con los acelerómetros se pueden medir movimientos de traslación, que impliquen un desplazamiento
- con los giroscopios se pueden medir movimientos de rotación, que impliquen cambios de ángulo

Con la combinación de ambos, se obtienen 6 grados de libertad.
Título: Re: Robot equilibrista
Publicado por: ESTECA55 en 16 de Diciembre de 2007, 08:55:43
Es muy ilustrativo ese vídeo. A mí me ha enseñado lo siguiente:
- con los acelerómetros se pueden medir movimientos de traslación, que impliquen un desplazamiento
- con los giroscopios se pueden medir movimientos de rotación, que impliquen cambios de ángulo

Con la combinación de ambos, se obtienen 6 grados de libertad.

Muy buena la aclaración, ahora me queda mas clara la diferencia!! Por su puesto el link con la explicación esta de 10!

Saludos
Título: Re: Robot equilibrista
Publicado por: Fired G en 18 de Enero de 2008, 20:55:33
Perdonad pero no he podido resistirme a poner el enlace que he encontrado mientras buscaba información del idg-300. Es una aplicación más del giróscopo. Una flipada. http://user.cs.tu-berlin.de/~calle/ufo/index.html    :shock:
Título: Re: Robot equilibrista
Publicado por: Nocturno en 19 de Enero de 2008, 03:58:58
Es chulísimo, y realmente el circuito le ha quedado bastante simple.
Título: Re: Robot equilibrista
Publicado por: Fired G en 19 de Enero de 2008, 10:22:07
Me pregunto como habrán conseguido fabricarse la estructura de corcho... las hélices y los motores (que deberán pesar muy poco) supongo que se podran conseguir en una tienda de aeromodelismo. Es una lástima que la página este en alemán.
Título: Re: Robot equilibrista
Publicado por: jfh900 en 29 de Febrero de 2008, 17:06:51
Estos ejemplos permiten entender un poco mejor el tema de los acelerómetros y de los giroscopios:


Aplicaciones para este verano en la piscina:


Un saludo
Título: Re: Robot equilibrista
Publicado por: gredoss en 07 de Marzo de 2008, 09:58:17
Saludos al foro.
Yo también estoy dando vueltas a la realización de un Robot "equilibrista" ;-)
Creo que nadie a incluido este enlace, con mucha información, videos y hasta los fuentes para poder estudiarlos.

Segway del MIT (http://web.mit.edu/first/segway/)

Saludos
Título: Re: Robot equilibrista
Publicado por: Menta en 07 de Marzo de 2008, 16:04:29
Hola amigos!!,
por lo que veo ha estado un poco dormido este hilo desde hace unos dias asi que para moverlo un poco traigo algo mas de informacion acerca de la construcción de este robot tan Bacano (lease en terminos generales y no haciendo enfasis en el que he hecho). Una ves más se reciben comentarios o sugerencias, muchas gracias a todos por el interés,
SALUDOS!!!

INFORME (http://www.4shared.com/file/26765166/6b6fed9c/Construccion_robot_equilibristarobot_balancinbalance_robot.html)

Hola Picpegaso! el link no me funciona.
me sale: The file link that you requested is not valid.
Si eres tan amable, se puede hacer algo???
Muchas Gracias
Título: Re: Robot equilibrista
Publicado por: jfh900 en 07 de Marzo de 2008, 17:13:11
A mi me funciona perfectamente.

Un saludo
Título: Re: Robot equilibrista
Publicado por: gu1llermo en 08 de Marzo de 2008, 22:57:24
Perdonad pero no he podido resistirme a poner el enlace que he encontrado mientras buscaba información del idg-300. Es una aplicación más del giróscopo. Una flipada. http://user.cs.tu-berlin.de/~calle/ufo/index.html    :shock:

Hace tiempo descubrí la existencia de este aparatito, en verdad fué amor a primera vista, pero no ese sino éste:

Averigué absolutamente todo, para poder construirlo, pero como la mayoría de las cosas se quedan en un stand-by hasta que se disponga de tiempo y recursos  :wink: éste tema del robot equilibrista es muy interesante porque tiene cosas en común con éste platillo volador que también tiene que mantener el equilibrio a pesar de las turbulencias o alteraciones del nivel, usando control PID para mantenerlo estable y un giroscopio de 3 ejes. Éste platillo también lo usan para tomas aereas, las siglas del proyecto es UAVP (Universal Aerial Video Platform) es código abierto, en unos de los tantos vídeos que ví se puede observar a un Papá que está volando éste x-ufo y suelta el control remoto y éste aparatito se queda solito estable en el aire, es una nota, el tipo coloca el control remoto en el suelo y agarra a su bebé.  :shock: , también están los Draganfly el más económico está en unos $699.95 USD y el más costoso por el orden de $4,999.95 USD , claro el diseño es con fibra de carbón y demás, pero es un proyecto muy interesante no creen?  :mrgreen:

PD: Sueño con tener un aparatito así construído por mí en mis manos, bueno aunque si lo compro antes no está mal tampoco pero bue...
Título: Re: Robot equilibrista
Publicado por: mandoanaiz en 22 de Marzo de 2008, 06:54:00
he encontrado esto:http://home.comcast.net/~botronics/balibot.html
espero que sirva de ayuda.
bye. :-)
Título: Re: Robot equilibrista
Publicado por: Fired G en 04 de Junio de 2008, 07:30:46
Genial el video Guillermo.
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 04 de Octubre de 2008, 08:21:24
Un par de equilibristas sin giróscopo:

* El primero está basado en dos sensores de distancia infrarrojos (http://ameideas.blogspot.com/)
* El segundo simplemente usa un interruptor

Y un giróscopo construido a partir del motor del espejo de una impresora láser (http://spk.if.uj.edu.pl/ConsciousFlesh/gyro/GYRO_en.html):

Título: Re: Robot equilibrista
Publicado por: Leon Pic en 04 de Octubre de 2008, 13:56:07
Que buenos videos.

El segundo no tiene mucha ciencia. Es una propiedad que tienen los discos cuando se los hace girar. Estos, cuando giran a una cierta velocidad, se resiste al cambio de ejes.

Para comprobar esto, aten a una rueda de una bicicleta, un hilo, y este al techo. La rueda va a estar solo atada de un extremo, el otro extremo libre. Luego, pongan la rueda perpendicular al suelo (levantando la punta que no está agarrada) hacen girar la rueda, luego la sueltan y ¿que pasa?
Título: Re: Robot equilibrista
Publicado por: D@rio en 13 de Octubre de 2008, 00:46:15
hola gu1llermo. yo tambien he estado busccando la forma de hacerme uno de estos aparatitos
y buscando por internet, encontre esto: http://webx.dk/rc/4heli/index.htm (http://webx.dk/rc/4heli/index.htm) esta muy bueno. tambien encontre una tienda donde venden los motores. es aqui:  http://www.mirax.cl/detalles.php?codigo=37468 (http://www.mirax.cl/detalles.php?codigo=37468)  pero lo mas dificil es el tema del gyroscopo
y eso me desanima un poco jeje :mrgreen: suerte.... saludos
Título: Re: Robot equilibrista
Publicado por: Safareig en 11 de Noviembre de 2008, 13:14:31
Hola,


Soy lector habitual del foro pero hasta ahora no había participado. En mi primer mensaje, a parte de saludaros a todos, quiero presentaros mi robot "equilibrista". No está terminado pero ya empieza a funcionar como debe.

El micro que estoy usando es un 18F4550 de microchip. Los sensores son un acelerómetro de tres ejes MMA7260QT y un giroscopio MLX90609. Como radio control estoy usando un módulo bluetooth que me sirve tanto para recoger parámetros desde el pc, como para controlar su desplazamiento.

Llevo algo mas de tres meses con el y espero que en otros tres meses pueda darlo por terminado :)



Un saludo...
Título: Re: Robot equilibrista
Publicado por: Nocturno en 11 de Noviembre de 2008, 13:41:12
¡Magnífico, Safareig!
Yo tenía un sueño y tú lo haces realidad. Ya estoy deseando ver las tripas de tu cacharro.
Bienvenido al foro.
Título: Re: Robot equilibrista
Publicado por: RedPic en 11 de Noviembre de 2008, 17:46:47
Muy, muy muy güapo.  :mrgreen:

(¿Estas en un estudio de TV?  :shock: (lo digo por el verde chroma y las patas del trípode  :P))
Título: Re: Robot equilibrista
Publicado por: ESTECA55 en 11 de Noviembre de 2008, 18:10:54
Hola  Safareig, excelente trabajo! muy bueno.

No dejes de mostrar los avances, saludos
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 11 de Noviembre de 2008, 20:10:09
Excelente trabajo, y lo dicho, no dejes de mostrar los avances.
Título: Re: Robot equilibrista
Publicado por: navaismo en 11 de Noviembre de 2008, 20:17:08
Un gran trabajo, felicidades.
Título: Re: Robot equilibrista
Publicado por: Safareig en 12 de Noviembre de 2008, 07:12:32
Hola,


Gracias por sus comentarios, verdaderamente se agradecen. Mas adelante pondré alguna foto y quizás otro vídeo. Espero poder mejorarlo.

 



Un saludo...



pd1- RedPic, si es un pequeño plató de TV. Es mi lugar de trabajo.

pd2- Nocturno, hay que encontrar tiempo para hacer realidad los sueños. Es de lo mas gratificante.
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 12 de Noviembre de 2008, 08:23:30
Felicitaciones!

Muy padre tu bot .


Saludos!

Atentamente

Akenafab
Título: Re: Robot equilibrista
Publicado por: Leon Pic en 12 de Noviembre de 2008, 20:48:44
Espectacular el bichito.

Felicitaciones  :-/ :-/
Título: Re: Robot equilibrista
Publicado por: Safareig en 20 de Noviembre de 2008, 08:27:09
Hola,


Subo unos vídeos nuevos del bot grabados en distintas situaciones.
Con el uso de los encoders el control del desplazamiento ha mejorado pero debe mejorar mas.
 






Un saludo...
Título: Re: Robot equilibrista
Publicado por: Nocturno en 20 de Noviembre de 2008, 08:37:21
Joe, macho, pues no sé qué quieres mejorar. Se ve de puta madre.

Por cierto, ¿el control remoto que utilizas es un móvil?, ¿cómo se hace eso?
Título: Re: Robot equilibrista
Publicado por: Leon Pic en 20 de Noviembre de 2008, 08:43:29
Impresionante. Coincido con Nocturno, ¿que quieres mejorar? está de lujo.
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 20 de Noviembre de 2008, 09:16:54
Impresionante. Coincido con Nocturno, ¿que quieres mejorar? está de lujo.
Joe, macho, pues no sé qué quieres mejorar. Se ve de puta madre.

Por cierto, ¿el control remoto que utilizas es un móvil?, ¿cómo se hace eso?


 :-/ :-/ :-/

Lo mismo digo

Te ha quedado super bien!

A menos que quieras que vuele!  :mrgreen:

EN verdad muy muy padre!

Saludos!

y Felicitaciones!
 :-/ :-/ :-/
Título: Re: Robot equilibrista
Publicado por: Safareig en 20 de Noviembre de 2008, 10:06:56
Hola,

Pues no sé, quizás en los vídeos se vea mejor de lo que en realidad está. Seguro que se puede mejorar.


Nocturno, efectivamente es con el móvil. Se trata de una utilidad que hice en java que permite utilizar uno de los protocolos bluetooth, el "SPP". Este protocolo permite hacer una conexión serie convencional (TX-RX) con otro dispositivo bluetooth, ya sea un pc, en un móvil u otro dispositivo bluetooth.
En el caso del robot, utilizo un módulo bluetooth (http://www.ezurio.com/products/at/) y me sirve para dos propósitos, como mando a distancia con el móvil y/o como envío de datos del bot al PC para monitorizar los distintos valores de las variables en tiempo real. (angulos, velocidad, estado de la batería, etc.) 

La verdad es que este proyecto me está permitiendo aprender muchos aspectos del microcontrolador pic (es mi primer proyecto con un pic y mi primer robot). Estoy usando timers, interrupciones varias, conversores A/D, un bus i2c, un bus spi, un bus usb, un bus rs232, una conexión bluetooth con protocolo serie, una aplicación java para móvil y otra sencilla para el pc, y todo lo relacionado con los cálculos que hay que hacer para mantener el equilibrio, en definitiva, mas completo no se puede pedir  :mrgreen:


Un saludo...

 
Título: Re: Robot equilibrista
Publicado por: martincnc en 20 de Noviembre de 2008, 12:23:57
Hola Safareig. Felicitaciones por tu trabajo. Es impresionante tu robot, mas alla de que en la realidad no se vea tan bien como en los videos  :mrgreen:

[...]Estoy usando timers, interrupciones varias, conversores A/D, un bus i2c, un bus spi, un bus usb, un bus rs232, una conexión bluetooth con protocolo serie, una aplicación java para móvil y otra sencilla para el pc, y todo lo relacionado con los cálculos que hay que hacer para mantener el equilibrio, en definitiva, mas completo no se puede pedir  :mrgreen:[...]

No era mas facil ponerle 4 rueditas?  :D . Na mentira, me imagino lo que habras tenido que aprender para hacer un robot como este, excelente trabajo!.

Saludos!

 
Título: Re: Robot equilibrista
Publicado por: jfh900 en 20 de Noviembre de 2008, 14:03:38
La verdad es que este proyecto me está permitiendo aprender muchos aspectos del microcontrolador pic (es mi primer proyecto con un pic y mi primer robot). Estoy usando timers, interrupciones varias, conversores A/D, un bus i2c, un bus spi, un bus usb, un bus rs232, una conexión bluetooth con protocolo serie, una aplicación java para móvil y otra sencilla para el pc, y todo lo relacionado con los cálculos que hay que hacer para mantener el equilibrio, en definitiva, mas completo no se puede pedir  :mrgreen:

Hola Safareig.

Una pregunta. ¿Por qué pones todo el peso sobre el eje de las ruedas y no intentas subirlo para aumentar el momento de inercia y que sea más fácil controlarlo?

Un saludo
Título: Re: Robot equilibrista
Publicado por: Safareig en 24 de Noviembre de 2008, 18:17:44
Hola,


martincnc, joer... esto me lo podrias haber dicho antes.  :D si llego a saber lo de las ruedas... mecachis!! jeje (es broma, gracias por tus comentarios)


jfh900, lo del peso en realidad lo he probado y tengo un problema con eso, el conjunto motores-ruedas no me dan toda la aceleración que me gustaría. En condiciones de mas peso en la parte superior y en parado quizás si sea algo mas estable pero cuando se desplaza pierde efectividad. Se trataba de encontrar un "ni pa ti, ni pa mi" y aunque no lo parezca las bandejas de metraquilato de 0,5 tienen su peso, por lo que no está tan descompensado como puede parecer.


Un saludo...
Título: Re: Robot equilibrista
Publicado por: Safareig en 15 de Febrero de 2009, 08:56:18
Hola,


Voy a dar por terminado mi proyecto de robot de equilibrio. He realizado algún cambio en el bot, ruedas nuevas, altura del bot reducida en 8cm y alguna mejora en los cálculos que realiza el pic.

Dejo un vídeo en el que se aprecian estos cambios y su comportamiento.


Un saludo...


Título: Re: Robot equilibrista
Publicado por: Nocturno en 15 de Febrero de 2009, 09:10:50
¡Fantástico, maravilloso!, me muero de la envidia.
Título: Re: Robot equilibrista
Publicado por: Leon Pic en 15 de Febrero de 2009, 09:58:59
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Hermoso!!!!!!!!!!!!!!!!!!!!!  :-/ :-/ :-/ :-/ :-/ :-/ :-/
Título: Re: Robot equilibrista
Publicado por: septiembre_negro en 15 de Febrero de 2009, 22:58:01
No cabe nada mas que felicitarte por un trabajo tan interesante  lo que mas me a gusta de trabajos de este tipos es que la parte de los fierros es sencilla  si se me permite describirlo así, con esto quiero decir que no son necesaria una  gran inversión monetaria en el mismo si no que  el peso y lo interesante del proyecto radica en el ingenio  del  creador del mismo. para que se entienda para mi este tipo  de proyectos son 30% hardware y 70% firware. :-/ :-/
Título: Re: Robot equilibrista
Publicado por: MGLSOFT en 15 de Febrero de 2009, 23:18:44
Felicitaciones!!!

Vas a publicar este proyecto???
Título: Re: Robot equilibrista
Publicado por: gera en 16 de Febrero de 2009, 00:30:38
FELICITACIONES!!!  :-/
Quedo excelente, me encanto! Es increible como pasa obstaculos, bajadas, subidas sin perder el equilibrio ni un poco. Que envidia jeje (pero de la sana :wink:), espero algun dia poder hacer algo similar.
Me sorprendio mucho q sea tu primer proyecto con un pic y tu primer robot, yo hubiera dicho q tenes mucha experiencia en ambos campos jeje.
Saludos!

PD: Si no es mucho pedir, podrias comentar mas o menos como es el algoritmo para q mantenga el equilibrio y ademas pueda desplazarse y girar? Gracias!
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 16 de Febrero de 2009, 05:36:25
 :-/ :-/ :-/


Felicitaicones te quedo padrisimo!

Un saludo! :-/
Título: Re: Robot equilibrista
Publicado por: LABmouse en 18 de Febrero de 2009, 21:05:05
Felicidaes, esta muy bueno!

Se lo complicado que es hacer que responda de esa manera tan estable. es grandioso.

Yo estoy haciendo uno, version miniatura, pero la exigencia es que deba tener control PID.

Implementas en el PIC ¿CONTROL PID?
Título: Re: Robot equilibrista
Publicado por: LordLafebre en 19 de Febrero de 2009, 13:49:33
Hola:

Al igual que Manolo tengo una envidia de la sana  :D, felicidades por el trabajo, te quedó estupendo.
Título: Re: Robot equilibrista
Publicado por: Safareig en 19 de Febrero de 2009, 18:42:57
Hola,

Os agradezco a todos vuestros comentarios, mas aún viniendo de quienes vienen. Leyendo este foro he aclarado muchas dudas y adquirido conocimientos que una vez juntos me han facilitado la labor y la han hecho posible.

Este bot en realidad no es el fin del proyecto, es solo una primera parte de él. Este bot debía proporcionarme la experiencia necesaria (y lo ha hecho) para afrontar el proyecto que tenía en mente, un segway.
Construir un segway era caro y no estaba seguro de saber hacerlo funcionar correctamente así que me decidí por hacer algo a escala reducida, si este salía bien entonces me plantearía acometer la construcción de su "hermano mayor".
Así que llegados a este punto me he decidido a continuar con el proyecto. Estoy adquiriendo el material necesario (motores, encoders, etc.) y diseñando la parte mecánica (esta no me gusta tanto, soy un poco manazas). Os iré informando de los progresos.


x MGLSOFT, como he explicado el proyecto no está terminado pero si, mi intención es publicar el proyecto completo una vez terminado.

x gera, no tengo problema en comentar cualquier aspecto del proyecto. Lo mas importante es calcular bien el ángulo de inclinación usando los datos de los sensores, en esta parte tiene mucho peso el uso de un filtro kalman que como no tengo conocimientos necesarios no he escrito yo, si no que con un poquito de aquí y un poquito de allá he podido implementar en el programa. Dime que aspectos te interesa comentar y lo hacemos.

x PICmouse, es mi primer robot y lo que conozco de los controles PID es lo que he leido en este foro y otros. A mi manera, pero si, si uso un control PID. Con lo de "a mi manera" me refiero a que mi implementación del dicho control no sé si será todo lo ortodoxa que debería pero creo que queda demostrado que eficaz si lo es :)  Podemos comentarlo si te apetece.



Un saludo...
 



Título: Re: Robot equilibrista
Publicado por: jfh900 en 19 de Febrero de 2009, 19:45:53
Yo estoy muy interesado en el tema del filtro de Kalman. ¿Podrías indicar como lo has implementado?

Gracias y un saludo
Título: Re: Robot equilibrista
Publicado por: Safareig en 20 de Febrero de 2009, 15:42:01
Hola jfh900

Una de las cosas mas importantes es que el cálculo del ángulo de inclinación sea lo mas real posible. Este cálculo se hace usando esta fórmula "angulo = angulo + (gyro * tiempo);" Donde "angulo" es la inclinación en radianes, "gyro" la velocidad angular en radianes/segundo y "tiempo" es el tiempo en segundos transcurrido entre cada llamada a dicha fórmula.
A groso modo, si al leer el giroscopio tenemos una velocidad angular de 0.5 rad/seg y desde la anterior lectura han pasado 0.1 seg significa que nos hemos inclinado 0.05 radianes. Esta inclinación se la sumamos a la que teniamos en el bucle anterior y así sucesivamente.

angulo actual = angulo anterior + (0.5rad/s * 0.1s) => angulo actual = angulo anterior + 0.05


Este sistema de cálculo tiene dos problemas importantes, uno es que nunca sabemos cual es el ángulo de partida y el otro es que los giroscopios tienen una deriva en el tiempo por lo que hay que buscar una manera de ir actualizando el valor del ángulo calculado de alguna forma.
La forma de hacerlo es con el acelerómetro, que a su vez tiene un "pro" y un "contra". El "pro" es que no tiene deriva y en condiciones de aceleración cero el ángulo que podemos calcular con su lectura es bastante certero. El "contra" es que en condiciones de aceleración y/o vibración el ángulo que podremos determinar no será todo lo acertado que necesitamos.

Así que hay que buscar un sistema que nos permita reducir al mínimo el efecto de la deriva del giroscopio y "creernos" al acelerómetro solo en ciertas condiciones. (mínima aceleración)
Para realizar esto probé distintas soluciones pero lo que mejor funcionó es el famosso filtro Kalman.

Encontré un ejemplo de filtro Kalman para un eje de inclinación usando un acelerómetro de dos ejes y un giroscopio. tilt.c (http://www.rotomotion.com/downloads/tilt.c) y tilt.h (http://www.rotomotion.com/downloads/tilt.h)
Son dos funciones, una de ellas se encarga (entre otras cosas) de calcular el ángulo de inclinación por el método que he comentado arriba "angulo += gyro * tiempo". La otra, entre otras cosas, "refresca" el valor de "angulo" con la lectura del acelerómetro y calcula un valor de error para el giroscopio (bias), de forma que puede eliminar la deriva antes comentada.   
He intentado entender el filtro kalman leyendo todo lo que he encontrado sobre él y para ser sincero tengo que decir que como mucho me hago una ligera idea de como funciona pero de ninguna forma lo entiendo completamente. Mi consejo es que leas sobre él, matrices de covarianza y que con el código de ejemplo te puedas hacer una idea de como y porqué funciona.

Te pego las dos funciones tal y como las estoy empleando en mi bot. Podemos ir comentandolas si quieres.

Código: [Seleccionar]
// Variables globales
float P[2][2] = { { 1, 0 }, { 0, 1 }, };
float R_angle = 0.3;
float Q_angle = 0.001;
float Q_gyro = 0.003;

float q_bias, angulo, gyro, tiempo;

void state_update( void )
{
float Pdot[4];

Pdot[0]= Q_angle - P[0][1] - P[1][0];
Pdot[1]= -P[1][1];
Pdot[2]= -P[1][1];
Pdot[3]= Q_gyro;

gyro -= q_bias;
angulo += gyro * tiempo;

P[0][0] += Pdot[0] * tiempo;
P[0][1] += Pdot[1] * tiempo;
P[1][0] += Pdot[2] * tiempo;
P[1][1] += Pdot[3] * tiempo;
}


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[0][0];
P[1][1] -= K_1 * P[0][1];

angulo += K_0 * (angle_m - angulo);
q_bias += K_1 * (angle_m - angulo);
}


Un saludo...
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 21 de Febrero de 2009, 08:21:56
En este blog están también intentando crear un segway: http://www.ohscope.com/

Y en esta entrada comentan los resultados obtenidos con distintos tipos de filtrado: http://www.ohscope.com/2009/02/b-b-b-balancing.html

Indicando que se han basado en el material disponible en esta otra página web dedicada también a un segway DIY: http://web.mit.edu/first/segway/

Y concretamente a los PDF que se encuentran en este archivo: http://web.mit.edu/first/segway/segspecs.zip
Título: Re: Robot equilibrista
Publicado por: LABmouse en 22 de Febrero de 2009, 23:02:18
Hola!

Safareig, muchas gracias por la informacion del filtro que implementaste. Seguro que me tocara usar ese filtro para que esto ande bien.

jfmateos2 . Tambien te quiero agradecer por tan buenos links...Son una gran fuente de informacion.

GRACIAS!

EDITO:

Encontre este link...

http://www.dprg.org/projects/2003-01a/
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 27 de Febrero de 2009, 21:02:47
Yo tambien me uno a las felicitaciones, quedo realmente bien. :-)
Título: Re: Robot equilibrista
Publicado por: D@rio en 28 de Febrero de 2009, 01:57:46
este bot estamuy bueno, es un exelente trabajo!!! ¡mis felicitaciones amigo!!!  :o :mrgreen:
Título: Re: Robot equilibrista
Publicado por: J1M en 02 de Marzo de 2009, 08:18:25
Bravo por esa integración de conceptos de física, mecánica, electrónica, control y programación!!! :)
Título: Re: Robot equilibrista
Publicado por: droky en 02 de Marzo de 2009, 10:01:22
Me uno a la envidia y la felicitación  :-/ :-/ :-/
Espero ver la verión "grande" y a tí subido en él.
Felicidades, inmenso proyecto.
Salu2
Título: Re: Robot equilibrista
Publicado por: kain589 en 30 de Marzo de 2009, 17:46:41
Saludos! Creo que no se ha hablado a lo largo del tema, he visto tambien este tipo de robots con un sensor de infrarrojos sharp GP2D12, que permite medir distancias.

En esta pagina puede verse hecho con un Lego,creo,  hecho:

Robot equilibrio Lego (http://sites.google.com/site/enjutorobojuto/Practica3)

Hay mas robots de este tipo hechos con un infrarrojo, pero ahora solo encuentro que permanezcan en equilibrio ¿es posible que un robot de este tipo ande manteniendo el equilibrio? Es que ya no sé si he visto alguno que se pudiera dirigir, o la mente me juega una mala pasada
Título: Re: Robot equilibrista
Publicado por: gera en 30 de Marzo de 2009, 22:19:44
Saludos! Creo que no se ha hablado a lo largo del tema, he visto tambien este tipo de robots con un sensor de infrarrojos sharp GP2D12, que permite medir distancias.

En esta pagina puede verse hecho con un Lego,creo,  hecho:

Robot equilibrio Lego (http://sites.google.com/site/enjutorobojuto/Practica3)

Hay mas robots de este tipo hechos con un infrarrojo, pero ahora solo encuentro que permanezcan en equilibrio ¿es posible que un robot de este tipo ande manteniendo el equilibrio? Es que ya no sé si he visto alguno que se pudiera dirigir, o la mente me juega una mala pasada

Pero q pasa con ese robot en superficies inclinadas? jeje
Título: Re: Robot equilibrista
Publicado por: kain589 en 31 de Marzo de 2009, 14:17:36
Pues si, no lo habia pensado. De todas formas mi interes por este tipo de robots es que si permite controlar el desplazamiento, que no sé si puede, puedes hacerlo con solo el sensor de ir y no necesitas acelerometro ni inclinometro, mas a modo de curiosidad que por practicidad.
Título: Re: Robot equilibrista
Publicado por: Safareig en 31 de Marzo de 2009, 16:21:06
Hola kain589
De todas formas mi interes por este tipo de robots es que si permite controlar el desplazamiento, que no sé si puede...

Claro que puedes controlar su desplazamiento. ¿Has visto este video una página mas atrás? (http://www.todopic.com.ar/foros/index.php?topic=12748.msg202617#msg202617)


Un saludo...
Título: Re: Robot equilibrista
Publicado por: kain589 en 31 de Marzo de 2009, 17:27:04

Claro que puedes controlar su desplazamiento. ¿Has visto este video una página mas atrás? (http://www.todopic.com.ar/foros/index.php?topic=12748.msg202617#msg202617)

Un saludo...

Saludos y muy bueno tu robot Safareig, ya tengo un acelerometro y creo que me voy a conseguir un inclinometro, para hacer un bot equilibrista :lol:

Con lo de controlar el desplazamiento me referia a los bots que utilizan el sensor de ir, que todos los videos que he visto mantienen el equilibrio pero no se muestra si se controlan o no.
Título: Re: Robot equilibrista
Publicado por: Safareig en 31 de Marzo de 2009, 19:23:38
Hola

En principio no veo porque no va a poderse controlar su desplazamiento. El tipo de sensor que se utilice para calcular la inclinación no debe afectar a la posibilidad de desplazar el bot. Otra cosa es como se comportará en diferentes situaciones como comentaba gera, en rampas y similares.



Un saludo...
Título: Re: Robot equilibrista
Publicado por: STAI en 03 de Abril de 2009, 02:37:56
Muy bueno el trabajo, felicitaciones... me pregunto yo, sería más interesante donde se pudiera levantar solo...
Título: Re: Robot equilibrista
Publicado por: hard8507 en 29 de Abril de 2009, 02:54:33


borondiando por la Red encontre este link donde dice como hacer uno tiene todo esquematico y todo a ver si nos animamos a realizarlo
mirenlo esta muy bueno y funciona de maravilla

http://www.wa4dsy.net/robot/balancing-robot/analog-balancing-bot
Título: Re: Robot equilibrista
Publicado por: Nocturno en 29 de Abril de 2009, 03:15:08
¡¡¡ Y es analógico !!!  :shock:
Título: Re: Robot equilibrista
Publicado por: jfh900 en 29 de Abril de 2009, 05:13:07
¡¡¡ Que página tan interesante !!!.

Un saludo
Título: Re: Robot equilibrista
Publicado por: hard8507 en 29 de Abril de 2009, 12:07:48


alguien sabe donde consegir el accelerometro y el gyroscopio que esta en la paguina
http://www.wa4dsy.net/robot/balancing-robot/analog-balancing-bot


aki pongo otro link en donde dan el hex del robot para el pic y esta hecho con sensores Sharp GP2D12 y un pic 16F876

http://home.comcast.net/~botronics/balibot.html
Título: Re: Robot equilibrista
Publicado por: hard8507 en 02 de Mayo de 2009, 13:42:37


aki me encontre uno hecho por microchip dan el codigo de programacion alguien quiere empezar a realizar este proyecto ??


http://ww1.microchip.com/downloads/en/AppNotes/00964A.pdf


codigo fuente abierto en C

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021807

espero q les guste y que se decidan a hacerlo
Título: Re: Robot equilibrista
Publicado por: gera en 26 de Junio de 2009, 22:52:01
Muy bueno hard8507!!! Le estoy pegando una mirada y esta muy interesante.
Por cierto, vieron este?

Increible!!!
Título: Re: Robot equilibrista
Publicado por: stk500 en 27 de Junio de 2009, 02:28:03
 :shock: :shock: cada dias me sorprendo mas  :shock: :shock:
Título: Re: Robot equilibrista
Publicado por: RedPic en 27 de Junio de 2009, 05:37:08
¡¡¡ Hay que ver lo que hacemos los mecánicos !!!  :shock: :shock: :shock:
Título: Re: Robot equilibrista
Publicado por: Safareig en 05 de Julio de 2009, 17:49:14
Hola

Bueno, después de dar por terminado mi bot equilibrista y como ya comenté en el foro, mi proyecto culminará con la construcción de un segway casero. Dejo un vídeo de de mi segway tal y como está a día de hoy. Es la segunda salida que hace a la calle, la primera fue algo mas desastrosa.

A nivel estético solo le falta un "traje" que le están haciendo en fibra de vidrio para darle un aspecto mas agradable. En cambio a nivel de funcionamiento todavía hay mucho trabajo por hacer, sensores de presión para detectar cuando hay una persona subida en él, mejora del sistema de giro, mejora general de la estabilidad (sobretodo en ciertas circuntancias), mejorar la supresión de ruido eléctrico provocado por los motores y el puente en H, creación de un menú para el lcd que permita configurar diferentes modos de funcionamiento (fácil, normal y avanzado), y algunos detalles mas me rondan por la cabeza y que debo implementar o mejorar.



Un saludo...
Título: Re: Robot equilibrista
Publicado por: Nocturno en 05 de Julio de 2009, 17:58:37
¡Alucinante!, a tus pies, Safareig.
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 05 de Julio de 2009, 18:23:56
¡MAGNIFICO!
Título: Re: Robot equilibrista
Publicado por: RedPic en 05 de Julio de 2009, 19:16:05
 :shock: :shock: :shock: :shock: :shock:
 :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

¡¡¡ Yeah !!!! Magnifico trabajo.

Título: Re: Robot equilibrista
Publicado por: jhozate en 05 de Julio de 2009, 19:22:42
 :shock: :shock: :shock:  Increible .....como dicen por ahi...Sos Grosso!!
Título: Re: Robot equilibrista
Publicado por: flacoclau en 05 de Julio de 2009, 19:58:48
espectacular!!! ese es mi sueño!!!  :-/ :-/ :-/ :-/ :-/
saludos!!
Título: Re: Robot equilibrista
Publicado por: stk500 en 06 de Julio de 2009, 02:33:27
muy buen trabajo amigo Safareig! :-/ :-/ :-/
Título: Re: Robot equilibrista
Publicado por: LABmouse en 18 de Julio de 2009, 12:16:16
El trabajo es grandioso!

Te felicito de todo corazón, es un resultado ESPECTACULAR!!!!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 18 de Julio de 2009, 20:06:07
impresionanteeeee!!!!! quiero una!!!! ya!  :mrgreen:
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 22 de Julio de 2009, 12:31:12
Estimados, luego de cansarme de ver y ver todas las respuestas, comentarios y VIDEOOOS!!! de éste tema,... estoy como algo asombrado y con ganas de armar éste engendro del control PID,... alguien tiene idea de donde se pueden conseguir los motores DC para montar éste artefacto en escala real?...
por lo poco q ví, no es necesario que tenga reductores,... simplemente con que sean motores fuertes es todo...
espero sus respuestas...

y si alguien quiere unirse a mi delirio.... vamos nomas!! :)

Saludos  8)
Título: Re: Robot equilibrista
Publicado por: jfh900 en 22 de Julio de 2009, 13:03:14
Muy buen trabajo. ¿Nos podrías dar un poco más de información sobre su construcción: motores, baterias, etc?.

Por cierto he visto esta simulación en matlab que puede ser muy interesante para probar distintas estrategias.

Simulación en Matlab (http://www.mathworks.com/matlabcentral/fileexchange/19147)

Un saludo
Título: Re: Robot equilibrista
Publicado por: Safareig en 23 de Julio de 2009, 05:34:33
Hola,


Gracias por los comentarios.

Si están interesados en los detalles, en esta web (http://sites.google.com/site/txemafraga/patin-sobre-dos-ruedas) voy poniendo los progresos del proyecto. De todos modos, cualquier detalle que interese lo podemos discutir aquí sin problema.

NANO1985, me alegro que te animes a realizar el proyecto. Motores los puedes encontrar en diferentes lugares, ebay y webs que se dedican a bicis eléctricas, scooters y demas. Como ejemplo te pongo una
http://tncscooters.com/view.php?page=Parts

Un saludo...
Título: Re: Robot equilibrista
Publicado por: Leon Pic en 23 de Julio de 2009, 07:20:27
Que bueno que te quedó.
Felicitaciones por el trabajo realizado  :-/ :-/
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 23 de Julio de 2009, 16:51:41
Hola,


Gracias por los comentarios.

Si están interesados en los detalles, en esta web (http://sites.google.com/site/txemafraga/patin-sobre-dos-ruedas) voy poniendo los progresos del proyecto. De todos modos, cualquier detalle que interese lo podemos discutir aquí sin problema.

NANO1985, me alegro que te animes a realizar el proyecto. Motores los puedes encontrar en diferentes lugares, ebay y webs que se dedican a bicis eléctricas, scooters y demas. Como ejemplo te pongo una
http://tncscooters.com/view.php?page=Parts

Un saludo...

muchas gracias por la data,... la voy a ver... y aprovecho para felicitarte por el exelente trabajo que has realizado.
y para consultarte si estoy en lo cierto....
1)- el acelerometro es para saber cual es la componente normal o posicion vertical?
2)-y el giroscopo es para saber el angulo que forma nuetro vehiculo de dos ruedas con respecto a la componente normal obtenida con el acelerómetro?

estoy en lo cierto??

Saludos!   8)
Título: Re: Robot equilibrista
Publicado por: gera en 28 de Julio de 2009, 17:08:22
En vista q no responde nadie, te respondo yo.
Tanto el acelerometro como el giroscopo sirven para obtener el angulo de inclinacion. Se tiene q usar una combinacion de ambos ya que el acelerometro es muy propenso al ruido (tanto electrico como mecanico), y el giroscopo tiene deriva.
Lo que se hace es obtener el angulo de inclinacion a partir de la componente de la gravedad q aparezca en el eje horizontal (relativo al robot), y luego obtenemos la variacion de este angulo segun el valor q de el giroscopo. Esto una y otra vez.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: Safareig en 29 de Julio de 2009, 05:10:51
Hola,

Perdón, no me dí cuenta.

El tema te lo comenta muy bien gera. El problema es que por si solos ninguno de los dos te dan el ángulo de inclinación correctamente.
El acelerómetro si te da el ángulo directamente pero como te comenta gera es muy propenso al riudo y en condiciones de aceleración y vibración su medida no es correcta.
El giroscopio no te dice el ángulo directamente, solo te dice la velocidad a la que te estás inclinando (velocidad angular) en grados por segundo. Se trata calcular el ángulo con el giroscopio de la siguiente forma:
espacio recorrido = posición anterior + (velocidad * tiempo)
como en nuestro caso el espacio son grados de inclinación sería:
angulo = angulo anterior + (velocidad angular * tiempo)
Esto puesto en el loop del microcontrolador podría ser:
angulo = angulo + (velocidad angular * tiempo de loop)

Evidentemente si solo usaras este método tendrías dos problemas, que no puedes saber en que ángulo te encuentras en el primer ciclo y que a partir de ahí vas a ir acumulando una deriva que puede terminar siendo demasiado grande. Para evitar estos dos problemas tienes el acelerómetro, te da punto de partida y "refresco" del ángulo calculado por el giroscopio.


Un saludo...
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 29 de Julio de 2009, 06:37:52
Hola,

Perdón, no me dí cuenta.

El tema te lo comenta muy bien gera. El problema es que por si solos ninguno de los dos te dan el ángulo de inclinación correctamente.
El acelerómetro si te da el ángulo directamente pero como te comenta gera es muy propenso al riudo y en condiciones de aceleración y vibración su medida no es correcta.
El giroscopio no te dice el ángulo directamente, solo te dice la velocidad a la que te estás inclinando (velocidad angular) en grados por segundo. Se trata calcular el ángulo con el giroscopio de la siguiente forma:
espacio recorrido = posición anterior + (velocidad * tiempo)
como en nuestro caso el espacio son grados de inclinación sería:
angulo = angulo anterior + (velocidad angular * tiempo)
Esto puesto en el loop del microcontrolador podría ser:
angulo = angulo + (velocidad angular * tiempo de loop)

Evidentemente si solo usaras este método tendrías dos problemas, que no puedes saber en que ángulo te encuentras en el primer ciclo y que a partir de ahí vas a ir acumulando una deriva que puede terminar siendo demasiado grande. Para evitar estos dos problemas tienes el acelerómetro, te da punto de partida y "refresco" del ángulo calculado por el giroscopio.


Un saludo...


muchisimas gracias Safareig tu respuesta ha sido muy concreta y entendible...
tengo en mente usar éste giróscopo digital... es de aeromodelismo y posee un control PID interno...
que dicen??

http://www.art-tech.cn/english/ArticleShow.asp?ArticleID=144

cuesta 52 dólares y está disponible para conseguirlo en mi ciudad, y en stock,...
me gustaría en principio comprar algo onboard, pero los gastos de envío, aduana, impuestos y demas me termina saliendo mucho mas caro...
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 29 de Julio de 2009, 06:46:18
Hola Safareig, yo también tengo una duda similar respecto a:

Citar
Para evitar estos dos problemas tienes el acelerómetro, te da punto de partida y "refresco" del ángulo calculado por el giroscopio.

¿Cómo/cuándo sabes que la lectura que te está dando el acelerómetro es correcta?
Título: Re: Robot equilibrista
Publicado por: Safareig en 29 de Julio de 2009, 08:08:43
Hola

NANO1985, el problema de esos gyros es la falta de datos. Me explico, necesitas saber que grados/segundo puede medir como máximo para poder "escalar" el valor que obtienes del ADC, hazte esta pregunta ¿como obtengo grados/segundo de ese giroscopio?


jfmateos2,
Hay diferentes maneras de actuar, una sería dar por sentado que el valor del acelerómetro va a ser siempre algo errático y utilizar solo una parte pequeña de su valor para conformar el ángulo y el resto hacerlo con el giroscopio. Algo así:
angulo = (angulo calculado por giroscopio * 0.95) + (angulo acelerómetro * 0.05)
De esta forma el valor de "angulo" en cada ciclo es un 95% el valor del giroscopio y en un 5% el del acelerómetro. Digamos que angulo se va "refrescando" en cada ciclo del programa. Quizás no es la mejor manera pero funciona.

Existen otras maneras, por ejemplo si tienes encoders en las ruedas puedes saber cuando las aceleraciones son relativamente pequeñas y solo en esos casos "refrescar" angulo, en cambio cuando la aceleración sea mayor calcular el ángulo solo con el giroscopio.

Otra manera de detectar aceleraciones y vibraciones, quizás la mejor, es usando un acelerómetro de dos ejes dispuestos uno hacia el frente y otro hacia el cielo. De esta manera hay que usar trigonometría para calcular el ángulo de inclinación con la lectura de los dos ejes (arco tangente) y se también puede calcular la magnitud del movimiento, de manera que si no se encuentra dentro de unos parámetros que nosotros establecemos no utilizaremos el angulo que hayamos calculado con el acelerómetro.

Si te interesa, esta última parte la podemos ver con mas detalle pero ten en cuenta que mis explicaciones no van a ser las de una persona con grandes conocimientos en matemáticas, lamentablemente no tengo los conocimientos necesarios para ser todo lo correcto que debería (Dejé de estudiar demasiado pronto) Me baso en lo que he leído aquí y allá y en lo que mi cabeza ha entendido o cree que ha entendido.



Un saludo...
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 29 de Julio de 2009, 08:20:15
Hola safareig, gracias por tu explicación y realmente alucino con lo que has conseguido (primero a versión reducida y ahora con la versión capaz de transportarte)...

Un profesor mío nos decía que si las matemáticas nos complicaban la resolución de un problema, simplificásemos el modelo elegido... y eso es lo que has hecho tú, con mucho éxito.

Tengo un par de giróscopos y acelerómetros en el cajón... pero tendrán que esperar porque ahora mismo estoy con la CNC.

Me sumo a todas las enhorabuenas que ya has recibido ¡Bravo!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 29 de Julio de 2009, 08:32:29
Hola

NANO1985, el problema de esos gyros es la falta de datos. Me explico, necesitas saber que grados/segundo puede medir como máximo para poder "escalar" el valor que obtienes del ADC, hazte esta pregunta ¿como obtengo grados/segundo de ese giroscopio?


jfmateos2,
Hay diferentes maneras de actuar, una sería dar por sentado que el valor del acelerómetro va a ser siempre algo errático y utilizar solo una parte pequeña de su valor para conformar el ángulo y el resto hacerlo con el giroscopio. Algo así:
angulo = (angulo calculado por giroscopio * 0.95) + (angulo acelerómetro * 0.05)
De esta forma el valor de "angulo" en cada ciclo es un 95% el valor del giroscopio y en un 5% el del acelerómetro. Digamos que angulo se va "refrescando" en cada ciclo del programa. Quizás no es la mejor manera pero funciona.

Existen otras maneras, por ejemplo si tienes encoders en las ruedas puedes saber cuando las aceleraciones son relativamente pequeñas y solo en esos casos "refrescar" angulo, en cambio cuando la aceleración sea mayor calcular el ángulo solo con el giroscopio.

Otra manera de detectar aceleraciones y vibraciones, quizás la mejor, es usando un acelerómetro de dos ejes dispuestos uno hacia el frente y otro hacia el cielo. De esta manera hay que usar trigonometría para calcular el ángulo de inclinación con la lectura de los dos ejes (arco tangente) y se también puede calcular la magnitud del movimiento, de manera que si no se encuentra dentro de unos parámetros que nosotros establecemos no utilizaremos el angulo que hayamos calculado con el acelerómetro.

Si te interesa, esta última parte la podemos ver con mas detalle pero ten en cuenta que mis explicaciones no van a ser las de una persona con grandes conocimientos en matemáticas, lamentablemente no tengo los conocimientos necesarios para ser todo lo correcto que debería (Dejé de estudiar demasiado pronto) Me baso en lo que he leído aquí y allá y en lo que mi cabeza ha entendido o cree que ha entendido.



Un saludo...

muchas gracias amigo Safareig... voy a tener en cuanta lo que me dices... saludos.-
Título: Re: Robot equilibrista
Publicado por: jfh900 en 29 de Julio de 2009, 12:30:47
Otra forma optima de obtener el angulo de inclinación es utilizar un filtro de Kalman como ya se ha comentado por aquí. Este filtro obtiene un mejor resultado que la suma de los resultados por separado de los dos instrumentos.

Un saludo
Título: Re: Robot equilibrista
Publicado por: jfh900 en 02 de Agosto de 2009, 18:53:39
Una pregunta: ¿que motores utilizas en tu diseño del robot equilibrista José [Safareig]?¿que par tienen y cuantas revoluciones dan por minuto?. Yo estoy mirando estos motores:

http://www.superdroidrobots.com/shop/item.asp?itemid=720&catid=7

Los hay de 10, 83 y 220 rpm con un par de 12; 4,7 y 2,1 a 12V

Un saludo
Título: Re: Robot equilibrista
Publicado por: Safareig en 03 de Agosto de 2009, 04:55:46
Hola jfh900

Estos son los datos de los motores que uso:

Rated voltage 12v
Rated torque 1.5kg/cm
Rated speed 170rpm
Rated current 530mA
No load speed 216rpm
No load current 150mA
Stall current 2.5A
Rated output 4.22W
30:1 reduction gearbox
Encoder counts per drive shaft turn 360 
(http://www.robot-electronics.co.uk/acatalog/emg30a.jpg)

Si te puedo decir que en mi caso se quedan algo cortos, aunque eso va a depender de la masa que tenga el bot.


Un saludo...
Título: Re: Robot equilibrista
Publicado por: Nocturno en 03 de Agosto de 2009, 05:04:19
¿Es el mismo que este?
http://superrobotica.com/S330100.htm
Título: Re: Robot equilibrista
Publicado por: Safareig en 03 de Agosto de 2009, 05:21:26
Hola Nocturno


Si, es exactamente ese. Yo compré el kit (http://www.robot-electronics.co.uk/acatalog/Drive_Systems.html) entero, motores, ruedas, soportes y puente H.



Un saludo...
Título: Re: Robot equilibrista
Publicado por: Nocturno en 03 de Agosto de 2009, 05:34:06
Lo que más me sorprende de ese puente-H es que sea capaz de gestionar 5.6A sin disipador.

P.D.: Yo uso los mismos motores, ruedas, y soportes en otro proyecto, aunque el puente-H es diseño mío  :)
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 03 de Agosto de 2009, 08:49:00
¿Es el mismo que este?
http://superrobotica.com/S330100.htm

éste motor que muestran quiero creer que  es el del robot pequeño verdad?? (el bot que ven andando por un parque en la web de Safareig)

saludos
Título: Re: Robot equilibrista
Publicado por: Safareig en 04 de Agosto de 2009, 05:21:04
éste motor que muestran quiero creer que  es el del robot pequeño verdad?? (el bot que ven andando por un parque en la web de Safareig)

Si claro, ese motor es el del robot pequeño.



Un saludo...
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 04 de Agosto de 2009, 09:08:28
éste motor que muestran quiero creer que  es el del robot pequeño verdad?? (el bot que ven andando por un parque en la web de Safareig)

Si claro, ese motor es el del robot pequeño.

Un saludo...

que buen trabajo que hiciste hermano! no termino de asombrarme... es exelente!
saludos  8)
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 22 de Octubre de 2009, 08:19:56
Otro Segway bastante bien documentado: http://diysegway.blogspot.com/
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 22 de Octubre de 2009, 10:13:52
Otro Segway bastante bien documentado: http://diysegway.blogspot.com/

muy buen link jfmateos2.... tiene un diseño interesante con esas ruedas....
saludos
Título: Re: Robot equilibrista
Publicado por: Nocturno en 22 de Octubre de 2009, 11:28:02
¿Habéis visto la ristra de números que hay en el cálculo del ángulo?  :shock:
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 22 de Octubre de 2009, 11:33:41
¿Habéis visto la ristra de números que hay en el cálculo del ángulo?  :shock:

SEEE JEJE SE PASÓ EL TIPO..... hay constantes que ni idea que son manolo...... alguna idea de ellas?
saludos
Título: Re: Robot equilibrista
Publicado por: jfmateos2 en 22 de Octubre de 2009, 16:29:47
En realidad parece que todo se reduce en hacer lo que ya explicó Safareig: confiar un poco en el acelerómetro y un mucho en el giróscopo.
Título: Re: Robot equilibrista
Publicado por: gera en 01 de Diciembre de 2009, 16:43:47
Hola amigos!!! que tal??
Les cuento q me acaban de llegar unas cositas de sparkfun. Mas especificamente un gyro, y unos motorcitos con sus encoders :lol: (otro dia subo unas fotos, es q donde estoy ahora la conexion no es buena).
Asiq me voy a lanzar a hacer mi robot de dos ruedas. Ya tengo una idea general de como voy a armarlo y todo eso. Pienso usar un pic16f877a, y un modulito bluetooth q tengo para hacer adquisicion de datos remota, y en un futuro control remoto :)

Estuve leyendo otros proyectos y la mayoria hacen el calculo basado en el acelerometro y gyro pero sin encoder. Y creo q esto puede traer problemas cuando el bot se encuentre con un obstaculo o algun plano inclinado.
El problema es q no se como utilizar los datos del encoder en el algoritmo. En este (http://www.geology.smu.edu/~dpa-www/robo/nbot/bal2.txt) sitio hay un diagrama y lo q hace es sumar la inclinacion y la velocidad de las ruedas, y de ahi calcula el torque del motor, pero me parece q no va a andar.
Creo q seria mejor hacer un pid q tenga como entrada la inclinacion y como salida la velocidad a la q debe girar el motor. Y otro pid q tenga como entrada la salida del anterior (velocidad deseada), y como salida la velocidad real del motor. No se si se entiende. Si puedo mas tarde subo un diagrama.
Ustedes que opinan?? desde ya gracias por su rta! :D
Título: Re: Robot equilibrista
Publicado por: jfh900 en 05 de Enero de 2010, 15:39:53
Hola a todos.

Estoy intentando implementar el filtro de Kalman, según las ecuaciones de Safareig y ya las tengo pasadas a Delphi, para un proyecto de educación que cuando lo termine subiré un vídeo y me encuentro que no se cuales son las variables que tengo que utilizar, ¿donde pongo el valor del giroscopio y donde pongo el valor del acelerómetro? y ¿en que valor me devuelve el valor correcto de la medición?. Seria interesante modificar las funciones para poder tener una llamada del tipo: angulo = kalman(giroscopio,acelerómetro), que es totalmente intuitiva su utilización.

Un saludo
Título: Re: Robot equilibrista
Publicado por: Safareig en 07 de Enero de 2010, 10:49:16
Hola,

jfh900, supongo que te refieres a las dos funciones que pegué unas páginas mas atrás.

Código: [Seleccionar]
// Constantes
#define R_angle = 0.3;
#define Q_angle = 0.001;
#define Q_gyro = 0.003;
#define tiempo = 0.01;

// Variables globales
float P[2][2] = { { 1, 0 }, { 0, 1 }, };
float q_bias, angulo, gyro;


void state_update( void )
{
float Pdot[4];

Pdot[0]= Q_angle - P[0][1] - P[1][0];
Pdot[1]= -P[1][1];
Pdot[2]= -P[1][1];
Pdot[3]= Q_gyro;

gyro -= q_bias;
angulo += gyro * tiempo;

P[0][0] += Pdot[0] * tiempo;
P[0][1] += Pdot[1] * tiempo;
P[1][0] += Pdot[2] * tiempo;
P[1][1] += Pdot[3] * tiempo;
}


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[0][0];
P[1][1] -= K_1 * P[0][1];

angulo += K_0 * (angle_m - angulo);
q_bias += K_1 * (angle_m - angulo);
}


A ver si se explicarme. Así lo entiendo yo.
Para empezar hay tres variables globales que son: "angulo", "gyro" y "q_bias" donde:
"angulo" es la varialble que contendrá el resultado del algoritmo y te da el ángulo de inclinación en radianes.
"gyro" es la variable que contendrá la velocidad angular a la que el robot se está inclinando. En radianes/segundo.
"q_bias" está variable contiene el valor de error (desviación) que se supone tiene el giroscopio y que el algoritmo va calculando y eliminando de la lectura que obtienes del giroscopio.

Luego tienes las dos funciones, "state_update(void)" y "kalman_update(float angle_m)" cada una de ellas tiene una misión. Las vemos mas al detalle:

Función "state_update(void)"
Esta función calcula una ángulo estimado "angulo" y la velocidad angular de inclinación "gyro" una vez se le ha quitado la desviación. "gyro" es la lectura del giroscopio en radianes por segundo (rd/s).
Otra característica de esta función es que hay que llamarla en espacios delimitados de tiempo, por ejemplo con una frecuencia de 100 veces por segundo, lo que significa que la constante "tiempo" deberá valer en este caso 0.01 segundos. La explicación es sencilla, la variable "angulo" se actualiza por medio de esta operación "angulo += gyro * tiempo" o lo que es lo mismo, angulo actual es igual al angulo calculado en el anterior ciclo, mas la distancia en radianes que nos hemos inclinado un tiempo de 0,01seg y que se calcula haciendo "gyro * tiempo" o lo que es lo mismo "velocidad angular * tiempo de ciclo"  

Función "kalman_update(float angle_m)"
Esta función refresca el algoritmo y las variables globales "angulo" y "q_bias" Básicamente arregla el error de estimación de la variable "angulo" que se va calculando con la anterior función y calcula un valor de error "q_bias". Se le pasa un valor "angle_m" que es el ángulo calculado con el acelerómetro en radianes. Este ángulo se puede calcular con solo un eje del acelerómetro o con los dos. Si es con un solo eje sería así: "angle_m = asin(lectura_eje_en_fuerza_g)", si es con los dos ejes sería así: "angle_m = atan2(lectura_ejeY_en_fuerza_g, lectura_ejeX_en_fuerza_g)"
De cualquiera de las dos formas la variable "angle_m" contendrá el ángulo de inclinación en radianes según el acelerómetro.  
A diferencia de la función "state_update()" a esta función "kalman_update(float angle_m)" no es necesario llamarla en cada ciclo de programa o cada 0.01 segundos. Como he dicho antes esta función "refresca" de alguna manera las desviaciones de ángulo calculadas y lo hace utilizando el acelerómetro como referencia, por lo que podríamos llamarla solo cuando el robot estubiera sometido a pocas aceleraciones, vibraciones, etc.



x gera

Lo que puedes hacer es centrarte en el algoritmo pid que hace que se mantenga el equilibrio, una vez conseguido quizás veas mas claro como introducir los datos de los encoders.



Un saludo...
Título: Re: Robot equilibrista
Publicado por: gera en 08 de Enero de 2010, 15:16:24
Gracias Safareig! Me parece q voy a hacer eso, ya me estoy preocupando por problemas q todavia no tengo jaja.
Bueno, si cuando llegue a ese punto tengo algun problema, les planteo la duda puntual. Gracias y saludos!
Título: Re: Robot equilibrista
Publicado por: marito en 18 de Enero de 2010, 15:27:28
Hola Gera,

Una consulta, conseguiste los componentes de Sparkfun en Argentina¿?
Porque me trajo un amigo que estuvo de visita de España, un giróscopo de Sparkfun, pero resulta que se me daño una de las pistas; y no se si lograré repararlo, por lo que estoy considerando comprar uno nuevo. Conseguí un comercio de Córdoba, que aparentemente son distribuidores, pero todavía no tuve respuesta.

Gracias!
Saludos.
Título: Re: Robot equilibrista
Publicado por: gera en 18 de Enero de 2010, 15:56:35
Hola marito!!
El gyro (http://www.sparkfun.com/commerce/product_info.php?products_id=9165) efectivamente lo compre a los muchachos de sparkfun. Pero lamentablemente no lo he podido hacer funcionar. Al parecer vino defectuoso (o lo rompi sin darme cuenta, aunq lo dudo). Estoy muy indignado por eso porq entre el envio y todo me salio bastante carito.
En cordoba podes consultar con los chicos de electrocomponentes que son distribuidores. Si tenes suerte avisame por favor, asi veo de comprar otro porq lo necesito para mi tesis.
saludos!!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 18 de Enero de 2010, 16:07:55
muy bieeeen gera!!!! queremos ver avances!!! vamos!!! vamos!!! (alaro que no es meter presion! jaja)
saludos y exitos!
Título: Re: Robot equilibrista
Publicado por: marito en 18 de Enero de 2010, 16:13:06
Hola Gera,

Consulte a Electrocomponentes pero me dijeron que no venden giróscopios. No sabía que trabajaban con Sparkfun.
La gente de Córdoba que es representante Sparkfun es Control Comp, http://www.controlcomp.com/
Los llamé por teléfono y me dijeron que tienen algunos componentes, y que traen por pedidos. Quedaron en mandarme un correo hace una semana, pero todavía no lo recibí. En estos días llamaré de nuevo.
El giro que rompí, es el MLX 90609, Conecte Vcc, GND y Rate. Alimente con 5v y las lecturas tienen una pequeña variación contínua aún estando en reposo. Apenas lo alimento, mido 2,2v en la salida rate, y muy lentamente se va incrementando de a 0,1v. Lo raro es que el valor debería ser de 2,5v estando en reposo y alimentando con 5v. Pienso que lo que puede meter ruido es que estoy alimentando con una fuente de PC que entrega 5,15v. Es lo único que por ahora encuentro.
Que defecto tiene tu giro?
Saludos.
Título: Re: Robot equilibrista
Publicado por: marito en 18 de Enero de 2010, 16:17:53
Perdón, una aclaración, las pruebas que mencione, fueron antes del desperfecto. La rotura se produjo cuando intente soldar las patitas de conexión y se me desprendio una pista.

Saludos!
Título: Re: Robot equilibrista
Publicado por: gera en 18 de Enero de 2010, 22:49:25
El mio directamente no anda... solo muestra ruido en la salida. En la hoja de datos dice q son muy fragiles estos integrados, asiq tal vez fue un golpe o vaya a saber por q no anda.
Los de sparkfun me ofrecieron q les envie este y si no lo podian hacer funcionar me mandaban otro, pero se me va a ir muchisima plata en envio nomas, asiq no me conviene.. la verdad q no se q hacer. El integrado lo necesito para mi tesis, q mala suerte tengo!! jeje
saludos!
Título: Re: Robot equilibrista
Publicado por: marito en 19 de Enero de 2010, 08:55:54
Hola Gera, me contestaron de Control Comp (Córdoba). Tienen giros Sparfun de 1 eje 75-150-300 gr/seg. Los precios son cercanos a los que manejan en europa.
Saludos
Título: Re: Robot equilibrista
Publicado por: Suky en 19 de Enero de 2010, 09:07:04
Uuu... que mala suerte gera  :( Fue mucho gasto para que termine así, los muchachos de sparkfun deberian hacerse cargo de los $ del envío  :?

Hola Gera, me contestaron de Control Comp (Córdoba). Tienen giros Sparfun de 1 eje 75-150-300 gr/seg. Los precios son cercanos a los que manejan en europa.
Saludos

Una muy buena data! Gracias marito!


Saludos!
Título: Re: Robot equilibrista
Publicado por: gera en 19 de Enero de 2010, 10:17:08
Hola Gera, me contestaron de Control Comp (Córdoba). Tienen giros Sparfun de 1 eje 75-150-300 gr/seg. Los precios son cercanos a los que manejan en europa.
Saludos

Hmmm, interesante. Gracias por el dato marito, ahora les escribo un mail a ver cuanto me puede salir el envio hasta mendoza :)

Uuu... que mala suerte gera  :( Fue mucho gasto para que termine así, los muchachos de sparkfun deberian hacerse cargo de los $ del envío  :?

La verdad, fue una sorpresa bastante desagradable.. Y bueno, suficiente con q me hayan ofrecido revisar la placa y enviar otra. Son cosas q pasan no?

Saludos!!
Título: Re: Robot equilibrista
Publicado por: marito en 27 de Enero de 2010, 09:16:37
Hola Gera!
Compraste el giroscopio?
Saludos.
Título: Re: Robot equilibrista
Publicado por: gera en 27 de Enero de 2010, 10:22:54
Hola marito!!
No, estuve hablando con los muchachos de sparkfun y me dijeron q les envie el gyro defectuoso, y q si no lo podian hacer andar me mandaban uno nuevo. Asiq estoy viendo como hago para mandarselos y si vale la pena (sale muy caro todo el tema del envio).
saludos!!
Título: Re: Robot equilibrista
Publicado por: Suky en 27 de Enero de 2010, 11:39:13
Hola Gera!
Compraste el giroscopio?
Saludos.

Están 20 U$S más caros que en sparkfun!!!  :shock:
Título: Re: Robot equilibrista
Publicado por: marito en 28 de Enero de 2010, 08:55:15
Suky,
Hay alguna manera más económica de conseguir componentes de Sparkfun?
Saludos!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 15 de Abril de 2010, 17:19:01
alguien pudo comprar el giro??.... yo quiero hacer éste proyecto, primero en pequeña escala.... y si todo marcha bien construirme mi primer segway.....
pero bue.... acelerometros MMA7260QT tengo de sobras....  pero giros nooo  :D...
cualquier novedad m chiflan.
Saludos  8)
Título: Re: Robot equilibrista
Publicado por: gera en 15 de Abril de 2010, 17:28:24
alguien pudo comprar el giro??.... yo quiero hacer éste proyecto, primero en pequeña escala.... y si todo marcha bien construirme mi primer segway.....
pero bue.... acelerometros MMA7260QT tengo de sobras....  pero giros nooo  :D...
cualquier novedad m chiflan.
Saludos  8)

Hola nano! Yo compre uno hace unos meses a sparkfun. Tuve unos problemas porq me vino fallado, pero los de sparkfun me lo reemplazaron. Me termino saliendo algo caro con el envio, pero bueh, son bichos muy dificiles de conseguir.
Tambien los venden aca los de INGENIERIA C&C en cordoba. Pero estan bastante caros.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: gera en 08 de Mayo de 2010, 16:33:00
Buenas amigos!!!
No se si lo he comentado por ahi, pero estoy haciendo uno de estos robots para mi tesis de fin de carrera :) Ya tengo casi todo planificado, y acabo de terminar de ensamblar lo q sera el corazon del robot.
Les muestro un par de fotos (perdon la calidad, solo tenia en cel a mano jeje)
(http://img693.imageshack.us/img693/276/0805101622.th.jpg) (http://img693.imageshack.us/i/0805101622.jpg/) (http://img100.imageshack.us/img100/8469/0805101624.th.jpg) (http://img100.imageshack.us/i/0805101624.jpg/)
El microcontrolador a utilizar es el pic18f4550, como ven en la imagen, la placa posee un modulo bluetooth con el cual se va a realizar la adquisicion de datos y el envio de comandos. Tambien se puede ver el acelerometro y el gyro q conforman la IMU, y el resto son pines que son entradas de los encoders y salidas hacia los motores (la partes de potencia esta en una plaquita aparte).
Espero sus comentarios. Las criticas/sugerencias son bienvenidas :D
saludos!!
Título: Re: Robot equilibrista
Publicado por: migsantiago en 08 de Mayo de 2010, 16:54:21
Éxito en un tesis Gera  :mrgreen:
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 08 de Mayo de 2010, 19:51:49
mmmmmmmm que lindas placas!!!!! gera!! felicitaciones!!
quiero un giro yaa!!! yaaa!!!
Título: Re: Robot equilibrista
Publicado por: gera en 08 de Mayo de 2010, 21:55:31
Muchas gracias!!
A medida q vaya avanzando les voy a ir mostrando mi progreso :)
Paciencia NANO, yo estuve varios meses hasta q consegui un gyro q funcione jeje.
saludos!!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 09 de Mayo de 2010, 17:54:12
voy a seguirte de cerca, voy a tener paciencia.
saludos!
Título: Re: Robot equilibrista
Publicado por: marito en 11 de Junio de 2010, 11:12:43
Hola a todos!
He comprado el giro MLX90609
Quiero leer la salida analógica, alimento con 5v y mido la salida RATE, pero cuando coloco la punta del multímetro, la salida fluctua. Además, he probado leer esta señal con el PIC16f86, pero no logro que la salida se estabilice. Alguien ha tenido el mismo problema? Utilizo una fuente de PC.
Espero que puedan ayudarme.
Muchas gracias.
Un saludo.
Título: Re: Robot equilibrista
Publicado por: gera en 14 de Julio de 2010, 22:46:42
Hola marito!!
Te fijaste q la tension de la fuente sea estable?? por las dudas pone un capacitor en la alimentacion del gyro, tambien en la salida para estabilizar la señal. A pesar de las fluctuaciones de la señal, hay una relacion con el movimiento?? o mide cualquier cosa?

Punto aparte. Paso a mostrarles un poco mi progreso  :-/.
Decidi montar los motores y todo sobre la misma PCB para ahorrarme en chasis y piezas extra. El problema con esto es q el sentido de sensado del gyro es perpendicular al de tendencia de caida del robot. Asiq hice una mini placa aparte con el gyro, el acelerometro y el modulo bluetooth. Asi puedo colocar los sensores en la posicion q mas me guste.

Aca hay un screen de como va a quedar el modulo principal con los motores y las ruedas:
(los motores traen incluidos unos qencoders, esos son los pines q se ven.. las conexiones de los motores van a un puente H)
(http://img189.imageshack.us/img189/5364/screenshot1ko.th.png) (http://img189.imageshack.us/i/screenshot1ko.png/)

Y esta es la IMU con el modulo bluetooth. Los dos pares de 5 pines son del gyro y los de 4 son del acelerometro.
(http://img153.imageshack.us/img153/7476/screenshot2eu.th.png) (http://img153.imageshack.us/i/screenshot2eu.png/)

Espero tener la plaquita armada para esta semana, asi ya me pongo a trabajar en el firmware y hacer las primeras pruebas :D
saludos!!
Título: Re: Robot equilibrista
Publicado por: marito en 15 de Julio de 2010, 10:31:16
Hola Gera!
Las pruebas las hice con una fuente estable y la salida la conecte directo al PIC. Midiendo con un tester, observe que la salida fluctua y no se corresponde con el movimiento del gyro. Por lo que supongo que se debe haber dañado.
Me gustaría saber si con que gyro estás trabajando, si te ha dado muchos problemas y a donde lo has comprado. Porque he trabajado con el MLX90609, bastante caro, nunca pude medir una salida estable y ya es el segundo que se me ha roto.
Gracias.
Saludos.
Título: Re: Robot equilibrista
Publicado por: gera en 15 de Julio de 2010, 12:35:36
El gyro q estoy usando es este (http://www.sparkfun.com/commerce/product_info.php?products_id=9165), lo compre a sparkfun.
Tuve el mismo problema q vos, a la salida del gyro solo media ruido. Despues de comunicarme con el servicio tecnico de sparkfun, me pidieron q se los mande de vuelta, y una vez comprobado q el gyro estaba defectuoso me lo reemplazaron.
Parece q son dispositivos muy sensibles :S
Título: Re: Robot equilibrista
Publicado por: gera en 16 de Julio de 2010, 23:40:10
Holaaa!! Ya tengo las plaquitas hechas y todo montado!  :-/ :-/
Ahora toca ponerme a programar, espero no tener q hacer modificaciones en el hardware.
Les dejo unas fotos :wink:
(http://img190.imageshack.us/img190/8232/p7164230.th.jpg) (http://img190.imageshack.us/i/p7164230.jpg/)
el puente H (a la derecha del robot) y la IMU (a la izquierda) van a ir agarrados a los lados del robot, y de paso van a formar el soporte para las baterias q van a ir encima del mismo.

(http://img37.imageshack.us/img37/989/p7164235.th.jpg) (http://img37.imageshack.us/i/p7164235.jpg/) (http://img198.imageshack.us/img198/805/p7164233.th.jpg) (http://img198.imageshack.us/i/p7164233.jpg/)

Espero sus opiniones, y como siempre cualquier clase de critica/sugerencia es benvenida :)
saludos!!
Título: Re: Robot equilibrista
Publicado por: Menta en 19 de Julio de 2010, 22:37:42
pues se ven muy bien esas placas, muy prometedor el asunto...
va a tener que aprender a pararse a los golpes :D  ponle protección  :mrgreen:
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 19 de Julio de 2010, 22:45:04
Uhh se ve re bien!

Protege tus pcbs de la oxidación. 8)


Saludos!
Título: Re: Robot equilibrista
Publicado por: gera en 20 de Julio de 2010, 00:32:19
Muchas gracias!! Les cuento q ya lo estoy manejando por control remoto jeje (bluetooth). Pero todavia no hace equilibrio jeje.
Con q me recomiendan q proteja las placas? Tengo un aerosol q es como una capa de esmalte, supongo q con eso va a andar bien.
saludos!!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 20 de Julio de 2010, 11:07:45
Muchas gracias!! Les cuento q ya lo estoy manejando por control remoto jeje (bluetooth). Pero todavia no hace equilibrio jeje.
Con q me recomiendan q proteja las placas? Tengo un aerosol q es como una capa de esmalte, supongo q con eso va a andar bien.
saludos!!

yo creo que con flux es mas que suficiente gera.... lo dejas secar bien y queda d lujo...
un abrazo y sigo éste hilo de cerca.
saludos
Título: Re: Robot equilibrista
Publicado por: gera en 20 de Julio de 2010, 12:52:37
yo creo que con flux es mas que suficiente gera.... lo dejas secar bien y queda d lujo...
un abrazo y sigo éste hilo de cerca.
saludos

Buenisimo. La plaquita con el modulo bluetooth tiene flux, pero estuvo como un dia entero para secarse, por eso no lo use en las otras placas. Ahora les hago una capita y las dejo secando cerca de una estufa a ver si demora menos.

De paso les comento que el robot ya esta gateando en 3 ruedas jeje. Lo manejo por control remoto desde la computadora, mas tarde subo un video :wink:
saludos!!!
Título: Re: Robot equilibrista
Publicado por: chelitog555 en 21 de Julio de 2010, 01:45:27
Hola compañeros, les escribo desde Colombia, resulta que tambien estoy construyendo como tesis de grado un robot equilibrista, a mi me gusta el chasis que utilizo justin mcallister, ya que parece mas un pendulo invertido, y por esto lo utilizo en mi diseño.
JustinM (http://justinm.com/robotics)

ya tengo todo el hardware implementado, sobre el software ya esta funcionando correctamente el filtro de kalman, y estoy utilizando simplemente un PID para controlar el angulo basado en la salida del filtro.

(http://farm5.static.flickr.com/4135/4813899905_a9efb03065.jpg)         (http://farm5.static.flickr.com/4137/4813899619_72e99a738f.jpg)

pero el robot aun no logra estabilizarse en el punto de equilibrio, alguien me sugirio que implementara un PID de control de velocidad para cada motor y otro PID  de posicion para controlar los anteriores PIDs, pero no me he puesto en la tarea de hacerlo, en parte debido a que ahora estoy utilizando unos nuevo motores japonenes y aun no cuento con el encoder correspondiente, pero navegando en la red he encontrado un proyecto en el que tampoco se usan encoders pero el robot si se estabiliza.

yo quisiera que por favor a alguien que le haya funcionado el robot equilibrista me pueda dar alguna indicacion de como orientar la programacion del control.

Gracias.
Título: Re: Robot equilibrista
Publicado por: gera en 21 de Julio de 2010, 19:43:13
Excelente trabajo chelito!!! :-/ Tiene muy buena pinta!
Yo tengo la misma duda q vos.. no se bien como voy a implementar los encoders en el PID. Pero voy a dejar esa tarea para despues, todavia me falta lo basico que es q se pare jeje.
Les dejo un pequeño video de mi robot (el gerwey :P)

Saludos!!
Título: Re: Robot equilibrista
Publicado por: marito en 22 de Julio de 2010, 13:10:26
Hola a todos!!!

Excelente como lo controlas desde la pc!!!

Gera que modulo bluetooth usaste? A donde lo conseguiste?


Gracias!
Saludos!
Título: Re: Robot equilibrista
Publicado por: Micro23 en 22 de Julio de 2010, 14:18:08
Muy bueno Gera y chelitog!!!
Saludos

P/D: Si te trae las pantuflas te encargo uno.. :mrgreen:
Título: Re: Robot equilibrista
Publicado por: gera en 22 de Julio de 2010, 16:04:01
Gera que modulo bluetooth usaste? A donde lo conseguiste?

Gracias! El modulo es el RN-41. Lo compre a sparkfun. En la descripcion del video estan todos los detalles :wink:

Muy bueno Gera y chelitog!!!
Saludos

P/D: Si te trae las pantuflas te encargo uno.. :mrgreen:

Jaja, gracias!! voy a hacer lo posible para q lo haga :P
Título: Re: Robot equilibrista
Publicado por: migsantiago en 23 de Julio de 2010, 10:58:10
Hola, dejo un video sobre un robot volador con un nivel de maniobra increíble.


PD Si ya se había publicado, este mensaje se autodestruirá sin previo aviso  :D
Título: Re: Robot equilibrista
Publicado por: Suky en 23 de Julio de 2010, 11:24:47
Excelente gera!!!  :-/ :-/ 
Título: Re: Robot equilibrista
Publicado por: willynovi en 23 de Julio de 2010, 19:08:01
con tiempo me voy a leer el hilo completo, pero alguien sabe si se puede utilizar algun otro sistema de equilibrio que no sea con giroscopo o acelerómetro?
Por ejemplo se me ocurre un pendulo con una reducción y un encoder para poder detectar el angulo de inclinacion. Seguro no tendra la precision de un giroscopo, aunque no se cual es la de estos.
Voy a ponerme a investigar ya que conseguirse un giroscopo aca en argentina esta complicado, no?

La idea mia es usarlo en un bipedo.
Título: Re: Robot equilibrista
Publicado por: Suky en 23 de Julio de 2010, 20:31:43
Voy a ponerme a investigar ya que conseguirse un giroscopo aca en argentina esta complicado, no?

Complicado no, pero se consiguen 20U$S mas caros que en sparkfun.

Saludos!

Título: Re: Robot equilibrista
Publicado por: willynovi en 23 de Julio de 2010, 21:22:18
serian unos US$60?
Título: Re: Robot equilibrista
Publicado por: gera en 24 de Julio de 2010, 00:09:17
con tiempo me voy a leer el hilo completo, pero alguien sabe si se puede utilizar algun otro sistema de equilibrio que no sea con giroscopo o acelerómetro?
Aca hay uno q usa un sensor infrarrojo para medir la distancia al piso, y asi la inclinacion: http://homepage.mac.com/sigfpe/Robotics/equibot.html

Les cuento q avance bastante en el robot. Ya monte las piezas en los laterales del mismo. Un par de fotos:
(http://a.imageshack.us/img534/2751/p7224267.th.jpg) (http://img534.imageshack.us/i/p7224267.jpg/) (http://a.imageshack.us/img9/9808/p7224269.th.jpg) (http://img9.imageshack.us/i/p7224269.jpg/)

Tambien tengo hecho el filtro complementario q calcula el angulo de inclinacion. Y me anime con el PID, pero sin suerte. Es un parto sintonizarlo jeje.
Ademas me parece q hay un pequeño problema con los motores... como tienen caja reductora, los engranajes se quedan medio trabados y demoran en comenzar a moverse :(
Pero bueno, cuando me meti en esto ya sabia q iba a ser un reto jeje, asiq le voy a seguir dando hasta q salga.

Estoy subiendo un pequeño video a youtube, cuando termine lo posteo :wink:

saludos!!

EDIT:
aca esta el video

Escucho criticas y sugerencias jeje. Saludos!
Título: Re: Robot equilibrista
Publicado por: Suky en 24 de Julio de 2010, 00:19:46
Hola Gera,

Consulte a Electrocomponentes pero me dijeron que no venden giróscopios. No sabía que trabajaban con Sparkfun.
La gente de Córdoba que es representante Sparkfun es Control Comp, http://www.controlcomp.com/
Los llamé por teléfono y me dijeron que tienen algunos componentes, y que traen por pedidos. Quedaron en mandarme un correo hace una semana, pero todavía no lo recibí. En estos días llamaré de nuevo.
El giro que rompí, es el MLX 90609, Conecte Vcc, GND y Rate. Alimente con 5v y las lecturas tienen una pequeña variación contínua aún estando en reposo. Apenas lo alimento, mido 2,2v en la salida rate, y muy lentamente se va incrementando de a 0,1v. Lo raro es que el valor debería ser de 2,5v estando en reposo y alimentando con 5v. Pienso que lo que puede meter ruido es que estoy alimentando con una fuente de PC que entrega 5,15v. Es lo único que por ahora encuentro.
Que defecto tiene tu giro?
Saludos.

Este es el mensaje donde nombran a quien trabaja con Sparkfun en Argentina, yo les pedí presupuesto pero no logre encontrarlo  :mrgreen:


Estoy subiendo un pequeño video a youtube, cuando termine lo posteo :wink:

 :-/ :-/

Saludos!  ;-)
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 24 de Julio de 2010, 01:31:37
Padrisimo Gera ya da sus primeros pasitos a  :D

Felicitaciones espero termines pronto y con excelentes resultados!

Saludos!
Título: Re: Robot equilibrista
Publicado por: chelitog555 en 25 de Julio de 2010, 00:57:52
señor GERA, le muestro algunos resultados obtenidos en una prueba,
la respuesta mejoro al anadir pesos en la parte superior. sin embargo no se ha logrado obtener el resultado esperado.

no se si exista una limitacion causada por la holgura de la caja reductora de los motores, y por el tiempo en alcanzar la velocidad final de los mismos, pero espero que alguien me pueda dar una indicacion de como mejorar los resultados.

Título: Re: Robot equilibrista
Publicado por: gera en 25 de Julio de 2010, 03:19:20
Muy bueno chelito!!!
Es verdad q agregar peso en la parte superior mejora la respueta (aumenta el momento de inercia y disminuye la velocidad de caida). Ese es uno de los problemas de mi robot, es muy enano y liviano.
Tambien es cierto lo de los motores... yo creo q voy a tener q comprar otros porq a estos q tengo les cuesta mucho arrancar :( El problema es q en Argentina es muy dificil encontrar motores como los q necesito y con encoders.

En definitiva, me parece q voy a modificar radicalmente mi robot.. voy a armar una estructura en lugar de montarlo sobre la misma PCB, parecido a lo tuyo.
La verdad que es un bajon porq le tenia mucha fe a mi diseño, pero bueno, echando a perder se aprende jeje.
saludos y felicitaciones por tus avances!! vas muy bien :wink:
Título: Re: Robot equilibrista
Publicado por: Nocturno en 25 de Julio de 2010, 04:38:28
Ya estás cerca, Gera, muy cerca.
Yo también pienso que deberías poner peso arriba, por ejemplo las baterías. Será más fácil mantener el equilibrio porque el robot se hará menos nervioso.
Título: Re: Robot equilibrista
Publicado por: willynovi en 25 de Julio de 2010, 22:13:19
al modelo de chelito como que los motores son lentos, o no tienen la correcta sintonizacion del PID. En caso que sean lentos los motores probaria en ponerle ruedas mas grandes.

Habria que hacer unos calculos como para saber cual es la velocidad necesaria en los motores dependiendo de las masas involucradas. No creo que sea muy complicado, vere si por ahi me hago un rato y recuerdo algo de mecanica de solidos,  :(

Gera por lo que se ve estas haciendo unas pruebas para ver la reaccion de los motores, yo intentarias hacerlo que se mantenga parado, es decir, colocarlo en forma verticaly luego hacerlo andar, asi como aprenden los niños a caminar, hasta que no dominan el equilibrio no se largan a dar pasos.
Título: Re: Robot equilibrista
Publicado por: Suky en 25 de Julio de 2010, 23:39:34
señor GERA, le muestro algunos resultados obtenidos en una prueba,
la respuesta mejoro al anadir pesos en la parte superior. sin embargo no se ha logrado obtener el resultado esperado.

no se si exista una limitacion causada por la holgura de la caja reductora de los motores, y por el tiempo en alcanzar la velocidad final de los mismos, pero espero que alguien me pueda dar una indicacion de como mejorar los resultados.


El control PID lo calculas teniendo en cuenta esa demora que indicas entre la actuación y el valor de la salida? El sistema discreto aumenta un par de ordenes dependiendo de la magnitud de la demora y el tiempo de muestreo, pero es una mejor aproximación a lo que sucede y puede dar mejores resultados.


Saludos!
Título: Re: Robot equilibrista
Publicado por: gera en 26 de Julio de 2010, 01:35:34
Hola amigos. Vengo con una amargura terrible... se me acaba de quemar el modulo bluetooth :(
Se me habia despegado esa plaquita y creo q cuando la volvi a pegar algo quedo en corto. Y ni siquiera se si habre quemado algo mas porq salio algo de humo.
Justo cuando estaba comenzando a funcionar. Hoy logre que se equilibre por unos segundos.
Pero bueno, como dicen los norteamericanos "shit happens". Ahora voy a colgar el proyecto hasta q consiga otro modulo, snif..

Les dejo el ultimo video q filme.. no se logra equilibrar porq hay un pequeño error en el calculo de la inclinacion. Estoy usando un filtro complementario, creo q usando un filtro de kalman va a mejorar bastante la cosa.

saludos!
Título: Re: Robot equilibrista
Publicado por: El_Guitre en 26 de Julio de 2010, 07:52:53
Estas muy cerca gera! a no bajar los brazos. Muchas veces la ansiedad por probar nuestros avances nos lleva a no prestar toda la atención necesaria a la hora de verificar que todo este ok, pero esos problemas no deben hacerte abandonar tu trabajo! A olvidar rápido ese humo y no frustrarse.  ;-)
Título: Re: Robot equilibrista
Publicado por: gera en 26 de Julio de 2010, 14:49:50
Muchas gracias por los animos! Ya estoy averiguando para comprarme otro modulo. El bajon es q cuesta mucho traer de estas cosas al pais. Por ahora pienso comprarlo a sparkfun y q me lo envien. Si alguien conoce una alternativa mejor, soy todo oidos.
Saludos!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 28 de Julio de 2010, 20:04:18
muuuuuy buenaaaaa!!!!!! aplausos!!!! bien!! gera!!!! me estas tentando hermano!! me estas tentandooooo
Título: Re: Robot equilibrista
Publicado por: willynovi en 28 de Julio de 2010, 20:20:07
Muchas gracias por los animos! Ya estoy averiguando para comprarme otro modulo. El bajon es q cuesta mucho traer de estas cosas al pais. Por ahora pienso comprarlo a sparkfun y q me lo envien. Si alguien conoce una alternativa mejor, soy todo oidos.
Saludos!
Has contactado a la gente de YEL? son representantes de RS en Argentina.
 YEL S.R.L., Virrey Cevallos 143, C1077AAC Buenos Aires, Argentina
Email, yel@yel.com.ar

Yo le he comprado algunas cosilla y responden bien,  ;-)

No se bien que modulo es el que usas, aqui tienes unos
http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0384428
http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0133844
Título: Re: Robot equilibrista
Publicado por: gera en 28 de Julio de 2010, 20:57:35
Has contactado a la gente de YEL? son representantes de RS en Argentina.
 YEL S.R.L., Virrey Cevallos 143, C1077AAC Buenos Aires, Argentina
Email, yel@yel.com.ar

Yo le he comprado algunas cosilla y responden bien,  ;-)

No se bien que modulo es el que usas, aqui tienes unos
http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0384428
http://es.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0133844


No conocia esa casa. Muchas gracias por la recomendacion. El modulo q estoy usando es el RN41, ya pedi otro a sparkfun. Pero lo voy a tener en cuenta para el futuro :wink:

muuuuuy buenaaaaa!!!!!! aplausos!!!! bien!! gera!!!! me estas tentando hermano!! me estas tentandooooo
Copate Nano!! Estan muy piola los robotitos estos jeje.

Les cuento q a pesar de la perdida del modulo, sigo haciendo pruebas y logre mejorar bastante la cosa. El problema es el sensado, demora mucho en refrescar el angulo y por eso demora en responder. Todavia no me le animo al filtro de kalman, pero si no logro mejor respuesta del complementario, tendre q probar.

Por el momento voy a dejar las pruebas de lado y voy a rediseñar las placas para evitar futuros problemas. Voy a ensamblar todo como corresponde. Asiq volvere con noticias cuando termine eso.

saludos!!!
Título: Re: Robot equilibrista
Publicado por: chelitog555 en 28 de Julio de 2010, 21:48:20
Saludos Gera, espero que puedas volver a trabajar en el robot pronto para ver como queda, he visto algunos videos de robots pequenos que tienen muy buen desempeno, yo apenas he podido lograr un pequeno avance que muestro en el siguiente video pero todavia falta mucho...

Título: Re: Robot equilibrista
Publicado por: gera en 29 de Julio de 2010, 03:10:39
Muy bueno chelito!! Yo creo q jugando un poco con los valores del pid vas a lograr excelentes resultados :wink:
una pregunta, como sensas el angulo de inclinacion??
saludos!!
Título: Re: Robot equilibrista
Publicado por: willynovi en 29 de Julio de 2010, 12:44:17
Gera, lo del uso del modulo bluetooth es algo fundamental o se puede prescindir de él?
Digo, podrias usar algún otra comunicacón o modulo como los TWS-433 y RWS-433?

Y el giroscopio sabes si puede reemplazarse por algunotro elemento mas economico, aunque el resultado sea menos preciso?
Título: Re: Robot equilibrista
Publicado por: gera en 29 de Julio de 2010, 13:15:02
El modulo bluetooth no es para nada esencial. Pero facilita mucho el trabajo.
Yo lo uso para visualizar datos como la lectura de los sensores, y envio comandos para tunear el PID y cosas asi. Entonces no tengo q programar el pic cada vez q quiero cambiar un valor.
Ahora que estoy sin el modulo, tengo un cordon umbilical para comunicarme

La inclinacion puede medirse de muchas formas. Una es con un acelerometro y un gyro combinados, pero tambien he visto bots que miden la distancia al piso. Te dejo un video muy piola que encontre:

Saludos!!
Título: Re: Robot equilibrista
Publicado por: willynovi en 29 de Julio de 2010, 13:40:57
lo de la distancia al piso ya lo habia visto, el tema es que el sistema de medición deberia ser independiente del medio en el que transite, ya que si vamos por un terreno inclinado o con obstaculos esta situación no seria muy fiable, la de usar ese tipo de sensores.

Todavia no me he puesto con esto, pero la idea es ir aprendiendo algunos conceptos para ver que puedo llegar a hacer  ;-)
Título: Re: Robot equilibrista
Publicado por: gera en 29 de Julio de 2010, 15:47:12
Claro, para terrenos inclinados no sirve. No te queda otra que usar un acelerometro y un gyro.
Por la experiencia q llevo hasta ahora con mi robot, te puedo decir q la medicion del angulo de inclinacion (precision y tiempo) es critica.
Por eso mismo me voy a dedicar un tiempo a optimizar dicha medicion.

Animate!! Se lo ve complicado, pero de a poco se va avanzando :wink: y como le dije a nano es muy entretenido!
saludos!!
Título: Re: Robot equilibrista
Publicado por: chelitog555 en 30 de Julio de 2010, 00:11:30

el calculo del angulo lo estamos manejando de la siguiente manera, primero se toman las medidas de los sensores

Código: [Seleccionar]
Read_ADC();
medida_0 = (float)(medida_giroscopo *3.3)/4096;
medida_0 = (float)(medida_0 - 1.343042)/0.00067;
//medida_1 = (medida_x - VOFF_X)/S;
medida_2 = (float)(medida_y - VOFF_Y)/S;
medida_3 = (float)(medida_z - VOFF_Z)/S;

// Angulo Calculado con Acelerometro
angle_m = atan2(-medida_2, medida_3); //angulo en radianes entre ejeZ y ejeY
angle_m = angle_m - (3.14159/2.0); //correccion para establecer el centro absoluto
angle_m = (angle_m *180)/3.14159; //en grados

gyro = medida_0; //grados por segundo, lectura del gyroscopio

y luego empleamos las siguientes funciones del filtro de Kalman para filtrar y fusionar las medidas, a continuacion presento alguns referencias con la descripcion de las funciones utilizadas para el filtro.

la mejor explicacion del filtro que he encontrado (http://coecsl.ece.illinois.edu/ge423/spring04/group9/objectives_sensors.htm)

Pequena traduccion y explicacion de las funciones de Kalman (http://rapidshare.com/files/409913055/Explicacion_Filtro_de_Kalman.docx)

esta pagina ayuda mucho a entender las ecuaciones (http://tom.pycke.be/mav/71/kalman-filtering-of-imu-data)

el siguiente codigo es para Mplab C30

Código: [Seleccionar]
void state_update() //Prediccion
{
float Pdot[4];

/*
 * The predict function. Updates 2 variables:
 * our model-state x and the 2x2 matrix P
 *     
 * x = [ angle, bias ]'
 *
 *   = F x + B u
 *
 *   = [ 1 -dt, 0 1 ] [ angle, bias ] + [ dt, 0 ] [ dotAngle 0 ]
 *
 *   => angle = angle + dt (dotAngle - bias)
 *      bias  = bias
 *
 *
 * P = F P transpose(F) + Q
 *
 *   = [ 1 -dt, 0 1 ] * P * [ 1 0, -dt 1 ] + Q
 *
 *  P(0,0) = P(0,0) - dt * ( P(1,0) + P(0,1) ) + dt² * P(1,1) + Q(0,0)
 *  P(0,1) = P(0,1) - dt * P(1,1) + Q(0,1)
 *  P(1,0) = P(1,0) - dt * P(1,1) + Q(1,0)
 *  P(1,1) = P(1,1) + Q(1,1)
 */

Pdot[0] =  - P[0][1] - P[1][0];
Pdot[1] = -P[1][1];
//Pdot[2] = -P[1][1];
//Pdot[3] = Q_gyro;


gyro -= q_bias;
gyrograd = gyro;
angulo += gyro * dt ;

P[0][0] += (Pdot[0] * dt) + (P[1][1]*dt*dt) + Q_angle;
P[0][1] += Pdot[1] * dt;
P[1][0] += Pdot[1] * dt;
P[1][1] += Q_gyro;
}

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

/*
 *  The update function updates our model using
 *  the information from a 2nd measurement.
 *  Input angle_m is the angle measured by the accelerometer.
 *
 *  y = z - H x
 *
 *  S = H P transpose(H) + R
 *    = [ 1 0 ] P [ 1, 0 ] + R
 *    = P(0,0) + R
 *
 *  K = P transpose(H) S^-1
 *    = [ P(0,0), P(1,0) ] / S
 *
 *  x = x + K y
 *
 *  P = (I - K H) P
 *
 *    = ( [ 1 0,    [ K(0),
 *          0 1 ] -   K(1) ] * [ 1 0 ] ) P
 *
 *    = [ P(0,0)-P(0,0)*K(0)  P(0,1)-P(0,1)*K(0),
 *        P(1,0)-P(0,0)*K(1)  P(1,1)-P(0,1)*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[0][0];
P[1][1] -= K_1 * P[0][1];

angulo += K_0 * (angle_m - angulo);
q_bias += K_1 * (angle_m - angulo);
}
Título: Re: Robot equilibrista
Publicado por: gera en 30 de Julio de 2010, 03:22:39
Hmm, el famoso filtro de kalman. Si logras una buena medicion del angulo con el, no deberias tener problemas equilibrando tu robot. Es cuestion de jugar con las constantes del PID.

Por cierto, estoy haciendo unas pruebas con el filtro de kalman y las mediciones son bastante malas. Me podrias contar como hiciste para determinar los valores de las constantes? (R_angle, Q_angle y Q_gyro)
Gracias!!
Título: Re: Robot equilibrista
Publicado por: chelitog555 en 30 de Julio de 2010, 12:01:25
Pues los valores iniciales los tome de un codigo ya implementado en la pagina de MAV-BLOG Ejemplo con Codigo Fuente (http://tom.pycke.be/mav/92/kalman-demo-application) y los modifique hasta obtener buenos resultados, tambien realice una simulacion del filtro en Matlab y la compare con los valores calculados por el dsPic y fueron muuuuyyy similares, tambien con dicha simulacion aprendi que el filtro empieza a dar muy buenas mediciones cuando la matriz P de 2x2 empieza a tener convergencia.

y por una sugerencia de Safareig aumente el valor de R_angle de 0.3 a 0.6 y realmente obtuve mucha mas estabilidad en la medida.

a mi me parece que la parte del filtro ya debe estar bien, sin embargo no creo que sea tan sencillo como solamente sintonizar el PID debido a que los Drivers y motores pueden tener la misma referencia pero sus respuestas siguen siendo diferentes y no lineales. yo creo que para obtener el resultado final voy a tener que implementar un PID de velocidad para cada motor para igualar sus respuestas y luego un PID de posicion o equilibrio que controle los anteriores PIDs. en total 3 PID, pero todavia no he implementado todo el codigo.

Código: [Seleccionar]
//float P[2][2] = { { 1, 0 }, { 0, 1 }, };   // se puede iniciar con matriz identica y luego tendra convergencia
//float P[2][2] = { { -0.0005, 0.0015 }, { -1.7829, -1.8521 }, } //estos valores se obtuvieron luego de tener convergencia;
float P[2][2] = { { 0.017326, -0.029120 }, { -0.031015, 1.784845 }, };
float R_angle = 0.6; //valores iniciales filtro de kalman
float Q_angle = 0.001; //R_a=0.3;
float Q_gyro = 0.003; //Q_a=0.001;
float q_bias=0.0; //Q_g=0.003
Título: Re: Robot equilibrista
Publicado por: willynovi en 30 de Julio de 2010, 13:23:11
Citar
yo creo que para obtener el resultado final voy a tener que implementar un PID de velocidad para cada motor para igualar sus respuestas y luego un PID de posicion o equilibrio que controle los anteriores PIDs

Yo creo que si, los motores debes controlarlos de esa forma, no se bien como los controlas actualmente, pero creo es unos de los puntos mas importantes.

Veo en tu último video que has cambiado las ruedas, o se trata de otro equilibrista? No alcanzo a distinguir bien la diferencias  :oops:

Recuerda que para poder implementar el control de velocidad de los motores debes disponer de unos que te entreguen sobrados la velocidad maxima que necesitas para equilibrarlo, lo mismo con la aceleración.
Por decirlo así, si con una aceleración de inclinación X (la máxima) necesitas Y aceleración en los motores, esta debes tomarla como la necesaria en los motores, si no puedes alcanzar esa aceleracion en los motores, entonces nunca podras compensar esa perturbación del equilibrio en tu robot.
De forma inversa puedes determinar que aceleración y velocidad tienen los motores y determinar la maxima perturbacion del equilibrio que puedes absorver.
Título: Re: Robot equilibrista
Publicado por: gera en 30 de Julio de 2010, 21:15:34
Muchas gracias Chelito!! Ahi pude obtener una medicion mas estable del filtro de kalman. Pero todavia existe un pequeño error en la medicion que hace q el robot no se pueda estabilizar.. es como si la medicion tuviera "juego", no se si me explico.
Voy a seguir haciendo pruebas, cambiando la frecuencia de muestreo y parametros del filtro. En estos dias subo un video mostrando como va hasta ahora la cosa.
saludos!!!
Título: Re: Robot equilibrista
Publicado por: gera en 06 de Agosto de 2010, 02:45:38
Miren lo que conseguiii!! :D jejeje
(http://a.imageshack.us/img294/9507/p8064310.th.jpg) (http://img294.imageshack.us/i/p8064310.jpg/) (http://a.imageshack.us/img685/4669/p8064311.th.jpg) (http://img685.imageshack.us/i/p8064311.jpg/)

Despues de implementar el filtro de kalman y sintonizar bien el pid, mejoro mucho el comportamiento del robot, pero seguia sin poder mantener el equilibrio. Resulta que con una pequeña inclinacion, los motores ya estaban al 100% y no se podia recuperar.
Me pedi estos motores de 24V 500rpm para estar sobrado. Obviamente la proxima version de mi robot no va a estar montado en la misma PCB, sino que voy a armar una estructura mas robusta, alta y resistente.
Cuando tenga novedades les aviso.
Saludos!!!
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 06 de Agosto de 2010, 03:20:54
Se ven muy padres los motores!

De cuantas rpm son los mas pequeños???
Título: Re: Robot equilibrista
Publicado por: willynovi en 06 de Agosto de 2010, 13:10:22
y de curiosidad, donde te pediste esos motores?
No conocias estos http://www.ignis.com.ar/PDF/mr6.pdf

Claro eso es lo que comentaba un poco mas arriba, que al tener unos motores lentos, la capacidad de equilibrarse es menor, si la perturvación es excesiva, la reaccion de los motores no es suficiente.

El peso de toda la estructura no creo que valla a ser mucho, entonces los motores trabajaran casi en vacio, ademas de que casi no soportarian carga al tener la mayor parte el peso en la parte superior del robot.
En ese caso, con que puente H vas a manejar esos motores, veo que tienen una Inom de 3Amp?

Saludos y espero que sigas adelante con este proyecto, yo todavia no me animo a comprar el giroscopo, estuve viendo algunos pero no los he estudiado como para saber cual es mejor.
Título: Re: Robot equilibrista
Publicado por: gera en 06 de Agosto de 2010, 14:40:46
Se ven muy padres los motores!

De cuantas rpm son los mas pequeños???
El motor chiquito es este (http://www.sparkfun.com/commerce/product_info.php?products_id=8910). Es de unas 120rpm

y de curiosidad, donde te pediste esos motores?
No conocias estos http://www.ignis.com.ar/PDF/mr6.pdf

Claro eso es lo que comentaba un poco mas arriba, que al tener unos motores lentos, la capacidad de equilibrarse es menor, si la perturvación es excesiva, la reaccion de los motores no es suficiente.

El peso de toda la estructura no creo que valla a ser mucho, entonces los motores trabajaran casi en vacio, ademas de que casi no soportarian carga al tener la mayor parte el peso en la parte superior del robot.
En ese caso, con que puente H vas a manejar esos motores, veo que tienen una Inom de 3Amp?

Saludos y espero que sigas adelante con este proyecto, yo todavia no me animo a comprar el giroscopo, estuve viendo algunos pero no los he estudiado como para saber cual es mejor.

Los motores los compre a los de AP&S en buenos aires. Consulte a los de ignis, pero me respondieron mejor los otros. Muy atentos, les conte sobre mi proyecto y me asesoraron muy bien. Para manejarlos pienso usar el L298.

Con el tema del gyro, te conviene usar uno de mucha sensibilidad. El mio es de 300º/s, pero el robot jamas cae a esa velocidad. Yo creo que con uno de 60º/s estas sobrado. El tema es conseguir buen precio, porq estan carisimos y son dificiles de encontrar :S
Suerte!!
Título: Re: Robot equilibrista
Publicado por: willynovi en 06 de Agosto de 2010, 15:11:01
Gera, gracias por el dato de los motores, no los tenia presente a ese proveedor, me intereso mucho el micromotor SPL4 como para hacer un minisumo. Luego le pregunto precios, haran envio al interior?

Por lo del giroscopo es buen dato eso de los grados, y si que varia el precio en funcion de eso, vi algunos que hasta tienen comunicación integrada y a buen precio, luego en casa que tengo los link lo reviso, el tema seguro es poder traerlos a argentina.

Todavia no me lei todos los mensajes del hilo, seguro por ahi consigo mas datos sobre los giroscopos y como hacer para conseguirlos aca en argentina. Mi idea es usarlo en un bipedo para darle un poco de autonomia.

Claro el L298 lo podes usar tranquilo, yo creo que no vas a tener problemas, ademas que si ya haces el robot mas grande puedes ponerle algun disipador. Yo tengo hecho un puente h para un solo motor con un solo L298 y en teoria podría llegar a 4Amp, todavia no lo he probado con carga.

Saludos, Willy
Título: Re: Robot equilibrista
Publicado por: gera en 06 de Agosto de 2010, 19:03:26
Como te digo, los de AP&S son muy atentos. Me armaron la reduccion segun lo que les pedi. Y si, hacen envios al interior, yo soy de Mendoza y me llego en un dia. Me salio $49 el envio.

Hay una casa de electronica en cordoba que tienen gyros. es esta http://www.controlcomp.com/
Estan un poco caros, pero es mas o menos lo mismo q te sale comprarlo afuera con el envio y todo eso.

Suerte!!
Título: Re: Robot equilibrista
Publicado por: willynovi en 06 de Agosto de 2010, 19:50:00
si creo que Suky los habia contactado, no se si al final tuvo respuesta. Son los que distribuyen SparkFun en argentina.
Creo que le voy a pedir mi regalito a papa Noel por adelantado  :mrgreen:
Título: Re: Robot equilibrista
Publicado por: gera en 08 de Agosto de 2010, 00:28:59
Hola a todos!!!
Paso rapidito a dejarles un video de las ultimas pruebas con este modelo del robot:

Como comentaba mas arriba, ahora estoy trabajando en otro modelo mas grande, con motores mas poderosos jeje. Espero tener algo funcionando pronto.
saludos!!!
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 08 de Agosto de 2010, 01:07:54

Uyy que suave Gera !! :-/

Ya practimente lo tienes  :-/ :-/ :-/

Saludos!
Título: Re: Robot equilibrista
Publicado por: Suky en 08 de Agosto de 2010, 01:47:39
Para Gera! Hay que dormir!  :D :D

Saludos!  ;-)
Título: Re: Robot equilibrista
Publicado por: willynovi en 08 de Agosto de 2010, 11:35:00
todavia no me he puesto a estudiar el tema, donde seria mas conveniente colocar el/los acelerometro y giroscopo, pero viendo un video de la construcccion del Segway, veo que lo ponen en la base, y no en la parte mas alta como se pienza, se ha analizado las ventajas y desventajas de cada una de las posiciones? Perdón si esto ya se hablo antes, todavia no termino de leerme el hilo completo  :oops:
How to Build a Segway Transporter Robot (http://www.youtube.com/watch?v=OVCzB1AZPA0&feature=related)
Título: Re: Robot equilibrista
Publicado por: gera en 08 de Agosto de 2010, 21:02:49
Yo creo que es mas conveniente poner los sensores en la base, asi cualquier movimiento rotacional le introduce menos ruido al acelerometro. Al gyro le da igual, ya q la velocidad angular es la misma para todo el robot.
Igualmente la diferencia es minima, ya que el robot jamas se inclina demasiado. El mio esta programado para dejar de responder cuando el angulo es superior a 30º
Saludoss!!
Título: Re: Robot equilibrista
Publicado por: chelitog555 en 09 de Agosto de 2010, 00:49:40
Gera, quisiera saber como esta manejando los motores, es decir si los linealizo o si realizo algun tipo de tratamiento a su respuesta.

y tambien si sigue teniendo problemas en la lectura del filtro de Kalman o como los soluciono.

gracias
Título: Re: Robot equilibrista
Publicado por: gera en 09 de Agosto de 2010, 01:17:38
Hola!! no entiendo bien la pregunta. El robot funciona basicamente asi:
Hago la lectura de los sensores, aplico el filtro y determino el angulo de inclinacion. Esa es la entrada del pid, y la salida del pid (que es un numero entre -100 y 100) la mando como parametro a una funcion que controla la salida pwm del pic y las entradas del puente H q maneja los motores (un LM293D).
O sea:
lectura de los sensores -> filtro -> angulo de inclinacion -> PID -> pwm -> puente H -> motores

El filtro de kalman comenzo a funcionar bien cuando borre estas dos lineas en la funcion state update:
//Pdot[2] = -P[1][1];
//Pdot[3] = Q_gyro;

Tal como lo hiciste vos. La verdad no entiendo por que, pero ahora funciona bien. Gracias! :)
Saludos!!
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 09 de Agosto de 2010, 17:46:00
PERO QUE EXTRÑO GERAAA.... porque sera??
"El filtro de kalman comenzo a funcionar bien cuando borre estas dos lineas en la funcion state update:
//Pdot[2] = -P[1][1];
//Pdot[3] = Q_gyro;"
Título: Re: Robot equilibrista
Publicado por: chelitog555 en 12 de Agosto de 2010, 01:12:07
esas lineas se encuentran comentadas porque al comparar el codigo con las ecuaciones mostradas en otro post, se muestra que son incorrectas.

deduccion ecuaciones filtro de Kalman en Ingles (http://coecsl.ece.illinois.edu/ge423/spring04/group9/objectives_sensors.htm)

pequena traduccion y explicacion de ecuaciones Kalman (http://rapidshare.com/files/409913055/Explicacion_Filtro_de_Kalman.docx)

sin embargo mi duda esta relacionada con la funcion que esta controlando el pwm, es decir la funcion que toma el valor entregado por el PID y lo convierte en pwm y direccion de los motores, Gera seria tan amable de indicarme si le esta aplicando el mismo valor de pwm a ambos motores directamente o si esta utilizando alguna funcion matematica o tipo de control para cada motor??

es que por ejemplo mi robot ya se equilibra pero no se mantiene completamente quieto sino que pernanece oscilando. y todavia no se como reducir esta oscilacion cualquier idea sera bien recibida.
Título: Re: Robot equilibrista
Publicado por: gera en 12 de Agosto de 2010, 02:55:04
En mi robot tengo dos salidas de PWM, una para cada motor. Pero por el momento ambas salidas son iguales, ya que todavia estoy buscando el equilibrio. Pero para cuando lo logre tengo pensado lo siguiente para controlar el desplazamiento.
Basicamente el desplazamiento se controla cambiando el angulo de equilibrio (la referencia del pid), si se cambia ligeramente hacia el frente, el robot va a avanzar, y viceversa.
Ahora, la variable que queremos controlar en este caso es el giro de las ruedas. Por lo tanto podemos usar otro pid que tenga como entrada la lectura de los encoders y como salida el angulo de equilibrio (la referencia del otro pid).

Lo que voy a decir ahora todavia no lo compruebo, pero creo que operando matematicamente, un pid que controla a otro pid, se puede resumir en un solo pid. Algo como se muestra en este link: http://www.geology.smu.edu/~dpa-www/robo/nbot/bal2.txt

Saludos!!
Título: Re: Robot equilibrista
Publicado por: gary_servin en 18 de Agosto de 2010, 01:49:25
Hola gera! Felicitaciones por los avances que estas logrando con el robot! Te cuento que yo también me propuse armar uno para mi tesis pero recién estoy en la parte de recopilación de datos! tengo una pregunta, cuales son las características de los nuevos motores que compraste y cuanto te salieron aproximadamente? Muchísimas gracias de antemano y éxitos con el robot!
Título: Re: Robot equilibrista
Publicado por: gera en 18 de Agosto de 2010, 13:15:34
Muchas gracias!!
Los motores son de 24V 1.3A y 500rpm. No he medido bien el torque pero calculo q es de unos 2kg·cm. Me salieron $125 (pesos Ar) c/u.
De todos modos te recomiendo que te centres en el tema de la IMU y el calculo del angulo, porque es lo mas critico.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: ferna12 en 24 de Agosto de 2010, 22:17:21
Hola!!!!! Soy fer y soy nuevo en este foro. Estoy encaminandome a realizar el proyecto de este fantástico robot equilibrista. Mi consulta viene por el lado del control. Quisiera un poquito de ayuda pq no estoy seguro si estoy haciendo bien las cosas pq hasta ahora nadie ah hablado del censado de la velocidad angular de las ruedas o lo que es equivalente a la velovidad lineal de mi plataforma.

En mi control necesito esa variable y se me esta complicando para medirla.

Necesitaria saber si estoy fallando en el camino de mi control :5] o como realizar esa medición de forma relativamente fácil. Ademas me gustaría una ayudita con la interrupción hacia la funcion: kalman_update() sobre cuando y como realizarla.

Gracias a todos!!!!!!!!!! Muy bueno y util este foro
Título: Re: Robot equilibrista
Publicado por: gary_servin en 08 de Septiembre de 2010, 00:50:06
Hola a todos! Acá les muestro un avance de como va quedando la estructura para el robot equilibrista que estoy armando. Faltan los bujes para acoplar el eje del motor a las ruedas (espero para mañana tenerlos ya). Un saludo a todos y les dejo las fotos!

(http://a.imageshack.us/img706/2144/imagen018fy.th.jpg) (http://img706.imageshack.us/i/imagen018fy.jpg/)     (http://a.imageshack.us/img690/7509/imagen004iu.th.jpg) (http://img690.imageshack.us/i/imagen004iu.jpg/)     (http://a.imageshack.us/img819/9993/imagen003000.th.jpg) (http://img819.imageshack.us/i/imagen003000.jpg/)

Título: Re: Robot equilibrista
Publicado por: edu_solano en 10 de Septiembre de 2010, 12:37:03
Hola a todos, me llamo Edu y soy de un pueblecito de España. Estoy empezando con este proyecto también!

Este hilo es muy interesante, me he leydo todas las paginas del tirón

De momento ya tengo el acelerometro ya he probado la adquisicion de datos con el AD del micro y parece que funcioana todo bien..poco a poco..
Y vosotros como andais? Gera hace tiempo que no veo como va tu proyecto que tal lo llevas? y tu gary? veo que lo tienes muy avanzado por las fotos jeje
Y todos los demás? como llevais el proyecto? estais atascados en algun sitio? avanzando? contadme si no es mucha molestia como les va a cada uno y asi vemos quien sigue en el proyecto y nos ayudamos mutuamente.

No dejen de trabajar en este proyecto que se puede aprender mucho de él.

Un saludo amigos!
Título: Re: Robot equilibrista
Publicado por: rivale en 22 de Octubre de 2010, 18:39:54
Hola a todos, yo estoy empezando con un robotito de este estilo, tengo unas dudas tecnicas, espero me puedan ayudar.

Quisiera saber cual es la diferencia entre un acelerometro y un giroscopio, porque se necesitan ambos?. tengo entendido que el giroscopio mide un angulo de giro, si este fuera el caso, el giro tambien se podria medir con un acelerometro, siendo mas especifico utilizando este:

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8450Q&webpageId=1084288158625737424209&nodeId=01126911184209&fromPage=tax

en las hojas de aplicaciones viene que se pueden medir varias cosas dependiedno de la configuracion del acelerometro. entonces en lugar de uzar un giroscopio se podria usar uno de estos??
Título: Re: Robot equilibrista
Publicado por: gary_servin en 22 de Octubre de 2010, 21:51:08
Hola a todos, yo estoy empezando con un robotito de este estilo, tengo unas dudas tecnicas, espero me puedan ayudar.

Quisiera saber cual es la diferencia entre un acelerometro y un giroscopio, porque se necesitan ambos?. tengo entendido que el giroscopio mide un angulo de giro, si este fuera el caso, el giro tambien se podria medir con un acelerometro, siendo mas especifico utilizando este:

http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8450Q&webpageId=1084288158625737424209&nodeId=01126911184209&fromPage=tax

en las hojas de aplicaciones viene que se pueden medir varias cosas dependiedno de la configuracion del acelerometro. entonces en lugar de uzar un giroscopio se podria usar uno de estos??

Hola rivale

El giroscopio mide la velocidad angular a la que esta sometido el mismo, el acelerometro mide la aceleración en cualquiera de los 3 (o 2 o 1, dependiendo del modelo) ejes y a través de unas transformaciones podemos obtener de estas mediciones, el angulo de inclinación.  Se utilizan los 2 debido a que el acelerometro solo es muy susceptible a "ruidos", debido al movimiento del robot, osea, al estar en movimiento el robot va a tener una componente de aceleración en alguno/s de los ejes, provocando errores en la medición del angulo, y además, el giroscopio no permite la medición absoluta del angulo debido a que no podemos conocer la posición inicial del sistema.

Espero que te haya podido ayudar!

Saludos!
Título: Re: Robot equilibrista
Publicado por: marito en 01 de Noviembre de 2010, 20:00:03
Hola a todos!!!
Leyendo en comentarios sobre el filtro Kalman encontre que han borrado dos líneas de código.
Estoy trabajando sobre un robot con un acelerometro de dos ejes y un giro de +-300º. En la primer etapa calculaba el ángulo sin aplicar el filtro y cuando puse a funcionar el filtro la señal mejoro un poco.
Le gente que elimino esas líneas no veia ninguna mejoría???
Saludos
Título: Re: Robot equilibrista
Publicado por: gera en 21 de Diciembre de 2010, 23:19:35
Buenasssss!!! Paso a mostrar mis avances jeje.
(http://img338.imageshack.us/img338/2082/pc214750.th.jpg) (http://img338.imageshack.us/i/pc214750.jpg/) (http://img233.imageshack.us/img233/2545/pc214751.th.jpg) (http://img233.imageshack.us/i/pc214751.jpg/) (http://img24.imageshack.us/img24/8551/pc214752.th.jpg) (http://img24.imageshack.us/i/pc214752.jpg/)

Al final termine usando el mbed en lugar de un pic, hice en una semana lo q me demoro 2 meses con un pic jeje. Las plaquitas de la base son los puente H q diseñe hace poco porque el l298 no se bancaba la corriente q consumen esos motores.
Bueno, mas adelante doy mas detalles.. todavia esta en fase de prueba la cosa jeje.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: gary_servin en 21 de Diciembre de 2010, 23:30:10
Excelente gera! Quedó muy bueno!  :-/ :-/ :-/
Título: Robot equilibrista
Publicado por: bernardo62001 en 31 de Diciembre de 2010, 00:06:57
  :-/
Pues échenle  un vistazo al que una amiga :g) y yo :shock: hicimos.


A ver q les parece. ;-)
Título: Re: Robot equilibrista
Publicado por: Nocturno en 31 de Diciembre de 2010, 04:02:11
Cuando está quieto se ve muy firme, casi no se mueven las ruedas.
Título: Re: Robot equilibrista
Publicado por: bernardo62001 en 31 de Diciembre de 2010, 14:03:51
Si se mantiene bien estable vdd? :P , aunque como la camara es chafita no se alcanza  a ver como
oscila  un poquito, pero aun asi me falta seguir  optimizando el control para que esta as estable todabia
 :-/




Título: Re: Robot equilibrista
Publicado por: bernardo62001 en 01 de Enero de 2011, 23:33:39
Que tal aqui esta otro video del balancing robot que  diseñamos, este tiene mejor calidad y tiene audio.

http://www.youtube.com/user/Bernard062001?feature=mhum#p/a/u/0/Vt6jrgp1i6A :mrgreen:
Título: Re: Robot equilibrista
Publicado por: gera en 01 de Enero de 2011, 23:56:44
Felicitaciones bernardo!! Se ve genial!! Muy estable!!
Yo tuve un percance con el mio que me costo el mbed (el procesador) :( Asiq va a funcionar con un pic como lo habia planeado en un principio. Pero antes de seguir voy a rediseñar los circuitos con mas medidas de seguridad para evitar q ocurra de nuevo. Probablemente alimentar por separado los circuitos y los motores.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: bernardo62001 en 02 de Enero de 2011, 14:26:59
Nosotros usamos el pic18f1320, y como puedes ver en el video alimentamos el pic con una pila de 9 [V] y el puente H está conectado a una fuente de voltaje de 12 Volts.   ;-), es decir los circuitos de control están aislados ópticamente de la parte de potencia, porque con el ruido que se genera en la alimentación debido a la conmutación, hace que el pic pierda la secuencia.
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 02 de Enero de 2011, 15:13:16
Buenasssss!!! Paso a mostrar mis avances jeje.
(http://img338.imageshack.us/img338/2082/pc214750.th.jpg) (http://img338.imageshack.us/i/pc214750.jpg/) (http://img233.imageshack.us/img233/2545/pc214751.th.jpg) (http://img233.imageshack.us/i/pc214751.jpg/) (http://img24.imageshack.us/img24/8551/pc214752.th.jpg) (http://img24.imageshack.us/i/pc214752.jpg/)

Al final termine usando el mbed en lugar de un pic, hice en una semana lo q me demoro 2 meses con un pic jeje. Las plaquitas de la base son los puente H q diseñe hace poco porque el l298 no se bancaba la corriente q consumen esos motores.
Bueno, mas adelante doy mas detalles.. todavia esta en fase de prueba la cosa jeje.
Saludos!!

Cual fue la diferencia de trabajar con el  mbed y pic para tu progreso en 2 semanas??? sin contar que ya habias ganado experiencia desarrollando tu aplicación 2 meses atras.

Que fue lo que te daño el embed?????
Título: Re: Robot equilibrista
Publicado por: gera en 02 de Enero de 2011, 19:04:08
La diferencia fue la potencia del mbed, la facilidad para programarlo, y las librerias q trae. Además que el circuito se simplifico bastante porque este trabaja a 3.3V, al igual que el modulo bluetooth, el acelerometro y el gyro.
Te muestro el codigo en C del pic, y en C++ del mbed, para q veas la diferencia en cuanto a lineas jeje.

Código del PIC
Código: C
  1. #define __PCH__ 1
  2. #include <18F452.h>
  3. #device adc=10
  4. #fuses HS,NOWDT,NOPROTECT,NOLVP
  5. #use delay(clock=20000000)
  6.  
  7. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
  8.  
  9. #include <stdlib.h>
  10.  
  11. //puerto B
  12. #define DIRR PIN_B2
  13. #define DIRL PIN_B3
  14. #define ENCODERL PIN_B4
  15. #define ENCODERR PIN_B5
  16.  
  17. //puerto C
  18. #define PWMR PIN_C1
  19. #define PWML PIN_C2
  20.  
  21. //puerto D
  22. #define MOTORL1 PIN_D0
  23. #define MOTORL2 PIN_D1
  24. #define MOTORR1 PIN_D2
  25. #define MOTORR2 PIN_D3
  26. #define LED PIN_D7
  27.  
  28. //constantes sensores
  29. #define X_OFFSET     540.0
  30. #define Y_OFFSET     490.0
  31. #define GYRO_OFFSET  402.0
  32. #define MOD          247.0
  33.  
  34. //otras constantes
  35. #define FORWARD  0
  36. #define BACKWARD 1
  37. #define STOP     2
  38.  
  39. #define N_SAMPLES    64
  40. #define PRELOAD_TMR1 65043 //10 KHz prescaler=1
  41. #define PR2 107
  42. #define UT_MAX 800
  43.  
  44. //direcciones eeprom
  45. #define KP_DIR 0x00
  46. #define KI_DIR 0x08
  47. #define KD_DIR 0x10
  48. #define RT_DIR 0x18
  49.  
  50.  
  51. //variables globales----------------
  52. float Kp=0.0,Ki=0.0,Kd=0.0;
  53.  
  54. struct BytesPID
  55. {
  56.     float rT;  //Valor del Set Point
  57.     float eT;  //Valor del Error
  58.     float iT;  //Valor del termino Integral
  59.     float dT;  //Valor del termino Derivativo
  60.     float yT;  //Valor real
  61.     float uT;  //Valor de salida del controlador
  62.     float iT0; //Valor del termino integral en t0
  63.     float eT0; //Valor del termino del error en t0  
  64. }PID = {0,0,0,0,0,0,0,0};
  65.  
  66.  
  67. long int accel_x=0,gyro_rate=0;
  68.  
  69. //variables para el filtro
  70. float P[2][2] = {{ 1, 0 },{ 0, 1 }};
  71. float R_angle = 0.6;
  72. float Q_angle = 0.001;
  73. float Q_gyro = 0.003;
  74. float q_bias=0, angle=0, gyro=0, dt=0.0005,acc_angle=0;
  75.  
  76.  
  77. float pwm_R=0, pwm_L=0;
  78.  
  79. short flag_samples=0;
  80.  
  81. //funciones-------------------------
  82. void init();
  83. void get_samples();
  84. void calculate_angle();
  85. void refresh_pid();
  86. void set_motors();
  87. void state_update();
  88. void kalman_update(float angle_m);
  89.  
  90. void write_float_eeprom(long int n, float data);
  91. float read_float_eeprom(long int n);
  92.  
  93.  
  94. #int_timer1
  95. void timer1_isr()
  96. {
  97.    flag_samples=1;
  98.    set_timer1(PRELOAD_TMR1);
  99. }
  100.  
  101. #int_rda
  102. void serial_isr()
  103. {
  104.   char key[16];
  105.  
  106.   if(kbhit())
  107.   {
  108.     gets(key);
  109.    
  110.     switch(key[0])
  111.       {
  112.          case 'p':
  113.             Kp = atof((key+1));
  114.             printf("Kp = %f\r\n",Kp);
  115.             break;
  116.          case 'i':
  117.             Ki = atof((key+1));
  118.             printf("Ki = %f\r\n",Ki);
  119.             break;
  120.          case 'd':
  121.             Kd = atof((key+1));
  122.             printf("Kd = %f\r\n",Kd);
  123.             break;
  124.          case 'r':
  125.             PID.rT = atof((key+1));
  126.             printf("rT = %f\r\n",PID.rT);
  127.             break;
  128.          case 'a':
  129.             printf("angle = %f\r\n",angle);
  130.             break;
  131.          case 'g':
  132.             write_float_eeprom(KP_DIR, Kp);
  133.             write_float_eeprom(KI_DIR, Ki);
  134.             write_float_eeprom(KD_DIR, Kd);
  135.             write_float_eeprom(RT_DIR, PID.rT);
  136.             printf("datos guardados\r\n");
  137.             break;
  138.          case 'l':
  139.             printf("rT=%f\nkp=%f\nki=%f\nkd=%f\n\r\n",read_float_eeprom(RT_DIR),read_float_eeprom(KP_DIR),read_float_eeprom(KI_DIR),read_float_eeprom(KD_DIR));
  140.             break;
  141.          case 'h':
  142.             printf("p<valor>: define la constante kp\ni<valor>: define la constante ki\nd<valor>: define la constante kd\nr<valor>: define el setpoint rT\na: devuelve el anguloactual\ng: guarda las constantes en la eeprom\nl: muestra los valores guardados en la eeprom\n\r\n");
  143.             break;
  144.          default:
  145.             printf("error: comando desconocido\r\n");
  146.             break;
  147.       }
  148.   }
  149. }
  150.  
  151.  
  152. void main()
  153. {  
  154.    delay_ms(100);
  155.    init();
  156.    
  157.    while(TRUE)
  158.    {
  159.       if(flag_samples)
  160.       {
  161.          get_samples();
  162.          calculate_angle();
  163.          if(angle < 0.7 && angle > -0.7)
  164.          {
  165.             refresh_pid();
  166.             pwm_R = -PID.uT;
  167.             pwm_L = -PID.uT;
  168.          }
  169.          else
  170.          {
  171.             pwm_R = 0;
  172.             pwm_L = 0;
  173.          }
  174.          
  175.          set_motors();
  176.          flag_samples = 0;
  177.       }
  178.       output_toggle(LED);
  179.       delay_ms(500);
  180.      
  181.    }
  182. }
  183.  
  184.  
  185.  
  186. void init()
  187. {
  188.    //E/S digitales
  189.    set_tris_a(0b111111);   //RA5,RA4,ref3V3,gyro,accelY,accelX
  190.    set_tris_b(0b11111100); //RB7,RB6,encoderR,encoderL,dirL,dirR,RB1,RB0
  191.    set_tris_c(0b10000000); //rx,tx,RC5,RC4,RC3,pwm1,pwm2,RC0
  192.    set_tris_d(0b00000000); //led,RD6,RD5,RD4,motorR2,motorR1,motorL2,motorL1
  193.    
  194.    //PWM
  195.    setup_timer_2(T2_DIV_BY_4, PR2, 1);
  196.    setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM
  197.    setup_ccp2(CCP_PWM);   // Configure CCP2 as a PWM
  198.    
  199.    //Timer1
  200.    setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_1 );
  201.    
  202.    //entradas analogicas
  203.    setup_adc_ports(AN0_AN1_AN2_AN4_VSS_VREF);
  204.    setup_adc(ADC_CLOCK_INTERNAL);
  205.    
  206.    //interrupciones
  207.    enable_interrupts(INT_RDA);
  208.    enable_interrupts(INT_TIMER1);
  209.    disable_interrupts(GLOBAL);
  210.    
  211.    set_timer1(PRELOAD_TMR1);
  212.    
  213.    Kp = read_float_eeprom(KP_DIR);
  214.    Ki = read_float_eeprom(KI_DIR);
  215.    Kd = read_float_eeprom(KD_DIR);
  216.    PID.rT = read_float_eeprom(RT_DIR);
  217.    
  218.    enable_interrupts(GLOBAL);
  219. }
  220.  
  221.  
  222. void get_samples()
  223. {
  224.    int i;
  225.    accel_x=0;
  226.    gyro_rate=0;
  227.    
  228.    for(i=0;i<N_SAMPLES;i++)
  229.    {
  230.       set_adc_channel(0);
  231.       delay_us(20);
  232.       accel_x += read_adc();
  233.      
  234.       set_adc_channel(2);
  235.       delay_us(20);
  236.       gyro_rate += read_adc();
  237.    }
  238.    
  239.    accel_x /= N_SAMPLES;
  240.    gyro_rate /= N_SAMPLES;
  241. }
  242.  
  243.  
  244. void calculate_angle()
  245. {
  246.    acc_angle = ((float)accel_x - X_OFFSET) / mod;
  247.    gyro = -((float)gyro_rate - GYRO_OFFSET);
  248.  
  249.    state_update();
  250.    kalman_update(acc_angle);
  251.    
  252.    //printf("%f,%f,%f,\n",acc_angle,gyro,angle);
  253. }
  254.  
  255.  
  256. void refresh_pid()
  257. {
  258.     PID.yT = angle;
  259.     PID.eT = PID.rT - PID.yT; //Calculo del error
  260.    
  261.     PID.iT = PID.eT + PID.iT0; //Calculo de la integral
  262.     PID.dT = PID.eT - PID.eT0; //Calculo de la derivada
  263.    
  264.     PID.uT = Kp * PID.eT + Ki * PID.iT + Kd * PID.dT; //Calculo de la señal de control
  265.    
  266.     //Evitamos que uT se sature
  267.     if(PID.uT > UT_MAX)
  268.         PID.uT = UT_MAX;
  269.     if(PID.uT < -UT_MAX)
  270.         PID.uT = -UT_MAX;
  271.    
  272.     PID.iT0 = PID.iT; //Actualizamos la integral
  273.     PID.eT0 = PID.eT; //Actualizamos el error
  274. }
  275.  
  276.  
  277.  
  278.  
  279. void set_motors()
  280. {
  281.    int dutyR=0, dutyL=0;
  282.    
  283.    if(pwm_R >= 0)
  284.    {
  285.       dutyR = (int)pwm_R;
  286.       output_high(MOTORR2);
  287.       output_low(MOTORR1);
  288.    }
  289.    else
  290.    {
  291.       dutyR = (int)(-pwm_R);
  292.       output_high(MOTORR1);
  293.       output_low(MOTORR2);
  294.    }
  295.  
  296.    if(pwm_L >= 0)
  297.    {
  298.       dutyL = (int)pwm_L;
  299.       output_high(MOTORL2);
  300.       output_low(MOTORL1);
  301.    }
  302.    else
  303.    {
  304.       dutyL = (int)(-pwm_L);
  305.       output_high(MOTORL1);
  306.       output_low(MOTORL2);
  307.    }
  308.    
  309.    set_pwm1_duty(dutyR);
  310.    set_pwm2_duty(dutyL);
  311. }
  312.  
  313.  
  314.  
  315. void state_update()   //Prediccion
  316. {
  317.   float Pdot[4];
  318.  
  319.   Pdot[0] =  - P[0][1] - P[1][0];
  320.   Pdot[1] = -P[1][1];
  321.   //Pdot[2] = -P[1][1];
  322.   //Pdot[3] = Q_gyro;
  323.  
  324.   gyro -= q_bias;
  325.   angle += gyro * dt ;
  326.  
  327.   P[0][0] += (Pdot[0] * dt) + (P[1][1]*dt*dt) + Q_angle;
  328.   P[0][1] += Pdot[1] * dt;
  329.   P[1][0] += Pdot[1] * dt;
  330.   P[1][1] += Q_gyro;
  331. }
  332.  
  333. void kalman_update( float angle_m )
  334. {
  335.   float K_0=0;
  336.   float K_1=0;
  337.  
  338.   K_0 = P[0][0] / (R_angle + P[0][0]);
  339.   K_1 = P[1][0] / (R_angle + P[0][0]);
  340.  
  341.   P[0][0] -= K_0 * P[0][0];
  342.   P[0][1] -= K_0 * P[0][1];
  343.   P[1][0] -= K_1 * P[0][0];
  344.   P[1][1] -= K_1 * P[0][1];
  345.  
  346.   angle += K_0 * (angle_m - angle);
  347.   q_bias += K_1 * (angle_m - angle);
  348. }
  349.  
  350.  
  351.  
  352. void write_float_eeprom(long int n, float data)
  353. {
  354.    int i;
  355.    for (i = 0; i < 4; i++)
  356.      write_eeprom(i + n, *(((int8*)&data + i))) ;
  357. }
  358.  
  359. float read_float_eeprom(long int n)
  360. {
  361.    int i;
  362.    float data;
  363.    for (i = 0; i < 4; i++)
  364.      *((int8*)&data + i) = read_eeprom(i + n);
  365.    return(data);
  366. }
  367.  

Código del mbed
Código: C
  1. #include "mbed.h"
  2. #include <math.h>
  3. #include <motordriver.h>
  4. #include "PID.h"
  5.  
  6. //constantes de linealidad
  7. #define GYRO_OFFSET 0.376
  8. #define X_OFFSET 0.55
  9. #define Y_OFFSET 0.51
  10. #define GYRO_GAIN 0.3
  11. #define X_GAIN 4.0
  12. #define Y_GAIN 4.0
  13.  
  14. #define Ts  0.01 //periodo de muestreo en s
  15.  
  16.  
  17. Serial cdc(USBTX,USBRX);
  18. AnalogIn acc_x(p15);
  19. AnalogIn acc_y(p16);
  20. AnalogIn gyro_rate(p17);
  21. //DigitalOut led(LED1);
  22.  
  23. Motor leftMotor(p25, p30, p29, 0); // pwm, fwd, rev, can brake
  24. Motor rightMotor(p26, p28, p27, 0); // pwm, fwd, rev, can brake
  25. PID controller(7, 0, 0, Ts); //Kc, Ti, Td, RATE
  26.  
  27.  
  28. int main()
  29. {
  30.     float x=0, y=0, gyro=0;
  31.     float angle=0, acc_angle=0;
  32.     float speed=0;
  33.    
  34.     controller.setInputLimits(-3.1, 3.1); //-pi , pi
  35.     controller.setOutputLimits(-1.0, 1.0);
  36.     controller.setBias(0.0);
  37.     controller.setMode(AUTO_MODE);
  38.     controller.setSetPoint(0);
  39.  
  40.     rightMotor.speed(0);
  41.     leftMotor.speed(0);
  42.    
  43.     while(1)
  44.     {
  45.             x = (acc_x - X_OFFSET) * X_GAIN;
  46.             y = (acc_y - Y_OFFSET) * Y_GAIN;
  47.             gyro = (gyro_rate - GYRO_OFFSET) * GYRO_GAIN;
  48.            
  49.             acc_angle = atan2(y,x);
  50.             angle = (0.9)*(angle + gyro) + (0.1)*(acc_angle);
  51.             //cdc.printf("%f,%f,%f,\n",acc_angle,gyro,angle); //graficamos
  52.            
  53.             controller.setProcessValue(angle);
  54.             speed = controller.compute();
  55.             rightMotor.speed(speed);
  56.             leftMotor.speed(speed);
  57.             //cdc.printf("%f    %f\n",angle,speed); //graficamos
  58.            
  59.             wait(Ts);
  60.     }
  61. }

El mbed se me quemo porq el PID estaba sobredimensionado, entonces las ruedas hicieron un cambio brusco de direccion y eso genero una tension inversa muy fuerte :( A pesar que los puentes H cuentan con unos transistores TIPs que tienen unos diodos de proteccion incluidos. Ademas ya tenia problemas graves de ruido en la alimentacion culpa de los motores. Por eso decidi poner alimentaciones distintas para la electronica y para los motores.
No te puedo contar la angustia cuando vi quemarse el mbed, por poco me largo a llorar... pero bueno, shit happens.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: gary_servin en 02 de Enero de 2011, 22:09:28
Que lastima lo del mbed gera :(

Tengo una pregunta, como pensas aislar la parte de potencia de la de control? con optoacopladores?

Saludos
Título: Re: Robot equilibrista
Publicado por: gera en 02 de Enero de 2011, 22:30:53
Que lastima lo del mbed gera :(

Tengo una pregunta, como pensas aislar la parte de potencia de la de control? con optoacopladores?

Saludos


Exacto, es lo q tengo en mente. Aunq todavia no se bien como lo voy a hacer. Probablemente mande las señales del microcontrolador a los puentes H por medio de optoacopladores. Lo peor q puede pasar es que queme los puentes H supongo.
Saludos!
Título: Re: Robot equilibrista
Publicado por: Suky en 02 de Enero de 2011, 22:53:08
También se pueden usar algún chip de estos (http://focus.ti.com/paramsearch/docs/parametricsearch.tsp?family=analog&familyId=897&uiTemplateId=NODE_STRY_PGE_T).  :rolleyes:

Una lastima lo del mbed  :(


Saludos!
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 02 de Enero de 2011, 23:50:15
Pues veo que si es mucha la diferencia xD.

Se me hace raro que se te quemará , he usado circuitos de potencia con la misma fuente del controlador sin problemas.

Ahora, dependiendo el driver que uses para los motores , traen un Tiempo min. entre conmutación que hay que respetar.

He utilizado los pics para controlar unos motorreductores de 12v@20A sin ningún problema.Lo que hacía al realizar un cambio de giro era disminuir rapidamente la velocidad hasta cierto punto y aplicar el freno(GND-GND)luego realizar el cambio.

Esto lo aprendi después de quemar también unos drivers xD hace ya bastantito tiempo.

Espero termines pronto tu trabajo.

Saludos
Título: Re: Robot equilibrista
Publicado por: gera en 03 de Enero de 2011, 00:37:46
Yo tampoco termino de entender como se quemo. Porq antes del mbed hay un lm7805 el cual no sufrio ningun daño. Y estoy casi seguro q el pico de tension entro por la alimentacion porq los reguladores q trae el mbed estan quemados. Tambien se me quemo un 74HC00 q lleva el puente H.

No puedo hacer lo q haces vos AKENA porq no se de antemano como tienen q actuar los motores. El PID va regulando solo la velocidad para mantener el equilibrio. Lo unico q puedo hacer es tratar de no sobredimensionar el PID para q la salida sea lo mas suave posible.

Suky, muy buen dato!! voy a ver si me puedo pedir unas muestras :wink: gracias!!
Título: Re: Robot equilibrista
Publicado por: gary_servin en 03 de Enero de 2011, 01:03:07
Excelente dato Suky! Muchas Gracias!! Ya hice el pedido de muestras a TI, ahora a esperar a que lleguen para probarlos! =D

Saludos!
Título: Re: Robot equilibrista
Publicado por: Suky en 03 de Enero de 2011, 09:59:41
Excelente dato Suky! Muchas Gracias!! Ya hice el pedido de muestras a TI, ahora a esperar a que lleguen para probarlos! =D

Saludos!

Yo particularmente utilicé el ISO7242 implementando SPI con buenos resultados.


Saludos!
Título: Re: Robot equilibrista
Publicado por: sherckuith en 22 de Enero de 2011, 04:20:53
WOW chicos este post esta increhible, felicitaciones a Gera, Suky, Red Pic, y Manolo, y a todos los demas tb q no me se los nombres jejeje, los he estado leyendo desde hace muchisimo tiempo y me encantan los proyectos que hacen, soy nuevo en este foro pero voy a ponerle todas las ganas para yo tb ponerme a aportar un poco.
Bueno, resulta que estoy haciendo mi Tesis de grado y el robot que estoy construyendo es un Explorador, pero elegi la suspencion Roker Boogi Lamda para que su morfologia sea mas estable pues aun no me arriezgo a mas porque no se mucho de mecanica y dinamica pero ahi algo hare, bueno y como veran en las fotos de la web se ve q estos robots usan un equilibrista como el que estan haciendo ustedes y me puse a pensar en q alguien ya lo habia hecho y es asi q llegue aki y sorpresa la mia lo estan haciendo justo ahora y justo las personas q mas me han alucinado con sus proyectos y es asi q me decidi hoy a armar el mio y poder aportar un poco mas, en fin, quiero comenzar y tengo todos los elementos a mi disposicion pero quiero consultarles q es mejor si uso un MQ72600 o un acelerometro Mensic de Parallax?, tengo los dos en el cajon pero nunca los he usado para algo asi sino solo para medir la inclinacion y cosas sencillas, y a parte tengo los motores de 100:1 de Superrobotica y toda la etapa de potencia ya armada y para las baterias uso un MAX1777, y hasta ahora me he puesto a cargar el boot del robot a travez del RN-41, usando programillas en CCS, creo q podria ayudar un poco tb y por eso quisiera pedirles me den una mano para ponerme al dia de su investigacion si se puede jeje.... bueno, gracias y felicitaciones!!!!

PD: Como cargo el codigo para postearlo??? ley x ahi q usan un editor pero no se como, sorry...
Título: Re: Robot equilibrista
Publicado por: gera en 03 de Febrero de 2011, 12:17:21
Hola sherckuith!!
Yo te diria q vayas por partes. Una de las piezas mas importantes del robot es la IMU, que mide el grado de inclinacion del robot a traves del acelerometro y el gyro. En este mismo hilo hay mucha informacion sobre como realizar esta medicion. Se puede hacer a traves de un filtro complementario, o del famoso filtro de kalman. Hay mucha informacion en internet.
Luego te diria q vayas por la parte mecanica, ya que la dinamica de tu robot va a definir muchos parametros, como la potencia necesaria de los motores, etc.. (que no te pase como a mi que me quede corto con los motores jeje).
Y bueno, el resto va a ir surgiendo de a poco. Cualquier duda puntual q surga podes plantearla aca. Ademas de postear tus avances ;)
saludos!!
Título: Re: Robot equilibrista
Publicado por: javimarinelli en 13 de Febrero de 2011, 12:30:03
Hola! antes que nada quería felicitar a todos los que aportaron en este tema por que me ha ayudado mucho a llevar este proyecto! en este momento me encuentro con un problema y es que no se como "medir" el tiempo que transcurre entre mediciones del girometro para así poder calcular el angulo. Estoy programando PIC en CCS si alguien me puede dar una mano estaré enormemente agradecido! En cuanto termine de armar todo publicare mi robot para que a alguien mas le sirva! Desde ya Muchas gracias!
Título: Re: Robot equilibrista
Publicado por: gera en 13 de Febrero de 2011, 13:43:23
Hola Javi,
lo que yo hice para fijar el tiempo de muestreo, fue colocar un timer que interrumpa cada 1ms y active un flag. Entonces en el bucle principal hago el muestreo cuando esta activado el flag y realizo todas las operaciones para calcular el angulo.
saludos y suerte con el proyecto!! ;)
Título: Re: Robot equilibrista
Publicado por: tarribas en 03 de Marzo de 2011, 07:44:15
Hola,

Si sirve de referencia, adjunto el robot equilibrista en que he ultimamente.

Aplicando el mismo principio, sobre dos ejes:


Un saludo,
Título: Re: Robot equilibrista
Publicado por: gera en 03 de Marzo de 2011, 14:45:24
Increible!!! Me sorprende la estabilidad y el control del robot :shock:
Aunque el q lo hizo evidentemente no tuvo q rabiar con la parte mecanica y de potencia como lo estoy haciendo yo jeje.
Me gusto ese kit de robotica, voy a ver si es factible conseguirlo en argentina a un precio razonable jeje.
saludos!!
Título: Re: Robot equilibrista
Publicado por: eric_ele en 11 de Abril de 2011, 17:08:18
hola gera te hago una consulta... lograste algo con los motores a esa potencia? que relacion tienen los engranages?
Título: Re: Robot equilibrista
Publicado por: gera en 11 de Abril de 2011, 17:59:49
hola gera te hago una consulta... lograste algo con los motores a esa potencia? que relacion tienen los engranages?

Hola!! creo q la reduccion es de 24:1 o 18:1, no recuerdo bien. Son motores de 500rpm 24V y 1.5A nominales. Para hacerlos funcionar me hice unos puente H de 5A. Los saque de esta pagina: http://www.ikalogic.com/h_bridge.php

Funcionan bien, pero explotaron un par de transistores en una ocasion. Un profesor me dijo que las resistencias que polarizan a los transistores son muy bajas, haciendolo propenso al ruido, de esta forma pudieron quedar conduciendo los transistores de una rama de la H haciendo q exploten.
En la semana me iba a ayudar a solucionar esto, y les comento como me fue.
saludos!!
Título: Re: Robot equilibrista
Publicado por: dogflu66 en 12 de Abril de 2011, 10:33:54
He estado revisando el esquema y para la tensión que utiliza no le veo fallos, yo en todo caso buscaría transistores que la Vce sea más baja.
Pensaba que a más baja impedancia mayor inmunidad al ruido. :z)
Lo que sí he podido observar es que las entradas de control no están polarizadas, y si se dejan al aire pueden provocar la destrucción del puente.
Otra cosa que no me ha gustado ha sido que en el datasheets que he revisado no viene la frecuencia máxima de trabajo, en una de las graficas hay una referencia a 0.1Mhz. Normalmente si no se hace referencia a la velocidad es que no son muy rápidos. En mi opinión no elidiría para trabajar con switching transistores de potencia de menos de 2 o 3Mhz.
Título: Re: Robot equilibrista
Publicado por: gera en 12 de Abril de 2011, 13:21:44
Yo tambien tenia por entendido que a menos impedancia mayor inmunidad al ruido. Ya vere que me dice mi profe mañana.
Trabajo el puente a una frecuencia de 1KHz, emite un ruido molesto, pero asi me mantengo lejos de los limites.
Adjunto un esquema de mi version del puente H
(http://img130.imageshack.us/img130/2324/puente.th.png) (http://img130.imageshack.us/i/puente.png/)

saludos!!
Título: Re: Robot equilibrista
Publicado por: rivale en 21 de Julio de 2011, 23:41:36
Hola Gera, lei el codigo que posteaste y tengo algunas dudas:

Código del PIC
Código: C
  1. #define __PCH__ 1
  2.  
  3. #define N_SAMPLES    64
  4. #define PRELOAD_TMR1 65043 //10 KHz prescaler=1
  5. ...
  6. ...
  7. ...
  8.  
  9. void get_samples()
  10. {
  11.    int i;
  12.    accel_x=0;
  13.    gyro_rate=0;
  14.    
  15.    for(i=0;i<N_SAMPLES;i++)
  16.    {
  17.       set_adc_channel(0);
  18.       delay_us(20);
  19.       accel_x += read_adc();
  20.      
  21.       set_adc_channel(2);
  22.       delay_us(20);
  23.       gyro_rate += read_adc();
  24.    }
  25.    
  26.    accel_x /= N_SAMPLES;
  27.    gyro_rate /= N_SAMPLES;
  28. }
  29.  





tu frecuencia de muestreo es cada 100us  :shock:, esto es posible?, no tiene que realizar todas las operaciones antes de que ocurra la siguiente interrupcion?.

y dentro de la toma de  muestras tienes 2 retardos que en suma te dan 40 us y esto lo realizas "N_SAMPLES"  veces.

que tanto influye el tiempo de muestreo en la respuesta del robot?, yo estoy haciendo un robot de este estilo y lo mas rapido que puedo muestrear es a 5ms, pero ya medi los tiempos de las operaciones y si las realiza todas antes de la siguiente interrupcion, aun asi aun no lo hago funcionar.
Título: Re: Robot equilibrista
Publicado por: gera en 22 de Julio de 2011, 09:47:43
Hola rivale!!
No se de que epoca es ese codigo, ha evolucionado bastante, sobretodo en los ultimos dias jeje. Despues de muchas pruebas descubri q la medicion mejoraba cuando bajaba la frecuencia de muestreo. Este limite me lo ponia el gyro que tiene un ancho de banda limitado (habria q ver en la hoja de datos del tuyo). Al final termine muestreando a aprox 100Hz, con muy buenos resultados.
Ademas para evitar esos delays que me decis, ya no intercalo los canales para leer los sensores, sino que cambio de canal una vez, tomo N_SAMPLES muestras, luego cambio de canal nuevamente vuelvo a muestrear, y asi. Al final solo tengo 4 o 5 retrasos. Te dejo el pedazo de codigo que estoy usando ahora:
Código: C
  1. void get_samples(){
  2.    int i=0;
  3.    
  4.    for(i=0;i<5;i++)
  5.       val[i]=0;
  6.    
  7.    // X_ACC
  8.    set_adc_channel(0);
  9.    delay_us(20);  
  10.    for(i=0;i<N_SAMPLES;i++)
  11.       val[0] += read_adc();
  12.    
  13.    // Y_ACC
  14.    set_adc_channel(1);
  15.    delay_us(20);  
  16.    for(i=0;i<N_SAMPLES;i++)
  17.       val[1] += read_adc();
  18.    
  19.    // Z_ACC
  20.    set_adc_channel(2);
  21.    delay_us(20);  
  22.    for(i=0;i<N_SAMPLES;i++)
  23.       val[2] += read_adc();
  24.    
  25.    // X_RATE
  26.    set_adc_channel(4);
  27.    delay_us(20);  
  28.    for(i=0;i<N_SAMPLES;i++)
  29.       val[3] += read_adc();
  30.    
  31.    // Y_RATE
  32.    set_adc_channel(5);
  33.    delay_us(20);  
  34.    for(i=0;i<N_SAMPLES;i++)
  35.       val[4] += read_adc();
  36.    
  37.    for(i=0;i<5;i++)
  38.       val[i] /= N_SAMPLES;
  39.    //printf("%li,%li,%li,%li,%li,\n",val[0],val[1],val[2],val[3],val[4]);
  40. }

Respondiendo tu pregunta, si tu robot trabaja con un PID, el periodo de muestreo va a influir directamente sobre todas las constantes de este. Si en un futuro cambias ese periodo, vas a tener que tunear nuevamente el PID.
Mucha suerte con tu robot, y me gustaria ir viendo tus avances :wink:
saludos!!
Título: Re: Robot equilibrista
Publicado por: rivale en 22 de Julio de 2011, 10:02:54
gracias por la respuesta gera, yo estoy muestreando a 200 Hz, pero solo tomo una muestra de cada sensor por ciclo(creo que cambiare eso), me parece que mi filtro kalman funciona bien, lo que no se es como sintonozar las constantes del PID, como le hiciste tu para encontrar los valores correctos? o como sabes en que escala deben estar aproximadamente?

como sensores usaba un mma7331(analogico de freescale), pero este murio y ahora voy a probar con uno de analog devices y mi giroscopio es un lpy510.

 voy a probar con un nuevo modelo de robot, ya que con el anterior tuve problemas con los motores y no funciono, en cuanto de muestras de vida subo un video.

Saludos
Título: Re: Robot equilibrista
Publicado por: rivale en 22 de Julio de 2011, 10:25:49
otra pregunta :oops:, porque lees tantos canales?, por lo que veo lees 2 ejes del gyro y 3 del acelerometro, los usas todos en tu filtro??
Título: Re: Robot equilibrista
Publicado por: gera en 22 de Julio de 2011, 11:25:29
El PID lo tunee a pura prueba y error jeje. En internet podes buscar métodos para hacer esto. Esta clase de robots solo necesitan control proporcional derivativo, asiq la constante Ki es siempre nula.
Para calcular el angulo solo necesitas leer dos canales: uno del gyro y uno del acelerometro. Podrias leer uno mas del acelerometro yc alcular el angulo como el arctg, pero no es necesario. Yo hice la lectura de los 5 para comprobar que funciona todo ok :P pero ahora leo solo 2.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: rivale en 22 de Julio de 2011, 11:34:54
gracias por la respuesta, esque solo sabia que se podia calcular el angulo con 1 y 2 ejes, pense que con el tercero tambien se podia hacer algo  :P.

Gracias por tu ayuda, seguire trabajando y cuando funcione lo subo.

Saludos
Título: Re: Robot equilibrista
Publicado por: rivale en 01 de Agosto de 2011, 16:56:45
Hola, pongo un video de las pruebas que hice del filtro kalman, el de la derecha(o arriba porque esta alrevez el video) es la salida del filtro

perdon por la resolucion pero lo grabe con mi telefono, y haciendo malabares para agarrar el carrito y la camara



ahora a sintonizar el PID

P.D. como vas con el tuyo Gera?
Título: Re: Robot equilibrista
Publicado por: gera en 01 de Agosto de 2011, 19:49:41
El mio esta en el cajon jaja. La facu no me da un respiro para dedicarle tiempo. Veo que tu filtro tiene un leve retraso, fijate si podes arreglar eso porq despues el robot se vuelve muy inestable.
Felicitaciones por los avances y exitos con el proyecto!! ;)
Por cierto, que tamaño va a tener el robot y que motores vas a usar??
Título: Re: Robot equilibrista
Publicado por: rivale en 01 de Agosto de 2011, 19:58:10
El mio esta en el cajon jaja. La facu no me da un respiro para dedicarle tiempo.
si, se lo que es eso :2]


los motores que voy a usar son de este tipo, tienen una velocidad de 200-250 rpms, mi prototipo actual es pequeño, es del tamaño de 2 protoboards de las pequeñas, alimentado con una beteria de 9V, como las de los cochesitos de radiocontrol
(http://img508.imageshack.us/img508/3360/dsc00027e.jpg) (http://imageshack.us/photo/my-images/508/dsc00027e.jpg/)


como podria corregir ese atraso? :huh:



Título: Re: Robot equilibrista
Publicado por: rivale en 13 de Agosto de 2011, 20:27:48
aca unos videos de mi robot, ya se queda de pie, pero si lo alejo mucho de la vertical empieza a oscilar mucho





Saludos
Título: Re: Robot equilibrista
Publicado por: gera en 27 de Septiembre de 2011, 02:52:25
Muy bueno rivale!! No habia visto tu robotito. Felicidades!
En realidad me asomaba por aca para pedir ayuda jeje.
Volvi a sacar a mi robot del cajon, y no logro hacer que se quede en equilibrio por un efecto de histeresis que hay en la medicion del angulo. Estaba probando con un filtro complementario, asiq decidi intentar nuevamente con el filtro de kalman a ver si puedo eliminar ese efecto.
El problema es q el angulo empieza a oscilar descontroladamente. Las mediciones del acelerometro y del gyro son excelentes. Intente jugar un poco con las constantes del filtro pero no hubo caso. Solo logre amortiguar un poco la oscilacion haciendo la constante R_angle=0.0001, pero de a poco comienza a descontrolarse nuevamente.
Les pego el codigo q estoy usando:

Código: C
  1. //filter variables
  2. float P[2][2] = {{ 1, 0 },{ 0, 1 }};
  3. float R_angle = 0.3; //0.6
  4. float Q_angle = 0.001;
  5. float Q_gyro = 0.003;
  6. float q_bias=0.0, angle=0, gyro=0, dt=0.02,acc_angle=0;
  7. float gyro_angle=0;
  8.  
  9. //.....
  10.  
  11. void update_angle()
  12. {
  13.    float y_acc = ((float)val[1]-Y_ACC_OFFSET)/Y_ACC_GAIN;
  14.    float z_acc = -((float)val[2]-Z_ACC_OFFSET)/Z_ACC_GAIN;
  15.    float gyro = -((float)val[3]-X_RATE_OFFSET)/X_RATE_GAIN;
  16.    float acc_angle = atan(z_acc/y_acc);
  17.    
  18.    gyro_angle += gyro * dt;
  19.    
  20.    state_update();
  21.    kalman_update(acc_angle);
  22.    
  23.    if(debug_mode)
  24.       printf("%f,%f,%f,\n",acc_angle,gyro_angle,angle);
  25. }
  26.  
  27.  
  28.  
  29. void state_update()   //Prediccion
  30. {
  31.   float Pdot[4];
  32.  
  33.   Pdot[0] =  - P[0][1] - P[1][0];
  34.   Pdot[1] = -P[1][1];
  35.   //Pdot[2] = -P[1][1];
  36.   //Pdot[3] = Q_gyro;
  37.  
  38.   gyro -= q_bias;
  39.   angle += gyro * dt ;
  40.  
  41.   P[0][0] += (Pdot[0] * dt) + (P[1][1]*dt*dt) + Q_angle;
  42.   P[0][1] += Pdot[1] * dt;
  43.   P[1][0] += Pdot[1] * dt;
  44.   P[1][1] += Q_gyro;
  45. }
  46.  
  47. void kalman_update( float angle_m )
  48. {
  49.   float K_0=0;
  50.   float K_1=0;
  51.  
  52.   K_0 = P[0][0] / (R_angle + P[0][0]);
  53.   K_1 = P[1][0] / (R_angle + P[0][0]);
  54.  
  55.   P[0][0] -= K_0 * P[0][0];
  56.   P[0][1] -= K_0 * P[0][1];
  57.   P[1][0] -= K_1 * P[0][0];
  58.   P[1][1] -= K_1 * P[0][1];
  59.  
  60.   angle += K_0 * (angle_m - angle);
  61.   q_bias += K_1 * (angle_m - angle);
  62. }
  63.  

Alguna idea de por qué pasa eso??
Gracias!
Título: Re: Robot equilibrista
Publicado por: rivale en 27 de Septiembre de 2011, 20:59:23
Hola Gera, acabo de revisar tu codigo y no le encuentro ningun error, deberia de funcionar. me da la impresion de que tu error no esta ahi.
--tu tiempo de muestreo si esta a 20ms?
--como estas viendo la respuesta de tu filtro, talvez al enviarlo a la PC tu muestreo es mas lento.
--como es la medida de tu angulo con tus 2 sensores por separado?.
Título: Re: Robot equilibrista
Publicado por: gera en 27 de Septiembre de 2011, 23:15:55
Hola Gera, acabo de revisar tu codigo y no le encuentro ningun error, deberia de funcionar. me da la impresion de que tu error no esta ahi.
--tu tiempo de muestreo si esta a 20ms?
--como estas viendo la respuesta de tu filtro, talvez al enviarlo a la PC tu muestreo es mas lento.
--como es la medida de tu angulo con tus 2 sensores por separado?.


Hola rivale! gracias por responder!
El tiempo de muestreo efectivamente es de 20ms. Pero como decis, tengo la sospecha de q ese tiempo varia cuando envio los datos a la PC. La respuesta de los sensores por separado es muy buena.
Ahora estoy usando otra funcion para el filtro de kalman que me parecio mas "elegante" y funciona bastante bien, ya no oscila. Sin embargo el robot sigue sin equilibrarse.
Voy a probar algunas cosas, creo que tengo una pequeña demora en el calculo del angulo y eso hace q no encuentre el equilibrio. Si tengo resultados positivos lo posteo (crucemos los dedos jeje)

Saludos y gracias de nuevo!!

PD: dejo el codigo del filtro por si a alguien le sirve
Código: C
  1. void update_angle(){
  2.    float y_acc = ((float)val[1]-Y_ACC_OFFSET)/Y_ACC_GAIN;
  3.    float z_acc = -((float)val[2]-Z_ACC_OFFSET)/Z_ACC_GAIN;
  4.    float x_rate = -((float)val[3]-X_RATE_OFFSET)/X_RATE_GAIN;
  5.    
  6.    float acc_angle = atan(z_acc/y_acc);
  7.    gyro_angle += x_rate * delta_t;
  8.    angle = kalman_update(x_rate, acc_angle);
  9.    
  10.    if(debug_mode)
  11.       printf("%f,%f,%f,\n",acc_angle,gyro_angle,angle);
  12. }
  13.  
  14.  
  15. // Update the State Estimation and compute the Kalman Gain.
  16. // The estimated angle is returned.
  17. float kalman_update(float gyro_rate, float accel_angle){
  18.     // Inputs.
  19.     float u = gyro_rate;
  20.     float y = accel_angle;
  21.  
  22.     // Output.
  23.     static float x_00 = 0.0;
  24.     static float x_10 = 0.0;
  25.  
  26.     // Persistant states.
  27.     static float P_00 = 0.001;
  28.     static float P_01 = 0.003;
  29.     static float P_10 = 0.003;
  30.     static float P_11 = 0.003;
  31.  
  32.     // Constants.  
  33.    
  34.     // These are the delta in seconds between samples.
  35.     const float A_01 = -0.02;
  36.     const float B_00 = 0.02;
  37.  
  38.     // Data read from 1000 samples of the accelerometer had a variance of 0.07701688.
  39.     const float Sz = 0.07701688;
  40.  
  41.     // Data read from 1000 samples of the gyroscope had a variance of 0.00025556.
  42.     // XXX The values below were pulled from the autopilot site, but I'm not sure how to
  43.     // XXX plug them into the process noise covariance matrix.  This needs to be
  44.     // XXX further explored.
  45.     const float Sw_00 = 0.001;
  46.     const float Sw_01 = 0.003;
  47.     const float Sw_10 = 0.003;
  48.     const float Sw_11 = 0.003;
  49.  
  50.     // Temp.
  51.     float s_00;
  52.     float inn_00;
  53.     float K_00;
  54.     float K_10;
  55.     float AP_00;
  56.     float AP_01;
  57.     float AP_10;
  58.     float AP_11;
  59.     float APAT_00;
  60.     float APAT_01;
  61.     float APAT_10;
  62.     float APAT_11;
  63.     float KCPAT_00;
  64.     float KCPAT_01;
  65.     float KCPAT_10;
  66.     float KCPAT_11;
  67.  
  68.     // Update the state estimate by extrapolating current state estimate with input u.
  69.     // x = A * x + B * u
  70.     x_00 += (A_01 * x_10) + (B_00 * u);
  71.  
  72.     // Compute the innovation -- error between measured value and state.
  73.     // inn = y - c * x
  74.     inn_00 = y - x_00;
  75.  
  76.     // Compute the covariance of the innovation.
  77.     // s = C * P * C' + Sz
  78.     s_00 = P_00 + Sz;
  79.  
  80.     // Compute AP matrix for use below.
  81.     // AP = A * P
  82.     AP_00 = P_00 + A_01 * P_10;
  83.     AP_01 = P_01 + A_01 * P_11;
  84.     AP_10 = P_10;
  85.     AP_11 = P_11;
  86.  
  87.     // Compute the kalman gain matrix.
  88.     // K = A * P * C' * inv(s)
  89.     K_00 = AP_00 / s_00;
  90.     K_10 = AP_10 / s_00;
  91.    
  92.     // Update the state estimate.
  93.     // x = x + K * inn
  94.     x_00 += K_00 * inn_00;
  95.     x_10 += K_10 * inn_00;
  96.  
  97.     // Compute the new covariance of the estimation error.
  98.     // P = A * P * A' - K * C * P * A' + Sw
  99.     APAT_00 = AP_00 + (AP_01 * A_01);
  100.     APAT_01 = AP_01;
  101.     APAT_10 = AP_10 + (AP_11 * A_01);
  102.     APAT_11 = AP_11;
  103.     KCPAT_00 = (K_00 * P_00) + (K_00 * P_01) * A_01;
  104.     KCPAT_01 = (K_00 * P_01);
  105.     KCPAT_10 = (K_10 * P_00) + (K_10 * P_01) * A_01;
  106.     KCPAT_11 = (K_10 * P_01);
  107.     P_00 = APAT_00 - KCPAT_00 + Sw_00;
  108.     P_01 = APAT_01 - KCPAT_01 + Sw_01;
  109.     P_10 = APAT_10 - KCPAT_10 + Sw_10;
  110.     P_11 = APAT_11 - KCPAT_11 + Sw_11;
  111.  
  112.     // Return the estimate.
  113.     return x_00;
  114. }
  115.  
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Septiembre de 2011, 01:01:41
Hola Gera, el problema no sera tu controlador?.

yo logre que se quedara en equilibrio con un simple controlador on-off, oscila mucho pero no se cae, esto te serviria para ver si tu robot es controlable, a mi me ayudo basante esa prueba

mañana te pongo un video para que veas la respuesta y le doy una leida a tu codigo

Saludos
Título: Re: Robot equilibrista
Publicado por: gera en 28 de Septiembre de 2011, 01:08:27
Vengo de hacer las pruebas, sin exito :(
La medicion del angulo mejoro bastante, asiq empiezo a descartar eso. El gran problema q tengo ahora es el tuning del PID. Si pongo una hago kp muy pequeña, el robot empieza a caer y no logra recuperarse, si es muy grande, el robot empieza a oscilar como tonto y entra muchisimo ruido mecanico a los sensores.
Le puse un poco mas de peso arriba al robot y mejoro un poco. Empiezo a creer que la falla esta en la parte mecanica. Aun q tengo una version mini del robot que esta montado sobre la misma PCB y tampoco funciona... empieza a frustrarme grr.

Gracias por el apoyo rivale! Mañana subo unos videos de mis robots a ver si ustedes ven algo q yo no. Saludos!!
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Septiembre de 2011, 11:02:57
Hola Gera, aca un video del funcionamiento de mi filtro kalman


Y aca te dejo un video de la prueba que hice con un controlador On-Off, como veraz el carrito logra mantenerse en equilibrio con el controlador mas simple que hay. la respuesta no es muy buena pero esto te servira para ver si tu sistema es controlable, es decir, si la parte mecanica esta bien.

Cual es el que valor le estas poniendo a tu constante proporcional?. yo lo que hice fue empezar con valores grandes hasta que el carrito empezara a mantener el equilibrio aunque vibraba mucho ya que el pwm se saturaba muy pronto, posteriormente le vas incrementado a la constante integral y puedes ir bajando a la contante proporcional.


Saludos
Título: Re: Robot equilibrista
Publicado por: gera en 29 de Septiembre de 2011, 13:45:09
Muy bueno rivale!! Me llega a dar envidia como funciona tu robot jaja.
Bueno, acabo de terminar de editar un video donde muestro todas las caracteristicas de mi robot. En la parte donde muestro el funcionamiento de los sensores, la captura de pantalla se ve un poco trabada, pero la lectura es mucho mas rapida en realidad.


Espero tus comentarios, gracias!
Título: Re: Robot equilibrista
Publicado por: Suky en 29 de Septiembre de 2011, 14:47:55
Externamente, viendo los dos modelos, el de gera parece ser el más difícil de controlar. Me baso en la forma física del robot, una pequeña desviación de la vertical implica un mayor momento a contrarrestar, entonces el controlador tiene que ser mucho más rápido y preciso. Gera, has ido variado el periodo de muestreo y control?


Saludos!
Título: Re: Robot equilibrista
Publicado por: juani_c en 29 de Septiembre de 2011, 16:08:17
lindo el bichito,
una pequeña desviación de la vertical implica un mayor momento a contrarrestar,

tal vez seria buena idea poner las baterias más abajo y disminuir así el momento
Título: Re: Robot equilibrista
Publicado por: gera en 29 de Septiembre de 2011, 20:10:57
Externamente, viendo los dos modelos, el de gera parece ser el más difícil de controlar. Me baso en la forma física del robot, una pequeña desviación de la vertical implica un mayor momento a contrarrestar, entonces el controlador tiene que ser mucho más rápido y preciso. Gera, has ido variado el periodo de muestreo y control?


Saludos!
Hola suky!!
Cuando diseñe el robot, tome en cuenta el hecho de que es mas facil balancear un martillo con la cabeza hacia arriba, ya que de este modo el momento de inercia es mayor y tiende a caer mas lentamente, dandonos mas tiempo para hacer las correcciones. Por eso es tan alto y tiene las baterias arriba. Sin embargo he visto varios diseños de poca altura que funcionan bastante bien (una patineta entre ellos). Asiq acabo de cortarle unos 10 cm a ver si mejora. (al robot grande)
En un principio la frecuencia de muestreo era lo mas alta posible, si no mal recuerdo de 1kHz. Pero investigando lei que la medicion del gyro podia no ser valida a frecuencias de muestreo tan altas, por lo tanto baje la frecuencia a 50Hz segun la recomendacion de un chico que usaba el mismo gyro q yo. Voy a probar con distintos periodos a ver si mejora ;)

lindo el bichito,
tal vez seria buena idea poner las baterias más abajo y disminuir así el momento

Gracias! Probe colocando las baterias en la base del robot, pero es mucho mas estable con las baterias arriba. Aunque creo que un peso distribuido mejoraria la estabilidad. Voy a probar distintas distribuciones del peso a ver cual es mejor.

Muchas gracias por sus consejos!!
Título: Re: Robot equilibrista
Publicado por: rivale en 29 de Septiembre de 2011, 21:42:30
Externamente, viendo los dos modelos, el de gera parece ser el más difícil de controlar. Me baso en la forma física del robot, una pequeña desviación de la vertical implica un mayor momento a contrarrestar

En efeto suky por ser mas alto el momento generado es mayor, pero como comenta gera con esta configuracion tiene la ventaja de que cae mas lento(asi como el martillo), entonces la constante de proporcionalidad no necesita ser muy grande.


Gracias! Probe colocando las baterias en la base del robot, pero es mucho mas estable con las baterias arriba. Aunque creo que un peso distribuido mejoraria la estabilidad. Voy a probar distintas distribuciones del peso a ver cual es mejor.


En realidad me parece que el colocar las bateias arriba o abajo solamente va a cambiar la relacion de tus contantes para el control, pero deberia funcionar de cualquier forma.

algunos comentarios:
--se ve que tu robot reacciona mejor hacia un lado que hacia el otro, talvez tu punto de equilibrio no esta bien o tu centro de masa esta un poco fuera de la vertical
--cuando lo empujas se lo alcanza a compensar pero solo en angulos muy pequeños, si lo inlcinas mas el robot se cae, yo tuve el mismo problema con la version grande de mi robot, pero mi problema fue que los motores no daban el torque necesario, en el tuyo me parece que son tus contantes.
--puedes probar poniendo al maximo tu pwm en cuanto se sale de equilibrio(un control on-off)
--tambien puedes tratar de linealizar tu pwm para que en cuanto se salga de tu rango de equilibrio los motores empiecen a partir de su pwm minimo.


me gusto mucho tu interfaz, te recomiendo que hagaz la grafica de la salida de tu controlador, te sirve mucho para analizar que pasa con tu pwm ante la variacion del angulo.

te pongo un video que hice de las graficas de mi robot, tal vez te sirva para ver como es mi respuesta(aunque este video fue practicamente solo con la constante proporcional)

la grafica azul es el angulo y su escala es la izquierda, y la roja es mi pwm y su escala esta a la derecha




Título: Re: Robot equilibrista
Publicado por: Nocturno en 09 de Octubre de 2011, 01:44:01
Gera, mira este equilibrista, se parece mucho al tuyo y funciona estupendamente:
http://www.logos-electro.com/blog/2011/9/25/zigroller-project-hardware.html

Aquí el vídeo:
http://www.logos-electro.com/blog/tag/zigroller
Título: Re: Robot equilibrista
Publicado por: gera en 09 de Octubre de 2011, 01:56:21
Gera, mira este equilibrista, se parece mucho al tuyo y funciona estupendamente:
http://www.logos-electro.com/blog/2011/9/25/zigroller-project-hardware.html

Aquí el vídeo:
http://www.logos-electro.com/blog/tag/zigroller

Es cierto! Inclusive es un poquito mas pequeño que el mio, al menos los motores y las ruedas. Me esta empezando a frustrar esto, todos parecen hacerlo con facilidad y yo llevo un fracaso tras otro jaja. Pero bueno, al menos se que se puede, es cuestion de seguir intentando.
Por el momento volvi a menter el robot al cajon porque estoy preparando las ultimas materias de mi carrera. Pero mientras voy leyendo cosas y anotando ideas para cuando le vuelva a meter mano. Descuiden que no me voy a ir de este mundo sin hacerlo funcionar jeje.

EDIT:
aca esta el programa que ejecuta ese robot, y una explicacion del mismo, por si alguien quiere ;)
http://www.logos-electro.com/blog/2011/10/4/zigroller-project-software.html

Al parecer no soy el unico al que le dio dolores de cabeza este robotito jejeje
Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 09 de Octubre de 2011, 17:28:16
Hola Gera!

Estoy armando una plataforma pequeña y me han gustado los motorreductores que usaste.

¿Te han salido buenos?
¿Tienen buena calidad?

Son los del GERWAY

Me interesan los de 250 rpm
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=12748.0;attach=16876)

Saludos!
Título: Re: Robot equilibrista
Publicado por: rivale en 09 de Octubre de 2011, 23:45:18
Gera, si esta bien ubicado tu punto de equilibrio?
Título: Re: Robot equilibrista
Publicado por: gera en 10 de Octubre de 2011, 13:02:47
Hola Gera!

Estoy armando una plataforma pequeña y me han gustado los motorreductores que usaste.

¿Te han salido buenos?
¿Tienen buena calidad?

Son los del GERWAY

Me interesan los de 250 rpm

Saludos!
Hola AKENAFAB!! Yo tengo dos pares de estos motores, un par de 430rpm con reduccion de 30:1 y otro par de 120rpm con reduccion de 100:1. Son de muy buena calidad, la verdad que sorprende para el tamaño que tienen. Los use en la version pequeña del gerwey y en un robot seguidor de linea y andan de lujo!

Gera, si esta bien ubicado tu punto de equilibrio?
Esta mas o menos en el cetro, pero de no ser asi creo que no importa, porq vario el setpoint del PID y listo, no? Al menos eso vengo haciendo jeje.
Saludos!
Título: Re: Robot equilibrista
Publicado por: MGLSOFT en 10 de Octubre de 2011, 15:09:39
Citar
Esta mas o menos en el cetro, pero de no ser asi creo que no importa, porq vario el setpoint del PID y listo, no? Al menos eso vengo haciendo jeje.
Saludos!

Tendras bien hecho el ajuste del PID ??
Título: Re: Robot equilibrista
Publicado por: gera en 10 de Octubre de 2011, 17:54:07
Citar
Esta mas o menos en el cetro, pero de no ser asi creo que no importa, porq vario el setpoint del PID y listo, no? Al menos eso vengo haciendo jeje.
Saludos!

Tendras bien hecho el ajuste del PID ??

Probablemente no jeje. Pero desconfio mas de la lectura de los sensores, porq cuando me conecto al robot por puerto serie para graficar la lectura de los mismos, el angulo parece estar bien calculado. Pero cuando configuro el PID solamente proporcional (kd=0 ki=0), la respuesta de los motores es como si hubiera constante derivativa distinta de 0. Y eso puede deberse a un mal calculo de la ganancia del gyro.
Estuve leyendo sobre metodos para calibrar el gyro (http://enaweb.eng.yale.edu/drupal/node/219), y dado que es dificil reproducir un valor conocido de velocidad angular, no queda otra que confiar en los valores brindados por la hoja de datos. Sin embargo estoy considerando fabricar una plataforma giratoria con unos encoders y poner el robot arriba (total es inalambrico).
Título: Re: Robot equilibrista
Publicado por: gera en 12 de Octubre de 2011, 20:53:36
Buenas! Paso a contarles las ultimas noticias. Resulta que le escribi al compadre que hizo el zigroller (http://www.logos-electro.com/blog/2011/9/25/zigroller-project-hardware.html) y me ayudo bastante.

Resulta q cometi muchisimos errores (como yo sospechaba, en la lectura de los sensores). Vamos por partes como dijo jack el destripador:

1- Yo calibre el gyro experimentalmente, integrando su lectura para obtener el angulo, y comparando este con el calculado por el acelerometro. Pero resulta que cuando el robot esta en modo debug (graficando), el periodo de muestreo sube a unos 30ms (probablemente por el printf). Entonces el calculo del angulo era correcto solo cuando estaba graficando, de otro modo era erroneo. Esto pude comprobarlo cambiando el estado de un pin cada vez que tomaba las muestras y mirando en el osciloscopio.

2- La frecuencia de muestreo que yo estaba utilizando era de 50Hz, esto se debe a que una version mas vieja del robot usaba como gyro el LY530ALH que tenia un ancho de banda de 140Hz. Pero el gyro que uso ahora (IDG-500) es de 1KHz y tiene un filtro pasabajo con frecuencia de corte de 140Hz. Por lo tanto la frecuencia de muestreo tiene q ser al menos el doble de eso (por el teorema de Nyquist, para evitar aliasing). Lo ideal serian 400Hz.

3- Tambien estaba utilizando la salida amplificada del gyro que tiene un rango dinamico de +-110º/s. Es demasiado sensible, y cuando el robot da uno de esos golpes, puede que se sature. Asique ahora voy a utilizar la salida normal que tiene un rango de +-500º/s.
4- Mi codigo es muy complejo, para calcular el angulo utilizo el arcotangente, mas la linea de comando, el modo grafico etc... pierdo valiosos milisegundos. Por lo tanto pienso simplificar el codigo al maximo eliminando todas esas cosas inutiles.

Bueno, eso es todo. Dispongo de muy poco tiempo, por lo tanto no pude hacer esas correcciones, pero de a poco.

Saludos y espero q a alguno le sirvan mis errores para no cometerlos jeje.
Título: Re: Robot equilibrista
Publicado por: rivale en 12 de Octubre de 2011, 21:52:35
Hola gera, que bueno que ya tienes por donde continuar, ahora que lo mensionas yo tambien tuve ese problema con el muestreo. tuve que medir los tiempos para saber excataqmente cuanto tardaba cada cilo. para esto use el isis.

Pues a seguir adelante, que aun nos falta hacer que se mueva libremente!! :mrgreen:
Título: Re: Robot equilibrista
Publicado por: marito en 25 de Noviembre de 2011, 10:34:14
Hola Gera,yo también estoy trabajando sobre un robot equilibrista.

Con respecto al cálculo de la medición con el giro, realizo la medición del tiempo de ciclo en cada uno de estos, de este modo independizo esta variable de las posibles modificaciones que realice en el programa. Actualmente, utilizando un PIC16F876A a 20 MHz, y comunicando via serie valores a una pc para graficar, tengo un tiempo medio de ciclo de 25mseg (medidos en simulador y con osciloscoipo). Estoy trabajando en un nuevo circuito de control en el cual voy a usar un PIC18F4550 para tratar de reducir el tiempo de ciclo trabajando a 48MHz.

En lo que tiene que ver al cálculo del ángulo con el acelerómetro, comencé usando la medición de dos ejes integrando las mismas con el arcotangente; pero este cálculo  aumentaba demasiado el tiempo de ciclo. Por lo cual actualmente estoy usando directamente un solo eje, perpendicular a la estructura del robot. Obtuve mejores resultados con un solo eje que con el arcotangente de dos.

Hasta el momento, he conseguido que el robot se mantenga en pie, pero se desplaza demasiado. Por lo cual, mi idea es reducir el tiempo del ciclo de control cambiando el PIC como te mencionaba, y por otro lado, utilizar la lectura de los encoders de los motores de las ruedas para implementar un segundo lazo de control del desplazamiento de la estructura.

Espero que mi info pueda ser util en algo.

Saludos
Título: Re: Robot equilibrista
Publicado por: rivale en 25 de Noviembre de 2011, 12:35:06
creo que seria mejor tener un tiempo de muestreo fijo. pon un video de tu robot para ver que tanto se desplaza tu robot, yo tengo un tiempo de muestreo de 10 ms y lo puedo bajar hasta 2m usando un 4550
Título: Re: Robot equilibrista
Publicado por: marito en 25 de Noviembre de 2011, 12:46:28
Hola Rivale, este finde preparo un video.

Cual es el tiempo de ciclo de tu programa? Con el PIC16F876A que estoy usando hasta ahora no logré bajar el ciclo de mi programa de los 25mseg, con comunicación serie incluida.Ya tengo casi todo listo para montar la placa con el 4550 para tratar de bajar estos tiempos. Te parece que se puede mejorar la estabilidad con una variación de +- 15mseg en el ciclo de control?

Que beneficio tiene hacer el muestreo del giro con un ciclo fijo? Porque se estaría enviando una referencia poco fiable a los motores en caso de que el ciclo de programa sea menor al tiempo de muestreo o se estarían tomando muestras en vano en caso de que el ciclo de programa sea mayor al de muestreo. Estás de acuerdo?

Saludos!
Título: Re: Robot equilibrista
Publicado por: rivale en 25 de Noviembre de 2011, 13:01:38
yo lo que hago es que cada que tomo una muestra realizo el codigo del controlador y del filtro, es decir solo despues de cada muestra cambio la velocidad de los motores. yo logre un tiempo de muestreo de 10 ms ya con la comunicacion rs232 incluida, envio 2 flotantes hacia la pc, sin el envio de datos mi tiempo lo puedo bajar hasta 2[ms]
Título: Re: Robot equilibrista
Publicado por: gera en 25 de Noviembre de 2011, 15:34:24
Marito, si tu robot mantiene el equilibrio, creo que no es necesario aumentar el tiempo de muestreo ni nada, solo con implementar el otro lazo de control con los encoders se va a quedar quieto.
A mi el tiempo de muestreo me aumenta muchisimo cuando uso el puerto serie porq envio varios flotantes y en un formato especial para despues poder graficar. Pero necesito graficar para calibrar el gyro. Tal vez eso de medir el tiempo que toma cada ciclo de muestreo me ayude, de modo que cuando no necesite graficar mas, no varie la medicion del gyro. Como haces para medir ese tiempo? usas un timer?
Espero el video ;)
Título: Re: Robot equilibrista
Publicado por: marito en 29 de Noviembre de 2011, 08:27:46
Hola Gera,

Para graficar conseguí una aplicación de excel a la que envio los datos que quiero graficar(como máximo 3). Lo bueno es que con un printf y la aplicación de excel ya estoy viendo los valores ingresados directamente en una tabla excel, no se como estas graficando vos?

Para calcular el tiempo de ciclo de programa, uso el timer0 y la función get_timer0.

Con respecto a cambiar el micro, uno de los motivos es tratar de reducir los tiempos y por otro lado, con el PIC16F876A no he conseguido leer los valores actuales de los encoders, tengo la placa MD25 comunicada vía I2C. Los ejemplos que se pueden conseguir están hechos con el PIC18F4550, por lo que vale la pena el intento.

Saludos!

Queda pendiente que suba el video!
Título: Re: Robot equilibrista
Publicado por: rivale en 29 de Noviembre de 2011, 12:37:18
la tarjeta md25 se comunica via i2c, para esto solo necesitas cualquier micro con ese protocolo, no es necesario un 18F
Título: Re: Robot equilibrista
Publicado por: marito en 29 de Noviembre de 2011, 12:54:54
Si, actualmente la estoy comunicando con un 16F876A, le puedo enviar la referencia pero no puedo leer los encoders, y como los ejemplos de la web del proovedor están echos para un 18F4550, decidi cambiar el micro.
Título: Re: Robot equilibrista
Publicado por: gera en 29 de Noviembre de 2011, 18:36:07
como estas graficando vos?

Yo grafico con un programita q hice en processing. Esta bueno porq eso me permite manipular la señal en la PC. En las primeras pruebas mandaba la señal en bruto del micro y en la PC aplicaba los filtros y eso.

Citar
Para calcular el tiempo de ciclo de programa, uso el timer0 y la función get_timer0.

Con ese timer0 solo podes medir 65.536 ms cierto? Utilizas la interrupcion para saber si te excediste de ese tiempo?

Citar
Con respecto a cambiar el micro, uno de los motivos es tratar de reducir los tiempos y por otro lado, con el PIC16F876A no he conseguido leer los valores actuales de los encoders, tengo la placa MD25 comunicada vía I2C. Los ejemplos que se pueden conseguir están hechos con el PIC18F4550, por lo que vale la pena el intento.

Podrias utilizar el pic16f877a que es muy similar al 876 y tiene i2c. Si programas en CCS, podes usar i2c por software.

Saludos!
Título: Re: Robot equilibrista
Publicado por: marito en 30 de Noviembre de 2011, 10:57:14
Gera,

Citar
Con ese timer0 solo podes medir 65.536 ms cierto? Utilizas la interrupcion para saber si te excediste de ese tiempo?

El tiempo que podés medir con el Timer0 depende del preescaler que utilices; yo configure el mío en 128, entonces el tiempo con cada desbordamiento del Timer0 (256 instrucciones) es : 256*256*4/20MHz. Con cada desbordamiento incremento un contador.
Ahora, cada instrucción, tiene un tiempo de 256*4/20MHz, cada vez que quiero calcular el tiempo con la función gettimer0 conozco cuantas instrucciones van ejecutandose hasta el momento. Entonces del tiempo de instruciones sumado al tiempo de desbordamientos del timer0, obtengo el tiempo de mi ciclo de programa.

Espero haber sido claro.

Por otro lado, aclaro que estoy usando la comunicación I2C con el PIC16F876A, pero no logre leer los encoders, si logre controlar los motores

Saludos.
Título: Re: Robot equilibrista
Publicado por: gera en 30 de Noviembre de 2011, 11:41:23
Clarisimo, muchas gracias Marito!!
Con respecto a los encoders, cual es exactamente el problema? los probaste fuera de la placa con un osciloscopio para ver si funcionan?
Título: Re: Robot equilibrista
Publicado por: rivale en 30 de Noviembre de 2011, 15:22:51
Con respecto a los encoders, cual es exactamente el problema? los probaste fuera de la placa con un osciloscopio para ver si funcionan?

el problema no creo que sean sus encoders, esta usando una tarjeta controladora de motores, que esta hecha con un pic presisamente jeje. me parece que el problema es al leer los datos, tendrias que checar como estas enviando la direccion y la lectura del registro de los encoders.
Título: Re: Robot equilibrista
Publicado por: Diego Gonzalez en 08 de Diciembre de 2011, 17:37:20
Excelentisimo tema. Me lo he tragado nuevamente desde sus inicios :-/ :mrgreen:

A ver Nocturno si te da por acabar el pobrecito bicho que te mira con carita de pena desde el cajon.

Y mi admiracion por los desarrollos aqui mostrados. son increibles.

Hace meses que me he metido de nuevo con la electronica, y he decidido probar sensores y sensores, a la par que seguir aprendiendo programacion, protocolos etc, y es por eso que en su dia lei este tema, pero ahora lo releo con mas interes, ya que me entero de bastantes mas terminos que antes :D

En mis pruebas con el giroscopo, acuso una deriva muy grande, diferencias de aceleracion angular implican calculos de giro erroneos que acumulan error. Aun no le he puesto un aclerometro para aplicar filtros, pero una pregunta basica. ¿que tasa de muestreo se suele emplear en estos robots, o el segway, etc? De momento lo hago por interrupciones exactas del timer, pero no sé. son mis primeros pasos :lol:

Un afectuoso saludo
Título: Re: Robot equilibrista
Publicado por: rivale en 08 de Diciembre de 2011, 18:30:28
Hola diego, en particular los tiempode de muestro que yo uso son de 10 ms y de 5ms, y los muestreos los doy con una interrupcion por timer para asegurar que siempre sea el mismo tiempo de muestreo.
Título: Re: Robot equilibrista
Publicado por: gera en 08 de Diciembre de 2011, 19:35:55
Para evitar deriva tenes que calibrar muy bien tu gyro. En la hoja de datos esta todo lo q necesitas para hacerlo. Tenes que ver que valor lee el ADC cuando el gyro esta estatico y de ahi calculas el OFFSET, y despues calcular la GANANCIA segun la sensibilidad del gyro.
Como yo soy flojo y no tenia ganas de sacar cuentas, hice un programa muy simple que muestrea cada 15ms y manda los valores "en crudo" a la PC. Para calcular el offset simplemente dejo todo quieto y veo que valor medio devuelve el gyro, y para calcular la ganancia empiezo a jugar con los valores hasta q coincidan con las lecturas del acelerometro.
Ya voy a subir un videito y algo de codigo.
Saludos!!
Título: Re: Robot equilibrista
Publicado por: Diego Gonzalez en 08 de Diciembre de 2011, 19:39:22
Muchas gracias a los dos.

Gera es la metodologia que estaba siguiendo. De momento lei por el terminal el valor que me daba la conversion, y ese mismo valor se lo restaba para eliminar el offset, pero como aun no tengo acelerometro conectado junto al gyro pues la deriva es inevitable. Incluso con el calor cambia (como anuncian las hojas de caracteristicas, y como pasa con cualquier circuito), pero ya es un avance que funcione bien jeje

Esto anima a uno a meterse con ste proyecto, :D

Un saludo y graciassss
Título: Re: Robot equilibrista
Publicado por: gera en 08 de Diciembre de 2011, 20:02:59
Es cierto, yo cada tanto tengo q reajustar el offset porque varia. Igual cuando utilices un filtro (complementario o de kalman) que fusione el gyro con el acelerometro, no va a ser problema la deriva. De curioso, qué gyro estas usando?
Título: Re: Robot equilibrista
Publicado por: Nocturno en 07 de Marzo de 2012, 17:16:36
Este robot equilibrista (http://blog.tkjelectronics.dk/2012/03/the-balancing-robot/) es muy estable

Título: Re: Robot equilibrista
Publicado por: marito en 07 de Marzo de 2012, 19:10:33
Muy bueno! Yo todavía sigo intentando equilibrar el mío! Ahora estoy en la etapa de mudar el controlador, de un pic 16f a uno 18f!

Título: Re: Robot equilibrista
Publicado por: marito en 12 de Marzo de 2012, 03:20:46
Hola a todos!

Quisiera saber si alguien ha usado un pic de la línea 18F para el robot equilibrista?

Saludos!
Título: Re: Robot equilibrista
Publicado por: rivale en 12 de Marzo de 2012, 13:52:11
Yo tengo implementado mi robot con un 18f4550 y funciona bien.
Título: Re: Robot equilibrista
Publicado por: marito en 12 de Marzo de 2012, 14:38:37
Hola Rivale!

Quisiera saber si estás usando algún bootlader para descargar el programa?

Estoy intentando hacer un bootloader serie pero no consigo que funcione!
Título: Re: Robot equilibrista
Publicado por: rivale en 12 de Marzo de 2012, 14:41:39
programo mi micro directamente con el pickit 3, tu problema es para cargar el programa? o alguna secuencia esta mal?
Título: Re: Robot equilibrista
Publicado por: marito en 12 de Marzo de 2012, 14:59:34
Mi problema es para cargar el programa.

Antes usaba el PIC16F876A, y con un bootloader serie todo funcionaba bien.

Ahora hice una placa con el 18F4550, ya que tiene mayar velocidad de procesamiento; pero no consigo que el bootloader serie me funcione! Intente con el tinybootloader y con el DS30Loader. Con ninguno lo pude hacer funcionar!
Título: Re: Robot equilibrista
Publicado por: rivale en 12 de Marzo de 2012, 15:03:25
Depende de que tipo de bootloader estes usando, pra el 4550 el mas comun es el cdc por usb, pero en particular no lo he usado. te recomiendo buscar en el foro como usar los diferentes bootloader
Título: Re: Robot equilibrista
Publicado por: marito en 12 de Marzo de 2012, 15:08:44
Si, he intentado con el CDC USB. Pero necesito graficar a través del mismo puerto, y me genera problemas entre el bootloader y el programa que le cargo en el cual envio señales para graficar. Este es el motivo por el cual recurro al bootloader serie que tanto dolor de cabeza me está dando!
Título: Re: Robot equilibrista
Publicado por: marito en 28 de Mayo de 2012, 15:53:24
Hola gente!

Estoy ajustando el control de mi robot equilibrista. Tengo montada una placa con el PIC18F4550, el ángulo lo estoy midiendo con un eje de un acelerómetro ADXL330 y un giróscopo de un eje MLX90609. Uso un conversor ADC de 10 bits. Mido el ángulo continuamente con ambos elementos y obteno el ángulo de inclinación con el siguiente cálculo:

Código: [Seleccionar]
angulo = (angulo+ang_giro)*0.9 + ang_acel *0.1;
Es decir, integro la medición de ambos sensores.

Finalmente uso un controlador PID. He usado un pulsador para ajustar en primer lugar la ganancia proporcional, luego la derivativa y finalmente la integral. Realice tres ciclos de ajustes, es decir, ajuste las tres ganancias y comencé nuevamente la secuencia de ajuste fino de estas.

Hasta el momento no he logrado estabilizar el robot, se tambalea hacia un lado, luego hacia el otro y después de avanzar unos centímetros a toda velocidad se cae...

Estoy pensando en hacer un ajuste de la ganancia proporcional con dos valores, uno para ángulos pequeños (menor valor de ganancia) y uno para ángulos mayores.


Pero se me terminan las ideas... alguien tiene alguna sugerencia que pueda probar para lograr mantener la estabilidad? Gracias!!!
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 16:03:17
no entendi bien como calculas el angulo, ya checaste que este este bien calculado y no sea afectado por las vibraciones?
Título: Re: Robot equilibrista
Publicado por: marito en 28 de Mayo de 2012, 16:07:18
Para calcular el angulo mido la velocidad angular con el giróscopo y la multiplico por el tiempo de ciclo de lectura, con eso obtengo la variación del ángulo durante el último ciclo. Integro este valor con el valor medido con el acelerómetro.

Integro un 90% del ángulo medido con el giro y un 10% del valor medido con el acelerómetro.
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 16:11:43
supongo que sumas el angulo calculado del giro con el angulo que ya tenias antes, y que pasa con las vibraciones?, no te afectan la medicion del angulo?
Título: Re: Robot equilibrista
Publicado por: marito en 28 de Mayo de 2012, 16:13:59
exacto, hago esa suma  con las lecturas del giroscopo, y elimino la deriva con el acelerómetro.

No observo que las vibraciones afecten el cálculo del ángulo, ya que el giro filtra las mismas
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 16:17:00
entonces el problema esta en tu funcion del controlador, para calibrarlo primero calibra el proporcional, solo con este el robot debe ser capaz de mantener el equilibrio, ya despues con los otros haraz mas suave la respuesta del mismo.

una pregunta, cuando tu robot esta en 0° la respuesta de tu controlador si es 0 para el pwm de los motores?
Título: Re: Robot equilibrista
Publicado por: marito en 28 de Mayo de 2012, 16:21:26
Si, cuando el ángulo es 0°, la referencia de velocidad es nula.

Con el control proporcional solo podría lograr el equilibrio?

Porque lo que observo es que se balancea continuamente de un lado a otro hasta que se cae. Creo que puede ser un tema de la aceleración que recibe de un lado a otro que le impide "frenar" cuando pasa por el 0°
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 16:26:00
Con el control proporcional solo podría lograr el equilibrio?

Exacto, solo con el proporcional, de hecho, una de las pruebas que hice fue usando un controlador on-off, y con eso fue suficiente para mantenerlo en equilibrio(subi un video, creo que esta unas paginas atras).

como consejo, no se debe de poner la velocidad en 0 solo cuando el angulo es 0, debes tener un pequeño margen, que se detenga entre -1 y 1° por ejemplo
Título: Re: Robot equilibrista
Publicado por: marito en 28 de Mayo de 2012, 16:30:41
bueno, justamente eso que me comentas de una "zona muerta", es lo que estaba pensando en implementar. Lo estaba pensando en usar una ganacia más pequeña. de ese modo evitar que se pase de largo de un lado a otro.
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 16:33:39
la ganancia pequeña te podria ayudar, pero aun asi deberia quedarse de pie, si le pones una ganacia muy grande se vuelve un control on-off. es decir, en cuanto pase a un lado se pone a maxima velocidad en esa direccion, aun asi deberia quedarse en pie aunque vibrando mucho.

haz la prueba con la zona muerta, y otr prueba que puede hacer es que tu robot se quede equilibrado solo, debes encontrar un punto donde por su propio peso se quede en equilibrio, y este punto deberia ser 0°
Título: Re: Robot equilibrista
Publicado por: marito en 28 de Mayo de 2012, 16:45:45
buenisimo, voy a hacer esa prueba con la zona muerta

Lo de la ganancia grande, supongo que con mi robot no funciona porque es pesado, y cuando comienza a balancearse es dificil frenarlo
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 16:47:27
buenisimo, voy a hacer esa prueba con la zona muerta

Lo de la ganancia grande, supongo que con mi robot no funciona porque es pesado, y cuando comienza a balancearse es dificil frenarlo

 ;-) ;-)
pones un videito para ver a tu robot
Título: Re: Robot equilibrista
Publicado por: gary_servin en 28 de Mayo de 2012, 19:58:27
Aquí va un video del robot por el que venimos trabajando hace un tiempo.


Saludos!
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 20:02:47
creo que le falta algo de velocidad a los motores para equilibrarlo
es el mismo robot de marito?
Título: Re: Robot equilibrista
Publicado por: gera en 28 de Mayo de 2012, 20:52:27
Me pasa exactamente lo mismo. Yo tambien pense que con motores mas rapidos podria controlarlo, pero no es suficiente. No deberia irse tanto del punto de equilibrio salvo que lo empujes. Para mi es problema de sensado. Corrobora bien que el mismo es rapido y preciso. En mi robot habia un pequeño retraso y eso hacia que no se pueda equilibrar.
Saludos!
Título: Re: Robot equilibrista
Publicado por: rivale en 28 de Mayo de 2012, 20:59:18
o su punto de equilibrio no esta en los 0°, parece que esta tirado hacia un lado mas que hacia el otro.

Por cierto como vas con tu robot gera?
Título: Re: Robot equilibrista
Publicado por: gera en 28 de Mayo de 2012, 23:56:44
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)

Sin embargo hace unas semanas hice un pendulo invertido como el de microchip (app note AN964 (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021807)).
Al utilizar un potenciometro, podemos dejar de lado todo el rollo de sensores y dedicarnos al PID. De entrada tenia un motor muy lento y no podia equilibrarlo. Le puse un motor con menos reduccion y mejoro bastante, pero no se quedaba quieto. Asique pense en implementar un lazo de control extra con encoders. En teoria deberia mejorar bastante, pero no alcance a probarlo.
Cuando retome el proyecto comparto mis resultados ;)
Título: Re: Robot equilibrista
Publicado por: rivale 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  ;-).

Título: Re: Robot equilibrista
Publicado por: marito 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
Título: Re: Robot equilibrista
Publicado por: marito 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?
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: marito en 29 de Mayo de 2012, 13:04:52
Esta muy buena esa prueba!!! Ese software lo hiciste vos? O es libre?
Título: Re: Robot equilibrista
Publicado por: gera 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!
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: marito 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?
Título: Re: Robot equilibrista
Publicado por: gary_servin 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
Título: Re: Robot equilibrista
Publicado por: marito 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?
Título: Re: Robot equilibrista
Publicado por: marito 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!!!!
Título: Re: Robot equilibrista
Publicado por: rivale 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.
Título: Re: Robot equilibrista
Publicado por: marito 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?
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: marito en 21 de Junio de 2012, 12:12:01
Filme con el celular.Te mando un privado a ver si me podes explicar como subirlo!

Tendrías el algoritmo de Kalman que podría usar?

Vi algunos que postearon pero no me funcionaron.
Título: Re: Robot equilibrista
Publicado por: rivale en 21 de Junio de 2012, 12:44:03
El filtro que yo uso es este:

Código: [Seleccionar]
//---------------------------------constantes y variables para el filtro kalman---------------------------------------------

#define dt        0.05//[s]/constante del tiempo de muestreo
#define Qaccel    0.001
#define Qgyro     0.003
#define R         0.6
#define SoA       0.002//sensibilidad del giroscopio  2 mV/°/s
static float Vbias=0,angle=0,gyro=0,accel=0;//gyro-> lectura del giroscopio; accel->lectura del acelerometro

float PK[2][2]={{1,0},{0,1}};
//-----------------------------FILTRO KALMAN--------------------------
void kalman_update()//funcion de actualizacion del filtro kalman
{   
   float K[2];
   float ang_err=0;//angulo de error

   ang_err=accel-angle;
   K[0]=PK[0][0]/(PK[0][0]+R);
   K[1]=PK[1][0]/(PK[0][0]+R);
   PK[0][0]-=PK[0][0]*K[0];
   PK[0][1]-=PK[0][1]*K[0];
   PK[1][0]-=PK[0][0]*K[1];
   PK[1][1]-=PK[0][1]*K[1];
   angle+=K[0]*ang_err;
   Vbias+=K[1]*ang_err;

}
void kalman_prediction()//funcion de prediccion del filtro kalman
{
  float Pdot[2];

  Pdot[0]=-PK[0][1]-PK[1][0];
  Pdot[1]=-PK[1][1];

  gyro-=Vbias;
  angle+=gyro*dt; 
  PK[0][0]+=Qaccel+Pdot[0]*dt+PK[1][1]*dt*dt;
  PK[0][1]+=Pdot[1]*dt;
  PK[1][0]+=Pdot[1]*dt;
  PK[1][1]+=Qgyro;
  //angle=accel;
}
//-------------------------------------------------------------------

Título: Re: Robot equilibrista
Publicado por: marito en 21 de Junio de 2012, 13:57:34
Buenísimo! gracias Rivale.

Voy a probarlo a ver si mejora la respuesta!
Título: Re: Robot equilibrista
Publicado por: rivale en 21 de Junio de 2012, 15:53:31
Puedes variar los parametros -qaccel, Qgyro y R para mejorar la respuesta, dependiendo de como te funcion, esta para un tiempo de muestreo de 5 ms, esto esta definido en dt
Título: Re: Robot equilibrista
Publicado por: marito en 21 de Junio de 2012, 16:07:54
SoA, es un valor que está en función de mi giro, no? Tengo un giro MLX90609 de 300°/seg, y una variación de 2,5v para ese máximo.

angle es el valor de salida de la función que me entrega el ángulo de inclinación, no?
Título: Re: Robot equilibrista
Publicado por: rivale en 21 de Junio de 2012, 16:11:33
perdon, SoA no va ahi esa es la sensibilidad de mi gyro.

angle es la medida del angulo, en esa variable se guardara el valor ya filtrado del angulo

accel es la medida del angulo en base al acelerometro y gyro es la medida de la velocidad angular desde el gyro, tienes que asegurarte de que ambas medidas esten en las radianes o en grados
Título: Re: Robot equilibrista
Publicado por: marito en 21 de Junio de 2012, 16:17:03
Perfecto, queda clarísimo!

En un rato te comento resultados..
Gracias Rivale!
Título: Re: Robot equilibrista
Publicado por: marito en 22 de Junio de 2012, 08:51:55
Buenos días para todos!

Rivale, estuve probando el filtro que me pasaste. Me funcionó, pero las oscilaciones son mayores que el filtro complementario que estoy usando, en el que actualizo con el 97% de las medicines del giro y 3% del acelerómetro cada 5 mseg.

No hice variación de Qaccel, Qgyro ni R. Hay algún método para hacer el ajuste fino?
Título: Re: Robot equilibrista
Publicado por: rivale en 23 de Junio de 2012, 01:17:50
Rivale, estuve probando el filtro que me pasaste. Me funcionó, pero las oscilaciones son mayores que el filtro complementario que estoy usando, en el que actualizo con el 97% de las medicines del giro y 3% del acelerómetro cada 5 mseg.

No hice variación de Qaccel, Qgyro ni R. Hay algún método para hacer el ajuste fino?
:o a mi me dio muy buenos resultados el filtro, pero creo que probare con tu alternativa

mira, quizas esto te ayude:
http://bibdigital.epn.edu.ec/bitstream/15000/1794/1/CD-2772.pdf (http://bibdigital.epn.edu.ec/bitstream/15000/1794/1/CD-2772.pdf)

Puedes aumentar o reducir el valor de R para darle mayor o menor ponderacion a la medida de tu acelerometro

Título: Re: Robot equilibrista
Publicado por: Nocturno en 29 de Junio de 2012, 14:52:07
Monociclo equilibrista. Y es capaz de caminar por el canto de un cristal  ((:-)) ((:-)) ((:-))

Título: Re: Robot equilibrista
Publicado por: josechura en 14 de Julio de 2012, 11:59:35
Gracias a los amigos foreros.. por todo lo posteado.. me ha servido de base para realizar un robot equilibrio en base al algoritmo PID.. He aqui un avanze de lo que toy haciendo es similar a lo del amigo Safareig.. pero tendra muxas mas aplicaciones yeahhh...
Cabe resaltar que en el video solo uso el giroscopio  y se presenta el problema de la deriva de tiempo para poder ubicarlo en el centro..

Título: Re: Robot equilibrista
Publicado por: rivale en 14 de Julio de 2012, 12:45:59
Felicidades, vas bien, pero si necesitas el acelerometro para suavisar la respuesta y que se logre equilibrar solo despues de que lo golpees.  :mrgreen:
Título: Re: Robot equilibrista
Publicado por: marito en 16 de Julio de 2012, 10:59:53
Muy bueno Josechura! De que potencia son los motores que usaste?
Título: Re: Robot equilibrista
Publicado por: josechura en 16 de Julio de 2012, 11:07:27
Gracias amigos..  Aun tengo q definir bien el centro de gravedad del bot.. y luego tengo que usar los 2 sensores(acelerometro y giroscopio) pa tener el angulo exacto ya sea usando un arreglo o el famoso filtro kalman....
Los motores q estoy usando son estos  http://www.pololu.com/catalog/product/2273  pero aun no uso los encoders q posee....
Título: Re: Robot equilibrista
Publicado por: NANO1985 en 17 de Julio de 2012, 11:06:38
cuando sea grande quiero ser como el del monociclo....   ((:-))  ((:-))  ((:-)) impresionante  ;-)
Título: Re: Robot equilibrista
Publicado por: gera 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!!
Título: Re: Robot equilibrista
Publicado por: Suky en 05 de Noviembre de 2012, 21:58:11
Aplicando Laplace?  :undecided:

Saludos!
Título: Re: Robot equilibrista
Publicado por: gera 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
Título: Re: Robot equilibrista
Publicado por: rivale en 05 de Noviembre de 2012, 22:42:34
Hola gera, encontre estos, espero alguno te sirva

http://www.mi.ams.eng.osaka-u.ac.jp/pub/2012/icra2012masuya.pdf (http://www.mi.ams.eng.osaka-u.ac.jp/pub/2012/icra2012masuya.pdf)


http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&sqi=2&ved=0CFoQFjAF&url=http%3A%2F%2Fproyectos.ciii.frc.utn.edu.ar%2Fcuadricoptero%2Fexport%2F4a138ff0a8d604d7399881da40abaae4e16e5f97%2Fdocumentacion%2Farticulo_case_filtro_comp%2Freferencias%2FA%2520comparison%2520of%2520complementary%2520and%2520kalman%2520filtering.pdf&ei=02qYUP3tAYPg2QWQooHIAg&usg=AFQjCNF1N8qGw-AvNQPj1qxvS9yRr62hmg (http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&cad=rja&sqi=2&ved=0CFoQFjAF&url=http%3A%2F%2Fproyectos.ciii.frc.utn.edu.ar%2Fcuadricoptero%2Fexport%2F4a138ff0a8d604d7399881da40abaae4e16e5f97%2Fdocumentacion%2Farticulo_case_filtro_comp%2Freferencias%2FA%2520comparison%2520of%2520complementary%2520and%2520kalman%2520filtering.pdf&ei=02qYUP3tAYPg2QWQooHIAg&usg=AFQjCNF1N8qGw-AvNQPj1qxvS9yRr62hmg)
Título: Re: Robot equilibrista
Publicado por: gera 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
Título: Re: Robot equilibrista
Publicado por: clynter.volt 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
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: clynter.volt 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);
   }
}
Título: Re: Robot equilibrista
Publicado por: clynter.volt 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);
}
}
Título: Re: Robot equilibrista
Publicado por: kaki 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
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: gab163 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.
Título: Re: Robot equilibrista
Publicado por: rivale en 03 de Junio de 2013, 15:32:21
Les presento mi robot :mrgreen:
Título: Re: Robot equilibrista
Publicado por: Nocturno en 03 de Junio de 2013, 18:10:30
Magnífico trabajo, Rivale, da gusto verlo.
¿Es para subirse encima?
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: gab163 en 03 de Junio de 2013, 22:18:53
Esta genial! Que estrategia de control estas utilizando?
Título: Re: Robot equilibrista
Publicado por: rivale 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
Título: Re: Robot equilibrista
Publicado por: gab163 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 :-/
Título: Re: Robot equilibrista
Publicado por: rivale 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:
Título: Re: Robot equilibrista
Publicado por: gab163 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. :-/
Título: Re: Robot equilibrista
Publicado por: rivale 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

Título: Re: Robot equilibrista
Publicado por: AKENAFAB en 05 de Junio de 2013, 14:02:16
 :-/ :-/ :-/ :-/

Excelente!!


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

Mas videos porfavor!!

Saludos!
Título: Re: Robot equilibrista
Publicado por: Miquel_S 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!
Título: Re: Robot equilibrista
Publicado por: gab163 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.
Título: Re: Robot equilibrista
Publicado por: rivale 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 ((:-))
Título: Re: Robot equilibrista
Publicado por: tarribas 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.
Título: Re: Robot equilibrista
Publicado por: zas97 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.
Título: Re:Robot equilibrista
Publicado por: Pacio 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
Título: Re:Robot equilibrista
Publicado por: elgarbe 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!
Título: Re:Robot equilibrista
Publicado por: Pacio 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
Título: Re:Robot equilibrista
Publicado por: elgarbe en 25 de Febrero de 2016, 13:29:32
En estos post está explicado el tema de los acelerómetros, junto a su offset:
http://www.todopic.com.ar/foros/index.php?topic=41980.0

En este otro está lo relativo a los giróscopos:
http://www.todopic.com.ar/foros/index.php?topic=41979.0

Antes de intentar cualquier cosa con fusion de ámbos sensores te recomiendo leer y entender bien el funcionamiento individual de los sensores. Kalman no es simple y si no tienes bien claro la forma de trabajar con los sensores va a ser muy dificil que obtengas resultados.

Por ejemplo, al enteder el funcionamiento de los sensores podrías pensar en intentar equilibrar el robot sin Kalman (no conozco los detalles de la implementacion de Kalman, nunca lo usé) y hacer una simple fusion de los sensores para obtener el àngulo. Una aproximacion sería Angulo_Pitch = PitchGyro * 0.9 + PitchAccel * 0.1. Donde variando ese 0.9 - 0.1 podés pesar un tipo de medicion versus el otro.

En tu calculo de ángulo de giróscopo usas 0.01 como tiempo de muestreo. Tu lectura del giróscopo esta en una ISR de algun timer con ese tiempo de interrupcion?

No he leido todo el post original de este tema, solo estoy leyendo tus dudas y por eso no puedo responder sobre que cosas tenes que adaptar para que funcione el código de este tema...

Saludos!
Título: Re:Robot equilibrista
Publicado por: Pacio en 25 de Febrero de 2016, 21:22:25
Muchas gracias por responder mis dudas

te cuento hice muchos avances, la mayoria de mis errores eran por dar por echo que la configuracion por default del sensor era una y al final era otra(por ejemplo la sensibilidad del giroscopo y del acc)

Te agradezco mucho los post que me pasaste sobre el giro y el acelerometro! esta muy bien explicado!

Aplicando solo correccion del offset en el giroscopo:

Ya logro obtener el angulo tanto del acelerómetro como del giroscopo, ambos en grados inclinandolos a 90 respecto a la mesa y parecen correctos aunque obtengo un desfazaje de casi 10° entre una y otra, es decir, el acelerometro indica 90° grados pero el giroscopo me marca 80°, esto se debe a la impresicion de la medida? (para lo que se puede aplicar el filtro complementario o kalman más adelante?) o crees que es un margen de error muy grande?
por otro lado estoy tratando de interpretar el datasheet de mi sensor comparandolo como el tuyo para asi crear la correccion del offset para el acelerometro, pero aunque sea medio tonto, no encuentro como calcular a cuanto equivale 1g con la sensibilidad de mi sensor, te dejo el datasheet para ver si me podes dar una mano

http://www.jarzebski.pl/datasheets/MPU6050_rev32.pdf
(pagina 13 están las caracteristicas del acelerometro) pero no logro distingir cuantos son los mg que debo usar y cual es el calculo que debo realizar, veo que en tu post de acelerometro usaste este calculo : (1/0.0039) pero o encuentro nada similar en mi datasheet

Espero no cansarte con tantas dudas jaja, acá te dejo la rutina para corregir el offset a ver que te parece :)

 
Código: C
  1. for(i=0;i<10;i++){       // solo tomo 10 muestras por ahora, la voy a subir más adelante
  2.       GYROSCOPO();      // refresco los valores GyX y GyY que son los registros del giro
  3.       off_GY[0] += GyX;
  4.      
  5.  
  6. ACELEROMETRO();  // refresco AcX,AcY y AcZ que son los registros del acc
  7.  
  8. off_ACC[0]=off_ACC[0]+AcX;
  9. off_ACC[1]=off_ACC[1]+AcY;
  10. off_ACC[2]=off_ACC[2]+AcZ;
  11.  
  12. delay_ms(10);
  13. output_toggle(pin_a0);
  14. }
  15.  
  16. off_GY[0]=(off_GY[0]/10);
  17. //off_GY[1]=(off_GY[1]/10);
  18.  
  19. off_ACC[0]=(off_ACC[0]/10);
  20. off_ACC[1]=(off_ACC[1]/10);
  21. off_ACC[2]=(off_ACC[2]/10);
  22. off_ACC[2]-= numero;   //  valor que equivale a 1g para que se mantenga en 1g negativo en el eje Z que es la gravedad cuando el sensor esta en posición horizontal  
  23. ES EL QUE NO SE ENCONTRAR                                                                                                                                                                                            
  24.  


Un saludo
PACIO!
Título: Re:Robot equilibrista
Publicado por: Nocturno en 09 de Febrero de 2018, 08:55:38
¡Uff, cómo pasa el tiempo!
Hace 14 años que inicié este hilo con la idea de montar un robot equilibrista y nunca tuve realmente el tiempo y la dedicación suficiente para sacarlo adelante.
Sin embargo, mi sueño no ha desaparecido, y voy a volver a intentarlo.

He estado echando un vistazo al B-ROBOT EVO (https://www.jjrobots.com/projects-2/b-robot/) de JJRobots y creo que voy a intentar armar algo parecido.
En principio, me quedaré con la misma estructura que han diseñado, con piezas impresas en 3D, dos motores NEMA17 conectados directamente a las ruedas, la batería encima, y la electrónica en un nivel superior.
Sin embargo, quiero hacer el controlador por mí mismo. Ellos han optado por Arduino y a mí me gustaría cambiar de arquitectura. Pero estoy en duda: no sé si implementarlo con un PIC, plataforma en la que ya tengo experiencia, o montar una Raspberry Pi y aprender desde cero con ella, ya que aún no me he introducido en ese mundo y me apetece un montón.

¿Qué opináis?
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 10:07:52
Me apunto.

Raspberry no la utilizaría para control de equilibrio. Es un ordenador y tiene lapsus porque el sistema operativo no es de tiempo real.

Yo usaría Arduino. Te ayudo en todo lo que pueda. No es tan difícil.

Un saludo.
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 10:09:26
Lo de los motores paso a paso no lo termino de ver. ¿Por qué no utilizas motores DC?

Este shield es ideal para quitar cables:
https://www.pololu.com/product/2511
Título: Re:Robot equilibrista
Publicado por: planeta9999 en 09 de Febrero de 2018, 10:54:51
Pero estoy en duda: no sé si implementarlo con un PIC, plataforma en la que ya tengo experiencia, o montar una Raspberry Pi y aprender desde cero con ella, ya que aún no me he introducido en ese mundo y me apetece un montón.

¿Qué opináis?


Yo usaría un microcontrolador ARM. Tienes buenas opciones para elegir, STM32 de ST, Kinetis MK66 de NXP, Atmel SAM S70, o esperar un poco y para Marzo usar el nuevo NXP i.MX RT1020 un Cortex M7 a 500 Mhz en TQFP100 y 144 pines.

Si optas por STM32 o Kinetis, tienes entornos basados en Eclipse, con asistentes gráficos de configuración, Cubemx y MCUExpresso, también el RT1020 estará soportado por MCUExpresso.
 
Arduino, es muy flojo para estas cosas, y su IDE una castaña.  Raspberry yo no lo usaría, salvo que quieras sacar video, que me parece que no es el caso para esta aplicación, y es muy pobre en puertos comparado con un microcontrolador.
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 12:24:00
Arduino, es muy flojo para estas cosas, y su IDE una castaña.

Es flojo, pero más que suficiente.
En principio solo hace falta leer un acelerómetro y controlar los motores con un PID.
Te sobra más del 90% del procesador. (16 millones de instrucciones por segundo)
Otra cosa distinta es que quieras hacer un control más complejo con observadores de estado, etc. Entonces un dsPic o un ARM es ideal.

Por otro lado no hay mucho que depurar y hay muchos ejemplos de código en internet para copiar y una gran comunidad para ayudarte. En esto Arduino es ideal.


Si el IDE no te gusta, puedes pasarte a eclipse para Arduino o el IDE de Atmel (ahora ya es Microchip) que también es bueno, pero te darán guerra hasta que los eches a andar.
Pero ten en cuenta que con el IDE de Arduino (muy simple) y las librerías y programas de ejemplo que encuentras en internet, en una tarde tienes el programa funcionando y ajustado.

Saludos.
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 12:27:41
https://create.arduino.cc/projecthub/zac-jackson/how-to-build-an-arduino-self-balancing-robot-46d992

Código: C
  1. #include <PID_v1.h>
  2. #include <LMotorController.h>
  3. #include "I2Cdev.h"
  4. #include "MPU6050_6Axis_MotionApps20.h"
  5. #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
  6. #include "Wire.h"
  7. #endif
  8. #define MIN_ABS_SPEED 20
  9. MPU6050 mpu;
  10. // MPU control/status vars
  11. bool dmpReady = false; // set true if DMP init was successful
  12. uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU
  13. uint8_t devStatus; // return status after each device operation (0 = success, !0 = error)
  14. uint16_t packetSize; // expected DMP packet size (default is 42 bytes)
  15. uint16_t fifoCount; // count of all bytes currently in FIFO
  16. uint8_t fifoBuffer[64]; // FIFO storage buffer
  17. // orientation/motion vars
  18. Quaternion q; // [w, x, y, z] quaternion container
  19. VectorFloat gravity; // [x, y, z] gravity vector
  20. float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector
  21. //PID
  22. double originalSetpoint = 173;
  23. double setpoint = originalSetpoint;
  24. double movingAngleOffset = 0.1;
  25. double input, output;
  26. //adjust these values to fit your own design
  27. double Kp = 50;
  28. double Kd = 1.4;
  29. double Ki = 60;
  30. PID pid(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT);
  31. double motorSpeedFactorLeft = 0.6;
  32. double motorSpeedFactorRight = 0.5;
  33. //MOTOR CONTROLLER
  34. int ENA = 5;
  35. int IN1 = 6;
  36. int IN2 = 7;
  37. int IN3 = 8;
  38. int IN4 = 9;
  39. int ENB = 10;
  40. LMotorController motorController(ENA, IN1, IN2, ENB, IN3, IN4, motorSpeedFactorLeft, motorSpeedFactorRight);
  41. volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high
  42. void dmpDataReady()
  43. {
  44.   mpuInterrupt = true;
  45. }
  46. void setup()
  47. {
  48.   // join I2C bus (I2Cdev library doesn't do this automatically)
  49. #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
  50.   Wire.begin();
  51.   TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz)
  52. #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
  53.   Fastwire::setup(400, true);
  54. #endif
  55.   mpu.initialize();
  56.   devStatus = mpu.dmpInitialize();
  57.   // supply your own gyro offsets here, scaled for min sensitivity
  58.   mpu.setXGyroOffset(220);
  59.   mpu.setYGyroOffset(76);
  60.   mpu.setZGyroOffset(-85);
  61.   mpu.setZAccelOffset(1788); // 1688 factory default for my test chip
  62.   // make sure it worked (returns 0 if so)
  63.   if (devStatus == 0)
  64.   {
  65.     // turn on the DMP, now that it's ready
  66.     mpu.setDMPEnabled(true);
  67.     // enable Arduino interrupt detection
  68.     attachInterrupt(0, dmpDataReady, RISING);
  69.     mpuIntStatus = mpu.getIntStatus();
  70.     // set our DMP Ready flag so the main loop() function knows it's okay to use it
  71.     dmpReady = true;
  72.     // get expected DMP packet size for later comparison
  73.     packetSize = mpu.dmpGetFIFOPacketSize();
  74.     //setup PID
  75.     pid.SetMode(AUTOMATIC);
  76.     pid.SetSampleTime(10);
  77.     pid.SetOutputLimits(-255, 255);
  78.   }
  79.   else
  80.   {
  81.     // ERROR!
  82.     // 1 = initial memory load failed
  83.     // 2 = DMP configuration updates failed
  84.     // (if it's going to break, usually the code will be 1)
  85.     Serial.print(F("DMP Initialization failed (code "));
  86.     Serial.print(devStatus);
  87.     Serial.println(F(")"));
  88.   }
  89. }
  90. void loop()
  91. {
  92.   // if programming failed, don't try to do anything
  93.   if (!dmpReady) return;
  94.   // wait for MPU interrupt or extra packet(s) available
  95.   while (!mpuInterrupt && fifoCount < packetSize)
  96.   {
  97.     //no mpu data - performing PID calculations and output to motors
  98.     pid.Compute();
  99.     motorController.move(output, MIN_ABS_SPEED);
  100.   }
  101.   // reset interrupt flag and get INT_STATUS byte
  102.   mpuInterrupt = false;
  103.   mpuIntStatus = mpu.getIntStatus();
  104.   // get current FIFO count
  105.   fifoCount = mpu.getFIFOCount();
  106.   // check for overflow (this should never happen unless our code is too inefficient)
  107.   if ((mpuIntStatus & 0x10) || fifoCount == 1024)
  108.   {
  109.     // reset so we can continue cleanly
  110.     mpu.resetFIFO();
  111.     Serial.println(F("FIFO overflow!"));
  112.     // otherwise, check for DMP data ready interrupt (this should happen frequently)
  113.   }
  114.   else if (mpuIntStatus & 0x02)
  115.   {
  116.     // wait for correct available data length, should be a VERY short wait
  117.     while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();
  118.     // read a packet from FIFO
  119.     mpu.getFIFOBytes(fifoBuffer, packetSize);
  120.     // track FIFO count here in case there is > 1 packet available
  121.     // (this lets us immediately read more without waiting for an interrupt)
  122.     fifoCount -= packetSize;
  123.     mpu.dmpGetQuaternion(&q, fifoBuffer);
  124.     mpu.dmpGetGravity(&gravity, &q);
  125.     mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
  126.     input = ypr[1] * 180 / M_PI + 180;
  127.   }
  128. }
  129.  

Solo 90 líneas de código si quitas comentarios.
Título: Re:Robot equilibrista
Publicado por: Nocturno en 09 de Febrero de 2018, 14:46:09
Yo usaría Arduino. Te ayudo en todo lo que pueda. No es tan difícil.


Muchas gracias por tu amable ofrecimiento, Picuino, pero descarto hacerlo en Arduino porque el propio B-Robot ya está hecho en Arduino, y me gustaría aportar algo nuevo.
Aquí puedes ver el código:
https://github.com/jjrobots/B-ROBOT_EVO2/tree/master/Arduino/BROBOT_EVO2

Lo de los motores paso a paso no lo termino de ver. ¿Por qué no utilizas motores DC?

Este shield es ideal para quitar cables:
https://www.pololu.com/product/2511
Sí, podría usar los motores DC, ¿pero porqué no los PaP?, con la popularización de las impresoras 3D, están tirados de precio. Y en cuanto al funcionamiento, júzgalo tú mismo:

Yo usaría un microcontrolador ARM. Tienes buenas opciones para elegir, STM32 de ST, Kinetis MK66 de NXP, Atmel SAM S70, o esperar un poco y para Marzo usar el nuevo NXP i.MX RT1020 un Cortex M7 a 500 Mhz en TQFP100 y 144 pines.

Si optas por STM32 o Kinetis, tienes entornos basados en Eclipse, con asistentes gráficos de configuración, Cubemx y MCUExpresso, también el RT1020 estará soportado por MCUExpresso.
 
Arduino, es muy flojo para estas cosas, y su IDE una castaña.  Raspberry yo no lo usaría, salvo que quieras sacar video, que me parece que no es el caso para esta aplicación, y es muy pobre en puertos comparado con un microcontrolador.
Sería una buena oportunidad para hincarle el diente a un bicharraco de esos, aunque es mucha tela para un proyecto tan peque. Pero les echaré un vistazo

Gracias por vuestra ayuda, compañeros. Sigo dándole vueltas, a ver qué hago al final.
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 15:34:31
Los motores DC son más pequeños y suelen tener mejor rendimiento.
A favor de los PaP, es más fácil controlar su posición.

Si al final te decides por un micro grande, puedes elegir un ARM sin salirte de Arduino con Arduino Due o Teensy.
Otras placas interesantes son las STM32. Planeta te puede ayudar a elegir una.

También puedes elegir un dsPic, pero te espera mucho más trabajo y no te servirá mucho en el futuro. Yo no lo haría.

¿Qué quieres aportar nuevo?
Lo más difícil suele ser la mecánica. Si aportas diseños sencillos y baratos (con pocas piezas 3d y pequeñas) sería estupendo.

Un saludo.

Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 15:37:57
Otra cosa que puedes aportar es un BOM con las referencias de todos los componentes y enlaces a dónde comprar, en el menor número de webs posible.
Eso es un trabajo bastante tedioso, que lleva mucho tiempo y que no sueles encontrarlo hecho.
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 15:41:42
Aquí dicen por qué utilizan motores PaP:

https://www.jjrobots.com/projects-2/b-robot/
Why are you using Stepper motors?
There are several options for motors: DC, Brushless, Steppers… We choose stepper motors because they have enough torque, you could connect the wheels directly without gears that generate some backslash (this is a common problem in balancing robots), they have good bearings and you will be able to control the speed of the motors with accuracy. In standard sizes these motors are cheap (we use the same motors used on a regular 3D printers) and the drivers are cheap and easy to interface with Arduino too.
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 15:51:27
Y veo que son mucho más baratos de lo que creía (muchísimo más):

https://es.aliexpress.com/item/5-pcs-lots-Nema17-17HS2408-4-lead-Nema-17-Stepper-Motor-42-motor-42BYGH-0-6A/1887698936.html?src=google&albslr=202059381&isdl=y&aff_short_key=UneMJZVf&source=%7Bifdyn:dyn%7D%7Bifpla:pla%7D%7Bifdbm:DBM&albch=DID%7D&src=google&albch=shopping&acnt=494-037-6276&isdl=y&albcp=652736826&albag=32471627666&slnk=&trgt=61865531738&plac=&crea=es1887698936&netw=g&device=c&mtctp=&gclid=EAIaIQobChMIh9-pj76Z2QIV5RXTCh2jJwUUEAQYASABEgK77vD_BwE


Por 12 Euros te dan 5 motores!!


Cuelgo hoja de datos del 17HS2408:

http://www.pbclinear.com/Download/DataSheet/Stepper-Motor-Support-Document.pdf

 - Tienes que ingresar para ver archivos adjuntos -
Título: Re:Robot equilibrista
Publicado por: Picuino en 09 de Febrero de 2018, 16:16:44
Drivers:
https://www.staticboards.es/blog/drv8825-vs-a4988/
Título: Re:Robot equilibrista
Publicado por: Nocturno en 11 de Febrero de 2018, 15:34:18
Me está pareciendo un reto interesante acometer el proyecto con un STM32, me apetece aprender a utilizar esta plataforma.

He visto esta placa de evaluación, ¿qué os parece?
https://www.ebay.es/itm/STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-for-Arduino/152102324944?_trkparms=aid%3D555018%26algo%3DPL.SIM%26ao%3D2%26asc%3D20170831090034%26meid%3D6dde4e1c98404b82b60a9e3eb03f5c4c%26pid%3D100005%26rk%3D2%26rkt%3D6%26sd%3D202131900449%26itm%3D152102324944&_trksid=p2047675.c100005.m1851
(https://i.ebayimg.com/images/g/6hcAAOSwSWJXRKqm/s-l1600.jpg)
Título: Re:Robot equilibrista
Publicado por: planeta9999 en 11 de Febrero de 2018, 15:58:47


Teniendo en cuenta, que para hacer ese robot, vas a necesitar acelerómetro y probablemente también giróscopo (puede que también el magnetómetro para usarlo como brújula digital), yo optaría por una Discovery. Lo lleva todo integrado, incluido el programador, que sirve también para hacer Debug. Además es mucho más potente, con más flash y RAM, y es muy barata.

https://es.rs-online.com/web/p/kits-de-desarrollo-de-procesador-y-microcontrolador/8463503/


(https://media.rs-online.com/t_large/F8463503-01.jpg)
Título: Re:Robot equilibrista
Publicado por: Nocturno en 11 de Febrero de 2018, 16:07:06
Pues precisamente estaba mirando para comprar también el ST-Link aparte, que lo he visto muy barato.

Pero tienes razón, la Discovery parece una opción mucho mejor por el coste que tiene.

Gracias
Título: Re:Robot equilibrista
Publicado por: Picuino en 11 de Febrero de 2018, 16:10:44
Hay alguna discovery que no tenga soldados tantos pines por arriba y abajo?
Título: Re:Robot equilibrista
Publicado por: planeta9999 en 11 de Febrero de 2018, 23:34:15
Hay alguna discovery que no tenga soldados tantos pines por arriba y abajo?


Mira las Nucleo, esas tienen el formato de conectores Arduino para aprovechar los shield de ese entorno.

Las Discovery, en general son todas así, sacan todos los pines del chip a tiras de pines pasantes, como suelen ser TQFP100, minimo tienes 100 pines, no se si habrá algún TQFP64 o 48.

En Amidata, crqo que tienen todas las Discovery y Nucleo actuales.
https://es.rs-online.com/web/c/semiconductores/kits-de-desarrollo-para-semiconductor/kits-de-desarrollo-de-procesador-y-microcontrolador/?searchTerm=discovery&sort-by=P_breakPrice1&sort-order=asc&pn=1

https://es.rs-online.com/web/c/semiconductores/kits-de-desarrollo-para-semiconductor/kits-de-desarrollo-de-procesador-y-microcontrolador/?searchTerm=nucleo%20STM32&sort-by=P_breakPrice1&sort-order=asc&pn=1
Título: Re:Robot equilibrista
Publicado por: vixctor en 12 de Febrero de 2018, 01:52:03
Yo creo que cualquier tarjeta es buena, la cosa es hacerlo, más que ver que tantas opciones en el mercado existen para hacer el proyecto...

En lugar de discutir que si Arduino, que si ST, que si la nucleo X, creo que es cosa de sentarse, tomar la mejor placa que se maneje, un IMU y manos a la obra.
En realidad no hay algo así como qué motores son mejores, si de pasos o de DC, ambos funcionan bien y ambos tienen ventajas y desventajas, pero el resultado es prácticamente igual.

Sobre el control de equilibrio, lo más importante es tener bien filtrados y correlacionados los datos de aceleración angular y gravedad

Este es el robot en el qué he trabajado últimamente, esta hecho en un PIC18F46K22, en ensamblador, con un MPU6050 y motores DC con encoders ópticos

La parte en la que más me tarde fue en implementar bien los datos del IMU, una vez hecho y obteniendo los cuaterniones, es fácil traducirlos a Yaw y Pitch, (Roll no se usa en este caso) y aplicar una rutina de control PID de 32 bits pues la resolución del IMU es lo suficientemente alta para considerar 2 bytes de entero y 2 bytes de decimales...

Acá les dejo un pequeño video de demostración:


Saludos y cualquier duda en alguna de las etapas ojala pueda aportar referencias
Título: Re:Robot equilibrista
Publicado por: Nocturno en 12 de Febrero de 2018, 03:31:15
Jaja, qué chulada.

¿Qué tiene en la espalda, son antenas?
Título: Re:Robot equilibrista
Publicado por: vixctor en 12 de Febrero de 2018, 03:37:18
Citar
¿Qué tiene en la espalda, son antenas?

Si, tiene 2 antenas:

Una es de 5.8 Ghz usada para la transmisión del video de la cámara que posee, la cual permite seguir objetos y realizar video overlay encima de la imagen
La otra es de 2.4 Ghz usada para la transmisión de telemetría y comandos

En cuanto tenga material de video más completo subiré algunos videos de porque se usa y como se ve, además de qué tipos de comandos recibe

Saludos
Título: Re:Robot equilibrista
Publicado por: Nocturno en 12 de Febrero de 2018, 03:56:32
Muy interesante, Vixctor. Deseando ver esos vídeos.


Yo finalmente me he decidido por la placa de evaluación sencillita de los STM32, porque ya tenía el MPU6050 y realmente comprándola en Aliexpress me ha salido por 4€ junto con el ST Link. Además, así lo hago todo modular.

Ya he hecho el pedido de la placa, el programador, los motores, los drivers de los motores y un ESP8266.

Continuamos para bingo.
Título: Re:Robot equilibrista
Publicado por: Nocturno en 16 de Febrero de 2018, 08:02:28
Interesante este vídeo
http://blog.bricogeek.com/noticias/arduino/como-hacer-un-robot-balanceador--controlado-con-el-movil/?utm_source=blogfeed&utm_medium=atom10&utm_term=arduino&utm_content=como-hacer-un-robot-balanceador--controlado-con-el-movil&utm_campaign=blog
Título: Re:Robot equilibrista
Publicado por: Nocturno en 22 de Febrero de 2018, 03:33:19
Pues mientras me llegan los motores y la electrónica, he aprovechado para imprimir todas las piezas 3D del robot.

Continuamos para bingo.

(http://www.micropic.es/mpblog/wp-content/uploads/2018/02/piezas-3d-640x395.jpg)
Título: Re:Robot equilibrista
Publicado por: AKENAFAB en 09 de Marzo de 2018, 20:38:02
Se ven muy bien.  ((:-))
Título: Re:Robot equilibrista
Publicado por: Nocturno en 21 de Marzo de 2018, 16:04:19
Ya me han llegado los motores. Aún me quedan componentes por recibir, pero he podido montar la estructura.

(http://www.micropic.es/mpblog/wp-content/uploads/2018/03/IMG_20180321_182705-640x480.jpg)

(http://www.micropic.es/mpblog/wp-content/uploads/2018/03/IMG_20180321_182720-640x480.jpg)
Título: Re:Robot equilibrista
Publicado por: AcoranTf en 21 de Marzo de 2018, 16:24:02
Ta esta quedando muy bien Manolo.

Saludos.
Título: Re:Robot equilibrista
Publicado por: Picuino en 21 de Marzo de 2018, 19:07:26
Y muy colorido  ((:-))
Título: Re:Robot equilibrista
Publicado por: chris.ha.92 en 29 de Junio de 2018, 04:23:26
Me he tirado como 4 o 5 horas leyendo este post, me he pasado por los canales en Youtube de Nocturno y pflanzgarten (muy buenos, por cierto), me he revisado todos los post de la web de nocturno (Todopic), encontré muchas cosas buenas e interesantes (tengo mucho que leer y aprender de estos), y todo esto a partir de este proyecto que iniciaste hace varios años, por ello te doy las gracias porque se aprende mucho de este feedback. Ha sido muy interesante leer todo esto.
Pd. me he quedado con la duda si lograste concretarlo finalmente.
Título: Re:Robot equilibrista
Publicado por: Camila21 en 14 de Agosto de 2018, 14:28:59
Qué excelente!!! Esperaba otra cosa al entrar a este post, me sorprendí para bien  ((:-))
Título: Re:Robot equilibrista
Publicado por: Nocturno en 15 de Agosto de 2018, 01:23:29
Pues me alegro que os haya servido. No terminé aún de montarlo. Me entró trabajo y lo he tenido que abandonar para retomarlo cuando pueda.