[ARDUINO] Asservissement grâce au PID

Le problème exposé dans ce sujet a été résolu.

Nous sommes bien d’accord, mais ma question c’est que si le poids est au centre de gravité, il correspond bien à la droite AB pour faire les moments cinétiques (AB ^ P), or tu dis que ce n’est pas la bonne distance à prendre… @Aabu.

Re @Aabu :) :

Je préfère ne pas détailler mes calculs ici (car assez long mais je le ferais si besoin). J’ai ceci :

Sin(2angle) - cos (2angle) = Jg * acceleration_angulaire

Mais je ne sais pas trop comment faire ensuite car je ne sais pas trop comment calculer Jg et même en trouvant sa valeur, j’aurais toujours 2 inconnus…

Tu t’es probablement trompé dans ton calcul. Le résultat est très simple. J’aimerais bien avoir plus de détails sur ton calcul pour voir où est l’erreur.

Jg peut être trouvé expérimentalement. Ton prof pourra mieux te répondre en fonction de ce qui est disponible dans ton établissement.

Et tu n’as pas vraiment deux inconnues, parce que l’accélération angulaire et l’angle sont liés.

D’accord…, voici ce que j’ai fait @Aabu (en reprenant le schéma précédent mais avec qu’un poids) (Il y a effectivement 2 petites erreurs dans mon calcul car je n’avais pas exprimé a_angu sous forme de vecteur colonne, et j’ai oublié un +) :

p : vecteur poids

fg : vecteur force de poussée du moteur gauche

fd : vecteur force de poussée du moteur droit

a_angu : vecteur accélération angulaire

Longueur AC = Longueur AD = 29cm

  • M_A_p + M_A_fg + M_A_fd = Jg * a_angu

  • AA ^ P + AC ^ Fg + AD ^ Fd = Jg * a_angu

  • AA ^ P = (0, 0, 0)

  • (-Csin(alpha), -Ccos(alpha), 0) ^ (cos(90-alpha), sin (90-alpha), 0) + (Dcos(alpha), Dsin(alpha), 0) ^ (cos(90+alpha), sin(90+alpha), 0) = Jg * (0, a, 0)

Suivant z :

  • -C sin alphacos alpha - Ccos alpha sin alpha + D(cos alpha)^2 - D(sin alpha)^2 = Jg * 0

  • -C (sin alphacos alpha + cos alphasin alpha) + D(cos alphacos alpha + sin alpha sin alpha) = Jg * 0

  • -29sin(2alpha) - 29 cos(2alpha) = 0

  • -29 (sin(2alpha) + cos(2*alpha)) = 0

Soit sin(2alpha) + cos(2alpha) = 0

<=> sin(2alpha) = -cos (2alpha)

<=> …

+0 -0

(-Csin(alpha), -Ccos(alpha), 0) ^ (cos(90-alpha), sin (90-alpha), 0) + (Dcos(alpha), Dsin(alpha), 0) ^ (cos(90+alpha), sin(90+alpha), 0) = Jg * (0, a, 0)

Cette ligne est fausse et par conséquent la suite aussi. Il y a différentes choses qui devraient faire s’agiter ton sens physique.

  • Pourquoi l’accélération angulaire serait selon y ? Tu as à peine commencé le calcul que tu rajoutes une hypothèse ! L’orientation n’est pas claire, mais il semblerait que tu es pris x pour l’horizontale, y pour la verticale et z pour l’autre. Quelque soit le choix fait, ton calcul n’est pas cohérent de toute façon.
  • (-Csin(alpha), -Ccos(alpha), 0) et (Dcos(alpha), Dsin(alpha), 0) ne sont pas possibles ensemble. Exemple : si alpha = 0, alors le projeté horizontal du bras gauche est nul, mais celui du bras droit vaut D, ce qui voudrait dire que ton balancier est plié à 90° ou quelque chose du genre.
  • (cos(90-alpha), sin (90-alpha), 0) : je passe sur le fait qu’il manque la norme de ta force. Par contre, je suis certain que l’angle n’est pas 90° - alpha. Pour t’en convaincre, tu peux imaginer la force quand alpha = 0 : elle est horizontale ; or, cos(90°) = 0, ce qui est contradictoire…

-29sin(2alpha) - 29 cos(2alpha) = 0

À ce stade, le calcul est faux depuis longtemps, mais évite de remplacer les valeurs numériques alors que tu n’as pas fini le calcul. Il y a plein d’inconvénients majeurs (impossible de vérifier les unités, perte d’information, difficulté à faire varier les paramètres pour une simulation une fois les paramètres perdus…) et pas d’avantage significatif.

Bien qu’il soit possible d’atteindre le résultat - qui est simple, je le répète - avec des calculs bêtes et méchants, je ne pense pas que tu aies la technicité pour aboutir. Je te conseille fortement de te rabattre sur des méthodes plus simples et bien adaptées à ton cas : bras de levier et règle de la main droite. Les produits vectoriels que tu calcules sont simples et peuvent être traités de cette manière.

Merci beaucoup pour tes précision @Aabu !

Je préfère continuer avec les moments d’inerties car c’est ce que l’on a le plus l’habitude d’utiliser (nous n’avons que rapidement vu la méthode du bras de levier). De plus, je ne pense pas trop loin de la bonne solution. Du coup, je préfère corriger ce que j’ai déjà fais si possible :)

  • C’est bien cela pour les axes

  • Effectivement, du coup comme j’imagine que résoudre la somme des moments = 0 j’imagine que l’accélération est suivant z (0, 0, z).

  • Je suis d’accord avec ton exemple mais en ayant fait des petits schémas, je suis certains de trouver cela…

  • Pareil ici, sauf pour l’oublie des normes, ce qui fait (Ccos(90-alpha), Csin(90-alpha), 0) et (Dcos(90+alpha), Dsin(90+alpha), 0)…

Je te remercie par avance pour ton aide !

PS :

Schéma pour AC :

Image utilisateur
Image utilisateur

Schéma pour AD :

Image utilisateur
Image utilisateur

EDIT : En faite, je sais peut-être pourquoi cela ne fonctionne pas, si pour AC (-Ccos(alpha), -Csin(alpha), 0) fonctionne et est donc correct, je sais pourquoi :)

+0 -0

Si j’ai bien compris ta question @Aabu, tu me demande si les 2 angles sont bien les mêmes ? Si oui, oui car leur représentation vectoriel est la même : Fg = Fd car D = C et avec la modification du vecteur Fg d’au dessus.

Mais je ne vois vraiment quoi faire pour le cos (90-alpha) etc… …

+0 -0

Petit UP @Aabu :)

EDIT : Ce n’est pas trop grave si nous ne sommes pas d’accord sur la géométrie, tant que les représentations vectoriels sont bonnes, car je pourrais voir cela plus tard avec mes camarades et mon professeur, ce qu’y t’éviteras de perdre du temps ;). Cependant après avoir trouvé cos(90-alpha) avec mes amis, je ne comprends pas pourquoi ce n’est pas correct…

+0 -0

Fg = Fd

Ben non, tu ne peux pas contrôler le drone dans cette situation… Prends du recul et penses à la physique !

Sinon, j’ai dit que c’était correct l’autre jour, mais je me suis peut-être trompé. Cela dit, comme tu changes de définition pour alpha tout le temps, c’est dur de suivre.

Maintenant, je réitère : à mon avis, tu n’as pas la technicité nécessaire pour obtenir le résultat par la voie calculatoire. Le bras de levier et la règle de la main droite donnent le résultat en deux lignes (et reviennent à utiliser la définition du produit vectoriel) !

+0 -0

Hum… Je suis donc obligé d’être sûr de mon schéma (pour trouver l’angle) Si l’on prend une position de base (drone à l’horizontale) = 50° J’ai ça comme schéma qui me parait exact, qu’en penses-tu ? :

Image utilisateur
Image utilisateur
+0 -0
Ce sujet est verrouillé.