RoboterNetz.de Foren-Übersicht Werbung
 Home  •  Forum  •  Suchen •  Mitgliederliste  •  RN-Landkarte  •  Ränge  •  Statistik  •  Download •  Album  •  Links  •  Kalender  •  Letzte Themen
 RN-Wissen Artikelbereich  •  Mitarbeiter  •  Benutzergruppen  •  Chat  •  Registrieren  •  FAQ  •  Profil  •  log in, Nachrichten zu lesen  •  Login
Kalender 
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Neues Thema eröffnenNeue Antwort erstellen
Vorheriges Thema anzeigen Dieses Thema einem Freund schickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Textdatei speichernPrintable versionlog in, Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
waste

Roboter Experte
Roboter Experte







Beitrag Verfasst am: 17.08.2005, 17:48 Antworten mit ZitatNach oben

Hallo!

Ich will den Linienfolger meines Asuros etwas aufpäppeln. Die 1. Version funktioniert zwar, ist aber nur mit einem einfachen P-Regler ausgeführt. Ich fragte mich, ob es nicht mit einem anderen Reglertyp (PI, PD, PID) besser gehen könnte. Dazu musste ich mich etwas in die Thematik einarbeiten. Ich habe zwar genügend Erfahrung mit Regelschleifen in der Elektronik, aber ein gemischtes System mit Mechanik und digital war auch für mich Neuland. Aus den vielen Nachfragen hier im Board, wie man eine klassische Regelung realisiert die über einen normalen P-Regler hinaus geht, weiss ich um den Wissensbedarf und habe mich entschlossen meine Erkenntnisse hier weiter zu geben. Das Projekt ist zwar noch nicht fertig, ich lege aber trotzdem schon mal los, weil ich sonst vielleicht einige Details wieder vergesse. Ausserdem können von Euch noch Anregungen kommen, die das Projekt in eine andere Richtung bringen. Ich habe zwar im Titel schon den PD-Regler vorweggenommen weil sich der nach einer 1. Analyse als sinnvoll herausstellte. Aber das heisst jetzt nicht, dass damit der PD-Regler schon als beste Lösung zementiert ist. Es kann sich durchaus im Laufe des Projekts ein anderer Reglertyp als bessere Lösung ergeben. Möglicherweise endet es sogar in einem Fuzzy-Regler. Wir werden sehen.

Wer jetzt in Kürze schon einen funktionierenden Code erwartet, den muss ich enttäuschen, das wird noch eine Weile dauern. Zuerst muss einmal der Iststand aufgenommen werden, danach folgt dann die Analyse, Optimierung und Umsetzung. Für manche wird es zu sehr ins Detail gehen, für andere aber zu wenig. Bei der grossen Bandbreite an Lesern hier im Forum ist es wohl schwierig den Bedarf jedes Einzelnen genau zu treffen. Man möge mir das nachsehen, Wissensbegierige können ja nachfragen.

Das Ziel ist klar: Die Regelung soll so optimiert werden, dass sie möglichst schnell und trotzdem stabil ist.

Die Vorgehensweise:
1. Analyse der Regelstrecke und Modellierung
2. Auswahl des Reglertyps
3. Simulation und Optimierung des Reglerentwurfs
4. Parametrierung des Reglers und Umsetzung in Code
5. Praxistest und Nachoptimierung

Los geht's mit der Analyse der Regelstrecke!
Die Regelstrecke enthält den Liniensensor, PWM-Steller, Motor und Getriebe. Der Liniensensor reagiert auf Abweichungen von der Linie, also auf Streckenänderungen. Damit ist schon einmal klar, dass es sich hierbei um eine Positionsregelung handelt. Das macht es für mich auch etwas leichter, da die Positionsregelung in der Literatur bereits vielfach abgehandelt wurde. Mit dem Motor lässt sich mittels PWM die Geschwindigkeit steuern. Es fehlt also noch ein Glied in der Kette um von Geschwindigkeit auf Wegstrecke zu kommen. Das ist der Integrator. Ein Integrator wird für die Modellierung gebraucht, weil die Wegstrecke das Integral der Geschwindigkeit über der Zeit ist. In der Mechanik gibt es noch mehr Beispiele mit Integralverhalten, wie z.B.:
Schub -> Beschleunigung -> Geschwindigkeit -> Weg

Als nächstes betrachten wir das Zeitverhalten der einzelnen Elemente. Der Liniensensor wird mit einem AD-Wandler ausgelesen. Das dauert etwas. Dafür müssen wir eine Verzögerung berücksichtigen. Weil dabei die Amplitude unverfälscht bleibt, ist es ein Verzögerungsglied 0. Ordnung. Der Einfachheit halber packen wir auch gleich die Rechenzeit des Prozessors da mit hinein. Es gibt auch Verzögerungsglieder höherer Ordnung, das werden wir gleich am Beispiel des Motors sehen. Ein Motor lässt sich nicht in beliebig kurzer Zeit beschleunigen, denn die Masse des Rotors hat eine Trägheit. Die physikalische Grösse dafür ist das Trägheitsmoment. Wenn man eine Spannung an einen Motor anlegt, dann beschleunigt der in einer e-Funktion, das ist wie bei einem RC-Glied, also wie ein Verzögerungsglied 1.Ordnung (PT1). Da das Trägheitsmoment bei Rotationsbewegungen äquivalent ist zur Masse bei geradliniger Bewegung kann man die Masse des Asuros auch gleich damit hinein packen. Damit hätten wir alle Elemente der Regelstrecke charakterisiert und können ein Modell der gesamten Regelschleife zeichnen (siehe Bild).

Im Blockschaltbild ist der Regler noch eine Blackbox, den wollen wir ja herausfinden. Der nächste Block ist das Verzögerungsglied PT1, das stellt den Motor mit seinem Trägheitsmoment incl. Getriebe und Masse des Asuros dar. Die Schnittstelle zwischen PT1 und dem Integrator ist die Geschwindigkeit "v". Der Integrator errechnet daraus die Wegstrecke. Im Rückwärtszweig ist das Verzögerungsglied "delay", welches den Liniensensor und die AD-Wandlung modelliert. Danach steht der Istwert zur Verfügung. Der Istwert wird mit dem Sollwert verglichen (Subtraktion) und auf den Regler gegeben. Damit ist die Regelschleife geschlossen. Der Sollwert ist in unserem Fall 0, weil der Asuro möglichst ohne Abweichung der Linie folgen soll.

Das reicht vorerst, ist genügend Stoff zum Verdauen. Eine Fortsetzung folgt, da werden dann die Kennwerte der einzelnen Blöcke (Liniensensor, Motor usw.) ermittelt.

Gruss Waste
Versteckt Benutzer-Profile anzeigen
payce

Stammmitglied
Stammmitglied




Anmeldungsdatum: 19.07.2005
Beiträge: 53
Wohnort: Nürnberg
Alter: 30

blank.gif
Beitrag Verfasst am: 17.08.2005, 20:31 Antworten mit ZitatNach oben

Uiuiuiuiuiiiii! Du meinst es ja echt ernst! Nicht schlecht! Freu mich schon auf eine Fortsetzung! Simuergebnisse wären auch echt interessant!
Offline Benutzer-Profile anzeigen
waste

Roboter Experte
Roboter Experte







blank.gif
Beitrag Verfasst am: 17.08.2005, 22:55 Antworten mit ZitatNach oben

Simulationen kommen noch, aber alles zu seiner Zeit.

Aber wart's ab, wenn erst Differenzialgleichungen und Laplace-Transformation dran sind! Wink
Keine Angst, darauf werde ich verzichten. Ich bin da selbst nicht sattelfest.

Gruss Waste
Versteckt Benutzer-Profile anzeigen
Sternthaler






Anmeldungsdatum: 29.05.2005
Beiträge: 989

germany.gif
Beitrag Verfasst am: 17.08.2005, 23:41 Antworten mit ZitatNach oben

Ups, ich hoffe ich greife jetzt nicht etwas vor.

Teil 1, 2 und 3 habe ich mir so 'gedacht' und hab deshalb schon mal bei Punkt 4 angefangen. Dabei habe ich gleich das 'volle' Programm von P, I und D genutzt und einen PID-Regleger zusammengestellt und in C-Code umgesetzt. Punkt 5 ist bei mir funktionsfähig. (mein Gedanke zur Optimierung ist jetzt, dass ich in Kurven noch die Geschwindigkeit runterregeln möchte. Weiterer PID-Regler in Sicht. Aber wer weiss, was eine Kurve ist, wenn man nur 2 Detektoren hat?)

In Datei gerade.c werden am Anfang Werte an die Variablen p1, p2, q0, q1 und q2 zugewiessen. Diese Werte habe ich mit Hilfe der im ZIP enthaltenen EXCEL-Datei ermittelt.
Der Reiter 'Tabelle1' ist dafür zuständig.
Der Reiter 'Tabelle2' kann die vom ASURO gesamelten Messwerte anzeigen. (Muster in PID.txt)

Um die 'richtigen' Parameter zu finden habe ich mein Gefühl auf Reiter 'Tabelle1' losgelassen. Die grün hinterlegten Felder musste ich 'mal hier und mal dort' ändern um eine halbwegs 'schöne' Kurve zu bekommen.
Dann habe ich die blauen Felder in gerade.c in die oben erwähnten Variablen (eigendlich Konstanten) übernommen.

P.S.: Die kleine Formel unter /* Berechnung der Reglerausgangsgroesse */ ist der PID-Regler. Hier kann ich nur auf eine Z-Faltung der Summe aus proportionalem, integralem und differentialem Anteil in der Literatur hinweisen. Jedenfalls hat das da so gestanden. (Quelle ist leider im internet verloren gegangen. bzw. ich habe mal wieder keinen Bookmark gesetzt. sorry)
Offline Benutzer-Profile anzeigen
Sternthaler






Anmeldungsdatum: 29.05.2005
Beiträge: 989

germany.gif
Beitrag Verfasst am: 17.08.2005, 23:46 Antworten mit ZitatNach oben

Ich versuche es nochmal mit der ZIP-Datei.
So steigere ich wenigstens die Anzahl meiner Einträge Zwinkern

Im übrigen fehlte folgendes:

Schöne Grüße von Sternthaler
Offline Benutzer-Profile anzeigen
ähM_Key

Roboter Experte
Roboter Experte




Anmeldungsdatum: 28.06.2005
Beiträge: 572
Wohnort: DD
Alter: 24

germany.gif
Beitrag Verfasst am: 18.08.2005, 14:08 Antworten mit ZitatNach oben

Hi!

Hab mich auch mal daran versucht einen PID-Regler in die von mir programmierte RoboterSimulation einzubauen, was aber irgendwie noch nicht richtig funktioniert.

Vielleicht hat ja jemand Ahnung von Delphi oder es hilft sonst irgend jemandem.

Beantworte gerne Fragen zum Programm!

Grüße; ähM_Key
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen
waste

Roboter Experte
Roboter Experte







germany.gif
Beitrag Verfasst am: 18.08.2005, 17:28 Antworten mit ZitatNach oben

Das sind ja interessante Programme!

@Sternthaler
Könntest du bitte dein Excelprogramm etwas näher erklären. Was bedeuten die Parameter? Kp, Ki, Kd, Ta sind klar, aber was bedeuten die anderen? Was kann man aus dem Diagramm ersehen? Wie geht man z.B. vor, wenn man eine möglichst schnelle und stabile Regelung haben will?

Ich habe deinen PID-Linienfolger auf meinem Asuro kurz getestet. Kann es sein, dass der keine Rechtskurven mag oder bockt da wieder mal mein Asuro?

@ähM_Key
interessantes Programm, damit muss ich mich bei Gelegenheit noch näher befassen. Delphi kenn ich leider nicht, aber ansonsten will ich schon behilflich sein wo es geht, z.B. PID-Regler Theorie. Hast du eigentlich in dem Programm auch dynamische Prozesse berücksichtigt?

Gruss Waste
Versteckt Benutzer-Profile anzeigen
ähM_Key

Roboter Experte
Roboter Experte




Anmeldungsdatum: 28.06.2005
Beiträge: 572
Wohnort: DD
Alter: 24

germany.gif
Beitrag Verfasst am: 18.08.2005, 17:53 Antworten mit ZitatNach oben

Hallo!

Nein dynamische Prozesse sind leider nicht drinn, was mir ehrlich gesagt aber auch noch zu kompliziert ist.
Das macht das gesammte Programm natürlich weniger tauglich, gerade, weil es sozusagen keine Ansprechzeit gibt.

Hier mal der interessante Teil des Quelltextes vom Regler

procedure TForm1.followtrack;    /////////////////////////////////Spurverfolgung
var
  m: integer;
  sensor1, sensor2, sensor, regel, yp, yi, yd: real;

begin
  sensor1:=0;
  sensor2:=0;
  for m:=1 to sensoranzahl do begin
    if chk(m) and (sensor1=0) then begin
      if m<=sensoranzahl/2 then  sensor1:=-sensoranzahl/2-1+m
        else sensor1:=m-sensoranzahl/2;
      if m<>sensoranzahl then begin
        if chk(m+1) then begin
          if m+1<=sensoranzahl/2 then  sensor2:=-sensoranzahl/2+m
            else sensor2:=m+1-sensoranzahl/2;
        end;
      end;
    end;
  end;

  if sensor2<>0 then sensor:=(sensor1+sensor2)/2 else sensor:=sensor1;

  yp:=(kp/100)*(sensor/(sensoranzahl/2));
  yi:=yialt+(tast/100)/(ki/100)*sensor;
  yd:=(kd/100)*(sensor-sensoralt)/(tast/100);

  yialt:=yi;
  sensoralt:=sensor;

  regel:=yp+yi+yd;

  button6.caption:=floattostr(regel);

  if regel<0 then begin
    vr:=vr+abs(regel);
    if vr>=vmax then begin
      vr:=vmax;
      vl:=vl-abs(regel);
      if vl<0 then vl:=0;
    end;
  end;
  if regel>0 then begin
     vl:=vl+abs(regel);
     if vl>=vmax then begin
      vl:=vmax;
      vr:=vr-abs(regel);
      if vr<0 then vr:=0;
     end;
  end;     

end;


Der obere Teil berechnet nur, wo eine Linie unter den Sensoren liegt und im unteren werden die Motoren (L/R) angesteuert.

Vielleicht kannst du ja was damit anfangen, ansonsten muss ich's halt noch mal genauer beschreiben. Zwinkern

Grüße; ähM_Key
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen
waste

Roboter Experte
Roboter Experte







germany.gif
Beitrag Verfasst am: 18.08.2005, 18:32 Antworten mit ZitatNach oben

Hallo ähM_Key,

schade, dass keine dynamischen Prozesse drin sind, das wäre wirklich interessant gewesen. Ist aber trotzdem ein schönes Tool.

Nun zu deinem Code:
Die Formeln für den Regler sind im Prinzip ok, nur:
ki wird normalerweise multipliziert, sollte aber trotzdem funktionieren, nur wirkt ki eben mit kleinerem Wert stärker
warum wird bei yp zusätzlich durch sensoranzahl/2 geteilt und sonst bei yi und yd nicht?

Für ein besseres Verständnis müsste ich noch wissen, welche Werte die Variable sensor annehmen kann bei typischen Abweichungen.

Und noch was:
Bei der Begrenzung bei vmax darfst du nur den Rest auf die andere Seite übertragen und nicht den vollen "regel"-Wert. Sonst ist es nicht linear. (Ausser es ist so gewollt)

Gruss Waste
Versteckt Benutzer-Profile anzeigen
ähM_Key

Roboter Experte
Roboter Experte




Anmeldungsdatum: 28.06.2005
Beiträge: 572
Wohnort: DD
Alter: 24

germany.gif
Beitrag Verfasst am: 18.08.2005, 18:53 Antworten mit ZitatNach oben

waste hat folgendes geschrieben::

warum wird bei yp zusätzlich durch sensoranzahl/2 geteilt und sonst bei yi und yd nicht?



Mein Fehler (dürfte an der Version liegen), natürlich sollte das entweder bei allen oder keinem sein.

waste hat folgendes geschrieben::

Für ein besseres Verständnis müsste ich noch wissen, welche Werte die Variable sensor annehmen kann bei typischen Abweichungen.


Also sensor kann bei 8 Sensoren die Werte -4 bis +4 annehmen;' sensor/sensoranzahl/2' dementsprechend -1 bis +1.

waste hat folgendes geschrieben::

Bei der Begrenzung bei vmax darfst du nur den Rest auf die andere Seite übertragen und nicht den vollen "regel"-Wert. Sonst ist es nicht linear. (Ausser es ist so gewollt)

Hmm, darüber habe ich mir noch gar keine Gedanken gemacht; werde ich bei Gelegenheit noch ergänzen!

Grüße; ähM_Key
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen
waste

Roboter Experte
Roboter Experte







germany.gif
Beitrag Verfasst am: 18.08.2005, 19:06 Antworten mit ZitatNach oben

Sind die Sensoren digital? Gibt es also nur ganze Zahlen -1, 0, +1, +2 usw.
Versteckt Benutzer-Profile anzeigen
ähM_Key

Roboter Experte
Roboter Experte




Anmeldungsdatum: 28.06.2005
Beiträge: 572
Wohnort: DD
Alter: 24

germany.gif
Beitrag Verfasst am: 18.08.2005, 19:38 Antworten mit ZitatNach oben

Ja, die sind digital, aber wenn Sensor 1+2 anspricht, wird 1,5 ausgegen. (bzw. halt -3,5)

MK
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen
waste

Roboter Experte
Roboter Experte







germany.gif
Beitrag Verfasst am: 18.08.2005, 20:40 Antworten mit ZitatNach oben

ok, 0,5er Schritte, alles klar

Eigentlich sollte es funktionieren, die angesprochenen Änderungen sollten nicht wesentlich sein für eine prinzipielle Funktion

Kann ich selbst die Parameter in RoboSim einstellen?

Waste
Versteckt Benutzer-Profile anzeigen
Sternthaler






Anmeldungsdatum: 29.05.2005
Beiträge: 989

germany.gif
Beitrag Verfasst am: 18.08.2005, 21:23 Antworten mit ZitatNach oben

An waste und alle die es noch interessiert.
Hier ein Erklärungsversuch für die Parameter in der EXCEL-Datei (in linie-pid.zip):

Kp
Kopplungs- bzw. Verstärkungswert für die Proportional-Komponente

Ki
Kopplungs- bzw. Verstärkungswert für die Integral-Komponente

Kd
Kopplungs- bzw. Verstärkungswert für die Differential-Komponente

Ta [sec]
Zykluszeit zum messen der Sensoren, PID rechnen und regeln.

Ti [sec]
Im Verhältis zu Ta, im EXCEL also 50-fach, die Zeitspanne, in der die Reglung nach einer Abweichung den I-Anteil berücksichtigen soll.

Td [sec]
Im Verhältis zu Ta, im EXCEL also 10-fach, die Zeitspanne, für den P-Anteil

DIES SCHEINEN die Werte für eine SCHNELLE REGLUNG zu sein, nach der waste fragte. (Ta kurz halten und die Verhältnisse über Ti und Td abschätzen war meine Methode)
STABILE REGLERWERTE scheinen sich zu ergeben, wenn die EXECL-Kurve möglichst schnell gegen 0 geht. (Hier habe ich aber Grenzen gefunden, die bestimmt mit der Masse und der Trägheit der Motoren zu tun hat. Jetzt kommt bestimmt Punkt 1.Analyse der Regelstrecke und Modellierung aus wastes Ansatz zur Vorgehensweise zum tragen. Habe ich ja leider komplett vernachläßigt.)

Fehlersprung
Die Differenz der Sensoren, die in dem EXECL-Blatt die Tabelle (und die Grafik) erzeugen soll.
Der Wert 20 ist von mir dort so hinterlassen. Ich habe den Asuro auf meine Linie gesetzt und ein bisschen hin und her geschoben und habe für mich entschieden, daß eine Differenz von ca. 10 bis 40 schon eine Nachreglung vertragen kann.

Parameter q0, q1, q2
Die habe ich so als Formel, auf der ja leider verbummelten Internetseite, gefunden um sie als 'Konstanten' in der PID-Regler-Formel einzusetzen.

Reglergleichung
Hier muss man wissen, daß die e-Werte die Fehler sind. Die u-Werte sind die Reglerberechnungen, und k stellt den Zeitpunkt (Takt) dar.
Somit wären z.B.:
u(k-2) [im Programm u2] der Regleroutput vom VORLETZTEN Takt
e(k) [im Programm e0] der aktuelle Fehler (SensorLinks - SensorRechts)
e(k-1) [im Programm e1] der letzte Fehler
Damit erklären sich die Paremter p1 und p2. Sie stellen Faktoren da, mit denen die 2 letzten Reglerberechnungen in der aktuellen Reglerberechnung einfließen.



Allgemein zu den Formeln:
Sind alle 'Raubkopiert', und in dieser Form von mir nicht verstanden. (An pebisoft: v=m/s ist aber weiterhin gültig)

Allgemein zur Grafik auf Blatt 'Tabelle1':
Der erste Ausschlag entspricht dem Eingabewert 'Fehlersprung'.
Die restlichen Werte sind die 'theoretischen' Fehler, die in der Spalte e(k) berechnet werden, da u(k) ja schließlich als Korrekturwert in jedem weiteren Takt den Fehler beheben soll.

Allgemein zur Grafik auf Blatt 'Tabelle2':
Der ASURO sammelt im Source gerade.c MAXDATA Daten. Dies sind e0, u0 und die an MotorSpeed gegebenen Geschwindigkeiten.
Die Werte können aus dem ASURO mit einem druck auf den linken Kontaktsensor über die Schnittstelle gesendet werden.
Im EXCEL-Blatt kann man diese Werte einfügen (siehe auch Datei PID.txt) und man sieht somit in der oberen Grafik sowohl den Fehler (blaue Linie) als auch den IM ASURO berechneten PID-Wert (rote Linie).
Die untere Grafik zeigt sowohl für den linken (blaue Linie) als auch für den rechten (rote Linie) Motor die gesetzte MotorSpeed an.


Bei weiteren Fragen, werde ich wohl doch die 'verlorene' Seite im Netz wiederfinden müssen. Hier ist mein PID-Latein nämlich am Ende.

Fazit
Ich fand die Grafik in 'Tabelle1' sehr schön, und habe deshalb die Werte so im Programm eingetragen.



RIESENENTSCHULDIGUNG FÜR DIE RECHTSKURVEN:
Rechtskurven sind bestimmt bei vielen ein Problem.
Dies liegt an MEINEM Asuro, da er einen schlappen rechten Motor hat und ich dort immer mehr Gas gebe.

LÖSUNG:
In asurocp.h ist der define MOTORDIFF bei mit mit 50 belegt. (Rechts gibt es immer 50 Einheiten mehr Saft)
Hier müßt ihr einen Wert eintragen, der die Leistungsdifferenz eurer Asuro-Motoren ausgleicht. Der Wert darf auch negativ sein falls der linke Motor der Schwächling ist.

Schöne Grüße von Sternthaler
Offline Benutzer-Profile anzeigen
waste

Roboter Experte
Roboter Experte







germany.gif
Beitrag Verfasst am: 18.08.2005, 21:52 Antworten mit ZitatNach oben

Hier kommt die Fortsetzung des eigentlichen Themas:
Ermittlung der Kennwerte für Liniensensor und Motor

Von früheren Projekten her weiss ich, dass der Liniensensor stark vom Umgebungslicht abhängig ist. Zum einen wird das Ergebnis verfälscht wenn Umgebungslicht von der Seite kommt, zum anderen wird die Steilheit der Kennlinie des Liniensensor verändert, was einer Verstärkungsänderung entspricht. Die Änderung der Verstärkung war je nach Umgebungslicht bis zu Faktor 5. Aus Erfahrung weiss ich, das ist zu viel um eine Regelschleife optimal auslegen zu können. Glücklicherweise hatte ich für das Problem schon eine Softwarelösung parat. Das Umgebungslicht wird dabei durch eine Messung bei ausgeschalteter FrontLED kompensiert. Wie es geht, ist hier nachzulesen:
http://www.roboternetz.de/phpBB2/ze.....=104377&highlight=#104377
Damit bleibt die Steigung der Kennlinie auch bei Umgebungslicht einigermassen konstant. Die Kennlinie des Liniensensors ist als Bild angehängt, siehe Liniensensor.gif. Die Kennlinie wurde aufgenommen, indem ich einen Papierstreifen mit einer kurzen Linie seitlich unter dem Liniensensor durchzog. In Schritten von 1mm wurden die Werte ausgelesen. Als Steigung kann ich etwa 14 pro 1mm ablesen, damit ist das Übertragungsmass des Liniensensors 14/mm. Als Verzögerungszeit durch die AD-Wandlung habe ich etwa 1.6ms gemessen.

Nun kommen wir zur Ermittlung der Kennwerte des PT1-Glieds. Am einfachsten ist es eine Beschleunigungsmessung durchzuführen und aus der aufgenommenen Kurve die Zeitkonstante abzulesen. Das habe ich auch gemacht, hier die Kurve:
Image
Die Messwerte wurden mittels Odometrie vom Asuro selbst aufgenommen und gespeichert und nach der Messfahrt auf den PC ausgelesen. Die ermittelte Zeitkonstante ist ca. 130ms, die Höchstgeschwindigkeit ca. 0.51m/s. Damit ist das Übertragungsmass des PT1-Blocks, das Verhältnis von Geschwindigkeit zu PWM-Einstellung = 0.51/255 = 0.002 m/s. Eigentlich hat man jetzt alle Angaben um mit der Simulation loslegen zu können. Ich wollte aber noch wissen, wie gross der Anteil des Trägheitsmoments des Motors ist. Dazu habe ich das Trägheitsmoment des Motors extra ermittelt. Viele werden sich jetzt denken, das kann ich mir sparen, das sind doch nur ein paar Gramm. Schon, aber die paar Gramm müssen auf eine hohe Drehzahl (über 7000 UPM) beschleunigt werden und das macht sich bemerkbar. Das Trägheitsmoment eines Motors ist 1.12gcm². Als äquivalente Masse auf das Fahrzeug umgerechnet sind das 190 Gramm. Beide Motoren haben dann eine äquivalente Masse von 380 Gramm, das ist wesentlich mehr als die Masse (Gewicht) des Asuro selbst. Mein Asuro wiegt mit den grösseren Akkus 240 Gramm. Wie man sieht, darf man das Trägheitsmoment der Motoren auf keinen Fall vernachlässigen, auch nicht bei so kleinen Motoren.

Da ich aus früheren Simulationen bereits ein Ersatzschaltbild für einen Motor hatte, habe ich den PT1-Block noch weiter zerlegt und mit dem Ersatzschaltbild des Motors versehen. Das Bild PT1_Block.gif zeigt die Schaltung. Der Motor ist aufgeteilt in einen elektrischen und mechanischen Teil. Im el. Teil sind der Ankerwiderstand Ra1, die Ankerinduktivität La1 und die Spannungsquelle B1, die die Gegen-EMK simuliert. Der mechanische Teil besteht aus der Stromquelle B2, I1 und Cm1. B2 simuliert das Drehmoment. In meinem Fall habe ich den Antrieb mit der Übersetzung gleich mit rein gerechnet, damit entspricht in dem mech. Teil:
- der Strom in Ampere jetzt der Kraft in Newton,
- ein Kondensator in Farad jetzt einer Masse in kg und
- die Spannung in Volt jetzt einer Geschwindigkeit in m/s.

In der Schaltung entspricht B2 der Kraft des Motors, I1 der Reibung und Cm1 der Masse des Asuros. Der Widerstand R1 simuliert geschwindigkeitsabhängige Verluste. Die Schaltung simuliert nur einen Motor mit einer Hälfte des Asuro, deshalb ist die Masse auch nur (380g + 240g)/2 = 310g, damit die Dynamik wieder stimmt.

Simuliert wird es mit LTSpice, das ist ein FreeWare Schaltungssimulationtool. Es wurde hier im Forum schon mal vorgestellt, bei Interesse einfach danach suchen.

Nun überprüfen wir ob das Modell der Wirklichkeit entspricht und simulieren eine Beschleunigung aus dem Stand. Dazu geben wir einen Spannungssprung von 0V auf 5V auf den Motor. Das Ergebnis ist in Bild Motor_Sim1.gif zu sehen. Es stimmt ziemlich genau mit der wirklich gemessenen Beschleunigung überein. Kleine Abweichungen sind unwesentlich für die Regelschleifenoptimierung.

Fortsetzung folgt

Waste
Versteckt Benutzer-Profile anzeigen
ähM_Key

Roboter Experte
Roboter Experte




Anmeldungsdatum: 28.06.2005
Beiträge: 572
Wohnort: DD
Alter: 24

germany.gif
Beitrag Verfasst am: 18.08.2005, 22:19 Antworten mit ZitatNach oben

Das müsste eigentlich in der RoboSim.ini gehen!
Werd mir das morgen aber nochmal genauer ansehen, da es sein kann, dass da wieder was mit der Version nicht hinhaut.

gn8, ähM_Key

PS: Sehr schöner/professioneller Lösungsansatz; ich hoffe den ganzen Spass lerne ich auch noch im Studium.
PPS: Hab ich das richtig erkannt, dass der Asuro nur 2 Liniensensoren hat, die mit unmoduliertem Licht und Analogauswertung betrieben werden? Weil ich habe vor die (vorrausichtlich) 8 Sensoren, als Reflexkoppler CNY70 mit moduliertem IR-Licht und Schmitt-Trigger zu betreiben, um vom angesprochenem Fremdlicht so unabhängig wie möglich zu sein!
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen
waste

Roboter Experte
Roboter Experte







germany.gif
Beitrag Verfasst am: 18.08.2005, 22:39 Antworten mit ZitatNach oben

@Sternthaler
Danke für die Erklärungen zum Excelsheet, ich werd mich mal damit spielen, womöglich kommen noch weitere Fragen.

@ähM_Key
was studierst du? (Fachrichtung)
Zitat:
Hab ich das richtig erkannt, dass der Asuro nur 2 Liniensensoren hat, die mit unmoduliertem Licht und Analogauswertung betrieben werden?

Ja, genau so ist es.
Mit meiner Methode aus/ein, wird praktisch die Modulation nachempfunden, funktioniert ganz gut, nur etwas umständlich.

Ich seh schon, das wird ein richtiger Experten-Thread. Wink

Gruss Waste
Versteckt Benutzer-Profile anzeigen
Manf

Robotik Visionär
Robotik Visionär




Anmeldungsdatum: 30.01.2004
Beiträge: 11259
Wohnort: München
Alter: 57

blank.gif
Beitrag Verfasst am: 19.08.2005, 06:32 Antworten mit ZitatNach oben

Bevor das dynamische Verhalten die Betrachtung bestimmt nur noch mal eine kurze Betrachtung des Systems von der mechanischen Seite:
Wie wird das Regelverhalten von der Konfiguration des Systems mit der Anordnung der Räder und des Sensorblocks mitbestimmt?

Wenn man davon ausgeht, dass ein Zweipunktregler instabil ist, dann kann man sich wundern, wie stabil einfache Linienfolger ohne entsprechende Auslegung des Regelverhaltens im elektronischen Teil fahren können: Sie haben neben der I Regelung einen kräftigen P Anteil schon in ihre mechanische Konfiguration eingebaut.

Eine Kurskorrektur die durch die Differenz der Radgeschwindigkeit vorgenommen wird, äußert sich nicht erst bei der Weiterfahrt und der dabei eintretenden Verschiebung des gesamten Fahrzeugs quer zur Linie. Es tritt schon eine Wirkung auf den Sensor ein, auch ohne das Fahrzeug weiterfährt, wenn nur die beiden Räder eine Differenzgeschwindigkeit haben und das Fahrzeug drehen. Dieser P-Anteil ist umso stärker, je weiter der Sensorblock vom Drehpunkt des Fahrzeuges entfernt ist. Die Wirkung des P-Anteils hemmt die Korrektur der Fahrtrichtung und wirkt dämpfend auf die Regelschwingung.

Wie sehr dieser P-Anteil das Regelverhalten beeinflusst, könnte man sich leicht klar machen, wenn man den Abstand des Sensorblocks zum Drehpunkt des Fahrzeugs leicht verschieben könnte. Bei der Mechanik ist es nicht ganz so leicht, aber einen weiteren Wert kann man leicht einstellen, nämlich den gleichen Wert negativ, wenn man das Fahrzeug rückwärts fahren lässt.

Der Einfluss wird dann schon beim Folgen einer geraden Linie sehr spektakulär deutlich, was mit etwas Geschick bei der Auslegung der Regelung und bei einer ausreichend kontinuierlichen Kennlinie des Liniensensors noch gehen wird.
Manfred


Zuletzt bearbeitet von Manf am 19.08.2005, 12:03, insgesamt ein Mal bearbeitet
Offline Benutzer-Profile anzeigen
waste

Roboter Experte
Roboter Experte







blank.gif
Beitrag Verfasst am: 19.08.2005, 09:52 Antworten mit ZitatNach oben

Hallo Manfred,

eine Linie rückwärts zu verfolgen ist wahrlich eine Herausforderung. Wenn der Asurowettbewerb nicht so schnell eingeschlafen wäre, hätte ich das noch als Vorschlag gebracht. Die Ergebnisse würde ich gerne sehen. Smile Aber vielleicht können wir das noch nachholen.

Nun zu deinem Diskussionspunkt: Ich hatte mir auch überlegt, ob denn nicht die Fahrgeschwindigkeit als Verstärkung in das System eingeht. Denn vom Gefühl her sollte es so sein. Bin dann auch zu dem Schluss gekommen, dass es auch im Stand funktioniert und damit unabhängig von der Fahrgeschwindigkeit ist.

Allerdings kann ich dir nicht folgen, wie durch die Anordnung des Sensors zusätzlich ein D-Anteil dazukommt. Angenommen der Asuro hätte eine lange Schnauze und der Sensor wäre sehr weit vorne. Das hätte eine zusätzliche Hebelwirkung, aber für mich ist das ein reiner P-Faktor. Wäre dir dankbar, wenn wir da noch auf einen gemeinsamen Nenner kommen.

Was anderes ist es mit der Beschleunigung um die Drehachse, das ist noch ein offener Punkt, der kommt sowieso in Kürze dran. Bin um jede Hilfe dankbar. Hier die offene Frage: Wie verändert sich die Trägheit bzw. die Zeitkonstante des PT1-Blocks wenn anstatt einer geradlinigen Beschleunigung jetzt um die Drehachse beschleunigt wird und zwar:
1. Drehachse mittig zwischen den Rädern
2. Drehachse um ein Rad
Ich hätte gerne eine Abschätzung um wieviel sich die Zeitkonstante ändert anhand des echten Asuros. Der Schwerpunkt liegt zwar schon relativ zentral, aber das sollte schon noch quantifiziert werden.

Übrigens freut mich die aktive Teilnahme hier in dem Thread ungemein. Ich hatte eigentlich die Befürchtung, dass ich Alleinunterhalter sein werde, aber ich wurde vom Gegenteil überzeugt. Macht weiter so.

Gruss Waste
Versteckt Benutzer-Profile anzeigen
ähM_Key

Roboter Experte
Roboter Experte




Anmeldungsdatum: 28.06.2005
Beiträge: 572
Wohnort: DD
Alter: 24

germany.gif
Beitrag Verfasst am: 19.08.2005, 10:16 Antworten mit ZitatNach oben

waste hat folgendes geschrieben::

Was studierst du? (Fachrichtung)


Naja, ich studiere (leider) noch nicht, bin aber schon immatrikuliert und am 10.10. geht's dann mit Mechatronik los!

Bin ja ganz begeistert von dem Thread, weil ich zur gleichen Zeit auch geplant habe, Linienverfolgung über nen PID-Regler zu realisieren. Da mir aber die Grundlagen fehlen (fehlten Zwinkern ), und man sich nicht mal einfach so ein Semester Regelungstechnik beibringen kann, hätte ich wahrscheinlich sehr viel mit dem im AVRco integrierten PID-Regler rumprobiert...

Gruß, ähM_Key
Offline Benutzer-Profile anzeigen Website dieses Benutzers besuchen
Manf

Robotik Visionär
Robotik Visionär




Anmeldungsdatum: 30.01.2004
Beiträge: 11259
Wohnort: München
Alter: 57

blank.gif
Beitrag Verfasst am: 19.08.2005, 12:06 Antworten mit ZitatNach oben

Zitat:
wie durch die Anordnung des Sensors zusätzlich ein D-Anteil dazukommt. Angenommen der Asuro hätte eine lange Schnauze und der Sensor wäre sehr weit vorne. Das hätte eine zusätzliche Hebelwirkung, aber für mich ist das ein reiner P-Faktor.

Ich habe das oben abgeändert in (I und P) anstelle von (P und D). So sollte es heißen.

Es ist so gemeint: Der Sollwert der Position ist der, bei dem sich das Fahrzeug mit seinem Drehpunkt (der Mitte) über der Linie befindet. Die Regelabweichungen werden beim Fahren durch Drehbewegungen, die der geradlinigen Fahrt überlagert sind, ausgeglichen.

Ist der Sensor im Drehpunkt des Fahrzeugs, dann erkennt man die Positionsänderung als eine Integration über die Stellgröße Drehung. Erst bei einer Verlegung des Sensors nach vorne kann man durch eine Drehung schon direkt eine Korrektur der Position des Sensors erreichen, die dann eine Korrektur der Fahrzeugposition nach sich zieht.

Eine einfachere Betrachtung ist, nur die Drehung als Regelvorgang anzusehen, und den Winkel, unter dem die Linie von Sensor erfasst wird auszuregeln. Die Störgröße ist dann die Winkeländerung der Linie die sich bei der aktuellen Geschwindigkeit ergibt und die Korrektur ist gerade die Drehung des Fahrzeugs.

Manfred
Offline Benutzer-Profile anzeigen
Manf

Robotik Visionär
Robotik Visionär




Anmeldungsdatum: 30.01.2004
Beiträge: 11259
Wohnort: München
Alter: 57

blank.gif
Beitrag Verfasst am: 19.08.2005, 13:09 Antworten mit ZitatNach oben

Zitat:
Was anderes ist es mit der Beschleunigung um die Drehachse, das ist noch ein offener Punkt, der kommt sowieso in Kürze dran. Bin um jede Hilfe dankbar. Hier die offene Frage: Wie verändert sich die Trägheit bzw. die Zeitkonstante des PT1-Blocks wenn anstatt einer geradlinigen Beschleunigung jetzt um die Drehachse beschleunigt wird und zwar:
1. Drehachse mittig zwischen den Rädern
2. Drehachse um ein Rad

Ich schaue mal nach:
Der ASURO Pendelt mit einer Periodendauer von 18sec an dem 40cm langen 0,2mm Stahldraht, waagerecht um den Mittelpunkt seiner Radachsen, ein Stück Stahldraht (Drahtkleiderbügel) mit 47cm Länge 13,4g waagerecht in der Mitte aufgehängt hat eine Periodendauer von 20sec.
Manfred
Offline Benutzer-Profile anzeigen
Beiträge vom vorherigen Thema anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen
Vorheriges Thema anzeigen Dieses Thema einem Freund schickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Textdatei speichernPrintable versionlog in, Nachrichten zu lesen Nächstes Thema anzeigen



 Gehe zu:   



Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen




Die große Community für Robotik-, Mikrocontroller- und Elektronik Bastler als auch Experten
 Roboternetz RSS2.0 News Feed
Alle Zeiten sind GMT + 1 Stunde