IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Anticipation trajectoire - Kalman


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Anticipation trajectoire - Kalman
    Bonsoir, je travaille actuellement sur un projet c++/cli permettant de créer des mobiles autonomes, leurs attribuer une cible, vitesse et de les faire se déplacer en conséquence.

    J'ai codé une première méthode de calcul sur le principe de la courbe du chien et je souhaiterai faire évoluer ce calcul de trajectoire en utilisant l'anticipation de trajectoire. On m'a parlé du filtre de kalman qui permet de faire ceci... seulement je n'en connais pas les subtiltées.

    Voici le code de ma première méthode de calcul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    private: void Calcul()
    	{
    		double d_x = 0.0;
    		double d_y = 0.0;
     
    		while(pb_fin == true )
    		{
    			Thread::BeginCriticalRegion();//Début section critique !!!
    			d_x = pCmob_cible->X - X;//Différence en X
    			d_y = pCmob_cible->Y - Y;//Différence en Y
     
    			d_x = d_x*(Vitess/10.0);//Déplacement en X
    			d_y = d_y*(Vitess/10.0);//Déplacement en Y
     
    			X = X + d_x;//On se déplace
    			Y = Y + d_y;//On se déplace
     
     
    			if((abs(pCmob_cible->X - X) < 5 )&& (abs(pCmob_cible->Y - Y) < 5) ) //Quand on est proche de la cible...Distance en valeur absolue
    				this->Stop();
     
    			if((X < COORD_MIN_X) || (X > COORD_MAX_X) || (Y < COORD_MIN_Y) || (Y > COORD_MAX_Y))//Si on sort du cadre
    				this->Stop();
     
    			Thread::EndCriticalRegion();//Fin section critique !!!
    			Thread::Sleep(500);//Le mobile se déplace toutes les 500ms
    		}
    	}
    Un exemple de tracer pour quatre mobiles ayant la même vitesse :


    Merci de m'aider

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par fab039 Voir le message
    J'ai codé une première méthode de calcul sur le principe de la courbe du chien et je souhaiterai faire évoluer ce calcul de trajectoire en utilisant l'anticipation de trajectoire. On m'a parlé du filtre de kalman qui permet de faire ceci... seulement je n'en connais pas les subtiltées.
    Un filtre prédictif comme Kalman te donnera une meilleure approximation de la "prochaine" position de la cible. Ton algorithme de poursuite restera le même (pointer droit sur la position cible). Est-ce cela que tu veux ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Tu as compris ce que je voulais faire, c'est exactement ce que je recherche

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par fab039 Voir le message
    Tu as compris ce que je voulais faire, c'est exactement ce que je recherche
    hum... avant d'affiner l'estimation de position de la cible, ne vaudrait-il pas mieux améliorer ton algorithme de poursuite ?

    Vu ton algo actuel, estimer un meilleur point d'interception me parrait plus urgent que de prédire la trajectoire de la cible. Par un exemple, un algo simple style "pure pursuit" serait déjà pas mal.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Bonjour, peut tu me donner un peut plus d'information pour réaliser cette algo style "pure pursuit"?

    merci de t'interesser à mon probleme

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par fab039 Voir le message
    Bonjour, peut tu me donner un peut plus d'information pour réaliser cette algo style "pure pursuit"?
    Au lieu de pointer en direction de la position "actuelle" de la cible, il faut estimer où sera le point de rencontre.

    En supposant que le chasseur évolue a vitesse constante, a chaque temps "t" il couvre un cercle de plus en plus grand:

    Chasseur.rayon(t) = t*Chasseur.vitesse

    En supposant que la proie évolue a vitesse et direction constante, elle se déplace le long d'une droite:

    Proie.position(t) = Proie.depart + t*Proie.vitesse

    Le point de rencontre aura lieu au plus petit temps "T" tel que:

    distance( Chasseur.départ, Proie.position(T) ) = Chasseur.rayon(T)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. Trajectoire prédite et trajectoire estimée par filtre de Kalman
    Par improcess dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 18/10/2014, 23h02
  2. [2D] Trajectoires, anticipation, collisions, etc.
    Par Deaf dans le forum Développement 2D, 3D et Jeux
    Réponses: 14
    Dernier message: 16/10/2013, 14h55
  3. analyse de trajectoire
    Par victorracine dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 23/10/2005, 10h53
  4. Prédiction de trajectoire
    Par Xfennec dans le forum Développement
    Réponses: 3
    Dernier message: 27/07/2004, 16h08
  5. trajectoire anime en AS2
    Par savoyard dans le forum Flash
    Réponses: 20
    Dernier message: 07/11/2003, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo