Wenn Sie eine PID-Schleife zum Lenken mithilfe der Linienverfolgung verwenden, ist Ihr Sollwert immer der gleiche. Sie möchten immer, dass sich die Linie in Bezug auf den Roboter in derselben Position befindet, beispielsweise in der Mitte Ihres Sensors.
Wenn Ihr Leitungssensor also einen Wert von -1 bis 1 ausgibt, wobei 0 die Mitte des Sensors ist, möchten Sie, dass Ihr Sollwert Null ist (und das Zurücklesen des Sensors und die Differenz gleich sind). Wenn Ihr Liniensensor einen Wert von 0 bis 10 ausgibt, möchten Sie, dass Ihr Sollwert 5 beträgt (und Ihr Sensor zurückliest und die Differenz unterschiedlich ist).
Da Sie lenken, indem Sie die Räder so einstellen, dass sie sich mit unterschiedlichen Geschwindigkeiten drehen, und dann einer Linie mit konstanter Geschwindigkeit reibungslos folgen, möchten Sie wahrscheinlich die Geschwindigkeiten für beide Räder basierend auf dem Fehler anpassen. Wenn Sie beispielsweise nach links abbiegen müssen, um auf der Linie zu bleiben, verlangsamen Sie das linke Rad und beschleunigen das rechte Rad. Je mehr Sie drehen müssen, desto mehr müssen Sie das Innenrad verlangsamen und desto mehr müssen Sie das Außenrad beschleunigen.
Betrachten Sie die Situation, in der Sie radians nach links drehen müssen, um den Fehler zu korrigieren, und Ihre aktuelle Geschwindigkeit ist :e S 0θeS0
Ihr linkes Rad muss also mit und Ihr rechtes Rad muss mit .S R = ( r + b ) θSL=rθSR=(r+b)θ
Um die gleiche Gesamtgeschwindigkeit aufrechtzuerhalten , benötigen Sie , sodass das linke Rad mit
während das rechte Rad fahren muss bei .S 0 = ( r + b / 2 ) θ S L = S 0 - ( b / 2 ) θ S R = S 0 + ( b / 2 ) θS0S0=(r+b/2)θSL=S0−(b/2)θSR=S0+(b/2)θ
Wenn Ihr Fehler gegen Null geht, tendieren auch die Drehzahlen jedes Motors zueinander. Wenn der Fehler zunimmt, nehmen auch die Geschwindigkeitsunterschiede zu.
Möglicherweise muss sich Ihr Innenrad sogar rückwärts drehen, wenn Ihr Sensor Ihnen mitteilt, dass die Linie enger gekrümmt ist als der Abstand zwischen Ihren Rädern. Dies sind Komplikationen, die Sie Schritt für Schritt durcharbeiten können, wenn Ihre Steuerung jedoch komplexer wird.
Da Ihr Fehler sowohl positive als auch negative Werte hat (um das Kontinuum von außerhalb der Skala links ... zu weit links ... auf der Linie ... zu weit rechts ... außerhalb der Skala rechts darzustellen, sollten Sie dies tun Sie müssen nie fragen, ob if
der Fehler positiv oder negativ ist. Sie sollten nur neue Werte basierend auf dem Fehlerwert berechnen, da ein positiver und ein negativer Wert entgegengesetzte und symmetrische Auswirkungen auf die Motoren haben sollten.
Beachten Sie, dass Sie bei der Zeilenverfolgung möglicherweise nur mit dem Proportional-Gain-Term davonkommen können (dh die anderen Terme bei Null belassen). Durch die Implementierung eines Derivat-Terms können Sie den Proportional-Gain-Term möglicherweise höher anheben, um ein reaktionsfähigeres System zu erhalten. Ein integraler Term hilft jedoch wahrscheinlich nicht weiter. Die Tatsache, dass der Fehler größer wird, wenn Ihr Roboter in die falsche Richtung geht, bedeutet, dass die physischen Bewegungen Ihres Roboters ohnehin wie ein integraler Begriff wirken.
Die spezifischen Werte von P, D und I werden durch die Reaktionsfähigkeit Ihres Systems bestimmt. Allgemeine Hinweise zum Einstellen von PID-Parametern finden Sie in meiner und anderen Antworten zu Was sind gute Strategien zum Einstellen von PID-Schleifen?