Maths et robotique

Bonjour,

Ma question risque de sembler très basique pour beaucoup d'entre vous mais en ce qui me concerne, je ne trouve pas la solution après des heures de tests et recherches.

Voici mon problème:
Je désire programmer une voiture robot pour effectuer des virages avec comme données d'entrée l'angle et la puissance.
En gros j'utilise la puissance demandée pour calculer mon temps de virage en y appliquant un coefficient de réduction (en divisant la vitesse par ce coefficient).

Par exemple, si je lui demande un virage de 90° à 100% de puissance, j'applique un coeff de réduction de 50, ce qui me donne 2s par correction pour obtenir l'angle de virage.
En revanche, pour un virage de 90° à 30% de puissance, je dois appliquer un coeff de 20 car le virage doit durer plus longtemps mais les corrections plus courtes, soit 1.5s par correction.
Il est 2:30h donc je n'explique peut-être pas super bien la logique de mon programme (qui est spécifique au design du robot) , mais ça fonctionne très bien.

Le soucis ? Je voudrais ne pas avoir à changer manuellement ce coefficient quand je choisi une puissance différente, donc je voudrais pouvoir appliquer une formule pour obtenir le coefficient voulu à partir de la puissance entrée.

En gros, je rentre une puissance de 100% et la formule me donne un coeff de 50, et si je rentre une puissance de 30% elle me donne un coeff de 20.

J'ai regardé du coté des formules exponentielles, mais je ne sais pas si c'est la bonne solution ou la plus simple.

Merci d'avance pour votre aide, même si la question et le contexte ne sont peut-être pas dans les habitudes de ce forum. Désolé par avance pour mon ignorance :-).

Réponses

  • On ne pourra pas t'aider avec si peu de données.

    Peux-tu nous expliquer par quel procédé ta puissance est liée à ton coefficient ?

    Ou sinon, peux-tu nous donner plus de valeurs puissances/coefficients?
  • Bonjour
    Merci pour ta réponse.

    Pour répondre à ta question, le procédé consiste à appliquer le coefficient à la puissance pour obtenir une durée de virage en secondes
    Après tests, voici les couples puissance/coefficient qui fonctionnent correctement:

    P: 10 - C: 6.9
    P: 30 - C: 20
    P: 50 - C: 35
    P: 70 - C: 48
    P: 90 - C: 55
    P: 100 - C : 58

    Je précise que ces couples me donnent une précision de virage acceptable quelque soit l'angle demandé. Donc je dois faire avec la puissance et le temps de virage.

    Si quelqu'un arrive à me lier ces couples par une formule, ce serait vraiment top, sinon je serais obligé de remplir une matrice avec des puissances et coefficients pré-définis, ce qui n'est pas mon but. La solution d'un algorithme/formule me semble plus "élégante".

    Merci beaucoup dans tous les cas.
  • Bonjour.

    Si tu n'as pas besoin d'une grande précision, tu peux prendre coefficient = 0,58*puissance +1.
    On peut trouver des modèles plus précis, mais les irrégularités de tes valeurs expérimentales donneront probablement de mauvais résultats. Tu es sûr de ton 35 ?

    Cordialement.
  • Merci pour ta réponse.
    Je viens de refaire le test et je te confirme que le 35 me donne un résultat satifaisant.

    J'ai besoin d'une "relative" précision".

    Par exemple sur une puissance de 70 : (0.58*70)+1 = 41,6 ce qui est beaucoup trop loin des 48 dont j'ai besoin.

    S'il n'y a pas de solution, je vais m'orienter vers une matrice même si c'est plus lourd et moins élégant.
  • Je t'ai donné le meilleur modèle affine au sens des moindres carrés. On peut essayer une formulation avec des racines carrées, mais si elle est satisfaisante au début et à la fin, elle sera tout aussi fausse au milieu. Et avec des fonctions plus compliquées, on peut avoir des soucis pour les valeurs intermédiaires.

    mais tu as de la chance, je viens de regarder de plus près, et le modèle
    $y=0.3203538359.10^{-7}x^5-0.8034887565.10^{-5}x^4+0.6597304893.10^{-3}x^3-0.02097007275 x^2+0.9187859623x-0.773437500$ convient, avec y= coefficient et x=puissance.

    Cordialement.
  • Gérard, tu as du te tromper dans tes coefficients :
    voir le graphe

    En traçant le graphe, ça me fait penser à du degré 3. En interpolant uniquement sur 4 points, {10, 6.9}, {30,20}, {50, 35} {100,58} ça donne la formule suivante (voir http://www.wolframalpha.com/input/?i=iterpolate+{10,+6.9},+{30,20},+{50,+35}+{100,58} ):

    $y=-0.0000724206x^3 + 0.00889286x^2 + 0.393433 x + 2.14881$

    qui semble fonctionner par trop mal (on peut encore faire mieux en cherchant le polynôme $P$ de degré 3 minimisant $\sum [y_i -P(x_i)]^2$ mais la flemme de faire le calcul).
  • Bonjour Sebsheep.

    Je ne sais pas comment tu as pu te tromper dans la courbe, mais le polynôme que je donne est le polynôme d'interpolation de Lagrange donné par Maple pour ces données. Il y a juste un problème : Il faut faire les calculs avec une précision suffisante, par exemple Excel est incapable de trouver les bonnes valeurs à cause d'arrondis importants (erreur relative forte sur les petites valeurs).
    Si Minou ne dispose pas d'un programme de calcul en multiprécision, ce modèle risque de n'être qu'approximatif.

    Par contre, j'ai été surpris par la qualité de la courbe d'approximation, elle est très "lisse" au voisinage des valeurs, les suit très bien, alors que souvent, le polynôme d'interpolation fait des variations importantes entre les valeurs de base.

    Cordialement.

    NB : la version exacte, avec 69/10 à la place de 6,9 :
    $\displaystyle \frac{31}{967680000}x^5-\frac{9719}{1209600000}x^4+\frac{79801}{120960000}x^3-\frac{126827}{6048000}x^2+\frac{740909}{806400}x-\frac{99}{128}$
  • Bonjour,

    Merci pour vos réponses et désolé de faire signe aussi tardivement, je n'ai plus eu le temps de me pencher sur le sujet.
    C'est chose faite, mais je pense que je dois mal lire la formule car les résultat sont très éloignés de ce dont j'ai besoin (puissance de 100 me donne un coeff de 86.75 par exemple).

    Voila comment j'ai interprété:

    coeff = ((31/967680000)*a^5)-((9719/1209600000)*a^4)+((79801/120960000)*a^3)-((126827/6048000)*a^2)+((740909/806400)*a)-(99/128)

    Par rapport à ce que tu m'as donné, j'ai du mal interpréter quelque chose je pense :).

    a est la puissance.

    Cordialement,
Connectez-vous ou Inscrivez-vous pour répondre.