Archiv verlassen und diese Seite im Standarddesign anzeigen : Ultraschallsensor am Modellflugzeug
voidpointer
19.03.2007, 09:53
Hallo,
am Wochenende bin ich endlich dazu gekommen, meinen SRF02-Sensor mal am Modellflugzeug zu testen. Unter anderem wurde ja auch hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=25057) schon mal diskutiert, ob das funktioniert. Ich habe den Sensor an der Unterseite der Tragfläche des Easy Star senkrecht nach unten montiert, um den Abstand zum Boden messen zu können. Leider waren die Ergebnisse recht unbefriedigend:
Hält man den Flieger in der Hand (z.B. vor dem Start) sind die Messwerte (ca. 1.7 Meter) plausibel. Auch bei tiefem Überflug über den Modellflugplatz (kurz gemähter Rasen) sind die Messwerte (2-3 Meter) nachvollziehbar. Das Problem ist, dass der Sensor auch Daten liefert, wenn der Flieger hoch in der Luft ist. Diese Daten schwanken sprunghaft so zwischen 2 und 8 Meter. Mag sein, dass es mit dem Wind zu tun hat, der am Samstag ziemlich stark war. Auch versuche ich beim nächsten Testflug auszuschließen, dass das aus dem Rumpf hängende Antennenkabel eventuell die Messungen gestört haben könnte. Möglicherweise ist der SRF02 für solche Zwecke einfach nicht geeignet. Jedenfalls bringt er mir so für die Unterstützung des Landeanflugs nichts...
Wie sind Eure Erfahrungen in ähnlichen Situationen? Sind die Messungen der teureren Sensoren SRF08, SRF04 usw. vielleicht zuverlässiger? Könntet Ihr vielleicht mal kurz mit Eurem Sensor nach draußen gehen und senkrecht nach oben (in den freien Himmel) messen und mir mitteilen, was die Messung ergibt? ;-)
Danke und Gruß, Achim.
Hallo,
das Problem mit falschen Messuing, wenn kein Hindernis da ist hatte ich auch schon. Ich habe es dann so gelöst, dass ich 3 Messungen hinteínander ausführe. Dabei müssen dann die Messwerte innerhalb eines bestimmten Bereichs sein. Weil bei mir was es so, dass bei den Fehlmessungen völlig willküreliche Werte herausgekommen sind. Waren die Messungen nicht innerhalb einer bestimmten Spanne, wurd die Messung als Fehlmessung erkannt und kein Hindernis ausgegeben.
MfG Jeffrey
voidpointer
19.03.2007, 17:45
Hallo Jeffrey,
das ist immerhin ein Ansatz. Derzeit messe ich aller 200ms, also 5 mal pro Sekunde. Diese Rate könnte ich verdoppeln oder vervierfachen und die einzelnen Werte miteinander vergleichen. Zusätzlich kann ich die zeitliche Änderung der Höhenmessung mit den GPS-Daten korrelieren. Obwohl, eigentlich wollte ich diese ja mit dem Ultraschall korrigieren :-(
Naja, das Einsatzgebiet scheint prinzipiell problematisch zu sein. Bei rcgroups.com haben sie auch so ihre Probleme mit dem Ground Ranging (Beitrag (http://www.rcgroups.com/forums/showthread.php?p=6945835), Precision Landing (http://www.rcgroups.com/forums/showthread.php?t=591019))
Gruß, Achim.
mare_crisium
19.03.2007, 18:46
voidpointer,
es könnte sein, dass der Luftstrom am US-Aufnehmer ein hochfrequentes Pfeifen in der Gegend von 40kHz erzeugt. Z.B. am Schutzgitter oder am Schutzkragen des Sensors selbst. Mir fällt allerdings kein guter Versuchsaufbau ein, um die Annahme zu überprüfen.
Das Antennenkabel ist meiner Meinung nach zu dünn (im Vergleich zur Wellenlänge von ca. 1cm) um ein nennenswertes Echo zu liefern.
Mare_crisium
linux_80
19.03.2007, 20:16
Hallo,
kann es sein das du dem US-Signal davon fliegst, also vom Zeitpunkt wenn das Signal vom Sender abgesendet ist, bis es wieder zurück wäre, ist der Flieger bestimmt schon etwas weiter geflogen.
Das kann hier bestimmt jemand vorrechnen wie schnell man sich seitlich zur Abstrahlrichtung bewegen darf, um das EchoSignal noch zu hören.
voidpointer
19.03.2007, 20:54
Das kann hier bestimmt jemand vorrechnen wie schnell man sich seitlich zur Abstrahlrichtung bewegen darf, um das EchoSignal noch zu hören. Im anfangs genannten Thread hatten wir das schonmal ausgerechnet. Bei 36 km/h und 6 Meter Höhe legt das Flugzeug 35 cm zurück, bis der Schall zurück kommt. Der überstrichene Winkel ist 3.4 Grad - Sender und Empfänger müssten jeweils 1.7 Grad nach vorn bzw. hinten geneigt sein. Bei sich ständig änderndem Anstellwinkel ist diese Präzision sinnlos. Da die geläufigen US-Sensoren eher streuen, als scharf schießen, gehe ich davon aus, dass vom ausgesendeten Impuls in den meisten Fällen ein brauchbares Echo ankommt.
Der Hinweis mit dem Luftstrom ist gut. Allerdings weiss ich nicht, wie ich diesen Effekt verhindern kann. Werd' es mal mit einer Art Schutzhaube versuchen.
Gruß, Achim.
mare_crisium
19.03.2007, 21:30
@linux_80:
voidpointer hat recht: Selbst wenn der US-Empfänger senkrecht nach unten gerichtet wäre (was bei einem Modellflugzeug reiner Zufall ist), reichte die Empfindlichkeitskeule noch aus, um das Echo in ausreichender Stärke zu empfangen.
@voidpointer:
Ja, eine Abdeckung, die nicht zu stark dämpft und nicht flattert: Vielleicht sehr straff gespannte Frischhaltefolie, mit Tesafilm festgeklebt.
mare_crisium
falerion
19.03.2007, 21:40
Wenn man Reporter bei Wind sieht, haben die immer so einen Flusenüberzug über dem Mikrofon. Vielleicht würde so etwas ähnliches helfen. Natürlich nicht über das Gitter, aber vielleicht drum herum...
voidpointer
19.03.2007, 21:50
Hm, eventuell lässt sich das ja "im Labor" nachtesten. Der Föhn meiner Freundin bringt ungefähr 30 km/h Wind. Damit ließe sich die These überprüfen, bevor ich einem Reporter das Mikrofon entwende oder ein Meerschweinchen rasiere :-) Möglicherweise reicht ja schon eine Art Bürste, um die Strömung zu verwirbeln. Werd's mal testen.
Gruß, Achim.
falerion
19.03.2007, 22:03
Wind läßt sich ansonsten auch sehr gut mit einer Fahrradluftpumpe erzeugen.
voidpointer
20.03.2007, 20:22
So, da bin ich wieder zurück vom Testen in Keller und Garten. Kurz vorweg: der Wind / die Luftströmung hat anscheinend einen Einfluß auf die Distanzmessung. Aber nicht so wie wir dachten.
Habe den Sensor so platziert, dass er waagerecht im Kellerraum misst. Die angezeigte Entfernung war immer so um 250cm. Wenn der Föhn davor gehalten wurde, hat sich die Messung tatsächlich verändert - es wurden dann Werte von 50 - 190 cm angezeigt. Dann habe ich den Föhn mal etwas weiter weg vom Sensor in die Schallkeule gehalten: in etwa dieselbe Abweichung. Meiner Ansicht nach liegt es also nicht an den Schwinungen des Sensorgehäuses, sondern an der Ablenkung und / oder Verwirbelung der Luft. Möglich, dass durch die Ablenkung der Schall in eine andere Richtung gelenkt wurde und so das Echo von einem anderen Winkel eingetroffen ist oder die Verwirbelungen selbst für ein Echo gesorgt haben.
Die Luftpumpe war übrigens weniger geeignet, dafür hat es ein kleiner Blasebalg auch getan, den ich zum Säubern von Fotokram verwende. Probiert es doch auch mal aus!
Zwischendurch hatte der SRF02 (mein letzter funktionsfähiger) mal ein "170cm-Problem". Dies konnte ich erstaunlicherweise durch Davorhalten einer dünnen Schaumstoffschicht beheben. Die Messungen schienen dadurch gerichteter zu werden. Das Bedecken des Sensors mit Haushaltsfolie bringt ihn übrigens ziemlich durcheinander - die Anzeige sagt 16cm.
Der Test im Garten mit senkrecht in den Himmel ausgerichtetem Sensor ergab ähnliche Ergebnisse. Ohne Beeinflussung und mit Windstille zeigt er - bzw. meine Messsoftware - 0cm an (soweit OK). Wenn man darüber pustet, ohne den Sensor direkt anzupusten, erscheinen plötzlich Werte um die 400-900 cm, und das sowohl ohne als auch mit Schaumstoffabdeckung.
Ich denke mal, das war's dann. Die Testanordnung war zwar alles andere als professionell, hat aber eine mögliche Fehlerquelle gezeigt. Das Problem scheint prinzipbedingt zu sein und durch einen teureren Sensor nicht unbedingt beseitigt werden zu können. Naja, hab trotzdem mal einen SRF08 bestellt :-s, mal sehen was der bringt...
Gruß, Achim.
Die ungestörte Ultraschallmessung läuft so ab, dass ein Impuls ausgesendet wird und die Laufzeit bis zum Eintreffen des Echos gemessen wird.
Trifft der Impuls nicht auf ruhende Luft sondern auf bewegte Luft mit einer Geschwindigkeit von 1/10 Schallgeschwindigkeit dann kann die Entfernungsmessung um 10% verfälscht werden. Durch den Richtungswechsel beim Echo ist der Effekt eher deutlich geringer.
Jede größere Änderung ist dann wohl durch Störungen bedingt die ein Echo vortäuschen. Da der Empfänger mit der Impulslaufzeit empfindlicher wird nimmt auch die Wahrscheinlichkeit für eine Störung mit der Laufzeit zu.
Ein konstant rauschender Föhn kann in einem bestimmten Abstand beispielsweise ein Geräusch erzeugen, das die Triggerschwelle nach einer Impulslaufzeit von 3m erreicht.
So wird sich der Test aus der Sicht des Sensors darstellen. Lässt sich das Verhalten damit interprätieren?
Manfred
voidpointer
20.03.2007, 21:03
Hallo Manfred,
ja und nein. Ich glaube, dass das Geräusch des Föhns keinen Einfluss hat. Hatte ihn nämlich auch mal mit einem Papprohr verlängert, um den Luftstrom besser auszurichten und etwas abkühlen zu lassen. Gegen die Geräusch-These spricht auch, dass es mit Blasebalg und Pusten auch funktioniert hat.
Ansonsten bin ich bei Dir. Meinst Du, die "Störungen die ein Echo vortäuschen" können so etwas wie Verwerfungen in den Luftschichten sein, die durch lokale Luftströmungen hervorgerufen werden? Das würde bedeuten, dass ein gleichmäßig über die gesamte Messstrecke verteilter Wind am wenigsten Störungen erzeugen würde. Da es sowas aber nicht gibt, es sei denn es herrscht Windstille, führen die Verwirbelungen zu Störungen?
Dann hoffe ich auf laue Frühlingsabende, um diesen Ansatz zu testen ;-)
Edit: Andererseits: jede Luftströmung erzeugt auch ein Geräusch. Und gerade Rauschen ist sehr breitbandig. Ausserdem klingt meine Verwerfungs-Idee zwar schön, aber ich habe auch noch nie bei Sturm mein eigenes Echo gehört...
Gruß, Achim.
Es muss nicht das Geräusch des Föhns selbst sein, nur der ausgesendete Impuls wird keine wesentliche Abkürzung finden (wenn er nicht gerade am Föhn oder am Papprohr reflektiert wird).
Sicher ist, dass ein Signal mit mehr oder weniger konstantem Pegel zu einer Überschreitung ders Triggerpegels nach einer entsprechenden Laufzeit führt. Der Effekt ist naheliegend und man sollte ihn in Betracht ziehen.
Manfred
voidpointer
20.03.2007, 21:33
OK, jetzt hab ich's glaubich kapiert. Die Testergebnisse sind möglicherweise durch Geräusche beeinflusst. Was heisst das dann für den Einsatzzweck?
Ich sehe da nur bedingt Einflussmöglichkeiten. Mit einer Schaumstoffwulst oder ähnlichen Anordnung kann ich die Strömungsgeräusche in unmittelbarer Umgebung des Sensors eindämmen. Der Sensor selbst ist in der Tragfläche gelagert, die aus Elapor besteht - bestes Verpackungsmaterial. Muss man hier etwas dämmen? Strömung an der Tragfläche: bin kein Aerodynamiker, weiss nur, dass man zwischen laminarer und turbulenter Strömung unterscheidet. Letztere sollte mehr Störungen verursachen können. Aber sie soll auch gut für das Flugverhalten sein ;-)
Dann wäre vielleicht noch die Möglichkeit, mehrere Sensoren zu kombinieren oder - wie oben schon besprochen - mehrere Messungen zu betrachten. Ein zusätzliches Barometer könnte auch nützlich sein, jedoch liegt die max. Auflösung m.W. bei 50 cm. Ein Lasergerät ist eben zu teuer und die optischen Methoden haben auch ihre Macken.
Achim.
mare_crisium
20.03.2007, 23:35
voidpointer,
richtig erfinderisch, Deine "Labor"-Versuche! Ich wundere mich, dass die Frischhaltefolie den US so stark beeinflusst. Auch die Wirkung der Schaumstoffschicht finde ich erstaunlich. Was war das für ein Material?
Die Verwirbelung (Turbulenz) kann keine Echos erzeugen. Das passiert erst, wenn man es mit Schockfronten zu tun hat. Die entstehen aber nur bei Strömungsgeschwindigkeiten in der Nähe der Schallgeschwindigkeit.
Manf hat recht, durch die Verstärkungserhöhung während der Torzeit kann ein konstanter Schallpegel ein Echo vortäuschen.
Schade, wäre so eine elegante Messmethode gewesen.
mare_crisium
voidpointer
21.03.2007, 08:54
Hallo mare_crisium,
der Schaumstoff sieht so aus wie der T20 auf diesem Bild (www.gummi-gruen.de/Bilder/schaumstoff.jpg). Das Stück ist ca. 1 cm dick, 10x10cm breit und ist ziemlich weich. Kommt aus irgendeiner Verpackung. Mich hat es auch gewundert, dass das Material den Schall durchlässt. Möchte gar nicht erst über die physikalischen Vorgänge spekulieren.
Naja, wie immer gebe ich die Idee ja nicht völlig auf. Wenn der Sensor erstmal in der Software eingebunden ist, wird er so schnell nicht wieder entfernt. Ausserdem muss ich noch mehr Erfahrung damit sammeln.
Gruß, Achim.
reneheli
22.03.2007, 19:03
Hallo Achim,
ich bin bei der Suche nach Sensoren auf diesen Absolutdrucksensor gestossen: http://www.vti.fi/en/products-solutions/products/pressure-sensors/scp1000-pressure-sensor/
Vieleicht ist es doch zielführender, die Höhe barometrisch zu bestimmen. Man müsste halt vor dem Start am Boden eine "Eichtaste" drücken, damit der Bodenluftdruck dem System bekannt ist.
Gruß Rene
voidpointer
22.03.2007, 21:21
Oh ja, der Drucksensor scheint gut zu sein. Ist die Frage, ob man den schon in Deutschland bekommt und wie man ihn anlötet ;-) Aber früher oder später muss wohl so ein Sensor noch dazu. Auf dem Gebiet kenne ich mich aber noch zu wenig aus. Z.B. weiss ich nicht, wie empfindlich der Luftdruck bei einem schleichenden Wetterumschwung wechselt, d.h., ob nach 10 Minuten Flug am Boden auch noch derselbe Luftdruck herrscht, der zum Start gemessen wurde. Desweiteren, ob eventuell Staudruck im Rumpf des Flugmodells die Messung beeinflussen kann.
Das "Trimmen" vor dem Start wäre m.E. kein Problem. Da bestimmt einfach die Software, wann sie die Sensordaten für ausreichend hält und setzt die Startkoordinaten. Zusätzlich kann ich ja vor dem Start die Höhe über Grund per Sonar messen und anhand der GPS-Koordinaten und abgespeichertem Geländemodell die Höhendaten validieren. Das Geländemodell habe ich für ganz Mitteleuropa mit einer 90-Meter-Auflösung auf der Flash-Disk gespeichert :-)
Gruß, Achim.
reneheli
25.03.2007, 12:13
Den Sensor (3,3 Volt in der Version mit SPI - Schnittstelle) gibt es dort:
http://www.lipoly.de/index.php?main_page=product_info&cPath=814_821&products_id=5637
Die Änderung des Luftdruckes bei 10 Minuten Flug dürfte sich allenfalls bei starkem Wetterumschwung bemerkbar machen. Änderungen des Luftdruckes um 1 hektopaskal entsprechen zwar etwa 10 Meter Luftsäule. Bei einem 10-Minuten-Flug ist das sicher eher nicht so relevant.
Wichtiger ist da sicherlich das vernünftige Anbringen des Sensors im Flieger, damit allein der statische Druck und nicht der Luftstrom die Messung verfälscht.
ComSubVie
28.03.2007, 15:07
Also das mit dem Fön hat mich grad ein bisschen stuzig gemacht. Sollten nicht die dadurch entstehenden Temperaturunterschiede der Luft zu Teil-Reflektionen führen? Die Sprungschichten im Wasser verhalten sich zumindest zum Teil schallreflektierend...
voidpointer
28.03.2007, 22:03
Hm, Manf hat mich überzeugt, dass es nichts mit Reflexionen zu tun hat. Sowas genauer zu untersuchen, dürfte wahrscheinlich ziemlich knifflig werden. Für mich genügt erstmal die Feststellung, dass es Störungen gibt.
Habe heute wieder einen Testflug gemacht. Diesmal hatte ich ein bischen Schaumstoff um den Sensor drapiert. Aber die Messergebnisse sind nicht besser geworden. In Bodennähe bis 3 Meter sind die Messungen gut. Die Frage ist nur, ob das reicht, um den Flieger im Sinkflug rechtzeitig abzufangen.
Wer will kann sich die Daten mal anschauen. Ich habe einen Prototyp der Visualisierungs-Software ins Netz gestellt. Mit diesem Programm können meine Logfiles runtergeladen werden: http://www.voidpointer.de/easybot/flightviz.jnlp . Die Software setzt voraus, dass Java Version >= 1.5 auf dem Rechner installiert ist. Falls etwas nicht funktioniert, bitte PN an mich. Die Anzeige der Sonarmessungen ist ganz oben rechts...
Gruß, Achim.
mare_crisium
09.04.2007, 22:30
voidpointer,
Deine Flugdatenerfassung und Dein Darstellungsprogramm sind sehr beeindruckend. Die Flugbahnsteuerung und die Fluglageregelung scheinen auch schon ganz gut zu funktionieren. Tolle Leistung!
Jetzt verstehe ich auch, warum Du unbedingt das Problem der Höhenmessung beim Landeanflug lösen musst.
Folgende, für Amateure wie uns, zugängliche Messmethoden sind mir dazu eingefallen:
Barometrische Höhenmessung: Scheidet nach meiner Meinung aus, weil zu ungenau. 1 m Höhendifferenz entsprechen (auf Normalnull) ca. 10Pa, also 0,1mbar. Änderungen dieser Grössenordnung verschwinden nach meiner Erfahrung mit Drucksensoren im Rauschen. Wenn Dein Flieger mit 10km/h zur Landung ansetzt, dann täuscht der dynamische Druck (5Pa) eine um einen halben Meter zu geringe Höhe vor. Die Abweichung wird mit dem Quadrat der Geschwindigkeit grösser. Von lokalen Druckschwankungen (Thermik, Wetteränderungen usw.) mal ganz zu schweigen.
Optische Parallaxe (das ist das Prinzip nach dem der Sharp-Sensor arbeitet): Dein Untergrund (Gras, Acker) absorbiert nach meiner Einschätzung das Licht zu stark. Der Sensor wird seinen Leuchtpunkt kaum sehen können. Ausserdem sind die Roll- und Nickachse des Flugzeugs selten genau parallel bzw. senkrecht zum Untergrund ausgerichtet. Du müsstest also die Signale von 4 solcher Messaufnehmer auswerten.
Radar (so es denn einen für Amateure erschwinglichen Sensor gäbe): 1m Höhendifferenz entspricht einer Signallaufzeit von 3ns. Zum Vergleich: Die durchschnittliche Signallaufzeit in einem einfachen TTL-Gatter (z.B. einem NAND vom Typ 7400) beträgt typisch 20ns. Diese winzigen Zeitdifferenzen auszuwerten erfordert mehr Aufwand, als Dein Flugzeug tragen kann.
Optical flow (das ist der Algorithmus, der dem Messprinzip der optischen Mäuse zugrundeliegt): Das könnte gehen. Eine eigene Beleuchtung (LED oder Laser, wie bei der Maus) brauchst Du nicht, solange Dein Untergrund vom Tageslicht genügend hell ausgeleuchtet wird. Die Optik müsstest Du so ändern, dass sie ab Entfernungen von >0,5m ein halbwegs scharfes Bild auf das CCD des Maussensors projiziert. Das sollte mit einer ausreichend kleinen Blende auch funktionieren. Nur brauchst Du etwas mehr Abstand zwischen der Linse und dem Sensor. Die grössere Bauhöhe würde Dich wahrscheinlich dazu zwingen, das Teil im Rumpf einbauen.
Am Besten wär's aber, Du könntest die U-Schallmessung doch noch irgendwie zum Laufen bringen. Lass' uns mal weiter diskutieren!
mare_crisium
voidpointer
10.04.2007, 09:21
Hallo mare_crisium,
es freut mich, wenn Du das Programm zum Laufen gebracht hast und es auch ohne Benutzerhandbuch einigermaßen verständlich ist. Habe mittlerweile auch schon eine menge Zeit hineingesteckt. Es sind auch noch ein paar Macken drin, die irgendwann noch behoben werden müssen.
Derzeit verbringe ich noch damit, die Reglerparameter für den Geradeausflug und danach den Kurvenflug abzustimmen. Deshalb sind es bis jetzt nur kurze Strecken im autonomen Flug (die blauen Abschnitte im Höhenprofil). Am besten geht es noch, wenn die Steuerung teilautonom ist, also Motor und Höhenruder per Fernsteuerung und nur das Seitenruder autonom.
Von daher ist die Sonar-Messung zur Zeit noch nicht mein Hauptproblem. Ich erfasse zunächst mal die Daten, um später daraus die Steuerung zu entwickeln. Dabei suche ich natürlich jetzt schon Möglichkeiten zur Verbesserung der Messungen. Als nächstes werde ich einen SRF08 ausprobieren und dann die Messrate verdoppeln und wie oben vorgeschlagen die aufeinanderfolgenden Messungen vergleichen. Dazu muss ich allerdings etwas tiefer in die Software eingreifen, was man bei einem einigermaßen funktionierenden Programm nur ungern tut. Zusätzliche "Entstörmaßnahmen" würde ich auch gern vornehmen, aber mir fällt erstmal nichts mehr ein.
Das Problem bei meiner Schaltung ist - wie bei vielen anderen Robots sicher auch - dass ich nicht von heute auf morgen einen neuen Sensortyp hinzufügen kann. Ein Barometer würde ich schon gern mal testen, aber dazu müsste er einen I2C-Bus haben. Ausserdem kann ich nicht unendlich Gewicht und Stromverbraucher in das kleine Flugzeug einbauen - derzeit wird alles (Motor, Servos, Linux-Rechner und Sensoren) von einem 1000mAh Akku versorgt.
Danke auch für die informative Aufzählung der Messmethoden. Das hilft mir und anderen beim "Aussortieren" der Möglichkeiten. Vielleicht findet sich ja in Zukunft mehr Info bzw. Erfahrungsberichte über das Optische-Maus-Hacking. Das könnte tatsächlich eine kostengünstige Methode sein.
Bei Deiner Aufzählung hast Du den Punkt "Laser" vergessen oder ausgelassen. Mittlerweile gibt es ja recht handliche Geräte für Handwerker, die allerdings noch zu teuer und zu schwer sind und zu viel Strom verbrauchen. Aber vielleicht entwickelt die Industrie ja bald einen OEM-Laser mit I2C-Bus ;-)
Naja, ich hoffe, dass ich in den nächsten Tagen / Wochen über verbesserte Messergebnisse berichten kann. Alternativ kann man auch auf die Höhenmessung verzichten und "blind" landen. Braucht man bloß eine längere Piste...
Gruß, Achim.
mare_crisium
10.04.2007, 12:30
Achim,
der Vorteil des Lasers als Lichtquelle ist, dass er bei genügend Intensität auch auf einem stark absorbierenden Untergrund noch einen sichtbaren Lichtfleck hinterlässt. Dadurch kann man die Parallaxenmethode auch da noch anwenden, wo die Lichtintensität einer LED nicht mehr ausreicht. - Aber egal, lass' uns mal versuchen, den Ultraschall zum Laufen zu kriegen.
Gibt's eine Möglichkeit mit Deinem jetztigen Aufbau mit dem Ultraschallempfänger den Hintergrund-Schallpegel zu messen? Ich meine ohne dass der Sender aktiv wird?
Vielleicht kannst Du so die Stör-Schallquelle (Struktur oder Luftstrom) feststellen und eliminieren.
Ciao,
Harald.
die Handwerkerlaser, zumindest die preisgünsigen Geräte verwenden den
Laser nur zum Zielen, gemessen wird meist auch mit Ultraschall.
Da Du ja ein sich bewegendes Objekt hast, sprich Flugzeug,
könnts evtl. auch mit den Dopplerradarsensoren funktionieren.
Man müsste nur die Verstärkerschaltung etwas kastrieren, dass
Du da ne Amplitudenmessung vornehmen kannst.
SMX-1 glaub ich hies das Ding,
das Andere KMY-24
Suggarman
10.04.2007, 17:57
Eine Möglichkeit fällt mir gerade noch ein. Von Hella gibt es eine automatische Leuchtweitenregulierung für Nachrüstxenonscheinwerfer. Das System basiert meines Wissens auf zwei Abstandsmessungen vom Auto zur Straße und muß bei hohem Tempo noch funktionieren. Vielleicht könnte man bei Hella genaueres in Erfahrung bringen.
mfg
Stefan
voidpointer
10.04.2007, 21:38
Gibt's eine Möglichkeit mit Deinem jetztigen Aufbau mit dem Ultraschallempfänger den Hintergrund-Schallpegel zu messen? Ich meine ohne dass der Sender aktiv wird?
Naja, bei den fertigen Sensoren ist man ziemlich eingeschränkt. Man könnte es im "Fake ranging" Modus versuchen, bei dem der Sensor nur empfängt und nicht selbst sendet. Einen Versuch ist es wert.
Der mechanische Schutz des Sensors wie etwa eine gedämpfte Lagerung usw. könnte auch noch was bringen, allerdings muss es auch praxistauglich sein.
Eine Idee ist noch die Modulation des Signals mit einem Muster, das später wieder erkannt werden muss, um als Echo zu gelten. Aber das geht nur durch Überschreiben der Firmware. Ich glaube nicht, dass Devantech sowas schon macht.
Von Hella gibt es eine automatische Leuchtweitenregulierung für Nachrüstxenonscheinwerfer. Das System basiert meines Wissens auf zwei Abstandsmessungen vom Auto zur Straße
Hm, dachte eigentlich, das geht mit Neigungssensoren. Werde aber mal recherchieren.
Ich seh schon, das Hobby wird so schnell nicht langweilig ;-)
Gruß, Achim.
mare_crisium
11.04.2007, 10:39
Achim,
die Hauptverdächtigen für die störenden Geräusche sind:
1. der Motor
2. der Propeller
3. die Schlitze der Steuerflächen (Seitenruder und Wölbklappen)
Ich werde mir nochmal die Flugdaten angucken, vielleicht fällt mir ja eine Korrelation (z.B. mit den Antriebsphasen) auf.
Die Idee mit der Modulation ist gut. Im Grunde kannst Du dann das Differenzsignal zwischen Störgeräusch (bei ausgeschaltetem Sender) und dem Nutzsignal auswerten.
Früher habe ich einmal über eine Art "chirping sonar" nachgedacht. Dabei wird die Schallfrequenz während des Sendens mit der Zeit hoch gefahren. Im Empfänger überlagert sich der auf direktem Weg empfangene Schall mit dem reflektierten. Folglich beobachtet man am Empfängerausgang eine Schwebung mit der Differenzfrequenz zwischen den beiden Schallsignalen (das "ältere" reflektierte Signal hat ja eine niedrigere Frequenz als das "neuere", direkt empfangene). Wenn die Frequenzrampe zeitlich linear ist, dann ist die gemessene Schwebungsfrequenz direkt proportional zur Entfernung. Ich hab's nie ausprobiert, weil ich annahm, dass die Bandbreite der Ultraschallwandler zu gering ist.
Ciao,
Harald.
mare_crisium
15.04.2007, 21:09
Achim,
ich habe mir Deine Flugdaten vom 25.03. und 08.04. genauer angesehen. Gesucht habe ich nach Einflüssen von
1. Motor (Vergleich Messwertstreuung mit laufendem/abgeschaltetem Motor)
2. Geschwindigkeit (die Geräuschentwicklung sollte mit zunehmender Geschwindigkeit stärker werden und auch stärker stören)
3. Untergrund (Reflexionseigenschaften)
Leider kann ich keine Korrelation zu entdecken. Jedenfalls nicht, wenn ich die Daten im Einzschritt-Modus durchfahre (dabei bleibt Dein Programm übrigens nach ca. 40-50 Schritten stecken – keine Kritik, nur als Hinweis). Es scheint, als gäbe es weniger Ausreisser, wenn Du über den heller grün gefärbten Teil der Wiese (kurz gemäht?) und über Wege fliegst. Ansonsten fällt auf, dass die „berühmten” 1,8m-Messwerte sich häufen. In einem früheren Post schreibst Du, Du hättest diesen Effekt mit Schaumstoff unterdrücken können: Das solltest Du dann auch bei einem Testflug mal ausprobieren. - Tut mir leid, nichts gefunden zu haben, womit ich Dir hätte helfen können. -
Zur Frage der Regler: Bei dem Flug vom 08.04. fällt auf, dass das Flugzeug jedesmal, wenn Du den „straight”-Befehl gibst, zunächst versucht, geradeaus zu fliegen. Bei der ersten Störung fängt es an mit dem Steitenruder aufschwingende Korrekturbewegungen zu machen, bis Du es schliesslich manuell in einer Wende abfangen musst. Wenn Du den Seitenruder-Regler als PID ausgelegt hast, dann deutet dieses Verhalten nach meiner Erfahrung auf viel zu kurze I-Zeit hin. Dieser Regler sollte eigentlich als reiner P-Regler am besten funktionieren. Die Flugbahn selbst wirkt ja schon als Integrator der Seitenruderausschläge. Und wenn durch Deinen Regler noch ein weiterer Integrator (in Reihe geschaltet) dazu kommt, dann bilden sie zusammen ein schwingungsfähiges System. Hast Du Erfahrung im Einstellen von Reglerparametern? Kennst Du die alten Faustregeln zur Regleroptimierung?
Ciao,
Harald.
voidpointer
16.04.2007, 08:57
Hallo Harald,
vielen Dank für die ausführliche Analyse meiner Logdaten. Ein Zusammenhang mit den kurz gemähten Flächen ist mir noch gar nicht aufgefallen. Dazu muss man sagen, dass das Satellitenbild bzw. die Luftaufnahme sicher schon 3 Jahre alt ist, aber tatsächlich wird bei uns der Flugplatz immer in ähnlichem Muster gemäht (Eigentlich sollte ja alles gemäht sein, wegen der Anfänger und Sturköpfe ;-) ). Ich werde auch mal den Einzelschritt-Fehler suchen.
Mittlerweile habe ich einen SRF08 unter die Tragfläche montiert. Leider funktionierte auch dieser Sensor nicht auf Anhieb, aber im Forum habe ich Hinweise zum Setzen von Max-Range und Gain für diesen Sensor gefunden und werde vielleicht heute abend wieder ein paar Messungen machen können. Ein Vereinskollege meinte neulich, ich solle den Sensor tief in die Tragfläche einbauen, um Strömungslärm zu vermeiden. Werde auch dies demnächst angehen. Als weitere Idee fällt mir noch ein, den mittlerweile arbeitslosen SRF02 passiv mit etwas Abstand neben den SRF08 zu montieren. Vielleicht kann man dann mit nur einer Messung schon auf die Gültigkeit der Werte schließen.
Die Sache mit den Reglerparametern ist leider ziemlich testintensiv. Zunächst hatte ich alle drei Stellgrößen autonom konfiguriert. Dies führte zu einem ziemlich schnellen Aufschaukeln, wobei ich nach wenigen Sekunden eingreifen musste. Die letzten Flüge habe ich teilautonom gemacht - nur das Seitenruder wurde automatisch geregelt. Dies funktionierte schon besser, aber manchmal regelt sie nicht stark genug, d.h., der Zielpfad wird nicht mehr erreicht. Mittlerweile werden die aktuellen PID-Parameter am Anfang in das Logfile geschrieben und derzeit habe ich den I-Parameter auf 0 gesetzt und einen großen D-Anteil vorgegeben. Ähnlich hatte es auch "globe" mit seinem ISA-Projekt beschrieben, wobei er allerdings noch inertiale Sensoren hat. Das Problem an diesem Flugzeug ist die relativ große Totzeit zwischen Ruderausschlag und Änderung der Flugbahn. Schließlich muss sich das Flugzeug erstmal um die Längsachse neigen (Rollen), bevor es dann eine Richtungsänderung ausführen kann. Diese Zeit ist zumindest nach den Logfiles so zwischen 0,5 und 1 Sekunden. M.E. ist es nicht einfach, eine Regelung auf große Totzeiten anzupassen. Ich erhoffe mir durch den großen D-Anteil einen Erfolg. Aber zu Deiner Frage: nein, viel Erfahrung habe ich nicht mit dem Einstellen oder mit der Reglertechnik ansich. Wie würdest Du vorgehen?
Gruß, Achim.
mare_crisium
16.04.2007, 16:19
Achim,
bin 'mal gespannt auf Deinen Testflug mit dem SRF08. Den Sensor in voller Höhe im Flügel zu versenken ist eine gute Idee. Vielleicht dann noch mit einem Plättchen von Deinem Schaumstoff abdecken?
Grundsätzlich zur empirischen Regleroptimierung (vielfach praxiserprobtes Verfahren):
Der Zielzustand des Reglers ist erreicht, wenn der Istwert nach einem oder maximal zwei stark gedämpften Überschwingern in einen stabilen Dauerzustand übergeht. Diesen Zustand bezeichnet man als "nahe an der Stabilitätsgrenze". Bei schwach (suboptimal) eingestellten Reglern dauert es eine Ewigkeit, bis der Dauerzustand erreicht wird. Bei zu scharfer (instabiler) Einstellung kommt es zur Dauerschwingung, schlimmstenfalls mit zunehmender Amplitude. Achtung: Der Istwert im stabilen Dauerzustand braucht nicht mit dem Sollwert identisch zu sein!
Als Anfangseinstellung einstellen: P = 1, I = unendlich, D = 0.
Jetzt zuerst nur den P-Parameter optimieren: Mit Anfangseinstellung prüfen, ob die das Regelverhalten instabil ist. Ist es das nicht, dann den P-Teil so oft verdoppeln, bis instabiles Verhalten erreicht ist. Wenn das Regelverhalten schon mit der Anfangseinstellung instabil ist, dann den P-Parameter so oft halbieren, bis das Verhalten stabil ist. Am Ende dieses Verfahrens hat man einen P-Wert mit instabilem und einen mit nicht instabilem Verhalten. Dazwischen liegt der optimale Wert.
Um den optimalen Wert zu finden, wendet man die Halbierungsmethode an: Als nächsten P-Wert den Mittelwert von instabilem und nicht instabilem Wert einstellen und austesten. Und so weiter, bis man möglichst nahe am optimalen Verhalten der Regelstrecke angekommen ist. Achtung: Auf keinen Fall vorzeitig an den anderen Parametern drehen! Das geht in aller Regel nur schief und kostet jede Menge Zeit!
Nachdem jetzt der P-Teil gut eingestellt ist, knöpfen wir uns den I-Teil nach demselben Verfahren vor:
Man schätzt bei den vorangegangenen Versuchen die Zeit, mit der das Flugzeug auf Änderungen am Reglerausgang reagiert. Das braucht nur eine grobe Schätzung zu sein: 0,1s oder 1s oder 1min. Auf diesen Wert stellt man die I-Zeit ein. Anschliessend kommt dasselbe Test- und Nachstellverfahren, wie beim P-Teil, nur nähert man sich beim I-Teil dem instabilen Regelverhalten durch Verkürzen; durch Verlängern wird der Regler träger (also andersherum als beim P-Teil). Am Ende, mit richtig eingestellter I-Zeit, sollte das Reglerverhalten noch näher an das optimale Verhalten herangekommen sein.
Anschliessend den P-Teil nach-optimieren (immer nach demselben Verfahren von Testen und Nachstellen). Meistens kann man ihn noch etwas vergrössern und damit ein noch besseres Regelverhalten erreichen.
Als letzter kommt der D-Teil dran. Den Anfangswert nach der zuletzt beobachteten Reaktionszeit einstellen und dann wie oben beschrieben schrittweise optimieren (Vergrössern macht instabiler, Verkleinern träger). Der D-Teil ist am Schwierigsten einzustellen, weil es dabei manchmal zu ganz heimtückischen metastabilen Zuständen kommt, in denen das System sich anfangs stabil verhält, dann aber plötzlich in Dauerschwingungen umkippt. Deshalb ist ein kleinerer D-Teil immer die sicherere Wahl.
Am besten führt man eine Tabelle mit den drei Parameterwerten und markiert jeweils, ob stabiles Verhalten vorlag oder nicht. Wichtig ist, immer nur einen Parameter auf einmal zu ändern bis man ein Zwischen-Optimum erreicht hat! Wenn man's anders macht, kommt man ganz schnell durcheinander und kann wieder ganz von vorn anfangen - sehr ärgerlich, weil solche Optimierungen unheimlich viel Zeit kosten.
Wie schon gesagt erwarte ich, dass bei Deiner Anwendung der I-Teil ausgeschaltet, also die I-Zeit unendlich bleiben muss. Der D-Teil kann helfen, aber möglicherweise brauchst Du ihn noch nicht einmal. Es würde mich nicht wundern, wenn ein gut angepasster, möglichst hoher P-Teil allein schon völlig ausreicht.
Versuch's doch mal nach dieser Methode - bei mir hat das viele hundert Male gut funktioniert!
Ciao,
Harald.
voidpointer
16.04.2007, 22:33
Hallo Harald,
heute gibt's leider keine Logfiles - habe etwas verschlimmbessert, so dass die Hauptschleife nach wenigen Iterationen zu hängen scheint :-( Vielleicht, wenn ich es morgen gefixt habe...
Demnach habe ich es mit den Parametern völlig falsch angegangen. Ich werde also als nächstes mit dem P-Teil anfangen. Allerdings habe ich noch Fragen wegen der I-Parametrisierung. Ich habe die Steuerung anhand des RN-Artikels "Regelungstechnik" programmiert. Genauer gesagt verwende ich die "Umsetzung nach dem Stellungsalgorithmus" mit den q-Faktoren, wobei die Taktzeit der Update-Rate des GPS entspricht, also 200ms. Ich soll also für die P-Optimierung Ki unendlich groß (oder eben sehr groß) einstellen? Würde dann nicht der Wert für y sofort verrückt spielen? Oder hab ich an der Formulierung etwas nicht verstanden?
Gruß, Achim.
mare_crisium
17.04.2007, 06:57
Achim,
na, das mit dem Verschlimmbessern kennt jeder, der mal Programme geschrieben hat. Da hast Du mein vollstes Mitgefühl...
Der RN-Artikel ist gut und vollständig. Ich benutze eine etwas andere Formulierung der Gleichung (Überschrift "Differenzengleichung für den zeitdiskreten PID-Regler"):
P-Teil wie angegeben.
I-Teil: Ki*Ta*summe(ei) / Tn
Tn ist die Integrationszeit
D-Teil: (Kd / Ta) * (ek - ek-1) * Td
Td ist die Differentiationszeit
Der Grund für diese Formulierung ist, dass die Stellgrösse dimensionslos herauskommt, am Prinzip ändert sich nichts. Die Vorfaktoren q lauten in dieser Formulierung:
q0 = Kp + Ki*(Ta/Tn) + Kd*(Td/Ta)
q1 = Ki*(Ta/Tn) wird bei Tn=unendlich zu q1 = 0
q2 = Kd*(Td/Ta) wird bei Td=0 zu q2 = 0
Die Gewichte Ki und Kd und die Abtastzeit Ta werden als konstant betrachtet. Die Reglerkonstanten ändert man dann durch Verändern von Kp, Tn und Td. Der wesentliche Unterschied zeigt sich beim Anpassen des Integralteils: Durch Verändern von Ki ändert sich das I-Verhalten linear, während die Veränderung von Tn das I-Verhalten umgekehrt proportional beeinflusst. Bei vielen Regelstrecken führt das zu einem feinfühligeren Verhalten bei der Regleroptimierung.
Wenn Du bei der Formulierung des RN-Artikels bleibst, dann ist die Anfangsstellung:
q0 = 1, q1 = 0, q2 = 0
Für das Optimieren der q-Parameter gilt das Verfahren sinngemäss: Während der P-Optimierung bleiben q1 und q2 bei Null. Bei der anschliessenden I-Optimierung bleibt q2 bei Null und q0 wird nicht geändert. Bei der D-Optimierung bleiben q0 und q1 konstant, bis der optimale Wert von q2 gefunden ist.
Ciao,
Harald.
reneheli
17.04.2007, 20:06
@Achim: Was hast Du für ein GPS: mit einer Update-Rate von 200ms (!?)
voidpointer
17.04.2007, 22:52
Was hast Du für ein GPS: mit einer Update-Rate von 200ms (!?)
Das SAM-LS von u-Blox. 200ms sind 5Hz. Das Modul geht laut Datenblatt bis 4Hz. Man kann es aber auch noch schneller konfigurieren, wenn man in Kauf nimmt, dass hin und wieder mal eine Messung verschluckt wird.
@mare_crisium: Heute morgen hat es funktioniert. Habe vier Testflüge mit verschiedenen PID-Parametern gemacht. Muss die Sache aber wohl nochmal anders aufziehen, denn bisher hatte ich Tn nicht in den Formeln bzw. keinen Einfluss darauf.
Mit meinen letzten Parametern P=0.7 I=0.0 und D=4.0 wurden Gerade und erstmalig Kurve mit 50m Radius einigermaßen korrekt geflogen. Dazu muss man sagen, dass heute so gut wie kein Wind war, also ideale Bedingungen.
Aber zum Thema: erstmalig funktionierte auch der SRF08 vernünftig und lieferte brauchbare Werte. Ich habe den Sensor alle 100ms ausgelesen, so dass es pro GPS-Update zwei Sonar-Messungen gab. Diese habe ich entsprechend auf die Logdaten aufgeteilt, so dass es in der Viewer-Software aussieht, als wären es zwei Sensoren. Bei der gegenwärtigen Konfiguration des Sensors (Max-Range=116 und Gain=8 ) gibt es unterhalb von 3 Meter vernünftige Werte. Darüber nur sporadische Echos, die aber wahrscheinlich mit der Vergleichsmethode herausgefiltert werden können. Leider war keine Zeit für tiefe Überflüge - so gibt es nur wenige Daten von der Landung. Schön, dass man mit dem SRF08 mehr Einflußmöglichkeiten auf die Messung hat und damit das Ergebnis verlässlicher wird. Vielleicht können die vorgeschlagenen "baulichen Maßnahmen" zusammen mit dem Tuning der beiden Parameter noch weitere Besserungen und einen größeren Messbereich bringen.
Gruß, Achim.
mare_crisium
18.04.2007, 20:45
Achim,
mein Glückwunsch! Die Höhenmesswerte im Tiefflug und auch die autonomen Flugabschnitte sehen jetzt doch schon ganz manierlich aus. Vor allem bei der Landung im letzten Flug scheinen die Messwerte sogar schon ab 5m gut zu sein.
Die Regelparameter musst Du noch etwas optimieren. Wie gesagt, einen I-Teil wirst Du nicht brauchen. Mir scheint, dass die Flugbahn immer dann besonders starke Schwingungen (Schlangenlinien) zeigt, wenn das Flugzeug vor der „straight”-Anweisung nicht schon eine Weile in derselben Richtung geflogen ist. Das bedeutet, dass Du den P- und den D-Teil noch zu scharf (zu grosses q0 und q2, bzw. grosses Kp und Td) eingestellt hast.
Das wesentliche Ergebnis ist aber die Tatsache, dass die autonome Flugregelung schon in diesem Stadium im Prinzip klappt!
Ciao,
Harald.
P.S.: Mit welchen Zahlentypen (real, integer) und welcher Genauigkeit (Bitzahl Mantisse/Exponent bzw. Integer) rechnest Du in Deinem Regelalgorithmus? Welche Auflösung (Anzahl Bits) hat die PWM-Ansteuerung der Servos?
mare_
voidpointer
19.04.2007, 10:23
Harald,
Die Höhenmesswerte im Tiefflug und auch die autonomen Flugabschnitte sehen jetzt doch schon ganz manierlich aus.
Das will ich doch wohl meinen :-) Mal sehen, wie die Messungen bei Wind aussehen. Wenn sie nicht wesentlich schlechter sind, taugt die aktuelle Einstellung doch schon zur Landeunterstützung und vielleicht auch zum autonomen Tiefflug (*träum*). Ich danke allen, die sich an der Diskussion beteiligt haben! Habe jetzt zwei SRF02 günstig abzugeben - Scherz, die behalte ich voerst.
Und das wird jetzt wohl Offtopic. Ja, im Prinzip funktioniert die Steuerung jetzt - mit vielen Kompromissen: 1. bisher ist nur das Seitenruder autonom. Es ist nötig, auch das Höhenruder zur Kurskorrektur einzusetzen (Ziehen für engeren Kurvenradius). Wenn zusätzlich ein Höhenverlust auszugleichen ist (was mittels Höhenruder und / oder Motor zu tun ist), könnte die entsprechende Regelung problematisch werden. 2. Durch einen Softwaretrick beginnt jedes Streckensegment genau an der aktuellen Position und mit dem aktuellen Kurs. Dies dient nur dem Test - später soll die Strecke kontinuierlich sein. Das bedeutet, dass die Regelung dann am Beginn eines neuen Bahnabschnitts größere Fehler auszugleichen hat. Wie beobachtet, gibt das jetzt schon Probleme aufgrund des hohen D-Teils.
Die Berechnungen basieren alle auf double-Typen. Dies sind 64-bit Gleitkommazahlen mit 11 bit Exponent und 52 bit Mantisse. Die Regelung berechnet direkt die PWM-Zeit zur Aussteuerung der Servos in µs, die erst unmittelbar vor dem Ansteuern von double auf int umgerechnet wird. Zusammen mit dem Neutralwert des Servos hat die Ansteuerung eine Auflösung von 12 bit. Die PWM-Zeit für das Seitenruderservo bewegt sich zwischen 1200 und 2000 µs, die maximale Auslenkung des Ruders ist schätzungsweise +- 20 Grad. Der relevante Abschnitt befindet sich im Sourcecode (http://voidpointer.de/easybot/src/gum/autofly.c) unterhalb von "heading control loop"; der Fehler e entspricht dem Winkel, den die aktuelle Flugbahn vom Zielwinkel abweicht, der zum Wiedereintritt auf das Bahnsegment in einer Entferung von 10 Metern eingeschlagen werden müsste. Wollte demächst mal ein paar Skizzen für dieses Vorgehen auf meine Webseite stellen. Bin mir aber mittlerweile nicht mehr so sicher, ob der Ansatz nicht zu umständlich ist.
Naja, aber so ähnlich hatte ich mir den Spaß an der Sache ja auch vorgestellt...
Gruß, Achim.
hallo,
wenn du große kreise fliegst, und den rollwinkel klein hälst, kannst du denke ich die höhen und die kurs regelung zumindest für den reglerentwurf als entkoppelt betrachten. die kopplung wirkt dann halt als störung und wird vom anderen regler wieder ausgeglichen. ich habe es bei einer u-boot-regelung zumindest so gemacht.
mfg jeffrey
mare_crisium
21.04.2007, 08:45
Achim,
gut, dass Du an diesem US-Messaufnehmer die Einstellungen beeinflussen kannst. Mit einer Max-Range-Einstellung liegst Du bei 5m Reichweite; das haben die Flugdaten auch bestätigt. Die Verstärkung 8 (bei möglichem Maximalwert von 32) ist allerdings ziemlich niedrig – kann sein, dass der Lärm am Sensor keine höhere Empfindlichkeit zulässt. Mehr wäre besser, weil dann auch die stark gedämpften Reflektionen von unebenem Untergrund erkannt werden können. Wegen der Turbulenzen im Schallkegel mach' Dir mal keine Sorgen! Solange Dein Flugzeug genügend Abstand von der Schallmauer hält, haben die keinen Einfluss auf die Schallausbreitung.
Die Frage der Regelung hat zwar mit dem Thread-Titel nur indirekt zu tun, ist aber, glaube ich, für viele andere Roboterbauer interessant: Z.B. Linienfolger-Roboter können nur dann funktionieren, wenn die Regelparameter gut optimiert sind. Insofern reden wir über ein on-topic off-topic.
Nach meinem Eindruck bist Du jetzt ziemlich nah dran, den Seitenruder-Regelkreis hinzukriegen. Du brauchst nur noch ein bisschen (aber systematisch!) an den Regelparametern drehen. Ich schätze mal, dabei kommt ein ziemlich scharf (d.h. grosses Kp) eingestellter P-Regler mit wenig D-Anteil und ohne I-Teil heraus. Mit der Rechen- und Steuergenauigkeit, die Du verwendest, besteht auch keine Gefahr, Dir Digitalisierungsfehler (ich dachte an den „digital offset”) einzuhandeln.
@jeffrey: Ich kann Deine Erfahrung nur bestätigen: Am Besten fährt man, wenn man für jeden Freiheitsgrad einen separaten Regler einsetzt. Also, in Achims Fall: Lieber noch einen Messaufnehmer für den Rollwinkel (ähnlich einem Wendezeiger) mit einem separaten Regler für die Querruder. Wenn das Seitenruder ausschlägt, wird der Wendezeiger ausgelenkt und der Querruder-Regler versucht, ihn wieder in die Mittellage zu bringen. Analog würde ich auch mit der Flughöhe verfahren, wobei ich nicht weiss, ob es zweckmässiger ist, die Motordrehzahl oder das Höhenruder anzusteuern. Die Erfahrung zeigt dann, ob sich die Regelkreise gegenseitig aufschaukeln. Solange es gelingt, ihre Zeitkonstanten deutlich unterschiedlich einzustellen, beeinflussen sich die Kreise wenig.
Lass' mal hören, wie's weitergeht, Achim!
Ciao,
Harald.
Hallo Ihr!
Ich hab jetzt nicht alles gelesen was geschrieben wurde aber ich möchte mal meinen Senf zum Reglerentwurf geben. Was mir viel geholfen hat, ist mal darauf zu achten wie man den ein Modell von selber von Hand steuert:
1. Kurve durch kräftigen Steuerbefehl einleiten
2. Knüppel fast wieder in Neutralstellung bringen
3. Warten bis gewünschte Richtungsänderung erreicht ist.
4. Kräftig gegensteuern.
Aus diesem Zusammenhang erkennt man schon das der D-Anteil eine große Rolle spielt. Je nach Eigenstabilität des Modells ist natürlich auch P-Anteil notwendig. Bei meinem ISA-Projekt ist der D-Anteil im übrigen fast 10 mal so hoch wie der P-Anteil. I-Anteil habe ich gar keinen wobei ich damit auch noch mal experimentieren wollte.
Viele Grüße
globe
voidpointer
21.04.2007, 19:39
Hallo,
mit dem Standardwert hat der SRF08 nicht funktioniert. Bis zu 70cm hat er alles gut gemessen, aber bei größeren Entfernungen blieb er einfach weiter bei 70cm. Also muss ich mich mit dem Verstärkungswert an das Optimum herantasten.
Zum Kurvenflug: genau so steuert man eine Kurve. Es geht auch ohne Höhenzugabe, aber mit Höhe wird die Kurve enger. Aber wie bringt man sowas einer PID-Regelung bei? Ein hoher D-Wert ist da wohl wirklich sinnvoll, nur habe ich festgestellt, dass er im ersten Regelzyklus u.U. zu einem starken Ruderausschlag führt, weil die Reglervariablen ealt und ealt2 mit Null initialisiert sind. Jetzt überlege ich, ob ich diese Variablen aus alten Kursdaten berechne, damit der abrupte Ruderausschlag nicht eintritt.
Querruder und Kreiselsensoren habe ich leider nicht. Der Reiz an der Sache soll ja sein, nur mit dem GPS auszukommen. Ich habe zwar nicht die Absicht, das System kommerziell zu vertreiben, aber wenn etwas möglichst billig funktioniert, war es doch schon immer gut. (OK, mit dem US-Sensor weiche ich gerade von dieser Vorgabe ab). Ohne inertiale Sensoren weiss die Steuerung zwar nichts über die Fluglage, aber wegen der V-Form der Tragflächen sollte eine nichthorizontale Lage immer in einer Kursänderung resultieren. Es wird sich zeigen, ob der Ansatz robust ist.
Gegenwärtig teste ich mich an die Parameter der anderen Stellgrößen ran. Dabei gehe ich vor, wie Harald beschrieben hat. Wenn Motor und Höhe separat funktionieren, will ich sehen, wie alle drei zusammenarbeiten. Eine gegenseitige Beeinflussung werde ich wie vorgeschlagen erstmal ignorieren. Spätestens dann melde ich mich wieder.
Viele Grüße, Achim.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.