Aller au contenu


Photo

BigMobBob -> Nouvelle version !


  • Veuillez vous connecter pour répondre
75 réponses à ce sujet

#21 Thot

Thot

    Habitué

  • Membres
  • PipPip
  • 327 messages
  • Gender:Male
  • Location:Toulouse
  • Interests:Artiste Roboticien, prendre les dernières techno et les mettre sur scène... telle est ma devise.
    Gestuelle et conscience artificielle.
    Bipédie et quadrupédie

Posté 20 août 2016 - 10:58

Ca a l'air pas mal en effet les joints de fenêtre. Pour le grip, j'avais essayé plein de matière caoutchouc. Plus c'est lisse, plus ça chope facilement la poussiere... plus ça glisse. La bande elastique risque de chopper la poussière je pense. Après, ça a l'avantage d'être changeable super facilement.

S'il y a bien un problème avec les robots bipèdes... c'est que ça prend la poussière même s'ils sont beaucoup utilisés ;-)


"Il n'y a rien de plus étrange pour l'homme que son image" RUR, Karel Capek
Caliban Midi - Art - Terroir et Robotique


#22 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 7 030 messages
  • Gender:Male

Posté 20 août 2016 - 05:43

S'il y a bien un problème avec les robots bipèdes... c'est que ça prend la poussière même s'ils sont beaucoup utilisés ;-)

Pour la poussière, on a rien fait de mieux que ça, http://www.ebay.fr/itm/Outillage-pour-bijoux-Souflette-ou-poire-de-nettoyage-pour-montres-bijoux-/231360763541?hash=item35de2d1695:g:EHsAAOSwARZXo6ce

#23 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 21 août 2016 - 10:09

Je trouve le grip excellent des joints de porte à voir dans le temps mais pour le moment c'est satisfaisant. Par contre je galère pour faire un mouvement propre avec un bipède utilisant seulement 4 servos moteurs pour les jambes. Le problème c'est que je n'ai plus de futaba S3003.

#24 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 22 août 2016 - 08:32

Voici le programme que je vais utiliser, trouvé sur le site http://www.pobot.org/Logiciel-d-un-robot-bipede.html

//
// on utilise la dernière version de la bibliothèque de contrôle de servomoteurs 
// il faut donc un environnement Arduino supérieur à la version 1.0 
#include <Servo.h>
//
// appel au fichier contenant le tableau de séquences
#include "Sequences.h"
//
// deux variables pour gérer : 
// - le nombre de microsecondes d'incrément de la consigne du signal pour servomoteur
// - le temps en microsecondes entre deux mises à jour des consignes
#define INCREMENT  1
#define DELAY_UPDATE  15
//
// ces servomoteurs ont un intervalle de commande entre 1000 et 2000 µs
// on peut adapter ces chiffres selon le modèle
#define SERVO_MIN  1000
#define SERVO_MAX  2000
//
// les 4 instances de servomoteur sont stockées dans un tableau
// pour faciliter la mise en adéquation avec les 4 valeurs dans le tableau de séquences
Servo Servos[4]; 
//
// les dernières consignes à atteindre
int consigne[4]; 
//
// les positions courantes données aux servomoteurs 
// car on ne passe pas instantanément d'une consigne à l'autre
// de cette manière on contrôle la vitesse des moteurs et pas seulement leur position
int position[4];
// l'indice de la commande en cours dans la séquence en cours 
int index = 0; 
int ecart = 0;
/**
 * Configuration de l'Arduino
 */
void setup()
{
  // les servomoteurs
  Servos[0].attach(6); // genou gauche
  Servos[1].attach(11); // hanche gauche
  Servos[2].attach(10); // genou droit
  Servos[3].attach(9); // hanche droite
  // il faut initialiser les variables pour éviter que le robot tombe au démarrage
  position[0] = 1500;
  position[1] = 1500;
  position[2] = 1500;
  position[3] = 1500;
  consigne[0] = 1500;
  consigne[1] = 1500;
  consigne[2] = 1500;
  consigne[3] = 1500;
  // position initiale (en degrés donc position milieu)
  Servos[0].write(90);
  Servos[1].write(90);
  Servos[2].write(90);
  Servos[3].write(90);
}
void loop()
{ 
  updatePosition();
  delay(DELAY_UPDATE);
}
void updatePosition()
{
  // on remet à 0 avant de mesurer l'écart entre la consigne et la position courante
  ecart = 0;
  for (int i = 0; i < 4 ; i++) {
    // ajout de l'écart du moteur à l'écart global
    ecart += abs(consigne[i]-position[i]);
    if (consigne[i] > position[i]+INCREMENT) 
    {
      position[i] += INCREMENT;
      Servos[i].writeMicroseconds(position[i]);
    }
    if (consigne[i] < position[i] - INCREMENT)
    {
      position[i] -= INCREMENT;  
      Servos[i].writeMicroseconds(position[i]);
    }
  }
  // on met à jour les consignes si la position des 4 servomoteurs est atteinte
  if (ecart < 4*INCREMENT) {
        index++;
        // si on dépasse, on revient au début du tableau
        if (index >= 10) index = 0;
        // les valeurs dans le tableau construit pas à pas en observant le robot
        // sont entre 1 et 9 pour être plus facile à comprendre  donc on utilise une fonction
        // pour passer de l'intervalle "utilisateur" à l'intervalle "servomoteur"
        consigne[0] = map(sequences[index][0],1,9,SERVO_MIN,SERVO_MAX);
        consigne[1] = map(sequences[index][1],1,9,SERVO_MIN,SERVO_MAX);
        consigne[2] = map(sequences[index][2],1,9,SERVO_MIN,SERVO_MAX);
        consigne[3] = map(sequences[index][3],1,9,SERVO_MIN,SERVO_MAX);
  }
}
/** 
 * Séquence des valeurs de consignes pas à pas pour chaque moteur
 */
// genou gauche / hanche gauche // genou droit / hanche droite
int sequences[12][4] = {{5,5,5,5},{10,5,5,5},{9,5,8,5},{8,5,8,5},{8,3,8,3},{8,3,8,3},{5,3,5,3},{5,3,2,3},{4,3,0,3},{1,3,0,3},{1,5,3,5},{3,5,5,5}};

Maintenant y'a plus qu'a adapter  :ignat_02:



#25 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 23 août 2016 - 05:48

Bizarre je n'arrive pas à faire marcher ce code, j'ai pourtant mis mes valeurs qui correspondent à mes servos futaba S3003 :

//on utilise la dernière version de la bibliothèque de contrôle de servomoteurs 
// il faut donc un environnement Arduino supérieur à la version 1.0 
#include <Servo.h>
//
// appel au fichier contenant le tableau de séquences
#include "Sequences.h"
//
// deux variables pour gérer : 
// - le nombre de microsecondes d'incrément de la consigne du signal pour servomoteur
// - le temps en microsecondes entre deux mises à jour des consignes
#define INCREMENT  1
#define DELAY_UPDATE  15
//
// ces servomoteurs ont un intervalle de commande entre 1000 et 2000 µs
// on peut adapter ces chiffres selon le modèle
#define SERVO_MIN  550
#define SERVO_MAX  2300
//
// les 4 instances de servomoteur sont stockées dans un tableau
// pour faciliter la mise en adéquation avec les 4 valeurs dans le tableau de séquences
Servo Servos[4]; 
//
// les dernières consignes à atteindre
int consigne[4]; 
//
// les positions courantes données aux servomoteurs 
// car on ne passe pas instantanément d'une consigne à l'autre
// de cette manière on contrôle la vitesse des moteurs et pas seulement leur position
int position[4];
// l'indice de la commande en cours dans la séquence en cours 
int index = 0; 
int ecart = 0;
/**
 * Configuration de l'Arduino
 */
void setup()
{
  // les servomoteurs
  Servos[0].attach(6); // genou gauche
  Servos[1].attach(11); // hanche gauche
  Servos[2].attach(10); // genou droit
  Servos[3].attach(9); // hanche droite
  // il faut initialiser les variables pour éviter que le robot tombe au démarrage
  position[0] = 1425;
  position[1] = 1425;
  position[2] = 1425;
  position[3] = 1425;
  consigne[0] = 1425;
  consigne[1] = 1425;
  consigne[2] = 1425;
  consigne[3] = 1425;
  // position initiale (en degrés donc position milieu)
  Servos[0].write(90);
  Servos[1].write(90);
  Servos[2].write(90);
  Servos[3].write(90);
}
void loop()
{ 
  updatePosition();
  delay(DELAY_UPDATE);
}
void updatePosition()
{
  // on remet à 0 avant de mesurer l'écart entre la consigne et la position courante
  ecart = 0;
  for (int i = 0; i < 4 ; i++) {
    // ajout de l'écart du moteur à l'écart global
    ecart += abs(consigne[i]-position[i]);
    if (consigne[i] > position[i]+INCREMENT) 
    {
      position[i] += INCREMENT;
      Servos[i].writeMicroseconds(position[i]);
    }
    if (consigne[i] < position[i] - INCREMENT)
    {
      position[i] -= INCREMENT;  
      Servos[i].writeMicroseconds(position[i]);
    }
  }
  // on met à jour les consignes si la position des 4 servomoteurs est atteinte
  if (ecart < 4*INCREMENT) {
        index++;
        // si on dépasse, on revient au début du tableau
        if (index >= 10) index = 0;
        // les valeurs dans le tableau construit pas à pas en observant le robot
        // sont entre 1 et 9 pour être plus facile à comprendre  donc on utilise une fonction
        // pour passer de l'intervalle "utilisateur" à l'intervalle "servomoteur"
        consigne[0] = map(sequences[index][0],1,9,SERVO_MIN,SERVO_MAX);
        consigne[1] = map(sequences[index][1],1,9,SERVO_MIN,SERVO_MAX);
        consigne[2] = map(sequences[index][2],1,9,SERVO_MIN,SERVO_MAX);
        consigne[3] = map(sequences[index][3],1,9,SERVO_MIN,SERVO_MAX);
  }
}

 Et j'ai laissé la séquence.h d'origine : 

/** 
 * Séquence des valeurs de consignes pas à pas pour chaque moteur
 */
// genou gauche / hanche gauche // genou droit / hanche droite
int sequences[12][4] = {{5,5,5,5},{10,5,5,5},{9,5,8,5},{8,5,8,5},{8,3,8,3},{8,3,8,3},{5,3,5,3},{5,3,2,3},{4,3,0,3},{1,3,0,3},{1,5,3,5},{3,5,5,5}};

Cela me fait un déplacement des servos bizarre en buté et puis plus rien  :kez_13:



#26 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 26 août 2016 - 06:14

Bon aller je lance un petit help, pour savoir si quelqu'un à déjà réussi à faire marcher un robot bipède qui utilise 4 servos moteur (je n'ai pas plus de servos futaba S3003). Je galère à trouver le point de basculement du robot. Je suis preneur d'astuce.

 

Car qu'elle galère !  :dvgmax_01:



#27 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 165 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 27 août 2016 - 03:17

tu ne vas pas forcément aimer ma réponse, mais avoir des jambes plus rapprochées ça aide ... 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#28 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 27 août 2016 - 03:47

En effet c'est vrai que pour une course du coups je risque d'avoir un robot plus lent :/ je viens de trouver des adaptateurs servos 9g -> futaba s3003 à imprimer. Je vais essayer de voir ce que j'arrive à faire avec ceci, peut être un robot avec 8 servos moteur du coups, mais j'ai peur du poids ...



#29 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 165 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 28 août 2016 - 05:29

est ce que cette vidéo t'aide ?


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#30 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 28 août 2016 - 02:20

Oui car cela confirme ce que je pensais , on ne peut pas ce contenter de juste utiliser la bibliothèque servos.h , car sans réguler la vitesse j'ai l'impression que cela ne fonction pas bien ( le robot à tendance à tourner tout seul)

#31 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 10 septembre 2016 - 11:18

Bonjour tous le monde,

 

Bon j'ai repris le robot pour la course des bipède, je me suis servis de ce chassis : 

 

http://www.thingiverse.com/thing:356398

 

Comme je n'avais que 4 servos moteur de type Futaba S3003, je me suis servis de petit tower pro 9G avec des adaptateurs et cela marche impec  :ignat_02:

 

P1070008.JPG

 

Bon il me reste la détection des bords de la piste (je vais finalement utiliser des micros contacts au niveau des pieds) et un capteur ultrason pour detecter le portique d'arrivé. J'espère bien avancer cette aprem et vous faire une petite video  :yahoo:  

 



#32 Thot

Thot

    Habitué

  • Membres
  • PipPip
  • 327 messages
  • Gender:Male
  • Location:Toulouse
  • Interests:Artiste Roboticien, prendre les dernières techno et les mettre sur scène... telle est ma devise.
    Gestuelle et conscience artificielle.
    Bipédie et quadrupédie

Posté 10 septembre 2016 - 06:08

Belle bête, ils vont pas trop forcer les petits servos bleus ?

"Il n'y a rien de plus étrange pour l'homme que son image" RUR, Karel Capek
Caliban Midi - Art - Terroir et Robotique


#33 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 10 septembre 2016 - 06:41

Étonnamment non, je croise les doigts pour ne pas qu'ils me lâchent avant la course ou lors de la course.

#34 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 10 septembre 2016 - 08:57

La loose , j'avais placé l'arduino sur le dessus avec la batterie, un des petits servos moteur a cassé.  :kez_11:

Je vais déplacer ces pièces au niveau des pieds pour déplacer le centre de gravité plus bas 



#35 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 11 septembre 2016 - 09:32

Excellent :)

Ouais vivement une tite vidéo ;)


signature_01.png -->

 

Mon Tipeee
 


#36 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 11 septembre 2016 - 12:00

Voici une petite vidéo des premiers pas du robot  :yahoo:

 

 

Bon le robot à tendance à tourner d'un coté, je vais réajuster avec le code qui pour le moment est tout basique : 

#include <Servo.h>

Servo HancheGauche;
Servo GenouGauche;
Servo PiedGauche;

Servo HancheDroite;
Servo GenouDroite;
Servo PiedDroite;

void setup()
{
    HancheGauche.attach(2, 550, 2300);
    GenouGauche.attach(3, 500, 2200);
    PiedGauche.attach(4, 550, 2300);
    
    HancheDroite.attach(5, 550, 2300);
    GenouDroite.attach(6, 500, 2200);
    PiedDroite.attach(7, 550, 2300);
    
    
    //position robot stable
    HancheGauche.write(75); //>90 penche a l'arriere
    HancheDroite.write(105); //>90 penche à l'avant
    GenouGauche.write(100); //>90 penche a l'avant
    GenouDroite.write(80); //>90 penche a larriere
    PiedGauche.write(90); //>90 penche a gauche
    PiedDroite.write(90); //>90 penche a droite
    
    
}

void loop()
{
                                                                      

delay(500);                                                           
                                                                        //appuis pied droit
    HancheGauche.write(100); //>90 penche a l'arriere
    HancheDroite.write(105); //>90 penche à l'avant
    GenouGauche.write(120); //>90 penche a l'avant
    GenouDroite.write(80); //>90 penche a larriere
    PiedGauche.write(110); //<90 penche a gauche
    PiedDroite.write(110); //>90 penche a droite
delay(500); 
                                                                        
                                                                        //deplacement jambe gauche
    
    HancheGauche.write(80); //>90 penche a l'arriere
    HancheDroite.write(85); //>90 penche à l'avant
    GenouGauche.write(100); //>90 penche a l'avant
    GenouDroite.write(60); //>90 penche a larriere
    PiedGauche.write(110); //<90 penche a gauche
    PiedDroite.write(110); //>90 penche a droite
delay(500);                                          
                                                                       
                                                                         //remise en position droite

    HancheGauche.write(80); //>90 penche a l'arriere
    HancheDroite.write(85); //>90 penche à l'avant
    GenouGauche.write(100); //>90 penche a l'avant
    GenouDroite.write(60); //>90 penche a larriere
    PiedGauche.write(90); //<90 penche a gauche
    PiedDroite.write(90); //>90 penche a droite

delay(500);  
                                                                            //appui pied gauche
         
    HancheGauche.write(80); //>90 penche a l'arriere
    HancheDroite.write(85); //>90 penche à l'avant
    GenouGauche.write(100); //>90 penche a l'avant
    GenouDroite.write(60); //>90 penche a larriere
    PiedGauche.write(70); //<90 penche a gauche
    PiedDroite.write(70); //>90 penche a droite
delay(500); 
                                                                  // Avancement jambe droite
    HancheGauche.write(100); //>90 penche a l'arriere
    HancheDroite.write(105); //>90 penche à l'avant
    GenouGauche.write(120); //>90 penche a l'avant
    GenouDroite.write(80); //>90 penche a larriere
    PiedGauche.write(70); //<90 penche a gauche
    PiedDroite.write(70); //>90 penche a droite
delay(500);                                                            
                                                                       //remise en position droite
    HancheGauche.write(100); //>90 penche a l'arriere
    HancheDroite.write(105); //>90 penche à l'avant
    GenouGauche.write(120); //>90 penche a l'avant
    GenouDroite.write(80); //>90 penche a larriere
    PiedGauche.write(90); //<90 penche a gauche
    PiedDroite.write(90); //>90 penche a droite

}

 

La suite à mon retour de vacance  :zsmoke:



#37 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 11 septembre 2016 - 02:11

Délire ^^

 

Sinon tu ne peux pas faire bouger plusieurs servos en même temps, histoire d'avoir quelque chose de plus "fluide".

 

(ou c'est déjà le cas, en voyant le code ?)

 

Bonne vacance ;)


signature_01.png -->

 

Mon Tipeee
 


#38 Guigz65

Guigz65

    Membre occasionnel

  • Membres
  • Pip
  • 137 messages
  • Gender:Male
  • Location:33 - Nord Gironde

Posté 11 septembre 2016 - 03:43

C'est déjà le cas , mais le problème est que l'on ne gère pas la vitesse , les servos atteigne la consigne le plus vite possible. Ce qui n'est pas forcément le top.

#39 Oliver17

Oliver17

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 758 messages
  • Gender:Male
  • Interests:Glenn

Posté 11 septembre 2016 - 04:29

Et avec la technique que m'avait donner Path, pour gérer la vitesse avec le temps.

 

(faudrait regarder sur mes pots dans "mon projet ^^") là je me bat avec mon imprimante lol

 

Sinon, le truc c'est que je peux gérer la vitesse de mes servos en stipulant, 5 sec pour faire 10 degres, ou mettre ce que tu veux pour les deux valeurs 10 sec pour 45 degrés etc etc.

 

Car là si je pige bien, tu gères l'angle et tu envois la sauce, donc tout va à fond. :(


signature_01.png -->

 

Mon Tipeee
 


#40 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 11 septembre 2016 - 04:29

Tu m'as devancé Oliver :)






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users