Programmierung Shortest Path Linie Follower Roboter
Dieser Beitrag ist die Programmierung Abschnitt meiner früheren Post, die mit der Logik hinter den folgenden Routinen behandelt. zu verstehen Um die komplette Natur dieses Beitrags sollten Sie den vorherigen Eintrag zuerst lesen und dann mit diesem weiter.
Nein, dies ist nicht der gesamte Code! auch wenn der Titel liest Programmierung Shortest Path Zeile Follower Roboter :-).
Wenn Sie diesen Roboter machen und nach dem Algorithmus erklärte in meiner vorherigen Post. Sie werden diese Funktionen praktisch finden.
Sensoranordnung:
Die Balckboy. jeder Art von Linie mit nur einigen kleineren Modifikationen in dem Programmierabschnitt 8 Sensoren auf der Grundplatte montiert ist es mit der Fähigkeit zu versehen, zu folgen, ohne die Hardware zu berühren. Es gibt zwei weitere Sensoren zur Codierung der Räder des Roboters, aber jetzt unsere Sorge ist nur die Linie Folger.
Im Code verwende ich C-Makros diese Sensoren ohne Verwirrung zu adressieren. Hier ist, was ich definiert haben,
Hier ist ein Bild, den physischen Standort dieses Senors auf der Grundplatte des Roboters zu zeigen. das Code-Snippets für das Verständnis zu kommen, müssen Sie diese als Referenz zu sehen, welchen Sensor wir sprechen.


Suchen Sie nach einer Biegung oder Knoten:
Im Theorieteil hatte ich eine klare Definition einer Biegung und Drehung (Knoten) gegeben, so dass ich es hier nicht wieder aufwärmen. Diese Funktion wird verwendet, um festzustellen, ob eine Kreuzung meine den Roboter erfüllt, ist ein Knoten oder eine normale Kurve. Wenn es ein Knoten ist, gibt es 1 und wenn es eine wiederum gibt es 0. Es gibt auch einen anderen Zweck dieser Funktion dient. Es erkennt auch das Ende der Spur Hersteller durch die Rückkehr von 2 zur Aufruffunktion bezeichnet.
Update Direction Array:
Wenn der Roboter einen normalen Schritt abgebogen nach links oder rechts, dann wird 1 weitergegeben. Wenn der Roboter eine U wiederum macht (das eine 2-Schritt-Drehung) an einem bestimmten Punkt, dann hat es 2 an diese Funktion zu senden, so dass es in der Lage ist, die Richtung entsprechend zu aktualisieren. Die Logik ist so, dass, wenn es eine normale Schritt Reihe ist, dann wird der nächste Wert der dir_arr ist einer mehr als der vorherige Wert. Auf der anderen Seite, wenn es sich um eine U-Wende, dann wird der nächste Wert der dir_arr zwei mehr als der vorherige Wert. In beiden Fällen sollte die Gesamtsumme nicht 4 überschreiten, so ist die Antwort Modulo 4-ed einen Ringpuffer zu erhalten.
Identifizieren der redundanten Tracks:
Entfernen Sie die ermittelten Werte:
Die remove () Funktion wird verwendet, um die aufeinanderfolgenden gleichen Elemente im sortierten Feld zu entfernen. Die remove () Funktion ruft die Sortierfunktion wieder. Dieser Prozess ist rekursiv und hat durch die die Funktion sort () beendet werden, wenn es nicht mehr ist die Sortierung durchgeführt werden. Dies wird durch den Schleifenzähler ctr überwacht. Wenn der Zähler nie erhöht wird, dann im letzten Durchgang war es nichts zu sortieren, was bedeutet, dass alle Pässe sind vorbei und die Anordnung hat den kürzesten Weg in ihm gespeichert.
Umkehren der Richtung Form Ziel zu Quelle:
Da unser Ziel der Roboter wieder an den Quellknoten von dem Zielknoten zu machen ist, den kürzesten Weg wählen, müssen wir so die dir_arr Array neu anordnen, dass jede der Richtungen umgekehrt ist. Das ist Nord wird Süd und Süd wird Nord und umgekehrt. Auch die Gesamt arrya muss umgedreht; wie in, n geworden te Element der 1.-Element und so weiter.
Einwickeln, das sind die Funktionen, die ich bisher entwickelt haben. Darüber hinaus gibt es nur die Strukturierung des Programms und die Prüfung der Logik einmal der gesamte Code bereit ist. Es hat auch einen Hardware-Test (härtesten der Partie) sein, und natürlich die Dokumentation Abschnitt des Roboters in Aktion.
Zufrieden mit diesem Beitrag? Registrierung mit Ihrer E-Mail und wir halten Sie engagged!