PID-Regler für Lego Mindstorms Roboter, gehen pid.

PID-Regler für Lego Mindstorms Roboter, gehen pid.

PID-Regler für Lego Mindstorms Roboter, gehen pid.

Ein PID-Regler ist eine übliche Technik verwendet, um eine Vielzahl von Maschinen zu steuern, einschließlich Fahrzeugen, Robotern und sogar Raketen. Die vollständige mathematische Beschreibung eines PID-Reglers ist ziemlich komplex, aber ein viel einfacheres Verständnis ist wirklich alles, was eine PID effektiv zu nutzen, benötigt wird.

Dieses Dokument ist eine Beschreibung, wie für die Verwendung mit Lego Mindstorms Roboter ein PID-Regler zu schaffen, die NXT-G Programmiersprache.

Es wird einfacher, wenn wir eine eigentliche Aufgabe im Sinn haben, so werde ich beschreiben, wie eine PID zu erstellen tun Linie folgen. Einmal erstellt, kann die gleiche PID verwendet werden, mit nur geringfügigen Änderungen, mit jedem anderen MINDSTORMS-Anwendung wie ein Roboter erhalten, die so gerade wie möglich zu fahren, oder sogar für einen Roboter, der wie mit nichts als zwei Räder den Boden berühren ausgleichen kann ein Segway.

Ein PID ist wirklich ziemlich geradlinig und die typische Beschreibung einer PID wird von jedermann leicht zu verstehen, dass Calculus hatte. in dritten bis zur achten Klasse Dieses Dokument ist in Richtung First Lego Liga Kinder ausgerichtet. Da gibt es nicht viele Kinder, die Calculus haben musste ich werde versuchen, das gesamte Konzept bis aus einem sehr einfachen Ausgangspunkt zu bauen, ohne Kalkül verwenden.

So können mit dem Grundlayout eines Roboters beginnen, die für die Leitung folgende geeignet wäre. An der rechten Seite ist eine vereinfachte Darstellung einer Draufsicht auf den Roboter mit allen Details, die wir benötigen. Der Roboter ist ein Differentiallenkroboter mit zwei Motoren, die jeweils mit einem der Räder A und C. Der Roboter hat einen Lichtsensor an der Vorderseite angebracht, die gerade nach unten zeigt, so dass es nichts anderes als die Matte (Boden, Boden, Tischplatte sieht , was auch immer der Roboter eingeschaltet ist). Der rote Kreis der ziemlich kleinen Fleck auf der Matte steht, dass der Lichtsensor kann tatsächlich "sehen". Der Rest des Roboters ist das große Rechteck mit einem Pfeil, der Pfeil die Fahrtrichtung vorgeschriebenen zeigt.

Unser Ziel ist es, den Roboter zu folgen, die fette schwarze Linie zu bekommen. Linie folgt eine grundlegende Roboterverhalten und ist oft eines der ersten Dinge, die Menschen lernen. Ein mobiles Gerät, das eine Linie folgen kann, zeigt alle Merkmale eines echten Roboter. Es nutzt Sensor Informationen über die Welt um sie herum zu sammeln und ändert sie das Verhalten ist abhängig von dieser Information.

Line-Anhänger können mit einem Lichtsensor eingebaut werden, oder zwei, oder ein Dutzend oder wie viele Sie passieren zu lassen. Im Allgemeinen sind die mehr Lichtsensoren haben Sie desto besser werden Sie eine Linie zu folgen. Hier werden wir uns auf einen einzigen MINDSTORMS Lichtsensor begrenzen. Selbst mit einem einzigen Sensor sollten wir in der Lage sein, einen Roboter zu bauen, die die Linie verfolgen sehr genau, auch wenn die Linie Kurven in sich hat. Das, was Sie in der Regel lose mit einem einzigen Sensor ist die Fähigkeit, die Linie zu folgen, während schnell zu bewegen. Oft haben die mehr Sensoren Sie den Roboter schneller bewegen kann, während er die Linie folgt.

Der erste Trick, den wir verwenden werden, was zu einer PID nicht verwandt ist, ist, dass wir versuchen werden, um die Linie nicht wirklich folgen. Stattdessen werden wir versuchen, den Rand der Linie zu folgen. Warum? Denn wenn wir folgen der Linie selbst (schwarz) dann, wenn der Roboter weg driftet die Linie und den Sensor "sieht weiß" wir wissen nicht, auf welcher Seite der Linie, die wir eingeschaltet sind. Sind wir nach links oder rechts von der Linie? Wenn wir die Linie der Kante folgen, dann können wir sagen, welche Art, wie wir über den Rand sind wie der Roboter die Linie abdriftet. Wenn der Lichtsensor "sieht weiß" dann wissen wir, es von der Linie der Kante links ist (und der Linie). Wenn es "sieht schwarz" dann wissen wir, es nach rechts von der Linie der Kante ist (und auf der Linie). Dies nennt man eine " linke Hand Linie Anhänger " da es folgt der linke Rand der Linie.

Wir müssen wissen, was die Renditen Lichtsensorwerte, wenn es "sieht weiß" und wenn "sieht schwarz". Ein typischer unkalibrierten Sensor geben könnte ein "Weiß" Lesen von 50 und ein "schwarz" Lesen von 40 (unkalibrierten, auf einer Skala von 0 bis 100). Es ist bequem, die Werte auf einer einfachen Zahl Linie zu zeichnen zu visualisieren, wie wir Lichtsensorwerte in Veränderungen in der Bewegung des Roboters zu konvertieren. Unterhalb unseres aus Lichtwerte für weiß und schwarz sind.

Wir müssen nur den Bereich in zwei gleich große Stücke teilen und zu sagen, dass, wenn der Lichtpegel weniger als 45 wir den Roboter wollen nach links abbiegen. Wenn sie größer als 45 ist wollen wir nach rechts abbiegen. Ich werde nicht gehen, wie sich genau sollten die Windungen durchgeführt werden. Ich werde nur sagen, dass sanfte Kurven für einen ziemlich geraden Linie gut funktionieren. Eine Linie mit vielen Kurven muss in der Regel machen schärfere Kurven werden. Für sanfte macht Sie Leistungsstufen von 50% auf die schnelle Rad und 20% auf dem langsamen Rad benutzen könnten. Für schärfere Kurven auf einer kurvigen Linie müssen Sie 30% Leistung für die schnelle Rad zu verwenden, und die Küste oder Bremse das langsame Rad. Was auch immer Leistungsstufen Sie verwenden die Zahlen das gleiche für die beiden Kurven sein, schalten Sie einfach, welcher Motor bekommt die große Zahl und welche erhalten die kleinere Zahl (oder einen Stoppbefehl).

Diese Art eines Linienfolger eine Linie folgen, aber es ist nicht sehr hübsch. Es sieht nicht gut aus auf einer geraden Linie mit den Motoren für den sanften Kurven programmiert. Aber wenn die Linie keine Kurven hat, dann haben Sie den Roboter sagen schärfere Kurven zu verwenden Linie zu folgen. Das macht den Roboter schwingen hin und her über die Linie. Der Roboter nur "weiß" wie zwei Dinge zu tun; biegen Sie nach links und nach rechts abbiegen. Dieser Ansatz kann gemacht werden, um zu arbeiten, aber es ist nicht sehr schnell oder präzise und sieht schrecklich aus.

In dem obigen Ansatz fährt der Roboter niemals direkt. selbst wenn es perfekt mit der Linie Rand und die Linie ist gerade ausgerichtet ist. Das scheint nicht sehr effizient funktioniert es?

Hier können versuchen, das zu beheben. Statt unsere Lichtwert Zahlenlinie in zwei Bereiche aufzuteilen lässt es in drei teilen.

So, jetzt, wenn der Lichtpegel weniger als 43 wollen wir der Roboter nach links abbiegen. Wenn der Lichtwert zwischen 44 und 47 ist wollen wir es gerade zu gehen (Zoom-Zoom). Wenn der Lichtpegel, der größer als 47 ist wollen wir nach rechts abbiegen. Dies kann leicht in Mindstorms NXT-G mit einem Schalter (ja / nein) innerhalb eines Schalters umgesetzt werden werden. Sie haben tatsächlich nur zwei Prüfungen nicht drei zu tun.

Dieser Ansatz funktioniert besser als die erste. Spätestens jetzt wird der Roboter manchmal gerade nach vorne bewegt. Wie bei dem ersten Ansatz haben Sie immer noch entscheiden, welche Arten von Kurven Sie brauchen, und das hängt in der Regel von den Eigenschaften der Linie, die Sie folgen. Der Roboter wird wohl noch eine vierte eine angemessene Menge Jagd zurück.

Der aufmerksame Leser wird wahrscheinlich gedacht, " gut, wenn drei Lichtbereiche sind besser als zwei als das, was etwa noch mehr hinzuzufügen? " Das ist der Beginn einer PID.

Das "P" im "PID": Anteil (al) ist der Schlüssel

Also, was passiert, wenn wir mehr Spaltungen in unseren Lichtskalenlinie hinzufügen? Nun, das erste, was wir zu tun haben ist, was tut "Wende" bedeuten, mit mehr als drei Lichtbereichen? In unserem ersten Ansatz könnte der Roboter tun nur zwei Dinge, biegen Sie nach links oder rechts. Die Windungen waren immer die gleichen nur in entgegengesetzte Richtungen. Im zweiten Ansatz haben wir die "geh geradeaus" auf die beiden Kurven. Wenn wir mehr als drei Bereiche haben, dann brauchen wir mehr "Arten" von dreht.

Um helfen zu verstehen, "mehr Arten von Umdrehungen" wir wiederholen oder die Nummer der Leitung ein wenig auf und wandeln sie in ein Diagramm. Unsere X-Achse (horizontal) wird unser Lichtwerte wie auf die Anzahl Zeilen. Die Y-Achse (vertikal) gut sein, unsere "Wende" Achse.

Auf der linken Seite ist unsere ursprüngliche Zwei-Ebenen-Setup auf einem Diagramm ausgedrückt. Der Roboter kann nur zwei Dinge tun (durch die blauen Linien dargestellt), biegen Sie nach rechts oder links und die Windungen sind immer die gleichen, außer für ihre Richtung. In der Mitte ist der Dreiniveau Anhänger. Der Mehr Zentrum Bereich ist, wo der Roboter fährt geradeaus (Turn = 0). Die Windungen sind die gleichen wie zuvor. Auf der rechten Seite ist ein Proportional-Linie Anhänger. In einer proportionalen Linie Anhänger variiert die wiederum sanft zwischen zwei Grenzen. Wenn das Licht Lesesensor sagt sind wir nahe an der Linie, dann machen wir eine kleine Drehung. Wenn wir weit von der Linie sind dann machen wir eine große Wende. Proportional ist ein wichtiges Konzept. Proportional bedeutet, dass es eine lineare Beziehung zwischen zwei Variablen ist. Um es noch einfacher, bedeutet proportional ein Diagramm der Variablen gegeneinander um eine gerade Linie erzeugt (wie in der rechten Grafik oben).

Wie Sie vielleicht wissen, ist die Gleichung einer geraden Linie:

Wobei y der Abstand nach oben (oder nach unten) der Y-Achse ist, x der Abstand auf der X-Achse, m die Steigung der Linie ist und b der Y intercept, der Punkt, wo die Linie die Y-Achse kreuzt, wenn x Null ist. Die Steigung der Linie wird als die Änderung in der y-Wert durch die Veränderung in der x-Wert unter Verwendung eines beliebigen Paars von Punkten auf der Linie geteilt definiert.

Wenn Sie nicht wissen viel über Leitungen (oder haben vergessen, was Sie einmal neu) Ich werde ein wenig erweitern und einige Vereinfachungen in unseren Graphen und Gleichung zu machen. Zunächst werden wir das Zentrum unserer Lichtnummer Linie (die X-Achse) auf Null zu verschieben. Das ist einfach zu tun. Für unsere 40 und 50 Lichtwertebereich 45 subtrahieren wir nur (das ist der Durchschnitt von 40 und 50 (40 + 50) / 2) von allen unseren Licht Lesungen. Wir rufen, dass der Fehler. Also, wenn der Lichtwert 47 ist, dass wir 45 subtrahieren und einen Fehler = 2. Der Fehler zeigt uns, wie weit weg vom Rand der Linie, die wir sind. Wenn der Lichtsensor genau am Rand des Linie ist unser Fehler ist Null, da der Lichtwert 45 ist und wir subtrahieren 45 von allen unseren Lesungen. Wenn der Sensor ist den ganzen Weg in die weiße unsere Fehler ist 5. Den ganzen Weg in die schwarzen Zahlen der Fehler -5 ist.

In der obigen Grafik habe ich die Achse verschoben, indem es zu einer Fehlerskala umwandelt. Da die Linie nun die Y-Achse zu Null kreuzt bedeutet, daß b Null ist und die Gleichung für die Linie ist ein bisschen einfacher;

oder mit unseren Etiketten

Wir haben noch nicht festgelegt, was die Wende Achse bedeutet jetzt so, denn wir nur die Windungen von -1 (hart nach links abbiegen) bis +1 (hart nach rechts abbiegen) und einer Nullwendebereich sagen bedeutet, dass wir gerade gehen . Die Steigung der Linie in der Grafik oben in rot (zwei beliebigen Punkten auf der Linie arbeiten) markiert mit den beiden Punkten berechnet werden;

Steigung = m = (Änderung in y) / (Veränderung in x) = (1- (-1)) / (-5 — 5) = 2 / -10 = -0,2

Die Steigung ist eine Proportionalitätskonstante und ist der Faktor, dass Sie den Fehler (x-Wert) zu multiplizieren, indem es in eine Kurve (y-Wert) zu konvertieren. Das ist eine wichtige Sache zu erinnern.

Das "Steigung" hat ein paar Namen, die alle das gleiche, zumindest in diesem Zusammenhang bedeuten. In den PID-Literatur Hängen (Proportionalitätskonstanten, m in der Gleichung einer Geraden) aufgerufen " K " (Von misspelling des Wortes " c onstantstrom"?). Verschiedene K s zeigen sich alle über die PID-Literatur und sind ein sehr wichtiger. Sie können als Umrechnungsfaktor K (oder m oder Steigung oder Proportionalitätskonstante) denken. Sie verwenden K eine Zahl zu konvertieren, die eine Sache (Lichtwerte oder Fehler in unserem Fall) in etwas bedeutet, sonst wie ein Zug. Das ist alles, was ein K tut. Sehr einfach und sehr mächtig.

Also mit diesen neuen Namen für unsere Variablen der Gleichung der Geraden ist;

In Worten, die ist "nehmen Sie den Fehler und multiplizieren sie mit der Proportionalitätskonstante K die notwendige Wende zu bekommen. Der Wert Turn ist der Ausgang unserer P-Regler und die angerufene " P-Term " Da dies nur ein Proportionalregler.

Sie haben vielleicht in der letzten Graph bemerkt, dass die Linie nicht außerhalb der Fehlerbereich von -5 bis +5 erstreckt. Außerhalb des Bereichs von -5 bis +5 wir sagen können, nicht, wie weit der Sensor aus der Leitung ist. Alle "Weiß" sieht gleich aus, wenn der Sensor nicht sehen kann, überhaupt schwarz. Denken Sie daran, dass dieser Bereich willkürlich ist, wird Ihr Bereich von Ihnen Lichtsensor Setup bestimmt werden, die Farben der Matte etc. Sobald der Lichtsensor zu weit von der Linie Rand bekommt es beginnt eine konstante Lesen zu geben, bedeutet, dass die Lichtsensormessung auf die Fehler nicht mehr proportional. Wir können nur beurteilen, wie weit der Sensor vom Rand der Linie ist, wenn der Sensor tatsächlich ziemlich nahe ist. Über diesem engen Bereich ist der Lichtsensor Lesen proportional zum Abstand. So ist unser Sensor-Setup hat eine begrenzte Reichweite, über die sie proportional Informationen gibt. Außerhalb dieses Bereichs sagt es uns die richtige Richtung, aber die Größe (Größe) ist falsch. Der Lichtsensor Lesen, oder der Fehler auf. ist kleiner, als es und nicht sein sollte, nicht so gut, eine Vorstellung davon, was die Wende sein, um den Fehler zu beheben geben sollte.

In der PID-Literatur, über die der Bereich der Sensor eine proportionale Antwort gibt heißt das " Proportionalbereich " (Go figure: D). Der Proportionalbereich ist ein weiteres sehr wichtiges Konzept in der PIDs. In unserer Linie Folger Proportionalbereich für den Lichtsensor 40 bis 50 ist, für den Fehler ist es -5 bis +5. Unsere Motoren haben auch einen Proportionalbereich von -100 (volle Leistung rückwärts) bis +100 (volle Leistung nach vorn). Ich werde sagen, nur ein paar Dinge über sie die Bedeutung des Proportionalbereich:

(1) Sie wollen, dass der Proportionalbereich so breit wie möglich sein. Unsere Lichtsensors in der Proportionalbereich ist ziemlich klein, das heißt, der Sensor hat ziemlich nahe an der Linie Kante proportional Informationen zu erhalten. Genau wie breit das Spektrum ist, hängt vor allem ab, wie hoch die Sensoren über der Matte ist. Wenn der Sensor in unmittelbarer Nähe der Matte ist, etwa 1/16 Zoll, dann wird der Sensor einen sehr kleinen Kreis auf der Matte zu sehen. Eine kleine Seitenbewegung des Lichtsensors zur Seite wird von -5 bis +5 den Fehler schwingen, dass den ganzen Weg durch unsere Proportionalbereich ist. Man könnte sagen, der Sensor "Tunnelblick" so kann es nur einen sehr kleinen Teil der Matte zu sehen. Der Sensor hat sehr nahe Kante an die Leitung, um einen Messwert zu erhalten, der nicht entweder "Weiß" oder "schwarz". Wenn der Sensor höher von der Matte bewegt wird, dann sieht sie einen größeren Kreis auf der Matte. In einer Höhe von etwa 1/2 Zoll der Lichtsensor erscheint an einem Kreis auf der Matte zu suchen, die etwa 1/2 Zoll über ist. Mit dem Sensor dieses hoch der Proportionalbereich ist viel breiter, da der Lichtsensor nur im Bereich von +/- 1/2 Zoll von der Linie Rand bleiben muss ein proportionales Ausgangs zu halten. Leider gibt es zwei Nachteile auf einen hohen Lichtsensor. Zunächst wird eine hohe Lichtsensor "sieht"Und reagiert auf die Raumbeleuchtung viel mehr als ein Low-Sensor. Ein hoher Sensor hat auch weniger Unterschied zwischen Schwarz und Weiß als ein niedriger Sensor. Bei einem ausreichend großen Abstand Schwarz und Weiß wird die gleiche Lesung geben.

(2) Außerhalb der Proportionalbereich wird der Controller Dinge in die richtige Richtung bewegen, aber es wird unter korrekten neigen. Der Controller des Proportionalverhalten wird durch das Proportionalbereich begrenzt.

Von P zu aktuellen Motorleistungsstufen

Wie können wir die Kurven umsetzen? Was sollten die tatsächliche Motorleistungsstufen sein? Eine Möglichkeit, die Kurven zu tun ist, eine zu definieren " T arget p ower Ebene", Die ich rufe " tp ". Tp ist das Leistungsniveau der beiden Motoren, wenn der Roboter geradeaus gehen soll, was es tut, wenn der Fehler = 0. Wenn der Fehler nicht Null ist, dass wir die Gleichung Drehen = K * (Fehler) verwenden, um zu berechnen, wie für die beiden Motoren der Leistungspegel zu ändern. Ein Motor wird eine Leistung von Tp + Drehen bekommen. der andere Motor eine Leistung von Tp-Turn zu bekommen. Beachten Sie, dass da unser Fehler ist -5 bis +5 das bedeutet Schalten entweder positiv oder negativ sein kann, die in entgegengesetzte Richtungen abwechselnd entspricht. Es stellt sich heraus, dass das ist genau das, was wir wollen, da sie automatisch den richtigen Motor als schnell laufender Motor und der andere als der langsamen Motor eingestellt werden. Ein Motor (nehmen wir an, es ist der Motor auf der linken Seite des Roboters in Port A angeschlossen) wird erhalten immer die Tp + Schalten Wert, da es Leistungspegel ist. Der andere Motor (rechte Seite des Roboters, Port C) immer Tp erhalten — Turn wie es Leistungspegel ist. Wenn der Fehler positiv ist, dann drehen positiv und Tp + Schalten größer als Tp und der linke Motor beschleunigt, während der rechte Motor verlangsamt. Wenn der Fehler Vorzeichen ändert und wird negativ (was bedeutet, wir über die Linie der Kante überschritten haben und sind "sehen schwarz") Tp + Drehen Sie dann ist jetzt weniger als Tp und der linke Motor verlangsamt und der rechte Motor beschleunigt, da Tp-Turn größer als Tp ist. (Denken Sie daran, dass die negative einer negativen eine positive ist). Einfach oder? Hoffentlich wird es etwas klarer sein, wie wir weitergehen.

Pseudo-Code für ein P-Regler

Zunächst müssen wir die Werte der Lichtsensor kehrt für weiß und schwarz zu messen. Von diesen beiden Nummer können wir den Offset berechnen. das heißt, wie viel von einem rohen leichte Lektüre zu subtrahieren es auf einen Fehlerwert zu konvertieren. Der Offset ist nur der Mittelwert der weißen und schwarzen Ablesungen. Der Einfachheit halber werde ich davon ausgehen, dass die in einem variablen Offset wurde Offset genannt bereits gemessen und gespeichert. (Ein nettes Upgrade wäre der Roboter haben die Weiß- und Schwarzpegel messen und den Offset zu berechnen.)

Wir werden auch einen Speicherort für die K-Konstante benötigen, rufen wir an, dass Kp (K onstantstrom für die p roportional Controller). Und eine anfängliche Vermutung, was Kp sollte. Es gibt viele Möglichkeiten, um die erste Kp-Wert zu erhalten. Sie können erraten, und es dann durch Versuch und Irrtum zu verfeinern. Oder Sie können versuchen, einen Wert zu schätzen, basierend auf den Eigenschaften des Sensors und Roboter. Wir werden das letztere tun. Wir werden ein Tp (Zielleistung) von 50, verwenden, wenn der Fehler Null beide Motoren ist, wird 50. Der Fehler liegt im Bereich von -5 bis +5 bei der Leistungsstufe laufen. Wir raten, dass wir die Kraft 50-0 gehen wollen, wenn der Fehler von 0 bis -5 geht. Das heißt, die Kp (die Steigung erinnern, um die Änderung in y durch die Änderung in x geteilt) ist;

Wir werden die Kp = 10 Wert verwenden, um einen Fehlerwert in eine Kurve Wert zu konvertieren. In Worten unserer Bekehrung ist "Für jede 1 Einheit Änderung der Fehler werden wir die Leistung eines Motors um 10 erhöhen". Der andere Motor Macht wird um 10 verringert.

Also, in Pseudo-Code ("Pseudo-Code" Das bedeutet NXT-G, oder jede andere Art von Programm-Code, anstatt nicht tatsächlich ist es nur eine detaillierte Auflistung dessen, was wir wollen, das Programm zu tun):

Das ist es, naja fast. Es gibt ein kleines Problem, die korrigiert werden sollten. Aber geben Sie es trotzdem versuchen. Wenn Ihr Roboter die Linienkante zu vermeiden erscheint, anstatt zu versuchen, es zu finden, die wahrscheinlichste Ursache ist, dass Sie die Turn-Anweisungen vertauscht haben. Ändern Sie Kp auf -10 und sehen, was passiert. Wenn das der Turn-Anweisungen dann Kp behebt die Zeichen auf +10 und ändern in den beiden Stromleitungen zurück zu ändern;

Es gibt zwei "abstimmbaren Parameter" und eine Konstante in diesem P-Regler. Die Konstante ist der Offset-Wert (der Durchschnitt der weißen und schwarzen Lichtsensormesswerte). Sie benötigen ein kurzes Programm schreiben, um die Lichtverhältnisse auf der Matte mit den Roboter zu messen. Du brauchst ein "schwarz" und "Weiß" Wert. Berechnen Sie den Mittelwert und steckte es in den P-Regler-Programm in der Offset-Variable. Fast alle Linien Anhänger verlangen, dass Sie (oder Code von Ihnen geschrieben und durch den Roboter ausgeführt) tun diesen Schritt.

Der Kp-Wert und der Zielleistung Tp sind die einstellbare Parameter. Eine abstimmbare Parameter hat, durch Versuch und Irrtum bestimmt werden. Kp steuert, wie schnell der Regler versuchen, wieder auf die Linie Kante zu erhalten, wenn sie von ihm abgetrieben hat. Tp steuert, wie schnell der Roboter entlang der Linie bewegt.

Wenn die Linie ziemlich geradeaus Sie eine große Tp verwenden können, um den Roboter mit hoher Geschwindigkeit zum Laufen bringen und eine kleine Kp so die Windungen (Korrekturen) sind sanft.

Wenn die Linie Kurven hat, besonders scharf diejenigen, wird es eine maximale Tp Wert sein, zu arbeiten. Wenn Tp größer als das Maximum ist, wird es keine Rolle, was Kp ist, verliert der Roboter die Linie, wenn es eine Kurve begegnet, weil sie zu schnell bewegt. Wenn Tp wirklich klein ist dann fast jeder Kp-Wert eingegeben werden, da der Roboter sehr langsam bewegen wird. Das Ziel ist es, den Roboter so schnell wie möglich zu bewegen, während immer noch die Linie von Interesse verfolgen zu können.

Wir hatten einen Startwert für Kp von 10. Für Tp guesstimated Sie sogar noch niedriger als oben vorgeschlagen beginnen könnte, vielleicht 15 (der Roboter ziemlich langsam bewegen). Probieren Sie es aus und sehen, wie es funktioniert. Wenn Sie die Zeile, weil der Roboter verlieren scheint schwergängig drehen dann Kp erhöhen, indem sie ein Paar und versuchen Sie es erneut. Wenn Sie die Zeile verlieren, da scheint der Roboter hyperaktiv bei der Jagd hin und her für die Linie dann Kp verringern. Wenn der Roboter die Linie ziemlich gut, dann erhöhen Tp zu folgen scheint und sehen, ob Sie die Zeile mit der schnelleren Geschwindigkeit folgen kann. Für jede neue Tp benötigen Sie einen neuen Kp zu bestimmen. obwohl Kp wird in der Regel nicht zu viel ändern.

eine gerade Linie folgend ist in der Regel recht einfach. Nach einer Linie mit sanften Kurven ist ein bisschen schwieriger. Nach einer Linie mit scharfen Kurven ist die härteste. Wenn der Roboter langsam genug bewegt dann fast jede Linie verfolgt werden kann, auch mit einem sehr einfachen Steuerung. Wir wollen gute Linie zu bekommen folgende, gute Geschwindigkeit und die Fähigkeit, sanft Ecken zu behandeln. (Linien mit scharfen Ecken in der Regel nehmen mehr spezialisierte Linie Anhänger oder sehr niedrige Robotergeschwindigkeiten.)

Es ist wahrscheinlich, dass die beste P-Regler für jede Art von Leitung unterschiedlich sein (Linienbreite, die Schärfe der Kurven usw.) und für verschiedene Roboter. Mit anderen Worten wird ein P-Regler (oder ein PID-Regler in diesem Fall) für eine bestimmte Art von Linie und robot abgestimmt und werden auch für andere Linien oder Roboter nicht unbedingt arbeiten. Der Code wird für viele Roboter arbeiten (und viele Aufgaben), aber die Parameter, Kp. Tp und Offset. Um das für jeden Roboter und jede Anwendung abgestimmt.

Doing Mathematik auf einem Computer, der nicht weiß, was ein
Komma verursacht einige Probleme

HINWEIS: Diese Arbeit wurde NXT-G-Version 1.1 durchgeführt unter Verwendung der nur ganze Zahlen unterstützt. NXT-G Version 2 unterstützt Punktzahlen, so dass die folgenden schwebenden möglicherweise nicht erforderlich, wenn Sie die Version 2 oder höher.

Bei der Gestaltung des P-Regler des Abstimmens wird Ihnen der Kp-Wert nach oben und unten zwicken. Der erwartete Bereich von Werten, die Kp sein könnte, hängt von genau, was der P-Regler tut. Wie groß ist der Eingangsbereich und wie groß ist der Leistungsbereich? Für unsere Linie Anhänger P-Regler ist der Eingangsbereich etwa 5 Lichteinheiten und der Ausgabebereich beträgt 100 Leistungseinheiten, so scheint es wahrscheinlich, dass Kp in der Nähe von 100/5 = 20 sein wird. In einigen Fällen ist die erwartete Kp wird nicht so groß sein. Was passiert, wenn der erwartete Kp ist? Da Variablen in NXT-G auf ganze Zahlen beschränkt sind, wenn Sie stimmen versuchen, den Kp-Wert alles, was Sie können versuchen, ist. -2, -1, 0, 1, 2, 3. Sie können nicht eingeben 1.3, so können Sie Kp nicht versuchen = 1,3. Sie können nicht eine beliebige Zahl mit einem Dezimalpunkt verwenden! Aber es wird wahrscheinlich ein großer Unterschied in der Roboterverhalten, wenn Sie den Kp durch die kleinste mögliche Änderung von 1 bis 2. Kp ändern = 2 der Roboter versucht, doppelt so schwer, die Fehler zu korrigieren, im Vergleich zu Kp = 1. Die Motorleistungspegel ändert doppelt so viel für die gleiche Änderung der Lichtverhältnisse. Wir würden wirklich gerne eine genauere Kontrolle von Kp zu haben.

Es ist ziemlich einfach, dieses Problem zu beheben. Alles, was wir die Kp multiplizieren mit einer Leistung von zehn tun wird die nutzbare Bereich innerhalb der Integer-Einschränkung zu erhöhen. Wenn erwartet wird, dass Kp in der Nähe von 1 sein könnte dann ein Wert von 100 als Multiplikator wäre eine gute Wette. Tatsächlich ist es wahrscheinlich am besten, gehen Sie einfach weiter und immer 100 verwenden * Kp als die Zahl, die Sie tatsächlich in das Programm eingeben. Sobald Kp wurde mit 100 multipliziert wurden, können wir jetzt geben, was 1,3 gewesen wäre, als 130 130 keinen Dezimalpunkt hat so NXT-G mit der Anzahl zufrieden ist.

Aber ist das nicht die Berechnung Müll? Ja, es funktioniert, aber es ist einfach zu beheben. Sobald wir den P-Term berechnet haben, werden wir durch 100 teilen unsere Multiplikator zu entfernen. Denken Sie daran, unsere Gleichung, die die P-Controller von früher definiert;

Drehen = Kp * (Fehler)

Wir werden Kp mit 100 multipliziert, was bedeutet, dass unsere berechneten Drehen 100 mal größer ist, als es sein sollte. Bevor wir drehen verwenden müssen wir es durch 100 teilen das zu beheben.

Also, unsere neuen und verbesserten Pseudocode für eine Linie folgende P-Regler ist:

Warten Sie, was war das "Subtile Problem" Sie erwähnt mit der
erste Version des P-Reglers?

Es gibt immer wieder subtile Probleme. Irgendwann sie Materie und manchmal nicht sie tun. 😉

In diesem Fall wird ein Problem ist, dass, wenn wir die Motorleistungspegel (z.B. Powerc = Tp-Turn) zu berechnen ist es möglich, eine negative Zahl für die Macht zu bekommen. Wir wollen eine negative Zahl bedeutet, dass die Drehrichtung umkehren sollte. Aber die Daten-Port auf einem NXT-G MOTOR-Baustein nicht versteht, dass. Der Leistungspegel ist immer eine Zahl zwischen 0 und 100. Die Richtung des Motors wird von einem anderen Eingangsanschluss gesteuert. Um den Motor richtig zu reagieren, wenn die Leistung negativ ist werden Sie es im Programm behandeln müssen. Hier ist eine Möglichkeit, das zu tun;

Motorblock empfängt die Leistung (PowerA für die A-Motor) über eine Datenleitung. Die Richtung wird mit den Kontrollkästchen in der Motorparameterfenster eingestellt.

Sie werden für den C-Motor ein ähnliches Stück Code benötigen. Nun, wenn die berechnete Leistung negativ wird die Motoren werden in geeigneter Weise gesteuert. Eine Sache, dies tut, ist die P-Regler erlauben alle gehen den Weg zu einer "Nullwenderadius wiederum" und der Roboter kann an Ort und Stelle drehen, wenn nötig. Natürlich, das ist nicht wirklich helfen können.

Es gibt ein paar andere Dinge, die subtilen Probleme sein könnten. Was passiert, wenn Sie einen Leistungspegel senden, die größer als 100 an den Motor ist? Es stellt sich heraus, dass der Motor nur die Zahl als 100 behandelt, die für das Programm ist gut, aber nicht das beste, was in einem P (oder PID) Regler passieren zu lassen. Sie wäre wirklich lieber, dass der Controller nie um die Motoren zu stellen versucht, etwas, was sie tun können, um nicht. Wenn die geforderte Leistung nicht zu weit über 100 (oder unter -100), dann sind Sie wahrscheinlich OK. Wenn die angeforderte Leistung viel größer als 100 (oder viel weniger als -100) ist, dann bedeutet das oft die Steuerung außer Kontrolle geraten. Also, stellen Sie sicher, dass Sie einen Feuerlöscher zur Hand haben!

P-Regler Zusammenfassung

Hoffentlich haben Sie genug abgeholt ein P (proportional) Controller zu verstehen. Es ist ziemlich einfach. Verwenden Sie einen Sensor etwas zu messen, die Sie versuchen, zu steuern. Konvertieren, die Messung zu einem Fehler. Für die Linie Anhänger taten wir, dass durch den Durchschnitt der schwarzen und weißen Lichtwerte subtrahiert wird. Multiplizieren Sie den Fehler mit einem Skalierungsfaktor genannt Kp. Das Ergebnis ist eine Korrektur für das System. In unserer Anhänger Beispiel wird die Korrektur als eine Zunahme / Abnahme der Leistungspegel der Motoren angewendet. Der Skalierungsfaktor Kp wird bestimmt ein wenig gebildeter mit erraten und dann fein durch Versuch und Irrtum abgestimmt.

P-Regler kann ein überraschend breites Spektrum von Steuerungsproblemen behandeln, nicht nur nach einer Zeile mit einem Lego-Roboter. In der Regel arbeiten P-Controller sehr gut, wenn einige Bedingungen erfüllt sind.

  1. Der Sensor benötigt einen großen Dynamikbereich zu haben (was leider nicht der Fall für unsere Linie folgende Roboter ist).
  2. Das Ding gesteuert wird (Motoren in unserem Fall) sollte auch einen großen Dynamikbereich aufweisen, dh sie ein breites Spektrum an haben sollte "Power" Ebenen mit individuellen "Power" Ebenen, die nahe beieinander liegen (die NXT-Motoren sind in dieser Hinsicht ziemlich gut).
  3. Sowohl der Sensor und das Ding gesteuert wird schnell reagieren muss. "Schnell" in diesem Fall ist "viel schneller als alles andere, was im System passiert". Oft, wenn man Motoren steuern ist es nicht möglich zu erhalten, "schnell" Antwort da Motoren nehmen Sie sich Zeit, um eine Änderung der Leistung zu reagieren. Es kann ein paar Zehntelsekunden dauern, Lego-Motoren auf eine Änderung der Leistungsstufen zu reagieren. Das bedeutet, dass die Roboteraktionen hinter dem P-Regler Befehle hinken. Das macht eine genaue Steuerung schwierig, mit einem P-Regler.

Hinzufügen "ich" Um den Controller: Der PI-Regler
("ich": Was haben Sie in letzter Zeit für mich getan)?

Um die Reaktion unserer P-Regler verbessern werden wir einen neuen Begriff der Gleichung hinzuzufügen. Dieser Begriff ist das Integral bezeichnet. das "ich" in PID. Integralen sind ein sehr wichtiger Teil der höheren Mathematik, zum Glück der Teil, den wir brauchen, ist ziemlich geradlinig ist.

Das Integral ist die laufende Summe des Fehlers.

Ja, es ist so einfach. Es gibt ein paar subtile Themen, die wir für den Moment überspringen werde.

Jedes Mal, wenn wir den Lichtsensor lesen und berechnen einen Fehler werden wir diese Fehler auf eine Variable fügen wir Integral nennen (klug eh?).

Diese Gleichung aussehen könnte, ein wenig seltsam, und es ist. Es ist nicht als eine mathematische Aussage geschrieben, wird es in einer gemeinsamen Form in der Programmierung eine Reihe von Werten zu addieren verwendet geschrieben. Mathematisch macht es keinen Sinn machen. In der Computerprogrammierung Gleichheitszeichen hat eine etwas andere Bedeutung als in der Mathematik. (Ich werde die gleiche Schreibmaschinenschrift verwende ich für die Pseudo-Code-Beispiele verwendet, um hervorzuheben, dass es sich um eine Programmier Form ist und keine richtige mathematische Form.) Die "=" auf der rechten Seite bedeutet die Mathematik zu tun und das Ergebnis in der Variablen auf der linken Seite den Namen zu speichern. Wir wollen, dass der Computer den alten Wert von Integral zu erhalten. fügen Sie den Fehler dann das Ergebnis wieder in fester speichern.

Als nächstes, wie auch die P-Term, werden wir das Integral durch eine Proportionalitätskonstante vermehren, dass ein anderer K. Da diese Proportionalitätskonstante mit dem Integralterm geht wir es Ki nennen. Genau wie der proportionale Term multiplizieren wir das Integral durch die Konstante (Ki) eine Korrektur zu erhalten. Für unsere Linie folgende Roboter ist es eine Ergänzung zu unserer Schalten variabel.

Drehen = Kp * (Fehler) + Ki * (Integral)

Das obige ist die Grundgleichung für eine PI-Steuerung. Turn ist unsere Korrektur für die Motoren. Der proportionale Term Kp * (Fehler) und der Integralterm ist Ki * (Integral).

Was genau ist der Integralausdruck für uns tun? Wenn der Fehler das gleiche Vorzeichen für mehrere Schleifen hält wächst das Integral größer und größer. wenn wir den Lichtsensor überprüfen und zu berechnen zum Beispiel, dass der Fehler 1 ist, dann kurze Zeit später überprüfen wir den Sensor wieder, und der Fehler ist 2, dann das nächste Mal der Fehler 2 wieder, dann wird das Integral sein 1+ 2 + 2 = 5 ist. Das Integral 5, aber der Fehler in diesem besonderen Schritt ist nur 2. das Integral ein großer Faktor bei der Korrektur sein kann, aber es dauert in der Regel einige Zeit, die integral zu dem Punkt aufbauen, wo es zu tragen beginnt.

Eine andere Sache, das Integral tut, ist es hilft, kleine Fehler zu entfernen. Wenn in unserer Linie Folger der Lichtsensor auf der Linie der Kante ziemlich nahe ist, aber nicht genau auf sie, dann wird der Fehler klein und es dauert nur eine kleine Korrektur zu beheben. Sie könnten in der Lage, diese kleinen Fehler zu beheben, indem Kp in dem proportionalen Term ändert, aber das wird oft zu einem Roboter führen, die (wackelt hin und her) schwingt. Der Integralterm ist perfekt für die Festsetzung kleine Fehler. Da das Integral den Fehler s, mehrere aufeinanderfolgende kleine Fehler summiert sich s macht schließlich das Integral groß genug, um einen Unterschied zu machen.

Eine Möglichkeit, um die Integralterm zu denken ist, dass es die Controller ist "Erinnerung". Das Integral ist die kumulative Geschichte des Fehlers und gibt dem Controller ein Verfahren Fehler zu beheben, die für eine lange Zeit bestehen bleiben.

Einige subtile Probleme mit dem Integral

Yep, hat das Integral Detail. Zum Glück sind sie nicht zu schmerzhaft.

Ich beschönigt ein kleines Problem auf (OK, es ist wirklich nicht geringfügig ist, aber wir werden es so zu machen), die Zeit. Das Integral ist wirklich die Summe der Fehler * (Delta-Zeit). Delta-Zeit (dT) ist die Zeit zwischen dem letzten Mal, wenn wir den Sensor und die Zeit der letzten Überprüfung des Sensors überprüft werden;

Also jedes Mal, wenn wir zu Integral fügen Sie die Sache, die wir hinzufügen sollten, ist die Fehlerhäufigkeit der dT. Es ist ziemlich einfach, den Roboter messen die dT zu haben. Wir würden gerade gelesen, ein Timer jedes Mal, wenn wir den Lichtsensor zu lesen. Wenn wir das letzte Mal von der aktuellen Zeit subtrahieren bekommen wir die Zeit, die seit der letzten Lesung dT. (Es gibt bessere Möglichkeiten, dies zu tun, aber ich werde skip’m, da sie nicht benötigt werden.) Aber wäre es nicht schön, wenn hatte nicht die dT messen und die Multiplikation zu tun? Nun, was ist, wenn die dT ist immer das gleiche? Jedes Mal, wenn wir zu integralen fügen wir haben das gleiche dT Begriff. So können wir diesen Faktor von dT nehmen aus Fehler * (dT) und nur noch die Addition der Art, wie wir zuvor;

Nur wenn wir eine andere Berechnung mit integrierter tun wollen brauchen wir eigentlich von dT zu multiplizieren. Aber warten Sie es gibt noch mehr.

Wir können noch mehr tun, um die Zeit Begriff verbergen. Der Integralterm in der PI-Regler Gleichung Ki * (Integral) * dT. Aber Ki ist ein Parameter, die wir haben, stimmen zu fein (wie Kp), warum also nicht nur ersetzen, die Ki * dT Teil mit einem neuen Ki. Der neue Ki unterscheidet sich vom Original, aber da wir nicht wissen, entweder man es nicht wirklich wichtig, welche wir verwenden, oder wie wir es nennen. Egal, wie wir es nennen, oder was es bedeutet wir müssen noch den richtigen Wert weitgehend durch Versuch und Irrtum zu finden.

So haben wir vollständig das Zeitglied für den Integralterm mit dem Restriktions entfernt, dass alle Zeiten Schritte, dT s, sind gleich (oder ungefähr gleich).

Das Integral hat ein Gedächtnis wie ein Elefant

Ein letztes Detail sollte über das Integral erwähnt werden. Normalerweise kann das Integral nur gegen Null bewegt werden, wo es nichts mit der Steuerung beitragen, durch Fehlerwerten addiert, die das entgegengesetzte Vorzeichen der meisten diejenigen sind, die wir bereits in integraler gesammelt. wenn über mehrere Zyklen durch die Schlaufe beispielsweise die Fehler s 1,2,2,3,2,1 sind hinzufügt, die auf ein ganzzahliges von 11, aber der Fehler in der letzten Datenpunkt ist nur 1, was viel kleiner ist als das Integral diesem Punkt an. Der einzige Weg für das Integral gegen Null zu bewegen, ist eine Reihe von negativen Fehler s zu erhalten entgegenzuwirken die frühere Reihe positiver Fehler s Gleichgewicht zu "entspannen" das Integral. Wenn beispielsweise die nächsten Fehler -2, -2, -3, dann wird das Integral 11-4 fallen und wir würden noch brauchen mehr negative Fehler das Integral auf Null zu bekommen. Darüber hinaus will das Integral der Gesamtfehler gleichmäßig zwischen positive und negative Fehler verteilt werden.

Wenn etwas passiert, das drückt unsere Linie nach links von der Kante der Linie der Integralterm nicht nur folgende Roboter will die Linie der Kante, um wieder auch er will den Rand nach rechts um so viel zu überschreiten, als die ursprüngliche Störung der linken Seite war. So neigt das Integral "aufziehen" wenn es große Fehler, die eine Zeit lang andauern. Dies kann zu Problemen mit den Controllern verursachen, die einen integralen Begriff enthalten. Manchmal ist diese Tendenz des Integralterms zum Überschwingen zu wollen, wenn er versucht, den Fehler zu korrigieren ist groß genug Problem, dass der Programmierer etwas zu dem Integralterm tun muß, damit es nicht zu Problemen führen. Wenn integrierten Wind-up ein Problem zwei gemeinsame Lösungen sind (1) Null das Integral. Das ist die Variable Integral gleich Null ist, jedesmal, wenn der Fehler eingestellt ist Null oder der Fehler Vorzeichen ändert. (2) "Dämpfen" das Integral durch die akkumulierten integral um einen Faktor kleiner als eins multipliziert wird, wenn ein neues Integral berechnet wird. Beispielsweise;

Dies reduziert den vorherigen integralen Wert um 1/3 jedesmal durch die Schleife. Wenn Sie denken, der Integralterm als die Controller "Erinnerung" dann wird diese Dämpfung es zu werden vergesslich von Dingen zu zwingen, die ein geschah "lange" vor der Zeit.

Pseudo-Code für den PI-Regler

den Integralterm zu der Steuerung hinzuzufügen, haben wir eine neue Variable für Ki und eine für das Integral selbst hinzufügen müssen. Und vergessen Sie nicht, dass wir durch unsere 100 Ks multipliziert werden mit den mathematischen Integer Einschränkungen zu helfen.

Hinzufügen "D" Um den Controller: Der vollständige PID-Regler
("D": Was als nächstes passieren wird)?

Unsere Controller enthält nun eine proportionale (P) Begriff, der den aktuellen Fehler und einen integralen (I) Begriff, der den Fehler der Vergangenheit s zu korrigieren versucht zu korrigieren versucht, gibt es eine Möglichkeit für die Steuerung in der Zeit nach vorne zu schauen und vielleicht versuchen, Fehler zu korrigieren das hat noch nicht einmal aufgetreten?

Ja, und die Lösung ist ein weiterer Begriff aus der höheren Mathematik das Derivat genannt. Ahhh, gibt es die "D" in PID. Wie das Integral. das Derivat kann einige ziemlich ernste Mathematik darstellen. Zum Glück für uns, was wir brauchen, für die PID ist ziemlich einfach.

Wir können unter der Annahme in die Zukunft sehen, dass die nächste Änderung des Fehlers ist die gleiche wie die letzte Änderung in den Fehler.

Das heißt, der nächste Fehler wird erwartet, dass der aktuelle Fehler plus die Änderung des Fehlers zwischen den beiden vorhergehenden Sensor Proben sein. Die Veränderung des Fehlers zwischen zwei aufeinanderfolgenden Punkten wird die Ableitung bezeichnet. Das Derivat ist die gleiche wie die Steigung einer Linie.

Das mag ein wenig komplex zu berechnen, aber es ist wirklich nicht so schlimm. Eine Probe Satz von Daten wird dazu beitragen, zeigen, wie es funktioniert. Nehmen wir an, dass der aktuelle Fehler 2 ist und der Fehler, bevor das war 5. Was ist der nächste Fehler vorhersagen würden wir sein? Nun, die Änderung der Fehler ist das Derivat, das ist;

(Der aktuelle Fehler) — (der vorherige Fehler)

die für unsere Zahlen 2 bis 5 = -3. Die Stromableitung ist daher -3. Um das Derivat verwenden, der nächste Fehler vorherzusagen, würden wir verwenden

(Nächste Fehler) = (der aktuelle Fehler) + (die Stromableitung)

die für unsere Zahlen 2 + (-3) = -1. So erwarten wir die nächste Fehler -1 sein wird. In der Praxis gehen wir nicht wirklich den ganzen Weg und vorhersagen, den nächsten Fehler. Statt nur wir die Ableitung direkt in der Steuerung Gleichung verwenden.

Der D-Term, wie der I-Term, sollte auch tatsächlich ein Zeitelement und die "offiziell" D-Term ist;

Kd (Derivat) / (dT)

Ebenso wie bei den proportionalen und integralen Bedingungen müssen wir durch eine Konstante zu multiplizieren. Da es sich um die Konstante, die mit dem Derivat geht es Kd bezeichnet. Beachten Sie auch, dass für die Ableitung Begriff, den wir durch dT teilen, während in der integralen Begriff, den wir von dT vermehrt hatten. Sie nicht zu viel Sorgen darüber, warum das ist, weil wir die gleichen Arten von Tricks tun werden von der dT aus der Ableitung Begriff, um loszuwerden, wie wir für den Integralausdruck tat. Der Anteil Kd / dT ist eine Konstante, wenn dT das gleiche für jede Schleife ist. So können wir Kd / dT mit einem anderen Kd ersetzen. Da dieser K, wie die vorherige Ks, ist nicht bekannt, und hat durch Versuch bestimmt werden und Fehler es ist egal, ob es Kd / dT ist oder nur ein neuer Wert für Kd.

Wir können nun die vollständige Gleichung für einen PID-Regler schreiben:

Drehen = Kp * (Fehler) + Ki * (Integral) + Kd * (Derivat)

Es ist ziemlich offensichtlich, dass "die Zukunft voraussagen" Lage wäre, eine praktische Sache zu sein, sondern zu tun, wie genau funktioniert es helfen? Und wie genau ist die Vorhersage?

Wenn der Stromfehler schlechter als der vorherige Fehler wird dann versucht der D-Term, den Fehler zu korrigieren. Wenn er aktuelle Fehler besser als die vorherige Fehler ist dann versucht der D-Term den Controller aus Korrektur des Fehlers zu stoppen. Es ist der zweite Fall, der besonders nützlich ist. Wenn der Fehler schließen wird immer auf Null dann nähern wir uns der Punkt, an dem wir die Korrektur beenden möchten. Da wahrscheinlich das System eine Weile dauert, um Änderungen in den Motoren «Macht, die wir beginnen wollen reagieren, um die Motorleistung zu reduzieren, bevor der Fehler auf Null tatsächlich gegangen, sonst werden wir überschreiten. Wenn das so sagen könnte es scheinen, dass die Gleichung für den D-Term würde komplizierter sein als es ist, aber es ist nicht. Das einzige, was Sie zu befürchten ist dabei die Subtraktion in der richtigen Reihenfolge. Die richtige Reihenfolge für diese Art der Sache ist, "Strom" Minus- "früher". So berechnen die Ableitung wir den aktuellen Fehler und zeigen die vorherige Fehler subtrahieren.

Pseudo-Code für den PID-Regler

die Ableitung Begriff an die Steuerung zu fügen wir den letzten Fehler zu erinnern, eine neue Variable für Kd und eine Variable hinzufügen müssen. Und vergessen Sie nicht, dass wir durch unsere 100 Ks multipliziert werden mit der Integer-Operationen zu helfen.

Wir haben jetzt die Pseudo-Code für unsere komplette PID-Regler für eine Linie folgende Roboter. Jetzt kommt, was oft der schwierige Teil ist, "Abstimmung" die PID. Tuning ist der Prozess der Suche nach den besten oder zumindest OK, Werte für Kp. Ki und Kd.

Tuning PID-Regler ohne Komplexe Mathe
(Aber wir haben noch etwas Mathematik zu tun)

Sehr intelligente Menschen haben bereits herausgefunden, wie ein PID-Regler einzustellen. Da ich nicht annähernd so klug bin, wie sie sind, werde ich nutzen, was sie gelernt haben. Es stellt sich heraus, dass die Messung von paar Parameter für das System ermöglicht es Ihnen, zu berechnen "ziemlich gut" Werte für Kp. Ki und Kd. Es spielt keine Rolle, viel, was die genaue System ist zunächst, dass die Gleichungen fast immer ziemlich gut funktionieren Tuning gesteuert werden. Es gibt mehrere Techniken, um die Ks zu berechnen, von heißt die " Ziegler Nichols-Methode ", Das ist das, was wir verwenden werden. Eine Google-Suche werden viele Web-Seiten finden, die diese Technik in allen beschreiben es blutige Detail ist. Die Version, die ich verwenden werde fast direkt aus der Wiki-Seite auf PID-Regler ist (die gleiche Behandlung in vielen anderen Orten). Ich werde nur eine kleine Änderung vornehmen, indem die Schleifenzeit einschließlich (dT) in den in der folgenden Tabelle dargestellt Berechnungen.

Zur Abstimmung folgen Sie Ihren PID-Regler Sie diese Schritte:

  1. Stellen Sie die Ki und Kd-Werte auf Null, die diese Bedingungen schaltet sich aus und macht den Controller wirken wie ein einfacher P-Regler.
  2. Stellen Sie den Tp Begriff auf eine eher klein ein. Für unsere Motoren 25 könnte ein guter Anfang sein.
  3. Stellen Sie den Kp Begriff auf ein "angemessen" Wert. Was ist "angemessen"?
  1. Ich nehme nur den maximalen Wert, den wir auf die Motorleistungssteuerung (100) und dividieren durch die maximal nutzbare Fehlerwert gesendet werden soll. Für unsere Linie folgende Roboter haben wir die maximale Fehler angenommen ist 5, so unsere Vermutung bei Kp 100/5 = 20. Wenn der Fehler 5 die Leistung des Motors um 100 Einheiten schwingen. Wenn der Fehler Null die Kraft des Motors wird auf der Tp Ebene sitzen.
  2. Oder stellen Sie nur Kp bis 1 (oder 100) und sehen, was passiert.
  3. Wenn Sie implementiert haben, dass die K die alle als das 100-fache ihrer tatsächlichen Wert eingegeben werden, haben Sie hier das zu berücksichtigen. 1 ist als 100, 20 im Jahr 2000, 100 als 10000 eingetragen.
  • Führen Sie den Roboter und sehen, was es tut. Wenn es nicht die Linie folgen kann und wandert dann Kp erhöhen. Wenn es Kp schwingt verringern wild dann. Halten Sie den Kp-Wert zu ändern, bis Sie einen finden, der die Linie folgt und gibt spürbare Schwingung, aber nicht wirklich Wilden. Wir werden diese Kp-Wert nennen "kc" ("kritische Verstärkung" in der PID Literatur).
  • Mit dem Kc-Wert als Kp. Führen Sie den Roboter entlang der Linie und versuchen zu bestimmen, wie schnell es schwingt. Dies kann schwierig sein, aber zum Glück ist die Messung nicht so genau zu sein haben. Die Schwingungsperiode (Pc) ist, wie lange es dauert, den Roboter von einer Seite der Leitung zum anderen dann zurück zur Seite zu schwenken, wo es begonnen. Für typische Lego-Roboter Pc wird im Bereich von etwa 0,5 Sekunden auf eine Sekunde oder zwei sein, wahrscheinlich.
  • Sie müssen auch, wie schnell sich die Roboter-Zyklen durch sie die Regelschleife zu kennen. Ich habe gerade die Schleife zu einer festen Anzahl von Schritten (wie 10.000) und die Zeit, wie lange der Roboter (oder haben den Roboter tun das Timing und zeigt das Ergebnis.) Die Zeit pro Schleife (dT) ist die gemessene Zeit bis zum Ende dauert geteilt durch die Anzahl von Schleifen. Für eine vollständige PID-Regler, geschrieben in NXT-G, ohne Zusatz summt oder pfeift, wird der dT im Bereich von 0,015 bis 0,020 Sekunden pro Schleife sein.
  • Verwenden Sie die folgende Tabelle einen Satz von Kp zu berechnen. Ki. und Kc-Werten. Wenn Sie nur ein P-Regler wollen dann die Zeile in der Tabelle verwenden markiert P die zur Berechnung "korrekt" Kp (Ki ‘und Kd’ beide null). Wenn Sie einen PI-Regler wollen verwenden dann die nächste Zeile. Der vollständige PID-Regler ist in der unteren Zeile.
  • Wenn Sie implementiert haben, dass die K die alle als das 100-fache ihrer tatsächlichen Wert eingegeben werden, müssen Sie nicht, dass bei diesen Berechnungen zu berücksichtigen. Dieser Faktor von 100 ist bereits berücksichtigt in der Kp = Kc Wert, den Sie bestimmt.
  • Führen Sie den Roboter und sehen, wie es sich verhält.
  • Tweak die Kp. Ki und Kd-Werte die beste Leistung zu erhalten, Sie können. Sie können mit ziemlich großen zwickt beginnen, sagen 30%, dann kleinere Tweaks versuchen, die optimal zu bekommen (oder zumindest akzeptabel) Leistung.
  • Sobald Sie haben einen guten Satz von K versuchen, die Tp-Wert zu erhöhen, der die gerade Geschwindigkeit des Roboters steuert.
  • Re-zwicken die Ks oder vielleicht sogar gehen zurück zu Schritt 1 und den gesamten Prozess für den neuen Tp Wert wiederholen.
  • Halten Sie wiederholen, bis das Verhalten des Roboters akzeptabel ist.
  • Ziegler Nichols-Verfahren geben K ‘Werte
    (Loop mal betrachtet konstant und gleich dT zu sein)

    Die Primzahlen (Apostrophe) auf der K i ‘und K d’ sind nur daran erinnern, dass sie berechnet werden annehmen dT konstant ist und dT in die K-Werte gewalzt wurde.

    Hier sind die Werte, die ich für meine Test Roboter gemessen (die in dem Video später verknüpft). Kc betrug 300, und wenn Kp = Kc der Roboter bei etwa 0,8 Sekunden pro Schwingung so Pc oszillierte ist 0,8. Ich maß Pc von nur laut der Roboter vollständig in eine bestimmte Richtung geschwenkt jedes Mal Auszählen. Ich verglich dann meine Wahrnehmung, wie schnell ich rechnete mit "1-Kartoffel — 2-Kartoffel — 3-Kartoffel. ". Das ist kaum "Feinmechanik" aber es funktioniert gut genug, so dass wir es nennen "der Ingenieurpraxis". Die Schleifenzeit, dT. einfach durch Ausführen des Programms für 10.000 Loops und mit der NXT bestimmt 0,014 Sekunden / Schleife, um die Laufzeit angezeigt. Mit Hilfe der Tabelle oben für einen PID-Regler wir bekommen;

    Kp = (0,60) (Kc) = (0,60) (300) = 180
    Ki = 2 (Kp) (dT) / (Pc) = 2 (180) (0,014) / (0,8) = 6,3 (die 6 ist abgerundet)
    Kd = (Kp) (Pc) / ((8) (dT)) = (180) (0,8) / ((8) (0,014)) = 1286

    Nach weiteren Versuch und Irrtum Abstimmung der Endwerte waren 220, 7 und 500 für Kp. Ki und Kd jeweils. Denken Sie daran, dass alle meine Ks eingegeben werden als ihr tatsächlicher Wert 100x so die Ist-Werte 2.2 sind, 0,07 und 5.

    Wie Änderungen in Kp, Ki und Kd die Roboter Verhalten beeinflussen

    Die Tabelle und die oben beschriebene Verfahren ist ein guter Ausgangspunkt für Ihre PID zu optimieren. Manchmal hilft es, eine bessere Vorstellung davon zu haben, was das Ergebnis der Erhöhung sein wird (oder abnimmt), einer der drei Ks. Die folgende Tabelle ist von vielen Web-Sites zur Verfügung. Diese spezielle Version ist aus dem Wiki auf PID-Regler.

    Auswirkungen der zunehmenden Parameter

    Das "Anstiegszeit" ist, wie schnell der Roboter einen Fehler zu beheben versucht. In unserem Beispielfall ist es, wie schnell der Roboter versucht, die Linienkante zurück zu bekommen, nachdem es weg von ihr entfernt hat. Die Anstiegszeit wird vor allem von Kp gesteuert. Eine größere Kp wird der Roboter versuchen, machen schneller zurück zu bekommen, und verringert die Anstiegszeit. Wenn Kp zu groß ist, wird der Roboter überschreiten.

    Das "Überschwinger" weit ist, wie vorbei an der Linie Rand der Roboter zu gehen, neigt dazu, wie es zu einem Fehler reagiert. wenn die Überschreitung klein ist beispielsweise dann nicht der Roboter nicht auf der rechten Seite der Linie schwingen, wie es versucht zu sein, die links von der Linie zu beheben. Wenn die Überschreitung groß ist dann schwingt der Roboter auch über die Linienkante, wie es um einen Fehler zu korrigieren versucht. Überschwinger wird weitgehend durch den Kd Begriff gesteuert, sondern wird stark von den Ki und Kp Bedingungen betroffen. Normalerweise korrigieren zu viel Überschwingens Sie Kd erhöhen wollen. Denken Sie daran, unsere erste sehr einfache Linie Anhänger, die, die nichts tun konnte, aber biegen Sie nach rechts oder links? Diese Linie Anhänger hat sehr schlechte Überschwinger. Tatsächlich ist, dass über alles tut es.

    Das "Einschwingzeit" lang ist, wie der Roboter sich wieder absetzen nimmt, wenn es eine große Änderung trifft. In unserer folgenden Fall eine große Änderung tritt auf, wenn der Roboter eine Wendung begegnet. Da der Roboter auf die Kurve reagiert wird er den Fehler korrigieren und dann um einen gewissen Betrag überschreiten. Es muss dann das Überschwingen zu korrigieren und vielleicht in die andere Richtung überschreiten zurück. Es muss dann das Überschwingen zu korrigieren. na ja, Sie wissen schon. Da der Roboter auf einen Fehler reagiert wird es dazu neigen, um die gewünschte Position zu oszillieren. Das "Einschwingzeit" ist, wie lange die Schwingung auf Null zu dämpfen nimmt. Die Einschwingzeit reagiert stark auf die beiden Ki und Kd Bedingungen. Bigger Ki gibt mehr Zeiten absetzen. Bigger Kd gibt kürzere Einschwingzeit.

    "Fehler bei Equilibrium" Der Fehler wird als System verbleibenden arbeitet ohne gestört zu werden. Für unsere Linie Anhänger würden es die von der Linie versetzt, wie der Roboter eine lange Gerade folgt. Oft Controller P und PD wird mit dieser Art von Fehler enden. Es kann durch eine Erhöhung Kp reduziert werden, sondern das kann den Roboter oszillieren machen. Einschließlich eines I-Term und zunehmende Ki wird oft ein P- oder PD-Controller zu beheben, die einen konstanten Fehler im Gleichgewicht hat. (Dies setzt voraus, Sie sogar über einen kleinen Restfehler sorgen, wie der Roboter die Linie folgt. Es bedeutet nur, ist es auf der einen Seite oder der anderen um einen kleinen Betrag versetzt sind.)

    Hier ist ein kurzes Video von einer grundlegenden Lego Mindstorms Roboter im Anschluss an die Linie auf dem Testmatte, die mit dem Satz kommt. Die Videoqualität ist nicht sehr gut.

    Der Lichtsensor ist etwa 1/2" oberhalb der Matte und versetzt zu einer Seite der Mittellinie des Roboters. Die Tp (Soll-Leistung) wurde bei 70% festgelegt. Die Roboter im Durchschnitt etwa 8 Zoll pro Sekunde auf diesem Kurs. Der Roboter ist eine linke Linie Anhänger und wird im Anschluss an die Innenkante des Ovals. Die Innenkante ist ein bisschen schwieriger zu folgen als die Außenkante.

    Insgesamt erscheint die Linie Anhänger ziemlich gut zu funktionieren. Wenn Sie das Video genau beobachten werden Sie den Roboter zu sehen "schwänzeln" ein bisschen wie es die Ecken kommt weg. Das ist die PID ein wenig schwingt. Wenn der Roboter läuft auf der Kamera können Sie den roten Fleck auf der Matte von dem Lichtsensor LED zu sehen. Es sieht die Linie der Kante ziemlich gut zu verfolgen.

    Die Grund PID-Regler sollte für viele verschiedene Steuerungsprobleme zu umgehen, und selbstverständlich kann anstelle eines PID als P oder PI-Regler verwendet werden. Sie müssten mit einer neuen Definition des Fehlers zu kommen und die PID würde für die jeweilige Aufgabe abgestimmt werden müssen.

    Ich konnte es dir geben, aber dann müsste ich dich töten.

    Da dieses Dokument bei älteren FLL Kinder ausgerichtet ist, habe ich den Code wirklich nicht wollen, zu give’m. Sie sollten in der Lage sein, ihre eigenen zu schreiben.

    Der Pseudo-Code hat so ziemlich alles, was man für die PID selbst benötigen. Sie müssen möglicherweise einige Setup-Code hinzufügen und vielleicht einen geeigneten Weg, um die Linie Anhänger Schleife zu stoppen.

    Als wenig Hilfe hier ist ein MyBlock, die zwei Eingänge nimmt, um die Zielleistung Tp und der Turn-Wert und steuert die zwei Motoren. Diese MyBlock befasst sich auch richtig mit negativen Leistungsstufen. Es gibt einen Signalton, selbst wenn ein Motor Richtungen umkehrt, die für Tuning praktisch ist. Eine richtig abgestimmt Linie folgende PID sollte nur selten Motor Richtungen umkehren.

    Wenn Sie wirklich eine E-Mail senden möchten, dass ich meine PID NXT-G-Code zu erhalten.

    Für ein hervorragendes Beispiel für einen anderen PID-Regler auf einem MINDSTORMS Roboter sehen Philos segway wie Roboter balanciert. Die PID wird in NQC geschrieben ("nicht ganz C"). Balancing ist eine viel schwierigeren Steuer Problem als nach einer Linie ist. (Ich weiß, weil ich es versucht habe!)

    Eine PID (oder PI oder P) -Steuerung ist ein Beispiel einer Rückkopplungsschleife. Feed-back ist die größte Sache seit geschnittenem Pickles.

    Es gibt fortgeschrittene Methoden für einen PID-Regler abgestimmt wird. Normalerweise erfordert es Hardware und / oder Software, die ein Lego-Roboter-Builder nicht haben.

    Einige PID-Regler sind viel leichter zu tune als andere. Beispielsweise wird ein PID-Regler häufig verwendet, um die Temperatur in einem Ofen zu steuern. Dies ist eine ziemlich einfache Abstimmung Job, da der Ofen ziemlich stabil ist, wenn es von ihr Zieltemperatur weit sein kann, auch wenn die PID ist schlecht abgestimmt. PID-Regler werden auch zur Steuerung von Ausgleichs Roboter eingesetzt. Das ist viel schwieriger zu stimmen, da die PID abgestimmt werden muss ziemlich gut sonst der Roboter gerade umfällt. Es ist schwer, die PID abzustimmen, wenn der Roboter sofort jedes Mal, fällt über sie eingeschaltet ist.

    Es gibt Varianten des Ziegler Nichols-Methode und andere Methoden für eine PID-Abstimmung.

    Es gibt Controller, die komplexer als ein PID sind.

    PIDs gibt es schon seit langer Zeit und voranComputerSteuerung. Eine PID kann, und oft hat, wurde in rein mechanischen Systemen implementiert. Das heißt, kein Computer oder auch keine elektrischen Teile.

    Es wäre interessant, die NXT-G Programm Schreibdaten in einer Datei zu haben, während die PID läuft. Sie würden dann die Daten für die Analyse auf den PC übertragen zurück. Dies wäre eine gute Möglichkeit, Pc zu bestimmen. Ich glaube, dass die Version 2.0 von NXT-G-Daten wieder auf den PC in Echtzeit für die grafische Darstellung zu übertragen. Schreiben in eine Datendatei (oder das Senden der Daten über Bluetooth) hat einige Probleme, wenn sie mit einem PID eingesetzt. Das Schreiben in eine Datei ist ein ziemlich langsamer Prozess, so dass die Schleifenzeit des PID wird zunehmen, denke ich würde alles über Bluetooth Übertragung auch ziemlich langsam ist. Das bedeutet, dass die PID länger Schleife dauert und Sie werden den Fehler zu messen und die Aktualisierung der Motoren weniger häufig. Ein weiteres Problem mit Schreiben in eine Datei ist, dass in regelmäßigen Abständen die Datei Schreibroutine einen großen Teil der Zeit (so viel wie 0,1 Sekunden) dauert etwas tun "Haushalt". Dies kann dadurch vermieden werden, "pre erstreckender" die Datei an die Grenze, wenn die Datei zum ersten Mal geöffnet. Ein NXT-G-Datei kann so groß wie 32K, wenn Sie so viel freien Speicherplatz auf dem NXT-G haben. Wenn Sie versuchen, die Datendatei vorge erweitern, und Sie haben nicht genug Speicher der NXT-G keinen Hinweis darauf gibt, dass es ein Problem gab. Wenn Sie eine Methode wie diese verwenden dann die Pc-Wert Sie ist nur auf die jeweilige dT relevant erhalten, dass die "PID mit Protokollierung" Programm. Wenn Sie den PC messen wollen und dann die Datenprotokollierung Code aus dem Programm zu entfernen, um es Schleife schneller zu machen, ist der PC nicht mehr gültig. Eine Teillösung ist es, alle Schlaufen des PID zu zwingen, die gleiche Menge an Zeit in Anspruch nehmen. Zu Beginn der Schleife einen Timer auf Null zurück. Am Ende der Schleife WAIT für eine Zeitdauer länger als die normale dT-Schleife. Sie können diese Technik verwenden, um die Schleife Zeiten konstant zu halten, auch wenn Sie große Teile des Codes hinzufügen oder entfernen (wie Datenprotokollierung). Natürlich bedeutet, dass Sie die PID immer Looping langsamer als es sein könnte, und Sie Zeit in jedem Schleifenzyklus verschwenden.

    Ich habe ein bisschen getüftelt mit Schreiben in eine Datei Daten, während die PID ausgeführt wird. Es ist praktisch, um die Datendatei mit einer Liste der Tp zu starten. versetzt. Kp. Ki und Kd-Werte. Gute Daten zu protokollieren jedes Mal, wenn die PID-Schleife ausgeführt wird, ist die Zeit, Fehler. PID-Ausgang und der Winkel von einer der Motorachse. Aus diesen Daten können Sie die Integral- und Differential rekonstruieren, so dass sie nicht brauchen, angemeldet sein.

    Es ist mir unklar, wie schnell die PID-Zyklus muss, das heißt, wie klein dT zu sein, braucht eine gute Steuerung zu erhalten. Ich vermute, dass die PID-Zyklus muss schneller als die Reaktionszeit der Motoren. mehrmals Vielleicht schneller. Radfahren die PID viel schneller als das wahrscheinlich nicht viel helfen, da die Dinge nicht so schnell ändern werden. Die Reaktionszeit der NXT-Motoren, wenn sie tatsächlich einen Roboter bewegt, ist im Bereich von einigen Zehnteln einer Sekunde. Die PID sollte wohl Zyklus in etwa 1/5 bis 1/10, die Zeit, oder etwa 0,010 bis 0,030 Sekunden pro Schleife. Die Grund PID oben beschriebene Programm hat eine dT von etwa 0,015 Sekunden, was ausreichend schnell sein sollte. Wenn die das Programm auch Daten protokolliert, wie es läuft dann steigt die dT auf etwa 0,030 Sekunden pro Schleife.

    Mit rohen Lichtwerte (0 bis 1023 Skala), anstelle von unkalibrierten Lichtwerte, könnte der Dynamikbereich der Lichtsensoren erhöhen. Für unser Beispiel Lichtwerte schwarz würde 400 und weiß 500. Der sein Offset mit einem Bereich von +/- 50 wäre 450 anstelle von +/- 5. Die rohen Lichtwerte ist von einem Datenanschluß auf der Lichtsensorblock zur Verfügung. Wenn Sie Ihren Lichtsensor unter den Lichtbedingungen zu kalibrieren und die kalibrierten Werte verwenden dann werden etwa 100 und schwarz weiß sein wird etwa 0. Dies ist ein weiterer Weg, um die Proportionalbereich des Lichtsensors zu erhöhen. Sowohl in den rohen und kalibriert Modi die Lichtwerte sind wahrscheinlich nicht genau in der letzten Ziffer, aber hoffentlich sind die Werte etwas präziser als ein Licht Wertebereich von nur 10 oder so verwenden.

    Bei Verwendung eines PID-Reglers es schaffen, ist oft ein paar verschiedene Möglichkeiten, um den Fehler zu definieren. Für unsere Linie Anhänger ist der Fehler proportional zu, wie weit der Sensor von der Linie der Kante ist. Das Derivat ist, wie schnell der Sensor in Richtung bewegt, oder weg von, Rand der Linie der. Das Integral ist Summe der Abstände vom Rand der Linie, die wirklich nicht viel physikalische Bedeutung hat (obwohl es immer noch den Controller hilft). Es gibt andere Möglichkeiten, Dinge zu tun. Wir konnten den Fehler so definieren, wie schnell wir aus der Linien Rand bewegen sich in Richtung oder weg. Mit anderen Worten, ist der Fehler jetzt, was die Ableitung in unserer Linie Anhänger war. Für diese neue Definition der Fehler, wird das Derivat, wie schnell wir zu beschleunigen, oder von ihr weg, Rand der Linie der. Das Integral wird, wie weit wir von der Linie der Kante sind, die physischen Sinn macht. Welche Methode am besten funktioniert, hängt oft ab, wie genau Sie den Fehler messen kann und wie viel Lärm (Zufalls-) besteht. Wenn wir die Geschwindigkeit als Fehler verwenden, hat sie von der Lichtmesswert und die Ableitung des Lichtmesswert berechnet werden. Der Ableitung für die PID erhalten haben wir die Ableitung eines Derivats zu nehmen. Die Ableitung eines Derivats wird wahrscheinlich nicht funktionieren sehr gut mit unseren begrenzten Proportionalbereich von Lichtwerten.

    Für die "drei Niveaulinie Anhänger" die drei Bereiche müssen nicht gleich groß sein. Wenn diese Art von Anhänger gut genug ist, dann ist es oft besser, das Zentrum Bereich größer als die beiden äußeren Bereiche machen. So etwas wie 42 bis 47 vielleicht für unsere Beispielwerte. Das einzige, was Sie zu befürchten ist, dass dies in der Raumbeleuchtung auf kleine Veränderungen ziemlich empfindlich wird. Die drei sogar Bereiche (und die beiden ursprünglichen Bereich Ansatz) sind relativ unempfindlich gegenüber Änderungen in der Raumbeleuchtung. Wenn Sie das Zentrum Bereich zu groß machen, laufen Sie Gefahr eine kleine Änderung in der Raumbeleuchtung von mit Ihrem Lichtbereich bewegen außerhalb dessen, was Sie erwartet. Der Lichtsensor kann nie Zahlen zurückkehren entweder in der niedrigsten oder höchsten Bereich und der Roboter wird sich nie in eine der beiden Richtungen.

    Einige Realitäten der PIDs.

    1. Wenn der Fehler aus dem Proportionalbereich geht geht die Ableitung auf Null.
    2. Das Derivat ist empfindlich gegenüber Rauschen.
    3. Das Derivat funktioniert am besten, wenn die Fehlergenauigkeit hoch ist. Für unsere Linie Anhänger ist der Fehler eine ganze Zahl zwischen -5 und +5. Das ist ziemlich schlechte Präzision. verwenden Vielleicht die Ableitung der Achse Geschwindigkeit der Motoren statt?

    ZUSAMMENHÄNGENDE POSTS

    • Staph-Infektion — Pitbulls gehen …

      sie haben es zum Ersten Mal HÖCKER kam gekratzt, und nannte es Infektion Staph, sagten sie sterben RAUDE ausgeschlossen,, ideal IHM eine runde von Ivermectin für sie gab, sterben und Höcker…

    • Rash, die weg t gehen gewonnen, Hautausschlag, der t weggehen gewonnen.

      Ich habe auf sie hydrocortisose Sahne und Benadryl setzen, aber es wird nicht weggehen. Ich dachte, es ein Hitzeausschlag war. aber ich bin nicht sicher, wie lange solche weggehen nehmen. es…

    • OB-GYNs sagte Roboter Hysterektomie …

      This Datei Foto zeigt da Vinci-Operationsroboter in Einem Krankenhaus in Pittsburgh sterben. Teuer Roboter-Chirurgie sollte sterben erste oder Auch Zweite Wahl für sterben Frauen Meisten nicht…

    • Schwere des Kopfes, gehen nie weg …

      Starke Kopfschmerzen. Rückseite des Kopfes, nie weggehen ?? Geschrieben von: kbarnyard 16 August 2007 5.29 Ich habe seit dem 2. März starke Kopfschmerzen im Hinterkopf hatte. Sie sind nicht…

    • Pinkeye Symptome und Wann gehen …

      Pink Eye Übersicht Rosa Auge ist eine Entzündung der Bindehaut (die Bedeckung des Augapfels und der Innenseite des Augenlids). Diese Entzündung kann zu Rötungen, tränende Augen, Ausfluss,…

    • Pillen, schlafen zu gehen, Pillen, schlafen zu gehen.

      Von STEPHANIE SAUL 15. März 2007 Die am häufigsten verschriebene Schlaftabletten seltsame Verhalten wie das Fahren und Essen während des Schlafes führen können, sagte der Food and Drug…

    Добавить комментарий