Aller au contenu


Photo
- - - - -

BurnBot - Self Balancing Robot

balancing equilibre pas à pas

154 réponses à ce sujet

#121 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 14 février 2018 - 10:41

Bonjour,

 

Voici comment je compte programmer mon robot :

 

Captu44re.PNG

 

Les explications : si je veux que le robot reste parfaitement où il est sans bouger, je laisse les setpoint1 des deux roues à 0, mon premier PID va regarder quel est l'écart avec la position angulaire réelle des roues et va généré un output qui sera un angle vertical de référence pour le robot que le deuxième PID va intégré en tant que Set Point qu'il va comparer avec l'angle mesuré par le MPU et sortir une vitesse aux moteurs pour à la fois maintenir le robot à l'équilibre mais aussi dans une position spatiale fixe. Vu que chaque roue possède son propre système d'asservissement le robot ne tournera pas sur lui même non plus car les deux vitesses des moteurs ne seront pas identiques et chacune essaiera de respecter le setpoint1 de départ vis à vis de sa valeur propre.

 

Ensuite si je veux faire avancé le robot en ligne droite je change la valeur de setpoint1 (positive, avant ou négative, arrière) mais en mettant la même aux deux systèmes. Encore une fois le premier PID va interpréter ça en donnant une nouvelle consigne pour la verticale (en mettant l'angle vers l'avant). Le deuxième PID va voir qu'il y a une différence avec l'angle mesuré et va induire une vitesse des moteurs qui permet de respecter tout cela, le robot se mettra donc à avancer.

 

Enfin si je veux faire tourner le robot il me suffis de mettre des valeurs de SetPoint1 différentes pour les deux systèmes, ce qui aura pour conséquence des vitesses différentes en sortie sachant que la roue qui se déplacera le moins essaiera toujours de maintenir le robot à l'équilibre.

 

J'espère avoir été clair ! J'ai pensé à ça hier au travail, pour moi je suis sur que ça va marcher mais j'aimerais avoir votre avis sur la question :) Evidemment je vais commencer par coder un premier PID pour maintenir le robot à l'équilibre pour je m'attarderais sur celui qui l'empêche d'avancer et enfin de scinderais le système en deux


  • Oracid aime ceci

#122 Path

Path

    Made By Humans

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

Posté 14 février 2018 - 01:25

Merci de partager.

#123 Oliver17

Oliver17

    Pilier du forum

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

Posté 14 février 2018 - 08:36

Coucou, en bas de cette vidéo on y retrouve le code du gars, si cela peux aider.

 


signature_01.png -->

 

Mon Tipeee
 


#124 Path

Path

    Made By Humans

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

Posté 14 février 2018 - 09:02

Elle est top cette video. Il y a un tas de truc dedans !! Merci



#125 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 14 février 2018 - 10:49

Vraiment sympa cette vidéo, de toute façon elles m'inspirent toutes sur Youtube !

 

En parlant de ça, voici les premier pas de BurnBot :D

 

 

J'ai codé rapidement quelque chose ce soir (en me basant sur mon petit banc d'essais) et surprise, sans avoir même réglé les coefficients du PID le robot tiens tout seul à l'équilibre et compense même de légère perturbation !!

 

Je pense que cette bonne stabilité est offerte grâce aux moteurs pas à pas, un résultat aussi précis avec des CC serait à mon sens plus compliqué.

 

Prochaine étape, coder le système que j'ai d'écris ce matin et tout mette au point. Je commence à entre apercevoir la fin :D


  • Oracid et Oliver17 aiment ceci

#126 Path

Path

    Made By Humans

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

Posté 14 février 2018 - 11:17

Mais c'est sûr que le mettrai des pas à pas quand je m'y remettrai.



#127 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 17 février 2018 - 12:38

Bonjour à tous,

 

J'essaye de calibrer les valeurs de mon premier PID, c'est vrai que c'est l'horreur ce truc !! Il y'a tellement de combinaisons possibles et peu de moyen de vérifier si l'une est meilleure que l'autre. 

 

 

Comme vous pouvez le constater le robot réagis très bien à de petites perturbations mais dès qu'elles deviennent un chouilla trop violente il n'y arrive plus et se casse inexorablement la figure. Soit je doit mettre des moteurs plus puissant (parce que ce ne sont pas exactement des NEMA 17) soit faire en sorte dans le programme qui réagisse plus violemment à de forts chocs !

 

J'ai beaucoup aimé la notion d'algorithme génétique pour que les valeurs des coefficiens soient déterminer automatiquements, j'aimerais beaucoup trouver une façon d'automatiser ce process parce que passer des heures à jouer sur les valeurs c'est fun mais non merci :P


  • Path aime ceci

#128 Oracid

Oracid

    Pilier du forum

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

Posté 17 février 2018 - 01:59

C'est bien, ça avance !
As-tu essayé d'analyser le code de la vidéo d'Oliver ?

#129 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 18 février 2018 - 12:50

Ca avance : Oui oui j'étudie le code à chaque fois, je pense avoir une bonne vision de ce qu'il faut faire.

 

 

Je commence à être sur la bonne voie au niveau des coefficiens : Kp = 500 Ki = 600 et Kd = 2.85

 

J'ai un comportement beaucoup plus réactif et comme vous pourrez le constater sur la vidéo il commence à encaisser des pichnette assez vénère :P


  • Melmet , Mike118 et Oliver17 aiment ceci

#130 Path

Path

    Made By Humans

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

Posté 18 février 2018 - 12:58

Le résultat est déjà super bien. Tu fais comment pour modifier les constantes PID ? Tu ne recharge pas le programme à chaque fois.



#131 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 18 février 2018 - 01:19

J'utilise le port série :) j'incrémente les valeurs par pas constant, mais j'ai remarqué que dans mon cas des valeurs élevées étaient meilleures :)



#132 Path

Path

    Made By Humans

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

Posté 18 février 2018 - 01:51

Oui moi aussi pour le port série ;)



#133 Oracid

Oracid

    Pilier du forum

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

Posté 18 février 2018 - 02:00

Beaucoup mieux ! Cela avance.

#134 Amhnemus

Amhnemus

    Membre passionné

  • Membres
  • PipPipPip
  • 593 messages
  • Gender:Male
  • Location:Montigny-le-bretonneux

Posté 20 février 2018 - 09:10

Impressionnant super ça donne envie ;) continue ne lâche rien
1ère place Robot Warrior 2019 humanoïdes autonome

#135 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 27 février 2018 - 08:11

Bonjour à tous,

Je bosse sur burnbot quasiment tous les jours. Le robot résiste beaucoup mieux aux perturbations, je ne pense pas pouvoir faire mieux ! Par contre jai perdu en « stabilité » (le robot tremble en peu quand même).

Je bosse surtout sur le schéma que je vous ais montré, jarrive a faire tenir le robot à léquilibre, à le faire tourner à droite à gauche mais impossible de le faire avancé ny reculer.

Pourtant je suis persuadé que mon idée est bonne dans lensemble (plusieurs source internet me donne raison) mais difficile à mettre en place.

Du coup je vais m´inspirer dun concept populaire ou on asservit la vitesse des roues plutôt que leur position angulaire (pour moi ca reviens au même car la vitesse nest que la position angulaire par rapport au temps) mais apparemment les autres robots fonctionne comme ça !

Wait and see

0975FD6E-442E-4933-92D0-BB4E2A934A0D.jpeg

#136 Oliver17

Oliver17

    Pilier du forum

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

Posté 27 février 2018 - 08:22

Coucou Budet, j'ai pensé à toi, j'avais mis ce lien de coté, car le PID j'y viendrai surement, c'est une vidéo, en image style pour les enfants (juste ce qu'il me faut lol) avec pas mal d'explication, peut être trouveras tu de quoi t'aider un peu sur le PID, sait on jamais. ;)

 


  • Melmet et Mike118 aiment ceci

signature_01.png -->

 

Mon Tipeee
 


#137 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 28 février 2018 - 09:29

Elle est énorme ta vidéo, enfin une méthode scientifique pour tuner les coefficients ! J'ai hate d'essayer ça !!

 

Quelqu'un connait une méthode pour tracer une courbe directement et en live depuis des valeurs qui sont print ?



#138 Path

Path

    Made By Humans

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

Posté 28 février 2018 - 09:32

Tu as le traceur série de l'IDE Arduino.


  • Mike118 aime ceci

#139 Budet

Budet

    Membre passionné

  • Membres
  • PipPipPip
  • 366 messages
  • Gender:Male
  • Location:69

Posté 28 février 2018 - 10:22

Non mais je suis un vrai débutant en robotique, je ne connaissais même pas ça ! C'EST GENIAL OH MON DIEU !

 

Putain je suis à l'hotel et aucune arduino sous la main... Je savais que j'aurais du ramener mon robot !



#140 Oracid

Oracid

    Pilier du forum

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

Posté 01 mars 2018 - 07:35

Dans cette vidéo, le gars montre comment utiliser la bibliothèque PID_v1.h.
Dans sa description, il donne le lien de son code qui est très simple, 'https://create.ardui...c5a898/preview'
Il montre un exemple avec le traceur série de l'IDE.


  • Melmet aime ceci



Répondre à ce sujet



  



Aussi étiqueté avec au moins un de ces mots-clés : balancing, equilibre, pas à pas

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

0 members, 0 guests, 0 anonymous users