Autor Tema: Proyecto: Robot Humanoide  (Leído 15476 veces)

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

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Proyecto: Robot Humanoide
« Respuesta #15 en: 19 de Junio de 2006, 18:55:36 »
Hola:

Solo por curiosidad y tambien para sugerir que esto se trate en un hilo nuevo que puede nombrarse controladora de servos para no desviarnos del tema original de Artifox, Manofwar en que lenguaje estas programando? y agradeceria que la respuesta me la pusieras en un nuevo hilo, o si algun moderador de robotica puede dividir este tema seria mejor aun.

Abrazos a todos  :mrgreen:

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Proyecto: Robot Humanoide
« Respuesta #16 en: 19 de Junio de 2006, 19:56:30 »
Hola:

Abierto está http://www.todopic.com.ar/foros/index.php?topic=12528.0 LordLafebre y allí contesto :)
Saludos desde Almería, España

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
Re: Proyecto: Robot Humanoide
« Respuesta #17 en: 20 de Junio de 2006, 02:06:24 »
Hola ya deje algunos comentarios en Placa Controladora de 24 Servos Pero igual coloco aca algunas cosas.

Basicamente mi algoritmo atiende un servo a la vez, es decir haciendo el control secuencialmente con lo que puedo controlar 8 servos tranquilamente y para logra hacer 16, controlo 2 servos a la vez en paralelo obteniendo 16 en total.



Aca dejo lo que he avanzado, aun no esta implementado la parte de comunicacion pues aun tengo que mejorar y probar algunas cosas... A ver que les parece...

Código: [Seleccionar]
#include <16F876A.h>
#fuses   XT, NOWDT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOBROWNOUT
#use     delay(clock=4000000)
#define  Nservos  16
#define  High  True
#define  Low   False
#byte    timer0 = 0x01
#byte    porta =  0x05
#byte    portb =  0x06
#byte    portc =  0x07
#bit     t0if =   0xb.2
#bit     Servo01 =   portb.0
#bit     Servo02 =   portb.1
#bit     Servo03 =   portb.2
#bit     Servo04 =   portb.3
#bit     Servo05 =   portb.4
#bit     Servo06 =   portb.5
#bit     Servo07 =   portb.6
#bit     Servo08 =   portb.7
#bit     Servo09 =   porta.0
#bit     Servo10 =   porta.1
#bit     Servo11 =   porta.2
#bit     Servo12 =   porta.3
#bit     Servo13 =   porta.5
#bit     Servo14 =   portc.0
#bit     Servo15 =   portc.1
#bit     Servo16 =   portc.2
int8  Index, Angulo[Nservos], s[2], time[2];

void Servo(int n, int1 Estado);
void Ini_Ang();
void retardo(int t);

void main()
{
   Index=0;
   setup_timer_0(RTCC_DIV_16);                     // Configura el tiempo de 2.5ms entre cada Interrupcion
   output_a(0);
   output_b(0);
   output_c(0);
   Ini_Ang();
   enable_interrupts( GLOBAL );
   while(1)
   {
      set_timer0(100);
      Servo(2*Index,High);
      Servo(2*Index+1,High);
      delay_us(300);
      if (Angulo[2*Index]>=Angulo[2*Index+1])
      {
         if (Angulo[2*Index]=Angulo[2*Index+1])
         {
            Time[0] = Angulo[2*Index];
            Time[1] = 0;
            s[0] = 2*Index;
            s[1] = 2*Index+1;
         }
         else
         {
            Time[0] = Angulo[2*Index+1];
            Time[1] = Angulo[2*Index]-Angulo[2*Index+1];
            s[0] = 2*Index+1;
            s[1] = 2*Index;
         }
      }
      else
      {
            Time[0] = Angulo[2*Index];
            Time[1] = Angulo[2*Index+1]-Angulo[2*Index];
            s[0] = 2*Index;
            s[1] = 2*Index+1;
      }
      retardo(time[0]);
      Servo(s[0],Low);
      retardo(time[1]);
      Servo(s[1],Low);
      #asm                                      // espera hasta que los 2.5ms hallan pasado
      Loop:
         BTFSS t0if
         GOTO  Loop
         BCF   t0if
      #endasm
      Index++;
      if (Index>=8)
         Index=0;
   }
}

void retardo(int t)
{
   int w;
   if (t!=0)
   {
      for (w=0;w<8;w++)
         delay_us(t);
   }
}

void Ini_Ang()
{
   int k;
   for(k=0;k<Nservos;k++)
      Angulo[k]=5*k;
}

void Servo(int n, int1 Estado)
{
   n+=n;
   if (Estado)
   {
      #asm
         MOVF  n,0
         ADDWF 2,1
         BSF   Servo01
         GOTO  SalidaH
         BSF   Servo02
         GOTO  SalidaH
         BSF   Servo03
         GOTO  SalidaH
         BSF   Servo04
         GOTO  SalidaH
         BSF   Servo05
         GOTO  SalidaH
         BSF   Servo06
         GOTO  SalidaH
         BSF   Servo07
         GOTO  SalidaH
         BSF   Servo08
         GOTO  SalidaH
         BSF   Servo09
         GOTO  SalidaH
         BSF   Servo10
         GOTO  SalidaH
         BSF   Servo11
         GOTO  SalidaH
         BSF   Servo12
         GOTO  SalidaH
         BSF   Servo13
         GOTO  SalidaH
         BSF   Servo14
         GOTO  SalidaH
         BSF   Servo15
         GOTO  SalidaH
         BSF   Servo16
      SalidaH:
      #endasm
   }
   else
   {
      #asm
         MOVF  n,0
         ADDWF 2,1
         BCF   Servo01
         GOTO  SalidaL
         BCF   Servo02
         GOTO  SalidaL
         BCF   Servo03
         GOTO  SalidaL
         BCF   Servo04
         GOTO  SalidaL
         BCF   Servo05
         GOTO  SalidaL
         BCF   Servo06
         GOTO  SalidaL
         BCF   Servo07
         GOTO  SalidaL
         BCF   Servo08
         GOTO  SalidaL
         BCF   Servo09
         GOTO  SalidaL
         BCF   Servo10
         GOTO  SalidaL
         BCF   Servo11
         GOTO  SalidaL
         BCF   Servo12
         GOTO  SalidaL
         BCF   Servo13
         GOTO  SalidaL
         BCF   Servo14
         GOTO  SalidaL
         BCF   Servo15
         GOTO  SalidaL
         BCF   Servo16
      SalidaL:
      #endasm
   }
}

Este codigo esta hecho para un 16F876 con un cristal de 4MHz, pronto lo pondre para 20MHz(aunque no se porque razon he tenido algunos problemas con este cristal) Y como podras dar cuenta atiendo 2 servos a la vez, por esa razon debo tener cuidado con la cantidad de tiempo que utilice para la comunicacion.

Nos vemos  :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
Re: Proyecto: Robot Humanoide
« Respuesta #18 en: 27 de Junio de 2006, 01:47:41 »
Hola a todos nuevamente... he estado sin tiempo ultimamente y espero pronto liberarme para poder darle de lleno al proyecto... Bueno a lo que venia.... He estado dandole muchas vueltas al tema de la controladora de 24 servos (o mas), especialmente en el tema de COMUNICACION y CONTROL de los servos y he llegado a algunas conclusiones...

Para explicarme mejor les comento que yo anteriormente realice un proyecto de un Robot Cuadrupedo: Quadbot en el cual hice una controladora de 6 servos (utilice 2 para mis 12 servos) y la programe en PicBasic Pro, la controladora no estaba tan mal, pero no controlaba como yo queria, en especial por la impresicion que me daba el usar Basic y el hecho que recien aprendia ese lenguaje de programacion en PIC's :? Esa controladora recibia los angulos de los motores <0-250> y este valor era multiplicado por 10 con lo que tenia un tiempo util de <0-2500us> que era con lo que controlaba los motores. Lo unico malo es que mi algoritmo tenia muchos errores propios del mismo.

Principalmente como lo pensamos en esa epoca la idea era recibir la posicion y actualizarlo lo mas rapido posible en el servo, de manera que se pueda hacer un barrido de posiciones con un tiempo de muestreo (por asi decirlo) de manera que los movimientos generados en la PC por medio del Matlab, los podia enviar al robot enviando apropiadamente los valores de los angulos en los que debian posicionarse los 12 servomotores. De esa manera podia controlar la velocidad del robot solo ajustando el tiempo de actualizacion de datos o interpolando algunos angulos.

Por ejemplo, en el siguiente grafico se muestra el movimiento especifico de una pata al caminar, primero en sus ejes relativos Y(t) y Z(t) y luego en los 3 angulos (una sola pata) que recorre este movimiento para lograr todo un movimiento sincronizado.

Por esta razon para la forma en que voy a controlar el robot humanoide va a ser solo enviando las posiciones de los servos mas no la velocidad con la que se tienen que mover. Cabe recalcar que en el los calculos de los movimientos se tiene en cuenta la velocidad maxima de los servomotores.

Bueno, hasta aca dejo las cosas... ya les comentare como avanzo con el proyecto.

Un abrazo  :-/ :-/ :-/ :-/ :-/ :-/
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Proyecto: Robot Humanoide
« Respuesta #19 en: 02 de Julio de 2006, 08:22:22 »
Hola Artifox

Si no he entendido mal, todo el trabajo del calculo de las posiciones de los servos lo llevará el dsPic de tu esquema o ¿recibirá las posiciones desde el pc?
Saludos desde Almería, España

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
Re: Proyecto: Robot Humanoide
« Respuesta #20 en: 02 de Julio de 2006, 22:40:11 »
Pues si... definitivamente lo primero es hacerlo directamente en la PC generando todas las trayectorias deseadas para las primeras pruebas, puego viendo al dificultad de las ecuaciones se puede implementar en el dsPic.. eso aun es dificil determinar pues el dspic tambien va a servir para trabajar con la camarita...

Nos vemos... :-/
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Proyecto: Robot Humanoide
« Respuesta #21 en: 02 de Julio de 2006, 23:44:09 »
Aqui hos dejo dos "papers" sobre robots bipedos con algunos estudios de movimientos y aplicación de redes neuronales.

http://rapidshare.de/files/24787579/Robot_Bipedo.pdf.html
http://rapidshare.de/files/24787666/Robot_Bipedo_2.pdf.html

Un saludo

* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
Re: Proyecto: Robot Humanoide
« Respuesta #22 en: 04 de Julio de 2006, 17:18:12 »
Muchas gracias jfh900 voy a echarles un ojo :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
Re: Proyecto: Robot Humanoide
« Respuesta #23 en: 06 de Julio de 2006, 16:22:03 »
Se ha tenido que hacer modificaciones a los servos: se le ha hecho un hueco por la parte de atras a la altura del eje de la salida para que por alli salga el cable, pues se le esta montando encima una placa de aluminio con la misma forma de las orejas del servo (asi lo hacemos simetrico) y dameas se le ha puesto un tornillo para que sirva como contraeje, el cual va empernado a dicha placa. Ha sido un trabajo de relojero, pero ya estan listos casi todos los servos. La facilidad es que uno de mis amigos tiene una metalmecanica :) Te dejo unas fotos para que lo vean por tus propios ojos




Espero pronto tener las placas de las controladoras... Nos vemos :-/ :-/ :-/ :-/ :-/
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Proyecto: Robot Humanoide
« Respuesta #24 en: 16 de Julio de 2006, 15:32:03 »
Hola Artifox.

Vaya eje enorme que le has puesto, desde luego a tu bot no le van a temblar las piernas con ese tamaño.

Por mi parte ya tengo algunas articulaciones hechas. A ver si le hago unas fotitos y las cuelgo.
Saludos desde Almería, España

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
Re: Proyecto: Robot Humanoide
« Respuesta #25 en: 02 de Septiembre de 2006, 15:02:21 »
Hola muchachos... hace mucho que no posteo por aca y la verdad es que he estado super ocupado haciendo miles de tramites y avanzando el robot... un paisano de Chiclayo me hizo acordar de no descuidar el tema, mis disculpas a todos...

Bueno, les comento que finalmente pude concluir mi ServoControladora que puede controlar 26 servomotores, utlizando comunicacion i2c para enviar los datos... Por otro lado el robot ya esta construido al 90% es decir solo le faltan retoques a algunas cosas, aca les dejo algunas fotos de su evolucion:




Ya luego pondre mas fotitos.... Les comento tambien que ya tengo en mis manos la camara y los transceivers, asi que como veran me espera mucho trabajo... como por ejemplo calibrar los 26 servos, pues todos los servos no tienen la misma respuesta a la misma señal, enviar los datos via RF, etc...

http://www.acroname.com/robotics/parts/R245-CMUCAM2-PLUS.html
http://www.sparkfun.com/commerce/product_info.php?products_id=151#

Nuestra meta a corto plazo es que podamos tener implementado el RF y en control desde la PC por USB, para logra que el robot haga "algo", por lo menos que camine.... y todo esto pues hay un evento en nuestra universidad y algunos amigos quieren que lo presentemos este 15 de Setiembre...
http://www.todopic.com.ar/foros/index.php?topic=13417.0
http://www.cedim.uni.edu.pe/paginas/olimpiadas.htm

Bueno, voy a tratar de estar mas pendiente del tema en el foro.... Nos vemos :-/ :-/ :-/ :-/ :-/
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: Proyecto: Robot Humanoide
« Respuesta #26 en: 02 de Septiembre de 2006, 15:30:13 »
Hola:

Que bien Victor, ya va tomando forma, y esta quedando estupendo, mis felicitaciones  :-/ :-/ :-/

Desconectado Arlequin

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 340
Re: Proyecto: Robot Humanoide
« Respuesta #27 en: 02 de Septiembre de 2006, 17:36:58 »
Muy bueno el proyecto Artifox, felicitaciones.

Te falta poco para que quede como un Veritech en modo Batloid de Robotech  :lol:.
¡¡Ex - c3poa!!            ---       Collapsing New People

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Proyecto: Robot Humanoide
« Respuesta #28 en: 05 de Septiembre de 2006, 07:14:33 »
Enhorabuena, te está quedando muy bien.

A ver cuando lo vemos dando sus primeros pasitos. :lol:
Saludos desde Almería, España

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
Re: Proyecto: Robot Humanoide
« Respuesta #29 en: 05 de Septiembre de 2006, 11:08:08 »
Gracias por sus comentarios... ya pronto (eso espero) lo veremos caminar, dando sus primero tropezones y sus primeras caidas como todo infante :mrgreen:

Cuannto tenga mas cosas les cuento como voy... Por ahora me encuentro haciendo que funcione el tranceiver RF... ojala y no me demore mucho...

Nos vemos :-/ :-/ :-/ :-/
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)


 

anything