Aller au contenu


Photo

8DOF - Q5 - Mon grand quadrupède


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

#21 TNERA

TNERA

    Membre occasionnel

  • Membres
  • Pip
  • 100 messages

Posté 23 juillet 2023 - 11:26

I like the minimal Frame.  I am thinking the same approach as well.  Pat's TRR quadruped was good inspiration!

Weight is everything it seems. especially with the limitations of servo-motor torque.



#22 Oracid

Oracid

    Pilier du forum

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

Posté 23 juillet 2023 - 01:08

Weight is everything it seems.

Well, it depends. This is made for race, but if you want a pet, the previous look could be better.



#23 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 945 messages
  • Gender:Male

Posté 23 juillet 2023 - 04:38

Cliquez moi.

attachicon.gifDSC_4010-L.jpgattachicon.gifDSC_4006-L.jpg

 

Voici la nouvelle version allégée de mon quadrupède. Il pèse 1735g contre 2200g, précédemment. Soit, presque 500g, en moins.

C'est très important, car cela permet d'envisager de pouvoir faire un 12DOF de la même taille.

 

J'ai eu pas mal de déboires. Un autre palonnier s'est cassé, mais surtout, un pied s'est arraché en brisant le support de son axe principal.

Si cela se reproduit, je vais devoir reconsidérer la globalité de la mécanique. Et pour l'instant, je ne sais pas comment faire.

 

La bonne nouvelle, c'est qu'il a fait les 10m en 7 secondes. Il l'a fait 2 fois, puis s'est brisé. L'important, c'est que cela a été reproductible.

Une seconde en moins pour une diminution de poids de 500g, c'est quand même cher payé.

 

J'ai changé la batterie pour une 2S, 1300mAh, 60C, 98g. Le mouvement est un rectangle de 200mm de coté, contre 180mm précédemment.

 

10m en 7 secondes, bravo, tu es hors d'atteinte !!! 

 

je ne parviens pas à faire mieux que 10m en 9.3s et encore sur une terrasse en composite.

 

Je ne suis pas très chaud pour en construire un plus grand. 



#24 Oracid

Oracid

    Pilier du forum

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

Posté 23 juillet 2023 - 08:07

10m en 7 secondes, bravo, tu es hors d'atteinte !!! 

Ouais . . . Il faut relativiser. Je ne l'ai fait que 2 fois.

Ce matin, j'ai essayé, mais je ne devais pas avoir assez de tension à cause de la séance photo qui a bien duré 15 minutes.

Et le coup d'après, une patte s'est désolidarisée du châssis. Je me donc résolu à coller.

De plus, pendant l'essai, je lui cours après, pour éviter qu'il ne tombe. Il ne va pas droit, alors je le réaligne.

Oui, c'est pas du jeu, mais en fait cela fait perdre du temps plutôt que d'en gagner.

J'ai donc passé la journée à coller et à bloquer tous les axes avec des élastiques plutôt qu'avec des bagues Lego. Puis, il s'est mis à pleuvoir.

J'ai donc encore pas mal de boulot avant que ce soit présentable et éventuellement faire une vidéo.

 

Au fait, j'ai supprimé 4 élastiques, un par patte.

Les élastiques, c'est très bien pour compenser la gravité, mais il ne faut surtout pas en mettre plus que nécessaire, sinon, on perd de l'énergie, pour rien.



#25 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 23 juillet 2023 - 10:40

Au fait, j'ai supprimé 4 élastiques, un par patte.

Les élastiques, c'est très bien pour compenser la gravité, mais il ne faut surtout pas en mettre plus que nécessaire, sinon, on perd de l'énergie, pour rien.

En effet, il ne faut surtout pas que les élastiques fassent plus que compenser la gravité (sinon tu lutte trop contre).

Pour la marche, je penses que l'idéal serait même de se limiter à supporter environ 50% de la gravité, pour diminuer au maximum le couple max des moteurs.

Si tu compenses 100% de la gravité, alors les servos forcent autant pour luter contre la gravité quand tu lève la patte, que sans élastiques quand tu as tout le poids sur la patte.

Le seul avantage du 100%, c'est que le robot tient debout sans électricité. Mais à part ça, je ne suis pas sur que 100% soit mieux que 0%
 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#26 Oracid

Oracid

    Pilier du forum

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

Posté 24 juillet 2023 - 06:40

Si tu compenses 100% de la gravité, alors les servos forcent autant pour luter contre la gravité quand tu lève la patte, que sans élastiques quand tu as tout le poids sur la patte.

J'ai un doute, là, mais la raison m'incite te suivre.

Je vais commencer par tester ça.

Mais comment déterminer que je suis à 50% ? En enlevant la moitié des élastiques ?

 

La terrasse est mouillée. Il va falloir attendre. En plus, ce matin, j'ai un truc à faire, et cet après-midi, il pleut. Misère . . .



#27 Oracid

Oracid

    Pilier du forum

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

Posté 24 juillet 2023 - 01:20

                     Bingo, 10m en 6 secondes ! ! !

 

 

J'ai divisé le nombre d'élastiques par 2. Ainsi, j'ai légèrement dépassé les 10m en 7 secondes.

Puis, j'ai augmenté le pas de 10mm à 20mm. Le pas, c'est la variable qui définit l'avancement dans l'exécution du rectangle.

Ainsi, avec un pas 10mm, le rectangle de 200mm, soit 400mm à aller et retour, est exécuté en 400mm / 10mm = 40 itérations.

Avec un pas de 20mm nous avons donc 20 itérations. C'est plus rapide, mais beaucoup plus violent. Le quadrupède a du mal a se maintenir.

Avec cette violence, j'ai cramé 3 fusibles de 5A. Je n'en ai pas de 10A. Du coup, j'ai fait un pont sur le Boomer. J'ai honte, je n'ai plus de sécurité, mais pour mes tests, je suis à l'extérieur, c'est donc moins risqué. De plus, j'ai une batterie en 60C.

 

J'ai reproduit ce temps à deux reprises. C'est important, cela veut dire que c'est reproductible. A la troisième reprise, il n'y avait plus assez de jus.

 

Alors, est ce que les 6 secondes sont dus à la suppression de la moitié des élastiques ou à l'augmentation du pas ?

Je l'ignore. Je suppose que ces deux paramètres ont chacun leur influence.

Je vais quand même faire d'autres tests pour éclaircir cela.

 

Il faut quand même relativiser ce record, car je cours après le quadrupède pour éviter qu'il ne se renverse.

Néanmoins, une chose est sûr, cette vitesse est atteignable.

 

Merci Sandro.  



#28 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 945 messages
  • Gender:Male

Posté 24 juillet 2023 - 02:44

                     Bingo, 10m en 6 secondes ! ! !

 

 

J'ai divisé le nombre d'élastiques par 2. Ainsi, j'ai légèrement dépassé les 10m en 7 secondes.

Puis, j'ai augmenté le pas de 10mm à 20mm. Le pas, c'est la variable qui définit l'avancement dans l'exécution du rectangle.

Ainsi, avec un pas 10mm, le rectangle de 200mm, soit 400mm à aller et retour, est exécuté en 400mm / 10mm = 40 itérations.

Avec un pas de 20mm nous avons donc 20 itérations. C'est plus rapide, mais beaucoup plus violent. Le quadrupède a du mal a se maintenir.

Avec cette violence, j'ai cramé 3 fusibles de 5A. Je n'en ai pas de 10A. Du coup, j'ai fait un pont sur le Boomer. J'ai honte, je n'ai plus de sécurité, mais pour mes tests, je suis à l'extérieur, c'est donc moins risqué. De plus, j'ai une batterie en 60C.

 

J'ai reproduit ce temps à deux reprises. C'est important, cela veut dire que c'est reproductible. A la troisième reprise, il n'y avait plus assez de jus.

 

Alors, est ce que les 6 secondes sont dus à la suppression de la moitié des élastiques ou à l'augmentation du pas ?

Je l'ignore. Je suppose que ces deux paramètres ont chacun leur influence.

Je vais quand même faire d'autres tests pour éclaircir cela.

 

Il faut quand même relativiser ce record, car je cours après le quadrupède pour éviter qu'il ne se renverse.

Néanmoins, une chose est sûr, cette vitesse est atteignable.

 

Merci Sandro.  

 

 

1s sur 7, c'est énorme comme progression !  14% de gain !

 

Quand tu passes à 20 itérations tu es sûr que la foulée est complète , que les 400 mm sont bien là ?

 

Si je comprends bien cela fait augmenter ta cadence ? si tu multiplies par 2 la fréquence de ta foulée et si tu perds 25% de sa longueur, tu restes largement gagnant. 

 

Si c'est le cas, et si je compare avec la course à pied, la vitesse est la résultante de la cadence et de la longueur de foulée, 2 paramètres à optimiser et qui change selon la morphologie (appuis, fibres musculaires, taille, poids...)

 

si tu multiplies par 2 la fréquence de ta foulée et si tu perds 25% de sa longueur, tu restes largement gagnant. 

 

 

Avec une telle progression tu n'as certainement pas trouvé ton optimum.

 

Et puis franchement courir après son robot à 6 km/h, ça fait de l'exercice...



#29 Oracid

Oracid

    Pilier du forum

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

Posté 24 juillet 2023 - 06:13

Quand tu passes à 20 itérations tu es sûr que la foulée est complète , que les 400 mm sont bien là ?

Et non, comment être sûr que la foulée est complète ? Patrick fait ça, avec un retour, mais on ne joue pas dans la même cour.

 

J'ai un delayMicroseconds() après le mouvement de chaque patte. Actuellement, je suis à 2600µs pour un pas de 20mm. Pour un pas de 10mm, j'avais 1400µs.

Si je diminue la valeur et que je vais moins vite, alors, c'est sans doute que je ne fais pas le cycle complet.

L'idée, c'est de faire un pas le plus petit possible pour que le mouvement soit le plus fluide. Mais, alors, le delayMicroseconds() à une valeur plus petite, et on atteint rapidement la vitesse "d'écriture" du servo.

Il faut donc augmenter le pas, mais le servo a une distance plus longue à parcourir, il faut lui laisser plus de temps. Et le mouvement est moins fluide, mais plus rapide.

 

Le problème, c'est de trouver le bon compromis.



#30 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 945 messages
  • Gender:Male

Posté 24 juillet 2023 - 06:53

Et non, comment être sûr que la foulée est complète ? Patrick fait ça, avec un retour, mais on ne joue pas dans la même cour.

 

J'ai un delayMicroseconds() après le mouvement de chaque patte. Actuellement, je suis à 2600µs pour un pas de 20mm. Pour un pas de 10mm, j'avais 1400µs.

Si je diminue la valeur et que je vais moins vite, alors, c'est sans doute que je ne fais pas le cycle complet.

L'idée, c'est de faire un pas le plus petit possible pour que le mouvement soit le plus fluide. Mais, alors, le delayMicroseconds() à une valeur plus petite, et on atteint rapidement la vitesse "d'écriture" du servo.

Il faut donc augmenter le pas, mais le servo a une distance plus longue à parcourir, il faut lui laisser plus de temps. Et le mouvement est moins fluide, mais plus rapide.

 

Le problème, c'est de trouver le bon compromis.

 

oui perso je me suis aperçu en filmant et en décomposant au ralenti, que mon optimum était loin du cycle complet.



#31 Oracid

Oracid

    Pilier du forum

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

Posté 25 juillet 2023 - 01:28

J'ai voulu en avoir le cœur net. J'ai refait un test avec tous les élastiques, en gardant exactement les mêmes paramètres de mon record à 10m/6s.

Désolé Sandro. On perd environ 25cm, sur une longueur de 10m, ce n'est vraiment pas beaucoup. Et je mettrais plutôt ces 25cm sur le compte d'un manque de précision de la force des élastiques.

Reste quand même, pour moi, un mystère. Comment ce fait-il que le résultat soit presque identique, avec 100% ou 50% d'élastiques pour compenser la gravité ? 

 

 

Petite modification de vocabulaire, à partir d'aujourd'hui.

- "le pas" sera la longueur de l'enjambée, soit pour moi, la longueur du rectangle (200mm)

- "la longueur de l'itération" correspond à la longueur de l'avancement du pied dans "le pas" , et déterminera "le nombre d'itérations" pour faire "un pas".

Par exemple, avec un pas de 200mm, soit 400mm aller et retour, la longueur de l'itération à 20mm fera un nombre d'itérations =  400  /  20  =  40



#32 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 25 juillet 2023 - 08:57

Reste quand même, pour moi, un mystère. Comment ce fait-il que le résultat soit presque identique, avec 100% ou 50% d'élastiques pour compenser la gravité ?

Probablement parce que ta trajectoire n'est pas limitée par le couple.

 

Les élastiques aident uniquement à réduire le couple que doit fournir le moteur.

a) Si c'est la vitesse angulaire max du servo qui limite, alors les élastiques ne changeront rien.

b) Si c'est la durée des itérations qui limite (ie tu pourrais faire les itérations en moins de temps, ou parcourir plus de distance dans chaque itération  à durée égale), alors les élastiques ne changeront rien.

c) Si par contre les moteurs ne fournissent pas assez de couple, alors les élastiques aideront (par exemple si ton robot est trop lourd pour marcher, les élastiques peuvent tout changer ; si le pas est plus petit qu'en théorie car les moteurs manquent de force, alors les élastiques aideront aussi).

 

En pratique, l'idéal serait de pousser les servos "à fond" à la fois en vitesse et en couple :

- si la vitesse angulaire n'est pas à fond, alors augmenter la distance des itérations (ou la durée de celles-ci)

- si tu n'exploites pas tout le couple, alors essaye de changer de mécanisme, soit pour gagner en vitesse en bout de patte (la solution intuitive serait un engrenage, mais je penses que ça peut se faire en modifiant le mécanisme), soit en rallongeant tes jambes (donc pas plus long à même trajectoire angulaire).

 

 

Donc tant que tu arrives à suivre proprement ta trajectoire de référence, les élastiques ne changeront pas grand chose (sauf éventuellement ta capacité à la suivre). Par contre, avec des élastiques bien dimensionnés, tu devrais pouvoir avoir une trajectoire du bout de pied plus ambitieuse (plus rapide et/ou pas plus long) qu'avec des élastiques sur ou sous dimensionnés

 

 

Toute la difficulté est de savoir où tu peux gagner, en vitesse ou en couple


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#33 Oracid

Oracid

    Pilier du forum

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

Posté 26 juillet 2023 - 06:41

Merci, Sandro, pour toutes ces explications. Je pense avoir compris, mais tout ça est un peu compliqué pour moi.

 

Hier j'ai voulu faire un test sans aucun élastique. Malheureusement, une patte a arraché son axe. J'ai donc dû coller. Je vais faire le test aujourd'hui.

 

Je tenterai également de baisser la longueur de l'itération à 15mm au lieu de 20mm, et je diminurai le delay().

Si la vitesse n'augmente pas, j'augmenterai la longueur de l'itération de 20mm à 25mm, et j'augmenterai le delay(). Malheureusement, le mouvement sera encore plus violent.

 

Allonger les pattes, ça, c'était ma botte secrète pour atteindre mon objectif, les 10m en 5 secondes. Depuis deux jours, je pense que c'est atteignable.

Pour commencer, j'allongerai le tibia de 1L (8mm). Le poids sera identique. Le tibia et le fémur n'ayant plus la même longueur, le losange sera bancale, mais ça devrait passer.

Si ce n'est pas suffisant, j'allongerai également le fémur de 1L. Je récupèrerai le losange, et l'augmentation du poids sera insignifiante.

 

Là, on sort de l'échelle de 20cm pour le coté du losange, et on s'envole vers des terres inconnues.

Il y aura une limite, car après, il faudra que j'allonge le corps. Le poids augmentera significativement, car j'imagine qu'il faudra durcir le châssis.

On en est pas là.



#34 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 26 juillet 2023 - 07:21

Je tenterai également de baisser la longueur de l'itération à 15mm au lieu de 20mm, et je diminurai le delay().

Si la vitesse n'augmente pas, j'augmenterai la longueur de l'itération de 20mm à 25mm, et j'augmenterai le delay(). Malheureusement, le mouvement sera encore plus violent.

Là je ne comprends pas, si tu baisses la longeur de l'itération et le delay dans les mêmes proportions (ou que tu les augmentes dans les mêmes proportions), tu ne devrais pas changer la vitesse (dans un monde idéal).

Si tu veux gagner en vitesse, il faut voir si tu augmenter la longueur de l'itération à durée constante, ou garder la longueur de l'itération en réduisant la durée : dans les 2 cas, si les servos arrivent à suivre, tu gagnes en vitesse (si les servos n'arrivent pas à suivre, alors ça sert à rien).


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#35 Oracid

Oracid

    Pilier du forum

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

Posté 26 juillet 2023 - 10:40

Là je ne comprends pas, si tu baisses la longeur de l'itération et le delay 

Oui, quand je baisse la longueur de l'itération, le nombre d'itérations augmente, et donc il faut diminuer le delay() pour garder la même même vitesse.

Le servo atteint sa position, car en baissant le longueur de l'itération, l'angle est plus petit.

Je vais publier le code ici, mais il faut que je le nettoie, un peu. Ce sera, peut-être, plus clair.



#36 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 945 messages
  • Gender:Male

Posté 26 juillet 2023 - 12:09

Ce que je trouve sympa dans la mise au point d'un quadrupède, comme c'est souvent la réalité dans d'autres domaines, rien ne vaut l'expérimentation et les essais. Certes les bases théoriques sont intéressantes (voire nécessaires ?) mais à vous lire et à en juger ma propre modeste expérience, il peut y avoir de gros écarts entre théorie et pratique, voire parfois à l'opposé de ce qu'on attend. Cela provient évidemment de tous les micro-paramètres identifiés ou non, mais en tout cas non maîtrisés, qui laissent une part non négligeable à l'imprévu. En tout cas moi qui me suis lancé dans la construction d'un quadrupède juste pour me former à la programmation en python, je me suis pris au jeu et j'aime beaucoup faire des essais en faisant varier les paramètres.
Et quand on parle de paramètre identifiés mais non maîtrisés, les élastiques en sont un, et seuls de nombreux essais permettent de trouver l'optimum.

Et faire des essais de façon "scientifique" rigoureuse comme un plan d'expérience est compliqué. Par exemple la charge de la batterie est forcément différente à chaque essai, il y a un moment où cette différence peut biaiser les résultats.

 

Mais je ne vous apprends rien. Je trouve juste la démarche super intéressante.



#37 Oracid

Oracid

    Pilier du forum

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

Posté 26 juillet 2023 - 01:17

Cliquez moi.

DSC_4017-L.jpg

 

Une photo, pour illustrer ce sujet. Il est fatigué, là. Il a travaillé toute la matinée. Un peu de douceur lui fait du bien . . .

 

Alors, non, la charge de la batterie, n'est pas un paramètre qui varie. La batterie est totalement chargée, à 8.4V, quand je valide un test.

Ce matin, j'ai fait des tests sans élastique et j'ai obtenu 10,50m en 6 secondes avec une longueur d'itération à 20mm et un delayMicroseconds(2600).

Puis j'ai fait des tests, toujours sans élastique, en diminuant la longueur d'itération à 15mm et un delayMicroseconds(1650).

Le résultat est de 9,5m en 5,5 secondes.

C'est toujours intéressant de diminuer la longueur d'itération. L'allure est plus fluide.

Malheureusement, je ne crois pas que ce soit possible d'atteindre les 10m / 5s, sans augmenter la longueur d'itération.

Par ailleurs, pour amortir le mouvement, je pense quand même garder un ou deux élastiques par pattes.

 

Le code.

Spoiler


#38 pat92fr

pat92fr

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 673 messages
  • Gender:Male

Posté 26 juillet 2023 - 05:43

La fonction writeMicroseconds() permet de régler la longueur des impulsions PWM vers les servos. Mes ces impulsions ne sont envoyées que toutes les 20ms par le processeur avec Arduino/Servo.

 

Les servos acceptent un délai de l'ordre de 3.3ms (330Hz). Tu peux donc ajuster la valeur de la bibliothèque servo : 

#define REFRESH_INTERVAL    20000     // minimum time to refresh servos in microseconds 

Tester une valeur inférieure, 10000, 5000, 3300 et voir !



#39 Oracid

Oracid

    Pilier du forum

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

Posté 26 juillet 2023 - 08:16

Tester une valeur inférieure, 10000, 5000, 3300 et voir !

Ok, merci, mais je suis censé voir quoi ?



#40 Oracid

Oracid

    Pilier du forum

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

Posté 27 juillet 2023 - 09:41

J'ai mis  REFRESH_INTERVAL  10000  , dans Servo.h

J'ai recompilé mon programme en prenant soin, préalablement, de relancer l'IDE. Comme je l'ai lu, je ne sais plus où. 

 

Résultat,             9,85m en 5,5 secondes

 

Puis j'ai mis  REFRESH_INTERVAL  5000 , c'était beaucoup plus rapide et un palonnier s'est cassé.

Je vais faire un nouveau palonnier, mais il faut que la colle sèche bien, soit 24h d'attente.

La suite à demain, donc.

 

Merci Patrick.






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

0 members, 0 guests, 0 anonymous users