Programmation différentielle pour un véhicule


8

Je suis à un point sur mon véhicule où, lorsque je vais vite et que je tourne, le véhicule agit bizarrement parce que les pneus intérieurs se déplacent plus rapidement que les pneus extérieurs. J'ai donc besoin de comprendre comment programmer dans un différentiel mais je n'arrive pas à le faire fonctionner correctement, donc je suis ici pour voir si quelqu'un a de l'expérience avec cela.

J'ai vérifié la physique en ligne, mais cela semble prendre en compte plus d'informations que je ne peux en fournir dans mon jeu (comme l'influence réelle de la gravité sur le véhicule). Actuellement, j'utilise la logique suivante pour déterminer les vitesses différentielles des roues. Je vais essayer d'expliquer le plus clairement et le plus simplement possible donc je m'excuse si c'est déroutant ou trop simplifié, c'est déroutant pour moi!

Voici ce que je fais: je divise mon degré de virage actuel par le montant maximal de virage pour obtenir un pourcentage, je prends ensuite ce pourcentage et l'applique à un pourcentage modificateur (juste un pour cent que j'ai composé et ajusté pour réduire le nombre passé au différentiel, vous ne savez pas ce que cela devrait être vraiment. Vitesse du moteur? Vitesse?). Ensuite, dans mon différentiel, je vérifie si le véhicule tourne à gauche ou à droite et réduit la vitesse d'un côté de x% et augmente la vitesse de l'autre côté du même x%

Je suis certain que mon plus gros problème est le nombre que je compose pour réduire le pourcentage de rotation, mais je ne peux pas dire quoi y mettre. Je sais que passer directement le% de virage au différentiel (disons, 40%) réduirait un côté de 40 et augmenterait l'autre de 40 et ce n'est clairement pas correct.

J'ai accès à la vitesse du moteur, à la transmission, à la vitesse de chaque essieu des roues, au couple, à la vitesse du véhicule, etc., mais je ne sais pas lequel de ces éléments je dois prendre en compte lors de la préparation de cette formule.

Peut-être que je complique trop ou peut-être que je simplifie trop. Toute aide pour comprendre cela serait formidable!


Quels problèmes avez-vous vraiment rencontrés avec la physique réelle impliquée? Parce que la gravité est facile à obtenir (c'est une constante que vous devez simplement modifier, il en va de même pour la masse du véhicule, etc.)
Roy T.

Eh bien, il n'y a pas vraiment de problèmes majeurs avec la vraie physique mais parce que je ne connais pas vraiment grand-chose aux différentiels et à la mécanique (réelle), la physique m'a dépassé la tête.
Mungoid

Réponses:


9

Je pense vraiment que vous ne devriez pas le faire de cette façon et que vous devriez vous pencher davantage sur la physique réelle (voir mon commentaire). Cependant, je peux vous dire pourquoi votre approche actuelle ne fonctionne pas. (Trop de temps pour les commentaires donc je vais juste poster ceci comme réponse)

Voyons d'abord ce qui se passe (vous l'avez probablement déjà fait vous-même).

Tournant

La situation est fondamentalement comme dans l'image ci-dessus, mais simplifions un peu les chiffres:

Supposons que la voiture C mesure 2 mètres de large et ait un rayon de braquage minimum de 5 mètres. Je tourne maintenant à gauche. La roue avant gauche suit désormais un cercle d'un diamètre de 5 mètres. La roue avant droite suit désormais un cercle de 7 mètres de diamètre. Un cercle complet sera parcouru par la roue gauche sur 10 * pi mètres. La roue droite parcourt 14 * pi mètres. Maintenant , dire que les roues de C ont tous la même taille, et que la circonférence des roues est de 0,5 * mètres pi (oui ce sont de grandes roues, mais personne ne dit que nous ne pouvions pas modéliser un camion monstre!) Le différentiel sera Il faut s'assurer que pour chaque 20 tours de la roue gauche la roue droite tourne 28 fois pour qu'aucune des roues ne glisse.

Donc, vous pourriez maintenant dire que le diff-% devrait être modifié, disons que pour la pleine gauche, il devrait différencier + 40%, et lerpons-le complètement à droite -40% et ensuite nous sommes en or?

Malheureusement, comme vous l'avez vu, cela ne fonctionne pas. Trouvons une formule générale pour le différentiel dans cette voiture. Ici x est le cercle de braquage souhaité.

left wheel distance: x*pi meters
right wheel distance: (x+2)*pi meters:
left wheel rotations: x*4
right wheel rotations: (x+2)*4  

Je dirais que le diff devrait fonctionner à la fraction ((x + 2) * 4 / (x * 4)) [*]. (Times 100% si vous le voulez en pourcentage) complot Let que:

tracé de diff

Comme vous pouvez le voir clairement, cette fonction est non linéaire. Donc, le simple fait que le différentiel dépend linéairement de la quantité de braquage à gauche ou à droite ne fonctionnera jamais.

Maintenant, je vois qu'il est tentant d'utiliser simplement la formule ci-dessus, mais je pense que c'est probablement mieux si vous ne le faites pas pour les raisons décrites ci-dessus :). Vous devrez également implémenter 2 différentiels, sauf si votre direction implique les quatre roues, ce qui rend encore plus difficile à mettre en œuvre, voir à nouveau la 1ère image.

[*]: que nous pouvons simplifier: (x + 2) * 4 / (x * 4) => (x + 2) / x


Je ne suis pas à mon ordinateur de travail pour essayer cela, mais j'ai le sentiment fort que vous avez raison sur tous les points! Et vous n'êtes pas trop loin du truc du camion monstre. C'est une pièce de machinerie lourde pour un simulateur, donc les roues ont un diamètre d'environ 2 mètres. À l'origine, je pensais que je serais en mesure de «tricher» car j'ai juste besoin de garder les roues au sol, mais je pense que cela le rendra beaucoup plus précis. Je vais exécuter les chiffres demain et je vous le ferai savoir. Merci!
Mungoid

Oui, votre message m'a orienté dans la bonne direction. J'avais essayé ma propre version du calcul que vous avez donné, mais apparemment je me trompais un peu. Merci pour les conseils!
Mungoid
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.