Novedades de SAMSA

Por fin algo para subir al blog!

Imagen de previsualización de YouTube Imagen de previsualización de YouTube

Pasaron casi 2 meses desde los últimos videos de SAMSA, aquellos de la caminata, y tal vez pueda parecer que son pocos los avances para 2 meses. Voy a comentar los puntos en los que estuve trabajando:

1) Idea central: todavía no tengo una idea central fuerte, que dé coherencia a todo el conjunto. SAMSA todavía no tiene una personalidad definida, pero ya presenta algunos rasgos. No es para inquietarse, a veces la “idea” me viene bastante tiempo después de tener armado todo el hardware, y a veces directamente no me viene. Siempre está la posibilidad de invitar a algún amigo y anotar en un papelito todas las ideas que se le escapan.

Fuente de energía de SAMSA: batería LiPo de 7.4V/730mAh. Otra batería más grande y el cargador.
Fuente de energía de SAMSA: batería LiPo de 7.4V/730mAh. Otra batería más grande y el cargador.

2) Autonomía: no fue fácil dar con la batería adecuada para SAMSA. El robot necesita como mínimo una tensión de 6V, y, no tengo amperímetro, pero mis cálculos daban que debía consumir unos 3.6A, ya que la especificación del servo HiTec HS-55 -del cual los que yo usé son una copia berreta- dice que el motor andando pero en el vacío (no load) consume unos 150mA. Los 18 servos andando a la vez y con el robot apoyado, generarían un consumo considerable, al que habría que sumar el del resto de la electrónica. Evidentemente me quedé corto, ya que el primer intento con baterías de 2000mAh/2C (el “2C” indica que admiten una descarga de 2 veces su carga, en este caso 4A) fue un fracaso. Necesitaba baterías de más “polenta”, pero ojo con aumentar el tamaño y el peso, dado que SAMSA es un robot más bien debilucho. El factor que hubo que sacrificar es la carga misma, es decir el tiempo de autonomía. Finalmente terminé usando la batería que se ve en la foto, de 730mAh/20C, que admite descargas puntuales (“burst”) de hasta 40C, o sea: un disparate, y pesa nada más que 35g. Estimo que la autonomía no será de más de 15 minutos, pero hasta ahora no lo he probado. 

Antenas.

Antenas y medidor de distancia Sharp GP2D12

Motor DC y encoder óptico de las antenas
Motor DC y encoder óptico de las antenas.

3) Sensores y periféricos: para el tiempo en que filmé la caminata, los sensores ni estaban conectados. Los dos cables del motor DC que mueve las antenas estaban colgando sueltos, el medidor de distancia estaba puesto “de adorno” y el resto de las cosas no existían. Conectar todas estas cosas dio un gran trabajo, en especial la parte de audio. Todos los periféricos -excepto el display, que para aquel entonces ya estaba perfectamente funcional aunque no tenía software que lo explotara- van conectados a un mini-circuito que está en la parte de abajo del tronco, el que muestra la foto. Ese circuito maneja las siguientes cosas:

  • motor DC de las antenas, controlado por un puente en “H” a transistores, que ocupa menos espacio que un L293D.
  • rotary encoder óptico de las antenas (sacado de un mouse viejo). Esto permite usar las antenas también como dispositivo de entrada, y ya tengo rutinas que explotan el recurso.
  • micrófono, amplificado por un operacional diminuto que no se ve, porque está tapado por los componentes pasivos.
  • acelerómetro y medidor de distancia Sharp GP2D12; éstos van directo a la Wiring, el circuito sólo se encarga de conectarlos. (El acelerómetro es para hacer trucos como que detecte cuando lo levantás, etc., por el momento no se está usando.)

A escala.
A escala.
Mini-circuito.
Mini-circuito.

 

Inserción en el robot.

Inserción en el robot.

Vista trasera.
Vista trasera.

Lo que realmente me dio trabajo acá fue el audio, tanto en el hardware como en el software. En el hardware, porque la electrónica analógica nunca fue mi fuerte, y ajustar ese circuito, a ojímetro como hago todo, fue casi imposible. Sabiendo además que el LM324 no era la mejor elección, lo hice así porque quería aprender de una vez a usar operacionales. Otro problema que tuve fue el ruido infernal que mete el Sharp GP2D12 en la línea de alimentación, el cual fue atenuado a base de sacar la alimentación de un punto lo más lejano posible al circuito de audio, y meter condensadores por todos lados a lo bestia.

El software también aportó lo suyo, pero de eso hablaremos más en detalle cuando encare la documentación “posta” del robot. Resumiendo, el tema con los sensores es que hay que actualizar la lectura con cierta frecuencia, y el tiempo que tenemos para tareas periódicas no es demasiado, una gran parte del mismo es consumida en manejar los 18 servos. En el caso del audio, además, hay que hacer otras cosas que recayeron finalmente en el software, como filtrar el componente de corriente continua (DC), rectificar, “logaritmizar” e integrar, lo que finalmente también consume abundante tiempo, y estamos hablando sólo de trabajar con la intensidad del sonido, no sueñen con una FFT ni con reconocimiento de palabras ni nada. De más está decir que toda la gracia del proyecto es hacerlo con un sólo procesador.

Pata del robot.

Pata del robot.

4) La “cinemática inversa” es lo que permitió hacer movimientos del tronco, dejando las patas fijas en un punto, como se ve en el segundo video. Los servos trabajan con ángulos, su posición angular es proporcional al ancho del pulso que reciben, y dentro del programa, yo puedo controlar linealmente el ancho de ese puso, y por ende manejar con exactitud -e independencia- los 18 ángulos (excepto por las limitaciones mecánicas, que hacen que para adoptar ciertas posiciones, lo tenga que “ayudar” con todas las patas haciendo fuerza a la vez). Las rutinas de caminata fueron hechas como secuencias de ángulos, experimentalmente (y me sigue resultando asombroso que pueda caminar tan rápido) pero para hacer movimientos con el tronco la cosa ya no es tan fácil. Por ejemplo, si quiero poner la punta de una pata 4cm por debajo de la altura del tronco, y mantenerla a esa altura mientras la alejo o la acerco perpendicularmente al mismo, necesariamente tengo que variar en forma continua 2 ángulos, y hacerlo de acuerdo a una fórmula matemática no evidente.

Utilizando el teorema de Pitágoras y el teorema del Coseno, encontré la manera de calcular los ángulos necesarios para poner cada pata en unas coordenadas dadas, en cm. También me valí de unas fórmulas que encontré en internet para calcular las funciones trigonométricas inversas utilizando sólo arcotangente, que es lo que la ‘math’ de Wiring tiene. Hice el siguiente programa de simulación en Processing, y la parte de “offsets” para que los resultados quedaran en el cuadrante y con el signo correcto también fue experimental, metiéndole “a mano” valores como PI/2, -PI/4, etc., a ver qué pasaba.

Una vez pronta esta rutina (que en mi programa se llama “alfabetagama”), calcular las 3 traslaciones y las 3 rotaciones del tronco fue tarea relativamente sencilla, casi todo con sumas y restas, excepto una de las rotaciones en la que usé la fórmula de la rotación en el plano, que involucra senos y cosenos. Todo esto lo voy a explicar detenidamente en la prometida documentación.

Vista trasera del circuito controlador del display.

Vista trasera del circuito controlador del display.

Display LED matricial de 8x8 monocromático.
Display LED matricial de 8×8 monocromático.

5) Display: varias personas me sugirieron que no perdiera tiempo con el display, que nadie lo iba a mirar, llegando incluso a cuestionar la presencia del mismo en el proyecto, pero a mí me gusta. Hice todo tipo de adornitos, rutinas que miden un parámetro y lo expresan como líneas o barras verticales y horizontales, como círculos, como escaleritas, como cuadrados, como puntos “aleatorio-probabilísticos”, rutinas que muestran y desplazan texto, rutinas que giran, que borran, que invierten, que mezclan, etc., y hasta le programé una versión del clásico juego de la vida de Conway.

Por último debo aclarar que lo que se ve en los videos no forma parte de la idea central sino que son cosas programadas “ad-hoc” al momento de la filmación, con la ayuda de mi amigo Daniel Lopes, el KBZA, como una forma de mostrar más o menos las posibilidades con que cuenta SAMSA hoy en día, aunque alguna idea ya estoy sacando de todo eso.

Be Sociable, Share!

19 Comentarios »

  1. avatar SAMSA « taller de computación física montevideo Dice:

    […] Leer Más… […]

  2. avatar Daniel B. Dice:

    ¡¡¡Buenísimo!!!

    Puede ser que tengas ganas de más, pero las reacciones que tiene el hexápodo a una presencia cercana -y aparentemente también a la velocidad con que se acerca el objeto- es impresionante.
    Todo el movimiento que hace mientras “no hace nada” también contribuye a darle vida. Y (primer video) la forma en que corre en cuanto siente un ruido fuerte me hace acordar a las cucarachas.

    En fin, me parece que lo que has hecho con un solo microcontrolador está bárbaro. ¡¡¡Adelante!!!

  3. avatar pabloxid Dice:

    Muchas gracias. Sí, yo creo que hay que pulirlas un poco, pero ambas “conductas” pueden formar parte del comportamiento final.

    Saludos.

  4. avatar Gustavo L Dice:

    hola que tal soy el q te hizo preguntas sobre el exapodo..
    podrias liberar el codigo fuente tipo con licencia GPL comentado ya que me parece genial lo que hiciste.. y me dieron ganas de aprender mas de robotica .. yo apenas se algo de C pero me falta mucho.. y como me contaste y por lo que veo sos completamente autodidacta, entonces me gustaria si podrias publicar alo de programacion en asm o en C y sobre robotica , tipo el ppt que mostraste de como funcionan los servos y esas cosas.
    me quedo una duda.. cual es la diferencia entre stepers y servos? tengo mas pero lo dejo para otra

    saludos y sigue adelante

    pd: La maquina de dios es el acelerador de particulas mas grande que existe , pero encaro el nombre para un robot XDDDDDDDD

  5. avatar pabloxid Dice:

    Hola Gustavo, gracias por tu comentario. Sí, el PPT lo voy a publicar, primero ya que estoy lo voy a terminar, no va a tardar mucho, teniendo en cuenta que lo empecé ayer. Lo de la licencia GPL ni sé cómo funciona, pero puedo publicar partes del código, de hecho ya lo hice con los programas en Processing que están en este blog. La idea es hacer una especie de curso y colgarlo acá, así como tengo algunos ya hechos sobre sonido. Si te interesa alguna parte en especial te la puedo mandar por mail. Diferencia entre stepper y servo: el servo no es de por sí un tipo de motor, sino que es una combinación de un motor DC, una reducción mecánica, un encoder y una electrónica de control; el stepper en cambio es un tipo de motor, distinto al DC.

    Saludos,

    P.G.

  6. avatar Adriana Lima Dice:

    Very extraordinary site.
    The info here is truly helpful.

    I will refer it to my friends.

    Cheers

  7. avatar Jorge Dice:

    Estoy iniciandome en esto y realmente me ha sorprendido este tipo de proyectos, espero poder lograr alguno como el tuyo, por lo pronto quiero hacer un vehiculo, tengo dos motoreductores con rueda, lo quiero fijar en una base y poner al frente una rueda loca y programar el avance de cada rueda para hacerlos girar, avanzar, retroceder, etc… pero aun no logro controlar los motores, espero puedas darme algunos tips. me han dicho que con un puente H, estoy investigando al respecto, me sugirieron manejarlo con un encoder y buscando te encontre, haber si puedes darme algunas ideas, de cualquier forma, me agrado mucho tu robot, te estare siguiendo

  8. avatar Pabloxid Dice:

    Hola Jorge, muchas gracias por tu comentario, trataré de contestarte con más tiempo en estos dias.

    Para manejar un motor DC, siempre que quieras tener la posibilidad de moverlo en ambas direcciones, hace falta un puente en “H”. En mis proyectos, cuando se trata de motores de muy baja potencia (como en el caso de las antenas de SAMSA) he utilizado un circuito con 4 transistores bipolares, que trataré de postear en estos dias. Para casos de mayor potencia, para corrientes de hasta 1A, he utilizado el circuito integrado L293D, que es muy popular y efectivo. Por ejemplo, el Robotito utiliza uno de estos para sus motores de base.

    Te envío un saludo,

    P.G.

  9. avatar Martin Dice:

    Your webpage is without a doubt full of very good information and also is very pleasing to digest.

    Nicely done.

  10. avatar Thomas Dice:

    Es wäre sehr schön gewesen die Beschreibung in Englisch zu haben ,..
    I would be verry nice to have the desciption in English

    Я любовью еуче английский или язык спасибо

    thomas

  11. avatar James Dice:

    Good article. Thank you so much.

    James.

  12. avatar Tiffany Jewelry Dice:

    Really good sharing this.

  13. avatar hermes handbags Dice:

    Good job. I’m definitely going to bookmark you!

  14. avatar Christian Louboutin Dice:

    great share, great article, very usefull for me…thank you

  15. avatar Gisele Bündchen Dice:

    Hello, Good writing. I quite agree with all. Think it’s relevant content and pertinent point of view. Thanks :)

  16. avatar Bernard Michaud Dice:

    Bravo!
    This is a wonderful piece of ingenuity.
    I appriciate the work related to all this.
    Impeccable.

    – Is it possible to have the text in English.
    – Also, is there anything available as far as bloc diagrams of concept.

  17. avatar Gabor Neveri Dice:

    I would like to build a hexapod like your SAMSA. I could not find the code at your webpage. Is there any chance that you could upload the Wiring code of your SAMSA “classic” hexapod?
    It would be a great help.

    Thank You.

    Regards: Gabor

  18. avatar pabloxid Dice:

    @Gabor:

    SAMSA “classic” sources are not currently available, but there is a documentation that can help you, take a look here:

    http://www.pablogindel.com/2009/09/documentacion-de-samsa-1%C2%AA-entrega/

    On the other hand, I mention that my code of that time is very confusing, as well as from that time until today, both Arduino and Wiring have updated their servo libraries, which now allow to handle dozens of them.

    Many free, quality arduino/hexapod firmwares are also available at http://www.lynxmotion.net/

  19. avatar pabloxid Dice:

    Anyway, I will upload the code soon :)

RSS alimentación de los comentarios de esta entrada. TrackBack URL

Dejar un comentario