Aller au contenu


Photo

Robot Quadrupède Arduino Uno

Quadrupède Arduino Uno Mini Maestro

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

#21 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 20 juillet 2016 - 04:09

Video 2016  :

 



#22 Oliver17

Oliver17

    Pilier du forum

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

Posté 20 juillet 2016 - 05:54

C'est un bon début si je puis dire :)


signature_01.png -->

 

Mon Tipeee
 


#23 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 20 juillet 2016 - 08:57

Merci ! :) ce n'est qu'un début !



#24 Oliver17

Oliver17

    Pilier du forum

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

Posté 20 juillet 2016 - 09:55

Ouais, et j'adore mater vos vidéos et photos les gars, c'est motivant je trouve, de voir autant de passionnés :)


signature_01.png -->

 

Mon Tipeee
 


#25 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 732 messages
  • Gender:Male

Posté 21 juillet 2016 - 12:52

C'est un bon début !
Pour les mouvements, prévois-tu de mettre les valeurs dans un tableau chargé à partir d'un fichier ?

#26 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 21 juillet 2016 - 02:38

Salut ! Il y a plusieurs aspect de mon robot niveau programmation ou je me dit c'est trop long, trop gros.. une démarche peut efficace les mouvements du robot sont un peu bizarre. Je voit pas comment faire quelque chose de bien structurer et je travaille sur deux cartes différentes qui ont toutes les deux des avantages et des inconvénients. (Mini Maestro 12 - Pololu et SSC-32 lynxmotion ). Je vais essayer de poster plus de video et mon code pour permettre a tout le monde de voir plus en détails mes réalisations bancale lol.



#27 Oliver17

Oliver17

    Pilier du forum

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

Posté 21 juillet 2016 - 03:42

Tiens, peux tu me dire les avantages et inconvénients de tes deux cartes stp, les deux sont pour contrôler les servo j'imagine voyant le nom de la première.

PS : même si tes réalisations sont bancale je trouve ça excellent et super sympa de les partager avec nous, perso je kiff ce monde de fou ^^


signature_01.png -->

 

Mon Tipeee
 


#28 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 21 juillet 2016 - 08:46

En gros j'avais d'abord acheté la SSC-32, elle possède 32 fiche permettant de branché un servomoteur d'ou son nom ^^

Sinon elle est utilisée de base sur un robot de lynxmotion aussi un quadrupède lorsque tu veux faire faire quelque chose a ton robot rien de plus simple.

 

 

MonRobot.println("#0, P1500, T1000)      

 

Grâce a sa tu fait bouger un servomoteur choisi a une position pendant un temps donné.Par contre défaut pour l'alimentation de la ssc-32 les connecteur sont fragile et se casse si tu le manipule de trop.

 

Contrairement a la Mini maestro de chez Pololu possédant tout pile 12 emplacement pour servo ^^  (il en existe des différentes ( 6, 8, 12, 24) Très pratique quand même. Le problème avec cette carte c'est que c’était moins simple que celle de lynxmotion j'ai du retranscrire le code plus haut en réalisant une concaténation de chaine jusque la ça va mais après les servomoteur lâchait la position alors que l'autre carte maintenait tout sa en place.. ^^ et je pense avoir régler le problème en mettant tout dans des boucles mais bon c’est bricolage. lol Puis y'a des protocoles de base a avoir mais ça va c'est donner sur leur site internet.

 



#29 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 21 juillet 2016 - 09:17

Voila a quoi il ressemblait étant enfant :

 

[media][media]



#30 Oliver17

Oliver17

    Pilier du forum

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

Posté 21 juillet 2016 - 10:12

Ok pour les cartes :)

Si fragile que ça les connecteurs, c'est balot, c'est vrai quelle a l'air bien cette carte.

 

oh comme c'est meugnon tout bébé lol :)


signature_01.png -->

 

Mon Tipeee
 


#31 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 22 juillet 2016 - 12:35

Oui un peu faut faire attention !

Je pense que je vais me refaire un robot comme le tout premier avec des composants plus léger, il marchera plus vite et se sera un peu plus marrant. Plus c'est lourd plus ton robot est dure a faire marcher ... enfin j'ai l'impression ^^



#32 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 22 juillet 2016 - 12:44

Voici mon code :

( Si vous voyez des non-sens faite m'en part ! J'attend vos critique !)

#include <SoftwareSerial.h>

   int Numservo;
   
   /*******RAPIDE*******/
   int Temps=50;
   int Temps2=100;
   int Temps3=400;
   /*******LENT********
   int Temps=500;
   int Temps2=1000;
   int Temps3=2000;
   /******************/
   
void setup()
{
  Serial.begin(9600);
   
}

void loop()
{
   if (Serial.available() > 0)
   {
     char ch = Serial.read();
   
     switch(ch) {
       case 'a':
       tibias();
       debout();
       break;
      case'b':
       for(int i =0; i <7; i++)
        {
        avancer();
        }
        case'c':
        for(int i =0; i <4; i++)
        {
        tourner_droite();
        }
        break;
        case'd':
        for(int i =0; i <4; i++)
        {
        tourner_gauche();
        }
        break;
  
     }
   }
 
}



void Move(double Numservo, double mouvement, double temps)
{
  String avancer = "#";
  avancer.concat(String(Numservo,DEC));
  avancer.concat("P");
  avancer.concat(String(mouvement,DEC));
  avancer.concat("T");
  avancer.concat(String(temps,DEC));
  Serial.println(avancer);
}

void debout() 
{
  for(int i=16 ; i<=28; i ++)
  {
  Move(i,1500,1000);
 
  }
}

void avancer()
{
   /***********************ARR_DROITE******************************/
   
   Move(17,2000,50); 
   delay(Temps2);
   Move(16,1700,Temps);
   delay(Temps2);
   Move(17,1500,Temps); 
   delay(Temps3);
   Move(16,1300,Temps3);
   
   /***********************AV_DROITE******************************/
   
   //Move(19,1400,Temps);
   delay(Temps2);
   Move(20,2000,50); 
   delay(Temps2);
   Move(19,1700,Temps);
   delay(Temps2);
   Move(20,1500,Temps); 
   delay(Temps3);
   Move(19,1500,Temps3);
   
  /*************************ARR_GAUCHE****************************/
  
   Move(23,2000,50); 
   delay(Temps2);
   Move(22,1200,Temps);
   delay(Temps2);
   Move(23,1500,Temps); 
   delay(Temps3);
   Move(22,1700,Temps3);
   
   /***********************AV_GAUCHE******************************/
   
   //Move(25,1600,Temps);
   delay(Temps2);
   Move(26,2000,50); 
   delay(Temps2);
   Move(25,1300,Temps);
   delay(Temps2);
   Move(26,1500,Temps); 
   delay(Temps3);
   Move(25,1500,Temps3);
}


void tourner_droite()
{
  
     /*************************ARR_GAUCHE****************************/
  
   Move(23,2000,50); 
   delay(Temps2);
   Move(22,1100,Temps);
   delay(Temps2);
   Move(23,1500,Temps); 
   delay(Temps3);
   Move(22,1500,Temps3);
   
      
   /***********************AV_GAUCHE******************************/
   
   //Move(25,1600,Temps);
   delay(Temps2);
   Move(26,2000,50); 
   delay(Temps2);
   Move(25,1100,Temps);
   delay(Temps2);
   Move(26,1500,Temps); 
   delay(Temps3);
   Move(25,1500,Temps3);
   
   /***********************AV_DROITE******************************/
   
   //Move(19,1400,Temps);
   delay(Temps2);
   Move(20,2000,50); 
   delay(Temps2);
   Move(19,1100,Temps);
   delay(Temps2);
   Move(20,1500,Temps); 
   delay(Temps3);
   Move(19,1500,Temps3);
   
   
    /***********************ARR_DROITE******************************/
   
   Move(17,2000,50); 
   delay(Temps2);
   Move(16,1100,Temps);
   delay(Temps2);
   Move(17,1500,Temps); 
   delay(Temps3);
   Move(16,1500,Temps3);
  
}


void tourner_gauche()
{
    /***********************ARR_DROITE******************************/
   
   Move(17,2000,50); 
   delay(Temps2);
   Move(16,1850,Temps);
   delay(Temps2);
   Move(17,1500,Temps); 
   delay(Temps3);
   Move(16,1500,Temps3);
   
   /***********************AV_DROITE******************************/
   
   //Move(19,1400,Temps);
   delay(Temps2);
   Move(20,2000,50); 
   delay(Temps2);
   Move(19,1850,Temps);
   delay(Temps2);
   Move(20,1500,Temps); 
   delay(Temps3);
   Move(19,1500,Temps3);
   
  /*************************ARR_GAUCHE****************************/
  
   Move(23,2000,50); 
   delay(Temps2);
   Move(22,1850,Temps);
   delay(Temps2);
   Move(23,1500,Temps); 
   delay(Temps3);
   Move(22,1500,Temps3);
   
   /***********************AV_GAUCHE******************************/
   
   //Move(25,1600,Temps);
   delay(Temps2);
   Move(26,2000,50); 
   delay(Temps2);
   Move(25,1850,Temps);
   delay(Temps2);
   Move(26,1500,Temps); 
   delay(Temps3);
   Move(25,1500,Temps3);
}

void tibias()
{
  Move(18,1470,Temps);
  Move(21,1470,Temps);
  Move(24,1470,Temps);
  Move(27,1470,Temps);
}





#33 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 732 messages
  • Gender:Male

Posté 22 juillet 2016 - 01:59

Voici mon code :
( Si vous voyez des non-sens faite m'en part ! J'attend vos critique !)

Peut-être que si tu mettais tout cela dans un fichier, cela t'éviterait de compiler à chaque fois.
Je pense qu'il est plus structurant de séparer les données et le programme.

#34 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 22 juillet 2016 - 02:37

Dans un fichier ? c'est à dire avec excel ? ou ?

Mettre les données dans un fichier quelque chose de constant qui ne change jamais alors ?

Mon plus gros problème c'est les mouvements exacte d'un quadrupède lorsqu'il tourne par exemple car il n'est pas stable et ça change rapidement a cause des répartition de masse rien qu'une pile 9v change un peu la donne.

 

nouvelle vidéo :

 

[media][media]



#35 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 732 messages
  • Gender:Male

Posté 22 juillet 2016 - 06:22

Dans un fichier ? c'est à dire avec excel ? ou ?
Mettre les données dans un fichier quelque chose de constant qui ne change jamais alors ?

Je ne suis pas tes clair...
Je parle d'un fichier texte que tu peux faire avec Notepad, par exemple.
Chaque ligne correspondrait à un mouvement ou une action. Les valeurs étant séparées par des ;
Au début du programme, tu charges un tableau avec le fichier. Puis tu gères ce tableau par une boucle.
L'avantage, c'est que tu aurais juste à modifier le fichier et non pas forcément le programme.

Pour résumer, la grande partie des lignes de ton programme est constituée par des données.
Hors il me semble qu'il est préférable de mettre les données dans un fichier, ou dans une base de données, mais bon faisons simple pour commencer, un fichier c'est déjà bien.
Pour l'instant, le nombre de tes données n'est pas très important, mais imagine que tu en aies des milliers...

#36 Path

Path

    Made By Humans

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

Posté 22 juillet 2016 - 06:29

On peut faire ça avec un arduino ?



#37 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 732 messages
  • Gender:Male

Posté 22 juillet 2016 - 06:36

On peut faire ça avec un arduino ?

Ah ! Effectivement! J'avoue mon ignorance.
Si c'est du C, pourquoi pas.
Pas de carte SD sur un Arduino ?

#38 Vaelan

Vaelan

    Membre

  • Membres
  • 45 messages

Posté 22 juillet 2016 - 06:53

salut Alex
En faite Oracid veut parler de MODULE ou librairie en arduino je pense , sinon avec l IDE arduino tu peux séparer tes differentes partie de programme avec des onglets (bouton carre avec un flèche vers le bas en haut a droite).
Voila bien longtemps que mon robot et dans le placard par manque de temps mais ton superbe robot me donne avis de mis remettre ;))
J'ai regardé ton programme qui ressemble beaucoup à mon premier ;)) par contre si je peux me permettre tu devrais t'intéresser à une programmation Asynchrone parce que les "delay" mettent tout ton programme en pause , pour l instant pas gênant mais quand tu vas vouloir le télécommander ou mettre en place une cinématique inverse tout un série de problème vont apparaître, même si le SSC32 compense avec la vitesse des servo , mouvement parasite, retard de mouvement, tremblement .......



#39 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 732 messages
  • Gender:Male

Posté 23 juillet 2016 - 06:46

En faite Oracid veut parler de MODULE ou librairie en arduino je pense ...

Non, en fait, je n'y connais rien...

Mais j'ai trouvé ceci. Peut-être, est ce un bon exemple.
https://skyduino.wor...s-une-carte-sd/

#40 AlexBotMaker

AlexBotMaker

    Membre

  • Membres
  • 48 messages

Posté 23 juillet 2016 - 10:54

En premier Merci pour vos réponse !(Vaelan, Oracid), Path.. :) Puis en second se qui concerne Arduino, oui c'est vrai j'y est pas pensée à créer plusieurs fichier!  Je l'avait fait pour mes précédent programme qui tournait avec un SDK arduino sous visual studio 2010.

Sa me fait plaisir que tu soit nostalgique Vaelan ^^ Mais tu voit bien sur la vidéo mon robot tremble comme si il avait Parkinson !! lol 

Puis la cinématique inverse j'ai lu des pages de tutoriel différents mais je comprend toujours pas ... Je crois comprendre puis quand je crois avoir compris je remarque que en faite pas du tout lol

Le problème majeur c'est le manque de précision du robot vu que c'est moi qui rentre toute ces valeurs ....et aussi que je n'ai pas de capteur pour l'instant donc ces déplacement sont limité...

Puis comme dit la cinématique inverse entre Pythagore généralisé , Loi de Cosinus, Al-kashi, les matrices jacobiennes ... je connais plein de façon de le faire mais sa s’arrête la ^^







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

0 members, 0 guests, 0 anonymous users