Aller au contenu


Photo
- - - - -

BurnBot - Self Balancing Robot


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

#121 Budet

Budet

    Habitué

  • Membres
  • PipPip
  • 225 messages
  • Gender:Male
  • Location:60

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



#122 Path

Path

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 855 messages
  • Gender:Male
  • Location:Paris

Posté 14 février 2018 - 01:25

Merci de partager.

#123 Oliver17

Oliver17

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 612 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.

 



#124 Path

Path

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 855 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

    Habitué

  • Membres
  • PipPip
  • 225 messages
  • Gender:Male
  • Location:60

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



#126 Path

Path

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 855 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

    Habitué

  • Membres
  • PipPip
  • 225 messages
  • Gender:Male
  • Location:60

Posté hier, 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



#128 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 2 837 messages
  • Gender:Male

Posté hier, 13:59

C'est bien, ça avance !
As-tu essayé d'analyser le code de la vidéo d'Oliver ?
Ma chaine vidéo YouTube : https://www.youtube....wMz-IzZqyvqEUek




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

0 members, 0 guests, 0 anonymous users