Ligne de chemin Shortest Suiveur Robot Logic Révélé!
Lassé du suiveur de ligne classique? Les gens presque perdent intérêt? Voici un poste qui pourrait changer tout cela et tourner les vents de votre côté.
Imaginez si votre robot devait commencer à partir du noeud A (source) et se déplacer vers le noeud B (destination) et revenir au noeud A! Hmm ... pas si grand. si votre robot pourrait comprendre le chemin le plus court du noeud source au noeud de destination, puis retourne au nœud source choisir le chemin le plus court. Maintenant que ne sera pas un enfer d'un robot? C'est là ce poste vous conduira.
Pour le bien de ceux qui ont essayé et abandonné sur le point de réussir, je posterai ma méthode (ou la méthode que je pouvais penser au large) ici. Encore une fois, je dois vous rappeler ce qui est probablement pas la meilleure façon de le faire. Si vous connaissez une méthode qui est plus optimisé, être utile en partageant avec d'autres.

Supposons que la boîte carrée comme le point de départ et le patch circulaire comme le point de fin de la piste. Je suis sûr que vous avez compris le chemin le plus court de la source à la destination; Merci à tous les jeux que nous avons joué dans les magazines. D'ailleurs, cela est un labyrinthe assez simple par rapport à ceux que nous obtenons dans le Young World. J'ai posté la solution de chemin le plus court pour votre confirmation.

Le point est que votre robot doit être en mesure de le faire pour non seulement cette piste, mais pour chaque piste, un esprit humain peut penser. Encore une chose que je l'ai mentionné plus tôt est que la piste ne devrait pas avoir des boucles en elle. Si votre piste a une boucle alors vous devez ajouter plus de logique et comme d'habitude de garder les choses simples je vais juste coller au concept courant principal.


Un nœud est quand il a plus d'options sur un changement de direction. Un nœud est le point où plus d'une ligne croise.
Points à retenir:
Chaque fois que le robot fait face à un noeud, il doit faire une entrée dans le réseau de direction. Il doit également faire une entrée à chaque fois qu'il arrive à une impasse. L'image ci-dessous montre le point de se rappeler en défaut à gauche (points rouges) et des algorithmes de droite par défaut (jaune).
Pour mieux comprendre cela, pour l'algorithme gauche par défaut, suivez les points sur le côté gauche de la piste à partir du noeud de départ au noeud de destination. Et de même pour défaut à droite suivre les points sur le côté droit. Ces points indiquent les positions lorsque le robot fera une entrée dans le registre de direction.

Faisons quelques hypothèses plus,
Votre programme va garder une trace des numéros de série (indice de direction) des hypothèses ci-dessus seulement; les directions sont pour votre compréhension. Chaque fois que votre robot rencontre un noeud, (point à retenir), il doit faire une entrée d'un de ces index de direction dans le tableau de direction.
La procédure de gauche par défaut algorithme est la suivante,
La procédure d'algorithme par défaut à droite est la suivante,
Par algorithme suivant, vous devriez avoir un tableau de direction comme celui-ci,
qui est -> [du Nord. Nord. Sud. Est. Nord. Sud. Est. Ouest. Sud. Nord. Ouest. Sud. Est. Est. Est]
qui est -> [Est. Sud. Nord. Est. Ouest. Nord. Est. Sud. Ouest. Est. Ouest. Nord. Est]
Ce sont les valeurs que je calculées après avoir suivi l'algorithme ci-dessus. recouper avec votre propre réponse pour être sûr. C'est le cœur de l'algorithme ainsi, cette logique ne doit pas être viciée.
Une fois que le robot a atteint la destination, le dir_arr doit être traitée pour calculer le chemin le plus court. Ceci est la partie la plus délicate de la méthode. Pour comprendre, je vais utiliser des étiquettes de direction au lieu de l'indice de direction.
S'il y a un Sud suivie du Nord ou vice-verse, alors il est un mouvement redondant et doit être enlevé. De même, s'il y a une est suivie d'un Occident ou vice-verse, il aussi redondant. Dans la première passe, effacer toutes les paires dans le tableau. Donc, votre tableau devrait ressembler à ceci après le premier passage, dans tous les cas le premier élément est persistant, même si elle doit être annulée.
Par défaut Réduction gauche Algorithme:
Dans un premier temps, de peur que le tableau de prendre la direction d'être,
Au 1er passage, nous regroupons et supprimer les éléments suivants,
De même, nous regroupons et enlever une autre de la résultante de la réduction précédente.
Enfin, il y a juste une chose que nous pouvons supprimer,
Ce n'est pas ce que nous rabotées pour bien faire?
Notre robot doit aller au nœud de destination et revenir au nœud source dans le plus court chemin. Pour ce faire, nous devons faire quelques changements dans le tableau de direction.
Pour changer la direction du robot, nous avons l'inverse les éléments du tableau. si 0 e élément devient n-ième élément et et n ième élément doit devenir l'élément 0e et ainsi de suite.
Une fois que tous ces traitements a été fait le tableau de direction inversée aura, < 4. 4. 4 > qui est [Ouest. Ouest. Ouest] dans notre convention.
Voilà! L'algorithme de chemin le plus court est révélé. Maintenant, tout ce que vous avez à faire est de penser à la façon dont nous pouvons mettre en œuvre cette logique en C et comment structurer le code de telle sorte que tout en allant de la source vers le noeud de destination le robot doit remplir le tableau et en revenant il doit utiliser le même tableau (ou différent de son souhait, mais votre ingénieurs incorporés ne sont pas toujours donné cette option ... la plupart du temps, le contrôleur a une pénurie en mémoire disponible)
J'espère que ce poste a été utile. Permettez-moi de savoir s'il y a des confusions dans le concept expliqué ci-dessus. Je vais poursuivre ce post avec la section de programmation le plus court chemin de Ligne Robot.
A aimé ce poste? Souscrivons avec votre email et nous vous tiendrons au courant engagged!