Autor Tema: Robot Hexapodo  (Leído 70503 veces)

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

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Robot Hexapodo
« Respuesta #15 en: 04 de Septiembre de 2012, 02:09:07 »
Miren lo que me llego hoy :lol:





Por el momento tengo solo tres servos para ir trabajando en una sola pata. Tenia miedo de que haya un pequeño error en los planos o del que corto el acrilico, pero las piezas encajan perfectamente con los servos (es mas, creo que no pasa ni un pelo). Estoy sorprendido y feliz por la precisión de la cortadora laser! ;-)

Con respecto al software, estuve leyendo mucho sobre los algoritmos que controlan las patas de estos bichos, y todos hablan de lo mismo: Cinematica Inversa (o Inverse Kinematics IK) y básicamente trata de lo siguiente:
Aqui hay un esquema tipico de una pata de un hexapodo

Para cualquiera que sepa un poco de trigonometria, es muy facil calcular la posicion del extremo de la pata (x,y,z) conociendo las posiciones (angulos) de los servos (alfa,beta,gamma). Este proceso se conoce como Cinematica Directa. Ahora, si conocemos la posicion de la pata (x,y,z) y queremos averiguar que valores deben tener los servos (alfa,beta,gamma) para alcanzar dicha posicion, nos encontramos con un problema de IK.

En la figura vemos que el extremo de la pata forma tres triangulos con respecto a cada servo. Dos de ellos son rectos y es facil calcular sus incognitas por teorema de pitagoras e identidades trigonometricas simples. Para el tercero es necesario utilizar el teorema del coseno

Bueno, la idea no es dar una clase de matematicas, el que quiera la demostracion puede visitar este sitio o buscar en google, hay muchisima informacion al respecto.

Para los que no quieren complicarse tanto con matematicas, aqui hay una rutina relativamente simple que toma los valores x,y,z y devuelve alfa,beta,gamma
Código: C
  1. ANGULOS alfabetagama (COORD3D P) {    
  2.   // convierte las coordenadas cartesianas en los angulos correspondientes
  3.   // recibe: xn, y, z; devuelve: gama (angulo cuerpo|coxa), alfa (angulo coxa|femur), beta (angulo femur|tibia)  
  4.   // fundamento: teorema de pitagoras + teorema del coseno (ver figura)
  5.  
  6.   P.x = abs (P.x);        // pequeño truco para aprovechar la simeti­a del eje x
  7.   ANGULOS A;
  8.  
  9.   // fase 1, calculamos "x" y el angulo "gama"
  10.   // COXA es la distancia entre el eje del primer motor y el segundo
  11.   float x = hypot (P.z, P.x) - COXA;
  12.   A.gama = ANG_SCALE*(atan(P.z/P.x))/PI;                  
  13.  
  14.   // fase 2, calculamos alfa y beta
  15.   // ver constantes definidas al principio
  16.   float xx = x*x; float yy = P.y*P.y;
  17.   float cosalfa = (xx + yy + FEMUR*FEMUR - TIBIA*TIBIA) / (2*FEMUR*sqrt(xx + yy));          // coseno del angulo que forman el "femur" y la hipotenusa
  18.   float cosbeta = (FEMUR*FEMUR + TIBIA*TIBIA - xx - yy) / (2*FEMUR*TIBIA);                         // coseno del angulo que forman "femur" y "tibia"
  19.   A.alfa = ANG_SCALE*(acos(cosalfa) + atan(P.y/x))/PI;
  20.   A.beta = ANG_SCALE/2 - ANG_SCALE*acos(cosbeta)/PI;
  21.  
  22.   return A;  
  23. }

Creo que el código es bastante entendible (gracias Pablo Gindel y Jorge Visca, de cuyo proyecto saque este fragmento de codigo). Todas las constantes (en mayusculas) dependen de las longitudes de las partes de nuestro robot, y de los servos.

Bueno, es todo por hoy. Antes de poder programar algo, tengo que fabricar un controlador de servos (20 servos, para las 18 patas y dos extra), el cual pienso hacer con un pic18f2550 con USB, o por el momento con un mbed.
Cuando tenga algo vuelvo a postear.
Saludos!!!

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

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Robot Hexapodo
« Respuesta #16 en: 04 de Septiembre de 2012, 03:52:00 »
Sí que están guapas esas piezas, ya estoy deseando verlo montado.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Robot Hexapodo
« Respuesta #17 en: 04 de Septiembre de 2012, 16:30:29 »
Bueno, ya diseñe la placa controladora de los servos. Utiliza un pic18f2550 en formato DIP. Iba a hacerlo con un pic18f4550 TQFP para que la placa quede lo mas pequeña posible, pero no quise enroscarme con la soldadura SMD y el circuito de ICSP. Ademas los pines es lo que mas lugar ocupa.
Aca van unas capturas:


Como ven, se tiene acceso a todos los pines, de modo de poder conectarlo via UART o USB a la PC. Y de ser necesario, se puede incluir un modulo bluetooth (colocando un circuito auxiliar para adaptar los 3.3V). La idea es alimentarlo con una LiPo de 2 celdas (7.4V), por eso el regulador de 5V (todavia tengo que hacer el calculo si el regulador va a soportar a todos los servos funcionando).
Como vamos a ocupar dos pines para comunicacion (ya sean RX/TX o D+/D-), nos quedan 19 para conectar servos.

Acepto cualquier conejo o sugerencia, lo diseñe muy rapido y es posible que se me haya escapado algo. Tal vez algun elemento de proteccion o algun pin del micro que no sirva como salida.

Gracias y saludos!!

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

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Robot Hexapodo
« Respuesta #18 en: 04 de Septiembre de 2012, 16:41:12 »
La alimentación de los servos conectala directo,luego de ahí ya regulas para el control.

Puedes usar 7.2v para los servos y de ahí ya regulas.

Tengo este diseño sin terminar de la controladora de servos.
Pego la imagen por si sirve de referencia.

Esta pensada para usar 16 servos.
Control mediante usb o rs232.
Trae 2 leds,1 indicador de energizado y el otro para visualizar que recibe o ejecuta comandos.

Saludos!

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Robot Hexapodo
« Respuesta #19 en: 04 de Septiembre de 2012, 17:43:18 »
Akena, me estas diciendo que los servos los alimente con los 7.2V de la Lipo directamente, y que las señales PWM sean de 5V?
Porque lei que los microservos se alimentan de 3V a 6V, me da miedo romperlos.
Saludos!

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

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Robot Hexapodo
« Respuesta #20 en: 04 de Septiembre de 2012, 18:54:23 »
Akena, me estas diciendo que los servos los alimente con los 7.2V de la Lipo directamente, y que las señales PWM sean de 5V?
Porque lei que los microservos se alimentan de 3V a 6V, me da miedo romperlos.
Saludos!

Yo los he alimentado con 7.2v sin ningún problema con baterias nickel.cadmio,que bien cargadas dan alrededor de 8v xD
Esto en competencias  :mrgreen:

¿ Que servos vas a ocupar ? ya vi que modelo,parece ser de los pequeños.

Viendo el tipo de servo mejor usa un regulador switching de 5vcd@3A,así te evitas tantas perdidas y calentones con el regulador lineal.

LM2576
LM2596
LM22678
LM22679

Saludos!
« Última modificación: 05 de Septiembre de 2012, 02:04:16 por AKENAFAB »

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Robot Hexapodo
« Respuesta #21 en: 04 de Septiembre de 2012, 23:10:29 »
Yo los he alimentado con 7.2v sin ningún problema con baterias nickel.cadmio,que bien cardas dan alrededor de 8v xD
Esto en competencias  :mrgreen:

¿ Que servos vas a ocupar ? ya vi que modelo,parece ser de los pequeños.

Viendo el tipo de servo mejor usa un regulador switching de 5vcd@3A,así te evitas tantas perdidas y calentones con el regulador lineal.

LM2576
LM2596
LM22678
LM22679

Saludos!

Creo que voy a hacer eso, porq una LiPo recien cargada da 8.4V, ya esta demasiado lejos de los limites del servo.
Mil gracias por el consejo! ;)

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

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Robot Hexapodo
« Respuesta #22 en: 07 de Septiembre de 2012, 09:17:22 »
Hola Gera

esas piezas parecen muy sensibles..? son robustas?
cuanto pesa el conjunto sin los servos?

que os parecio el enlace de los servos que puse en el post anterior?
parecen muy baratos ustedes le ven alguna pega?

Tambien encontre este enlace buscando bichos..

http://www.foroselectronica.es/f56/robot-hexapodo-woody-665.html

espero respuesta por parte de los servos..

Un saludo..


« Última modificación: 07 de Septiembre de 2012, 14:49:50 por pajaro »

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Robot Hexapodo
« Respuesta #23 en: 07 de Septiembre de 2012, 16:58:35 »
A ver no recuerdo demasiado de eso del calculo que propones, pero....lo que quieres hacer es algo asi como...
Una tabla de posiciones para cada tipo de movimiento y pata? en esa tabla irian los desplazamientos en x,y y z de la pata correspondiente y el tiempo que tardaria en hacerlo, o la velocidad del movimiento de esa pata,y con el calculo que propones calcularias los anugulos de cada servo y en consiguiente el valor Pwm a darle.
Es esa la idea del software?
Me supongo que debe ser algo asi, una rutina de cada servo de angulo/ pwm/velocidad de traslacion, y a cada movimiento se asigna el valor del angulo velocidad despues de calcular el angulo en la rutina de coordenadas a angulos.
Podrias aclararme algo sobre eso?
Mejor, donde hay ejemplos de software, estoy buscando pero no localizo nada.
Puedes poner un diagrama de bloques de la programacion que propones?
A ver en que podemos colaborar.
Personalmente me gustan las cosas pequeñas y me gustaria hacer un mini hexapodo con los servos mas chicos que encuentre y hacerlo con mi fresadora en aluminio.
La mecanica no me preocupa solo como hacer las rutinas para que los movimientos sean naturales de un insecto.
Por otra parte me gusta que mis robots sean libres asi que le incorporaria algoritmos aleatorios y sensores de luz choque etc.
Con eso anda libre por ahi y se mueve como le parece por el algoritsmo aleatorio y los sensores hacen que tambien se generen numeros aleatorios de funcionamiento.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Robot Hexapodo
« Respuesta #24 en: 07 de Septiembre de 2012, 23:41:14 »
Pajaro, las piezas no son para nada fragiles. Sin querer puse un servo al reves, y se quedo enganchado (con un bracket q tiene el servo), le tuve q hacer mucha fuerza para poder sacarlo, y el acrilico quedo intacto. Las piezas tienen 3mm de espesor, y en conjunto pesan 110gr.
El servo que decis se ve piola, yo he sentido bueno comentarios de esa marca. Pero ni idea si sera de confianza el vendedor, nunca compre en ebay, y no se bien como es el sistema.

Algec, el software pienso programarlo en varias capas:
La capa 1 se va a encargar de controlar los servos, y los movimientos individuales de cada pata (por medio de los algoritmos de inverse kinematics). Esos movimientos pueden ser absolutos o relativos. Por ejemplo: "mover la pata a las coordenadas absolutas x, y, z", o bien, "desde la posicion actual, desplazar la pata un delta x, delta y, delta z".
La capa 2 estara a cargo de los movimientos complejos. O sea, de describir una determinada trayectoria (suelen usarse curvas bezier para los pasos) a una determinada velocidad.
La capa 3 se encargara de los movimientos coordinados entre varias patas. Posiciones estaticas, gestos, distintas formas de caminar (un paso a la vez, paso y medio, dos pasos y paso de tripode)

El primer paso es hacer la plaquita que controle los 18 servos, y comunicarla con la PC (tal vez via USB HID). Luego voy a programar la capa 1. Pienso hacer un programita en processing con una GUI, que me permita mover cada pata como yo quiera, grabar posiciones y luego reproducirlas. Con suerte, tal vez pueda programar alguna secuencia de movimientos (un baile o algo).

En resumen, no voy a usar tablas ni movimientos programados ni nada de eso. Voy a generar los movimientos en tiempo real, asi tengo mayor control, y ademas puedo combinar los movimientos (por ejemplo, que el bicho camine inclinado, agachado o con las patas extendidas). Si todo sale bien, quiero ponerle sensores de presion en las patas, para que pueda caminar por caminos irregulares.

Bueno, ese es el plan. La mala noticia es que tengo que comprar varias cosas (servos, reguladores switching, baterias lipo), y eso va a demorar un tiempo. Pero mientras voy investigando y compartiendo con ustedes lo que aprenda ;)
« Última modificación: 08 de Septiembre de 2012, 00:00:14 por gera »

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

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Robot Hexapodo
« Respuesta #25 en: 08 de Septiembre de 2012, 05:53:52 »
Gracias por tu aclaracion, me gustaria it colaborando en lo que mi tiempo me deje. Podrias decirme si has empezado a esturcturar el programa,si hiciste algunas cosas, ir avanzando en eso?
Por favor , dime, pegaras todo lo que hagas? Estoy interesado en todas esas rutinas

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Robot Hexapodo
« Respuesta #26 en: 08 de Septiembre de 2012, 10:43:24 »
Estuve mirando lo que dices, las curvas y demas. Cada vez estoy mas interesado,. Crees que ese pic sera suficiente para tanto calculo? no seria quizas mejor uno para el PWm y otro para calcular las trayectorias y demas?

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Robot Hexapodo
« Respuesta #27 en: 08 de Septiembre de 2012, 13:21:23 »
La idea por ahora es utilizar el pic solamente para generar los PWM, y conectarlo a la PC, donde estara el software que realice los calculos y todo. Asi dispongo de mucho mayor poder de procesamiento para los calculos complejos.
Todavia no he programado nada porque aun no tengo todos los componentes para armar el bicho. A medida que vaya avanzando, voy a ir subiendolo aca, y los que quieran sumarse y colaborar, seran bienvenidos ;-)
Saludos!

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

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Robot Hexapodo
« Respuesta #28 en: 08 de Septiembre de 2012, 16:01:21 »
Entiendo, ahora comprendo lo que pretendes hacer, me parecia poca cosa ese pic para tanto trabajo.
A mi me interesaria hacerlo todo en un micro, he visto usar atmel para eso , pero supongo que pica tambien servira.
Lo que me interesa sobre manera es como hacen el desarrollo de los programas, no conozco atmel y uso CCS para pic. Hice hace años una araña pequeña en ensamblador y ni se donde esta el fuente.
He estado mirando y seguire haciendolo todo lo que publiques y estudiando lo que señalas. En lo que pueda ayudar, que sera poco segun veo, dimelo.
A ver si entre todos desarrollamos algo interesante.
Buscare los servos mas pequeños y mas baratos que encuentre porque pretendo hacer la mia del tamaño minimo posible, cuanto menos mejor en mi caso. Pero los algoritmos son los mismos y el pwm y demas tambien. Asi que todo me sirve.

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Robot Hexapodo
« Respuesta #29 en: 09 de Septiembre de 2012, 18:20:50 »
Hola compañeros

Yo tambien llevo idea de hacerlo con un uC y control por emisora,
lo malo es el 18f2550 que tiene pocas patas, llevo pensado hacerle un modulo
que cuelgue de un bus por ejemplo ... i2c, y programado con ccs.

Un saludo.


 

anything