Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Physique
Physique Forum d'entraide sur les algorithmes et moteurs physiques (ODE, Newton...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/02/2010, 17h50   #1
PrettyMan
Invité de passage
 
Inscription : mai 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 37
Points : 4
Points : 4
Par défaut Calcul de position à partir de l'accélération

Bonjour,
J'ai une centrale inertielle (MTi) qui me fournit l'accélération à chaque instant et la vitesse angulaire. De cela, j'aimerai calculer ma position à chaque instant. Il est à noter que la centrale inertielle donne l'accélération totale (accélération gravitationnel (ou g)+ accélération du au double intégration de la position). Donc il faut enlever g.
Est-ce que quelqu'un peut me donner quelques indications pour avoir les positions à chaque instant?

Merci par avance
PrettyMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2010, 15h03   #2
Syl_20
Membre confirmé
 
Inscription : juillet 2007
Messages : 318
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 318
Points : 219
Points : 219
Citation:
Envoyé par PrettyMan Voir le message
Bonjour,
J'ai une centrale inertielle (MTi) qui me fournit l'accélération à chaque instant et la vitesse angulaire. De cela, j'aimerai calculer ma position à chaque instant. Il est à noter que la centrale inertielle donne l'accélération totale (accélération gravitationnel (ou g)+ accélération du au double intégration de la position). Donc il faut enlever g.
Est-ce que quelqu'un peut me donner quelques indications pour avoir les positions à chaque instant?

Merci par avance
En posant le problème, ça devrait déjà t'aider:
Tu as:
ax = Ax(t)
ay = Ay(t)
az = Az(t) - g

que tu intègres une première fois pour avoir les vitesses:
vx(t2-t1) = (Axt1 + (Axt2-Axt1)/2)*(t2 - t1) + Cvx
vy(t2-t1) = (Ayt1 + (Ayt2-Ayt1)/2)*(t2 - t1) + Cvy
vz(t2-t1) = (Azt1 + (Azt2-Azt1)/2)*(t2 - t1) - g(t2-t1) + Cvz

puis une deuxieme fois pour les positions,je ne détaille pas, la flèmme)
Syl_20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2010, 23h47   #3
PrettyMan
Invité de passage
 
Inscription : mai 2009
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 37
Points : 4
Points : 4
merci pour ta réponse. Je comprend le démarche mais ce qui me préoccupe c'est l'expression exacte de l'accélération. Voici ce que j'ai trouvé dans le document de la centrale :
Citation:
NOTE: The linear 3D accelerometers measure all accelerations, including the acceleration due to gravity. This is inherent to all accelerometers. Therefore, if you wish to use the 3D linear accelerations output by the MTi / MTx to estimate the “free” acceleration (i.e. 2nd derivative of position) gravity must first be subtracted.
A mon avis l'accélération est composé par plusieurs accélération puisque le mouvement est variable donc il y a l'accélération angulaire, accélération relative ....
En résumé ce qu'il me faut c'est l'expression de l'accélération du mouvement (quelconque) dont g fait partie.
Je mets en pièce joint une formule que j'ai trouvé dans un livre mais je ne sais pas comment faire apparaitre le g la dedans.
Merci
Fichiers attachés
Type de fichier : doc formule_mecanique.doc (17,0 Ko, 44 affichages)
PrettyMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 00h10   #4
Frifron
Membre éprouvé
 
Inscription : mai 2005
Messages : 399
Détails du profil
Informations personnelles :
Âge : 30
Localisation : Canada

Informations forums :
Inscription : mai 2005
Messages : 399
Points : 400
Points : 400
Comme indiqué il te suffit de soustraire la gravitation de l'accélération récupérée.

Sur terre l'accélération gravitationnelle peut etre approximé a 9.81 m.s-2
__________________
SPARK
Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML
Frifron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 15h41   #5
Syl_20
Membre confirmé
 
Inscription : juillet 2007
Messages : 318
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 318
Points : 219
Points : 219
Pour te débarasser de G (G = 9.81 ms-2 à Paris):
-utilise la vitesse angulaire pour calculer par intégration les anges suivant les axes XYZ. Tu pourras comme ça avoir les composantes de G suivant les axe de ta centrale.

Et aussi n'oublie pas que la Terre est un repère sphérique et non orthonormé

Bon courage
Syl_20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 20h28   #6
ericd69
Expert Confirmé
 
Avatar de ericd69
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 1 816
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 1 816
Points : 3 119
Points : 3 119
puisque tu obtiens directement l'accélération total subie, pas besoin de soustraire la gravité

je rappelle que somme des forces (dont gravité)=masse * accélération

donc ici tu as juste à appliquer simplement:
d[1]=.5*a*t*t+v[0]*t+d[0] à chaque itération de calcul

avec
  • t le temps écoulé entre 2 mesures
  • a vecteur accélération mesuré
  • d[1] ton vecteur position, d0 le vecteur position précédent
  • v0 ton vecteur vitesse précédent

Code pseudo :
1
2
3
4
5
6
7
8
9
10
initialisation:
d[0]={0,0,0};
v[0]={0,0,0};
afficher _objet(d[0]);
tant que mesure faire:
a=mesure;
d[1]=.5*a*t*t+v[0]*t+d[0];
d[0]=d[1];
afficher _objet(d[0]);
fin tant que;
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 13h38   #7
stardeath
Expert Confirmé
 
Inscription : février 2006
Messages : 1 663
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 1 663
Points : 2 778
Points : 2 778
comme ça je dirai problème insoluble, une accélération nulle correspondant à une vitesse nulle ou constante, on ne peut pas déterminer si on se déplace ou pas, donc si la position change ou pas.
stardeath est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h32.


 
 
 
 
Partenaires

Hébergement Web