Besonderheiten
Wenn Sie sich das PID- Basisbeispiel ansehen, müssen Sie nur zwei Kopien des PID-Reglers instanziieren, eine für jedes Rad, jeden Encoder und jede PWM:
PID leftPID(&InputLeft, &OutputLeft, &SetpointLeft,2,5,1, DIRECT);
PID rightPID(&InputRight, &OutputRight, &SetpointRight,2,5,1, DIRECT);
Dann loop()
lesen Sie in Ihrem Äquivalent einfach beide Encoder, übergeben jeden Encoderwert an den entsprechenden PID
und schreiben schließlich beide PWM-Werte aus.
Für den Moment SetpointLeft
und SetpointRight
kann tatsächlich auf den gleichen Wert zeigen, aber wenn Sie sie auf diese Weise separat definieren, können Sie die Fähigkeit zum späteren Wenden hinzufügen.
Konzepte
Dies mag zwar für den Grundfall funktionieren, aber ob es wirklich ausreicht, hängt davon ab, wie genau Sie Ihre gerade Linie benötigen.
Vorausgesetzt , dass Sie haben Geber an jedem Rad, wenn Sie zwei PID - Schleifen laufen und vergleichen jeweils Rädern folgende Fehler , dann können Sie möglicherweise berechnen Sie Ihre maximale abbe Fehler über die Distanz, vorausgesetzt , Ihre Räder nicht rutschen. Wenn dieser Fehler kleiner als Ihre Anforderungen ist, ist eine vollständige Abrechnung alles, was Sie benötigen.
Wenn Ihre Räder jedoch zum Durchrutschen neigen, haben Sie möglicherweise einen versteckten Schleppfehler, den Ihr Steuerungssystem nicht erkennen kann, und Sie müssen einen Weg finden, um einen Schlupf zu erkennen oder die Position unabhängig von Ihren Radgebern zu berechnen geforderte Radpositionen / Geschwindigkeiten, um eine gerade Linie zu halten.
Relative Positionsbestimmung
Wie John vorschlägt , können Sie möglicherweise einen Beschleunigungsmesser verwenden, um die Position zu bestimmen. Aufgrund der Genauigkeit und der Auswirkung von Fehlern im Laufe der Zeit ist es jedoch besser, die Beschleunigungsmesserdaten zur Erkennung und Korrektur von Radschlupf zu verwenden.
In der mobilen Robotik werden üblicherweise Kalman-Filtertechniken verwendet, um die Daten aus mehreren Quellen, z. B. einem Beschleunigungsmesser und den Radcodierern, zu verschmelzen, um die aktuelle Position besser zu bestimmen.
Was auch immer Sie tun , mit einem relativen Positionsbestimmung jedoch im Laufe der Zeit die Position , die Sie sich selbst glauben zu sein , in werden von Ihrer tatsächlichen physischen Position abdriften.
Absolute Positionsbestimmung
Die einzige Möglichkeit, dies zu umgehen, besteht darin, einen Referenzpunkt außerhalb des Referenzrahmens Ihres Fahrzeugs zu haben.
Ein Roomba verwendet zum Beispiel im Allgemeinen die Dead Reckoning-Methode, um sich in einem Raum zu bewegen. Wenn er jedoch andocken muss, sucht er nach einem Infrarotlichtstrahl, der von der Ladestation ausgesendet wird. Wenn sich der Roomba zufällig durch diesen Strahl bewegt, erkennt er ihn, rastet auf den Strahl ein und folgt ihm zurück zu seiner Quelle. In Kombination mit den Stoßsensoren kann es sich präzise auf den Ladekontakten positionieren.
Für Ihren Roboter hat er möglicherweise eine Ausgangsposition, an der er zurückkehren und feststellen kann, dass er sich an diesem bekannten Ort befindet. Zu diesem Zeitpunkt weiß es genau, wo es sich befindet, und kann melden, wie weit die berechnete Position von der tatsächlichen Position entfernt ist.
Wenn Sie möchten, dass Ihr Roboter über Hunderte von Metern in einer geraden Linie fährt, können Sie auch zu einer anderen Technik wechseln, z. B. zum Hinzufügen eines Arduino-GPS-Schutzschilds .
Eine Kombination von Techniken
Abhängig von Ihren Genauigkeitsanforderungen müssen Sie möglicherweise eine Kombination dieser Techniken verwenden.
Wenn ein Führungsstrahl möglich ist, können Sie möglicherweise ganz einfach mit einer unsichtbaren Linienverfolgungstechnik das tun, was Sie möchten . Wenn Sie sich in einem eingeschränkten Bereich in einer beliebigen geraden Linie bewegen müssen, können Sie wie beim Roomba möglicherweise ein Paar von Führungsbalken (im rechten Winkel zueinander) verwenden, um Ihre synthetisierte Position in einer kartesischen Achse zu korrigieren Jedes Mal, wenn der Roboter einen der Strahlen passiert.
Hier gibt es viele Optionen, und was Sie ausgewählt haben, hängt davon ab, was Sie benötigen.