Partage
  • Partager sur Facebook
  • Partager sur Twitter

Génération d'une trajectoire / courbe

Génération d'une trajectoire / courbe de "type sigmoïde" pour un robot

    5 janvier 2021 à 22:21:45

    Bonjour,

    Je suis en train de développer une simulation pour réaliser une trajectoire automatique pour un robot (/ voiture) qui doit aller se garer à un endroit précis. Pour réaliser une trajectoire "simple" pour le début je suis parti sur la création d’une fonction de "type sigmoïde" (un S en gros). Je connais / fixe au départ seulement le point de départ et d’arrivé et des zones d’exclusion (présence d’autres robots / véhicules) et la coordonnée x des centres des cercles (et leurs rayons).

    J’arrive à générer cette espèce de sigmoïde en créant 2 droites, 2 arcs de cercle (à partir de 2 cercles) et la tangente entre les 2 cercles.

    Je souhaite maintenant complètement automatiser la génération de cette trajectoire / courbe mais je ne vois pas trop comment mis prendre. En voulant simplifier un maximum pour faire petit à petit je tombe dans des cas particuliers et ce n’est pas forcément génial pour généraliser ensuite.

    Est-ce quelqu’un aurait des pistes ou totalement une autre direction de recherche à me proposer ?

    Voici un exemple d’une courbe que je génère :

     

    Si ce n’est pas le bon forum n’hésitez pas à me le dire. Mais je trouve que ça correspond à un problème de mathématiques.

    Cordialement,

    -
    Edité par Floriflo 5 janvier 2021 à 22:26:11

    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2021 à 11:23:30

      Je pense que tu as besoin de mieux définir ton besoin.

      - Ici tu as 2 disques 'interdits'. Ce sera toujours 2 disques, ou ça pourrait être plus ?

      - Ici, tu as choisi une courbe en forme de S. Soit. Mais tu aurais pu passer au dessus des 2 disques ( passer en haut à gauche du 2ème disque). Ou même contourner le 1er disque par la gauche, et donc passer en dessous des 2 disques.

      Ou même contourner le 1er disque par le bas, et le 2ème disque par le dessus, ce qui faisait un grand détour.

      Quel est le critère pour choisir ?

      A priori, un calcul que tu devras faire de toutes façons, c'est de trouver les segments qui sont tangeants aux 2 cercles.

      • Partager sur Facebook
      • Partager sur Twitter
        6 janvier 2021 à 13:34:48

        Bonjour,

        pourquoi ne pas avoir choisi une solution de type A* ?

        • Partager sur Facebook
        • Partager sur Twitter
          6 janvier 2021 à 20:54:06

          Merci pour vos réponses.

          Je vais préciser un peu ce que j’ai expliqué un peu plus haut. Je simule une voiture qui doit se garer sur une place de parking (et qui est assez proche de celle-ci) à travers des capteurs RFIDs disposés sur la place. J’ai choisi de prendre une forme en S pour ne pas avoir des problèmes au niveau de la manœuvre et du braquage des roues etc.

          J’ai oublié de préciser quelques éléments sur mon illustration. J’ai pris comme cas un obstacle / zone d’exclusion à gauche de la position du point d’arrivé c’est pourquoi je suis obligé de l’éviter et donc prendre le chemin que j’ai pris.

          J’ai supposé avoir aucune connaissance du terrain / environnement a priori et je n’ai pas simulé de capteur pour le moment qui me permettrait de le connaître. C’est pourquoi je n’ai pas choisi de solution de A* (il est possible que je me trompe et que cela fonctionne avec) et parce que je n’ai pas assez utilisé l’algorithme A* pour l’utiliser dans ce contexte.

          Cordialement,

          • Partager sur Facebook
          • Partager sur Twitter
            6 janvier 2021 à 23:52:40

            Tu as une position de départ. C'est quoi une position de départ ? C'est un emplacement, et une direction.

            Et idem, une position d'arrivée 'espérée', c'est à dire là aussi un emplacement et une direction.

            Admettons qu'il y ait 70 mètres entre les 2 positions. Tu peux raisonner de 5 mètres en 5 mètres. 

            Et avec à chaque pas 3 variantes : tout droit, en tournant un peu à droite (25° à droite), et en tournant un peu à gauche (25° à gauche).

            Tu parcours le demi-arbre à partir du point de départ : 3 options pour un premier pas de 5 mètres, puis 3x3 options pour un 2ème pas de 5 mètres etc.

            Idem le demi-arbre en partant du point d'arrivée.

            Quand il y a un point du demi-arbre de départ qui est assez proche d'un point du demi-arbre d'arrivée (moins de 5 mètres, et des directions assez parallèles), on tient une ébauche de parcours.

            Les parcours peuvent éventuellement mordre un peu sur les obstacles à cette étape. 

            Le parcours choisi au final sera basé sur cette ébauche. Il faut refaire le même type de traitement, avec des pas plus courts, et des angles plus précis.

            Et maintenant, on doit vraiment éviter les obstacles.

            Ca ressemble à du A*, mais à ma connaissance, le A* travaille avec des entiers, pas avec des réels. 

            L'avantage de faire 2 demi-arbres, au lieu d'un arbre partant du point de départ, c'est qu'on a beaucoup moins de scénarios à analyser.

            Si la cible est à une distance de 20 pas, un arbre, ça veut dire 3^20 chemins.

            Alors que 2 demi-arbres, c'est 2 * 3^10 chemins.

            C'est ma vision de bidouilleur.

            • Partager sur Facebook
            • Partager sur Twitter

            Génération d'une trajectoire / courbe

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown