Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1

THEMA: Exakt geradeausfahren (PID-Regler)

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8047

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
weiter oben schreibt alexander, daß mit gyro eine extrem gerade fahrt möglich ist.
dazu hätte ich ne frage :

gyro und acc werden wennich richtig gelesen habe (wie beim quadrocopter) fusioniert.
damit kriegt man (nicht so ohne weiteres, aber immerhin) den winkel.

den vermute ich jetzt als ist-wert in einem äußeren pid-regelkreis. dazu schätze ich gibts innen einen auf den inkrementgeber aufgebauten motorregler (p). die regelkreisfrequenz vermute ich bei 10hz.

1) liege ich schwer daneben ?

2) geht das auch mit der spielzeug-mechanik für 11€ (motoren/getriebe dem preis entsprechend) ?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von r2d2.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8048

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2306
  • Dank erhalten: 818
Hallo,

1) Nein, ist richtig - Ein paar Daten:

MPU9150: mit dort bereits vom Hersteller integrierter 6-Achsen Sensor-Fusion (200 Hz - verwendet Beschleunigungssensor und Gyro). Zum Betrieb wird passender Firmware Code benötigt (der MPU9150 hat diesen nicht im Speicher), ein passender Treiber (C Code) kann beim Hersteller nach Anmeldung heruntergeladen werden (Motion Driver). Die fusionierten Daten (Yaw,Pitch,Roll) landen im FIFO des MPU9150 (die Rate ist einstellbar). Ich rufe sie mit 20 Hz ab.

Motor-Regelkreis: 20 Hz
Ansteuerung: 2 PID-Regler (einer für "Fahren mit Geschwindigkeit X und Winkel Y", einer für "Drehen mit Geschwindigkeit x" zum Drehen auf der Stelle)

2) Sollte gehen - ich benutze ja auch Spielzeugelektronik (50 Cent Motor, 30 Cent Getriebe etc., 30 Cent Radencoder) ;)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software
Letzte Änderung: von nero76.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8059

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
@alexander : der film beeindruckt mich sehr !

bin grade beim geradeausfahren mit der selben mechanik schätze ich. den regler dafür hab ich noch nicht im griff. die motorregelung als innerer krais hat sich als wertlos gezeigt. ich verwende jetzt den kompass für den p-teil und den gyro drin für den d-teil. es hängt aber sehr von der bodenbeschaffenheit ab, ob das funktioniert. ich trenne auch in drehen / fahren.

der acc ist ohne neigungkompensation wertlos, und die ist natürlich aufwändig (fusion gyro/acc).

den induktionsdraht möchte ich durch einen farbsensor ersetzen (beet, terrassenplatten, kies außenrum), und dann durch gezieltes fahren ne karte aufbauen. aber erstmal muß das ding präzise gradeausfahren auf jedem untergrund...

kannst du ein wenig über deinen regler sagen ?
hast du mal 10hz probiert ? ich dachte das sei schnell genug für die langsame kiste, hab aber kein bodediagramm oder ähnliches gemessen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von r2d2.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8060

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2306
  • Dank erhalten: 818
Im Anhang der Regler-Code. Schau mal ob Du damit was anfangen kannst. Kompass und Beschleuinigungssensor wird gar nicht verwendet. Kompaß wird nur alle 3 Minuten kurz einmal eingelesen.

Dieser Beitrag enthält einen Anhang.
Bitte anmelden (oder registrieren) um ihn zu sehen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8066

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
ich muß aufpassen, dich nicht mir zuviel fragerei zu nerven ...

1) ich hab auf deine aussage hin, daß du den kompass kaum nutzt, ein wenig mit kompass und gyro gespielt. wenn ich den gyro sauber nulle und kalibiriere, liefert mir das gyrointegral ziemlich präzise die gleichen winkelsignale wie der kompass. ok, aber wozu ?
wieso verwendest du den kompass nicht ??

2) danke für den code. ich schreibe alles in c++, deshalb ist mir die syntax an manchen stellen ungewohnt. ist das der "arduino-dialekt" ?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8068

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2306
  • Dank erhalten: 818

Reiner Doll schrieb: ich muß aufpassen, dich nicht mir zuviel fragerei zu nerven ...

Das schaffst Du nicht! ;)

1) Grund ist: um mit "großen" Motoren (hohe Ströme) dasselbe Ergebnis in einem kleinen Rasenmäher zu erhalten wo der Kompass nicht weit weg von z.B. einem Mähmotor sitzen kann (jetzt argumentieren einige mit dem "am Quadcopter geht's", aber das zählt nicht ;) - dort sind die Motoren kleiner, der Abstand größer oder der Kurs muss nicht auf <1 Grad genau sein)

2) Ja, das ist ein Mix. Es geht mir darum auf der Test-Plattform (STM32F4) möglichst ohne Umschreiben auch Arduino Libs verwenden zu können bzw. umgekehrt neue Libs auch wieder am Arduino verwenden zu können. Daher der Dialekt (vermutl. wird der Arduino/STM32 nicht für die zukünftigen SLAM-Ideen reichen, dann bleibt der Arduino einfach ein Hardware-Interface-Controller und alle Daten zu einem schnellen Rechner (PC, ARM) geschickt und das ist dann die Leitzentrale...)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software
Letzte Änderung: von nero76.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8069

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
witzig, da beschäftigen wir uns offenbar mit ähnlichen spielzeugen :

vor 2 jahren hab ich mit dem atmega einen quadrocopter entwickelt, und ja, dort hat trotz der enormen motorströme der kompass gut funktioniert, allerding in über 10 cm höhe über den motorkabeln. den stm32f4 wollte ich für einen "extended" quadrocopter einsetzen, habe aber ehrlich gesagt nach ner woche "bare metal" aufgegeben, der aufwand war mir dann doch zu groß. ein f3 wartet darauf, als kern eines selbergeschrieben autopiloten für ein flächenflugzeug eingesetzt zu werden, irgendwann bring ich die energie auf ...

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von r2d2.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8110

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
danke für den code !

der kern schaut bei mir im prinzip ähnlich aus, klar, pid-regler halt, dein code ist aber deutlich komplexer und sehr viel weiter ausgefeilt. ich brauche aber was, das (ohne peripheriebedienung natürlich) maximal 2 a4-seiten lang ist und möglichst nur basisstrukturen enthält.

der größte unterschied wird wohl duie sensorik sein, du verwendest eine komplexe inertialanordnung, ich nur den gyro und den kompass, und keine wie auch immer gestaltete fusion. ich dachte mir, für so ein wägelchen sollte das reichen (beim quadrocopter hab ich auch fusioniert mit nem komplementärfilter).

wenn ich nun mit dem gyro (pi-regler) ein stück fahre (sagen wir 1 meter), und dann kurz einen äußeren (p-) kreis mit dem kompass draufschalte zur korrektur ... geht das dann vom ansatz her in deine richtung ?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8112

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2306
  • Dank erhalten: 818
Ich würde mir erstmal deine Messwerte anschauen, insbesondere die des Kompass. Hier in der Wohnung ist der Kompass-Norden am Boden 5-10 Grad unterschiedlich, je nachdem wo der Roboter gerade fährt. Draußen ist der Kompass-Norden 5-10 Grad unterschiedlich, je nachdem wie stark die Motoren gerade drehen.

Mein Ansatz ist daher ganz ohne Kompass bei der Regelung auszukommen. Dann braucht man allerdings einen extrem guten Gyro. Der MPU9150 wäre so einer (Gyro bleibt 3 Minuten unter 1 Grad Fehler).

Ansonsten klingt Dein Regler-Ansatz gut, vorausgesetzt Du kannst Dich auf Deine Sensorik verlassen ;-)

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software
Letzte Änderung: von nero76.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8113

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
ich hatte das mit dem kompass auch vermutet, weil ich bei den geradeausfahr-tests immer an den gleichen regionen auf dem fußboden abweichungen festgestellt habe. habe aber gedacht, der fehler liegt bei mir.

wie quantifizierst du den fehler vom gyro ? nur die drift in null ? eine konstante winkelgeschwindigkeit, vielleicht sogar in mehreren werten, ist ja schwer zu erzeugen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8114

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2306
  • Dank erhalten: 818
Ich nehme den angegebenen Wert im Datenblatt:
            noise dps/sqrt(Hz)
L3G4200D        0.03
BMG160/BNO055   0.014
LSM9DS0         0.00875
BMI160          0.007  
MPU9150         0.005

Diese Angaben kann man schon ganz gut als Grundlage verwenden. Dann startet man den Gyro (Nullposition) und notiert sich den entsprechenden Kompass-Kurs (nicht am Boden gemessen sondern weiter in der Luft). Nachdem man nun mit dem Roboter eine bestimmte Zeit (z.B. 3 Minuten) durch die Gegend fährt, ermittelt man erneut die Gyro-Nullposition und vergleicht diese erneut mit Kompass-Kurs. Dabei erhält man den Gyro-Fehler. Damit kann man den Grad-Fehler pro Sekunde ermitteln. Dieser deckt sich sehr gut mit dem Datenblatt. Die Messung kann man ja einige Male wiederholen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software
Letzte Änderung: von nero76.

Exakt geradeausfahren (PID-Regler) 3 Jahre 9 Monate her #8115

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
oh. ich dachte, dazu müsse man das ding exakt (!) waagrecht halten. außer du wertest alle gyroachsen aus, was ich ja (noch) nicht mache.

unklar ist mir, wie das überhaupt klappen kann mit der orientierung, wenn der kompasswert so ein dreck ist. alles andere (bildverarbeitung, gps ..) ist ja noch viel ungenauer. für mein ziel, ne karte im speicher, brauch ich ne auflösung von vielleicht 10 cm, die ist bei solchen fehlern unrealistisch.

ich fahre jetzt so :

- drehen in den zielwinkel (räder gegeneinander, pd auf kompass, innen pd auf gyro, geht auf 1° genau)
- kleine strecke mit pd auf kompass und innen pd auf gyro fahren, dann umschalten :
- bis zum ziel mit pd auf gyro (ohne kompass)

dort wieder drehen usw.. klappt recht gut.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von r2d2.

Exakt geradeausfahren (PID-Regler) 3 Jahre 7 Monate her #8245

  • r2d2
  • r2d2s Avatar Autor
  • Offline
  • Benutzer
  • Benutzer
  • Beiträge: 23
  • Dank erhalten: 0
hallo,

wie von alexanderG vorgeschlagen, hab ich ne weile weiter mit kompass/gyro messtechnisch experimentiert. leider sind die ergebnisse gar nicht gut.

der kompass ist für ne genauigkeitsanforderung besser 1° unbrauchbar. zum teil messe ich bei fahrten von 1m länge an einem exakt geraden brett entlang kommpassfehler von über 5° !
die gyrodrift ist zwar bedeutend geringer, aber leider kaum reproduzierbar, ich fürchte die offsetdrift ist temperaturabhängig, damit würde der kompensationsaufwand extrem steigen, außer man beheizt den chip.

damit ist mein wägelchen kein geradeaus-fahrer, sondern ein meßgerät für gyrodrift. das etappenziel : 1 meter fahren, 180° drehen, zum startpunkt zurück, verfehle ich um mehrere cm.

ist es euch ähnlich ergangen ? gibts lösungsansätze mit dem acc, um die gyrodrift rauszurechnen ?

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Exakt geradeausfahren (PID-Regler) 3 Jahre 7 Monate her #8246

  • nero76
  • nero76s Avatar
  • Offline
  • Administrator
  • Administrator
  • cofounder of www.ardumower.de
  • Beiträge: 2306
  • Dank erhalten: 818
Hallo Reiner,

Kompass: genauer als 1 Grad wird man mit dem Kompass nur schwer schaffen, wichtig ist wohl dass man 2 Messungen hintereinander macht (z.B. 50cm Distanz) und die Abweichung vergleicht. Ist diese zu groß weitere Messung (z.B. nächsten 50cm) einholen

"Auf 1cm genau": es gäbe da vielleicht noch etwas, was die Trajektorie am Boden relativ genau erfasst:
pixhawk.org/modules/px4flow

Schau Dir dort mal die Karte weiter unten auf der Seite an - die blaue Linie ist nur mit dem Optischen Fluß-Sensor erfasst worden.

Dies ist zwar keine globale Ortientierung (d.h. die Fehler werden sich addieren), aber immerhin! :-)

Gruss,
Alexander

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

PCB1.3 - die Plug&Play Robotik-Plattform für Deinen Rasenroboter mit passender Open Source Software
  • Seite:
  • 1
Ladezeit der Seite: 1.922 Sekunden