PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bewegungsmodell eines Modellschiffes



lord-maricek
29.05.2012, 18:20
Hallo,

ich bin gerade dabei ein "Dynamik Positioning System" (http://en.wikipedia.org/wiki/Dynamic_positioning) für Modellboote zu entwickeln. Das ist ein System, das Sensor gestützt z.b. die Position und das Heading eines Schiffes hält. Desweiteren ist z.b. möglich das Schiff Seitwärts fahren zu lassen, wobei der Boardcomputer die Sensorik auswertet und dann dementsprechend die Ruder, Motoren usw. regelt.

Ich habe die Ranzow von Graupner (http://shop.graupner.de/webuerp/servlet/AI?ARTN=2023) (1,1m lang) mit einem Bugstrahlruder vorne und hinten 2 Propeller und 2 Ruder, die alle separat angesteuert werden können. Somit ist mein Vorhaben theoretisch möglich.

Das Problem ist die Sensorik. Im Modell lassen sich leider nicht alle Sensoren umsetzten wie z.b. der Windsensor. Auch geht eine Positionierung über GPS nicht, da wir im Schnitt nur auf 1 - 2 Meter Genauigkeit kommen.
In der Realität werden alle Werte dann in ein Mathematisches Modell eingerechnet, die Ruder/Motoren angesteuert und dann noch bei bedarf mit einem PID Regler korrigiert.

Im Modell habe ich mir gedacht, das ganze mit einer IMU Einheit zu machen, also Beschleunigungssensor, Gyro und Magnetometer. Um die Abweichung der Position zu bekommen, wollte ich zuerst mit einem "Attitude and Heading Reference System" die Lage im Raum errechnen und danach drehe ich das Koordinatensystem des Bootes/Sensoren auf das Koordinatensystem über Grund. Daraus kann ich dann die Beschleunigungswerte des Bootes in x und y Richtung rausnehmen. (Z Brauche ich nicht). Die Werte kann ich dann verwenden, um die Abdrift von der Position zu bestimmen und gegensteuern.

Das Problem ist, dass sich Boote nicht immer an der gleichen Stelle drehen, das heißt ich kann die Z-Achse der Sensorik nicht auf der Z-Achse des Bootes platzieren. Dazu habe ich mir gedacht, 2 IMU Einheiten zu verwenden, eine vorne und eine hinten. Das Problem ist nur, wie kann ich die Daten interpretieren, damit ich auch die Richtige Beschleunigung im Bug und Heck des Bootes bekomme?


Hat hier vielleicht jemand eine Idee, wie ich die Daten fusionieren könnte, um die Beschleunigungs und Drehraten von Bug und Heck bekomme?
Hat vielleicht noch jemand eine andere Idee, wie ich das Sensortechnisch anders machen kann?

MFG
Philipp

P.S.: Am Ende soll sowas in etwas rauskommen, und auch angezeigt werden: (Hab grad nichts besseres gefunden)
http://i1-games.softpedia-static.com/screenshots/Ship-Simulator-Extremes_6.jpg
Unten links der Kreis mit Bewegungsrichtung/Geschwindigkeit im Bug und Heck, Drehbewegung in °/min (oder /sek), Heading und Kurs über Grund, und vorwärts/Rückwärtsbewegung

damfino
29.05.2012, 19:53
Hi,
Genügt es ist nicht die Querbeschleunigungen im Bug und Heck zu messen, daraus den aktuellen Drehpunkt ermitteln und weiters die restlichen Daten? zB wenn nur Beschleunigungen in y nur am Bug auftreten, dreht sich das Schiff genau um das Heck.

LG!

lord-maricek
29.05.2012, 20:11
Hi,
Genügt es ist nicht die Querbeschleunigungen im Bug und Heck zu messen, daraus den aktuellen Drehpunkt ermitteln und weiters die restlichen Daten? zB wenn nur Beschleunigungen in y nur am Bug auftreten, dreht sich das Schiff genau um das Heck.

LG!
Hi,
ja das müsste sogar gehen, und aus dem Verhältnis der Beschleunigung im Bug und im Heck müsste man sogar den genauen Drehpunkt bestimmen können, da man die Bootsmaße kennt.

Hat jemand vielleicht Sensorempfehlungen? Gesucht werden Acc,Gyro und Mag. Schnitstelle muss SPI sein, die Gyrodaten sollen mit >5kHz und die AccDaten mit >2kHz ausgegeben werden. Fusioniert wird mit einem STM32F4 mit 168Mhz und FPU.

Mfg
Philipp

damfino
29.05.2012, 20:25
So schnelle Sensoren kenne ich jetzt nicht. Würde dazu aber einen Kompass (CMPS10) nehmen, ein paar absolute Werte können zur Korrektur einer Drift nicht schaden :)

LG!

lord-maricek
29.05.2012, 20:38
So schnelle Sensoren kenne ich jetzt nicht. Würde dazu aber einen Kompass (CMPS10) nehmen, ein paar absolute Werte können zur Korrektur einer Drift nicht schaden :)

LG!

Danke, werde mir den Kompass mal angucken. Der MPU6000 schafft Gyro 8kHz Output und 1kHz für den Acc.
Der ITG3200 gyro geht auch bis 8kHz, der Acc ADXL345 geht bis 3,2kHz. Kennt jemadn vielleicht noch besser?

Mfg
Philipp

ranke
29.05.2012, 21:32
Mir scheint die Sensorik nicht ausreichend um den gewünschten Effekt zu erzielen.
Beispielszenario:
Boot driftet (z.B. durch Wasserströmung) mit konstanter Geschwindigkeit.
Diese Drift ist weder mit einem Beschleunigungssensor Gyro oder Magnetometer meßbar. Eine Navigation oder das Halten eine Position ist so offenbar nicht machbar.

lord-maricek
29.05.2012, 21:56
Mir scheint die Sensorik nicht ausreichend um den gewünschten Effekt zu erzielen.
Beispielszenario:
Boot driftet (z.B. durch Wasserströmung) mit konstanter Geschwindigkeit.
Diese Drift ist weder mit einem Beschleunigungssensor Gyro oder Magnetometer meßbar. Eine Navigation oder das Halten eine Position ist so offenbar nicht machbar.

Dazu wollte ich die Beschleunigungswerte mit der Zeitmessung in Geschwindigkeiten errechnen und die Geschwindigkeit aufintegrieren, und wenn keine positive oder negative Beschleunigung auftritt, bleibt die Geschwindigkeit gleich. Das sollte zumindest theoretisch so machbar sein.

MfG
Philipp

ranke
30.05.2012, 07:51
Dazu wollte ich die Beschleunigungswerte mit der Zeitmessung in Geschwindigkeiten errechnen und die Geschwindigkeit aufintegrieren, und wenn keine positive oder negative Beschleunigung auftritt, bleibt die Geschwindigkeit gleich. Das sollte zumindest theoretisch so machbar sein.


Theoretisch ist das so machbar. In der Praxis ergeben sich Probleme durch die unvermeidlichen Meßfehler der Sensoren. Die zufälligen Fehler (Rauschen) lassen sich ganz gut wegmitteln, wenn man genügend häufig misst. Wesentlich unangenehmer (weil nicht korrigierbar) sind Fehler des Nullpunkts, der Linerarität usw., die bei Deinem Vorschlag über die Zeit integriert werden.
Nimmt man z.B. den ADXL 345 dann gibt das Datenblatt (http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf) (Seite 4) eine Nullpunktabweichung (0g Offset) von +/- 150 mg für x und y Achse an. Das gibt einen inakzeptablen Messfehler von 0,15m/s nach einer Sekunde Meßzeit. Dieser Fehler wächst in jeder Sekunde um weitere 0,15 m/s. Damit hat man nach wenigen Sekunden Meßzeit schon einen Fehler in einem Geschwindigkeitsbereich, den das Schiff aus eigener Kraft gar nicht mehr fahren kann.

lord-maricek
30.05.2012, 08:49
Theoretisch ist das so machbar. In der Praxis ergeben sich Probleme durch die unvermeidlichen Meßfehler der Sensoren. Die zufälligen Fehler (Rauschen) lassen sich ganz gut wegmitteln, wenn man genügend häufig misst. Wesentlich unangenehmer (weil nicht korrigierbar) sind Fehler des Nullpunkts, der Linerarität usw., die bei Deinem Vorschlag über die Zeit integriert werden.
Nimmt man z.B. den ADXL 345 dann gibt das Datenblatt (http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf) (Seite 4) eine Nullpunktabweichung (0g Offset) von +/- 150 mg für x und y Achse an. Das gibt einen inakzeptablen Messfehler von 0,15m/s nach einer Sekunde Meßzeit. Dieser Fehler wächst in jeder Sekunde um weitere 0,15 m/s. Damit hat man nach wenigen Sekunden Meßzeit schon einen Fehler in einem Geschwindigkeitsbereich, den das Schiff aus eigener Kraft gar nicht mehr fahren kann.

Naja, dann müssen wir wohl hoffen, dass sich der Messfehler alle 2 Sekunden selbst ausgleicht ;).
Ne aber jetzt mal ernst, mit nem Kalman Filter werden wir wohl schon etwas Fehler rausbekommen. Hat jemand eine gute Lektüre bezüglich Kalman Filter für Leute, die mit höherer Mathematik nochnicht soviel zu Tun hatten? Bin erst Gymnasium 10 Klasse.
Ansonsten könnte man auch noch versuchen einen Ausgleich mit den Gyros zu machen. Wenn sich das Schiff dreht, hat man ja auch verschiedene Drehraten an den Gyros, mit den Werten könnte man auch den Drehpunkt des Bootes berechnen und dann den Drehpunkt der Acc ausgleichen.
Oder einfach einen teureren, besseren Sensor.

MfG
Philipp

ranke
30.05.2012, 09:32
... mit nem Kalman Filter werden wir wohl schon etwas Fehler rausbekommen. Hat jemand eine gute Lektüre bezüglich Kalman Filter für Leute, die mit höherer Mathematik nochnicht soviel zu Tun hatten? Bin erst Gymnasium 10 Klasse.
Ansonsten könnte man auch noch versuchen einen Ausgleich mit den Gyros zu machen. Wenn sich das Schiff dreht, hat man ja auch verschiedene Drehraten an den Gyros, mit den Werten könnte man ...

Bei meinem Szenario oben bin ich extra davon ausgegangen, dass keine Drehung (abgesehen von der unvermeidlichen der Erdachse) auftritt. Da ist also auch nichts zu kompensieren mit Kalmanfilter und ähnlichen Tricks.
Was man noch zur Verbesserung des Outputs des Beschleunigungssensors machen kann, sind im wesentlichen 2 Dinge:
1. Man sorgt für Temperaturkonstanz am Sensor, also baut man ihn in ein Gehäuse ein, das man thermostatgesteuert beheizt und erlaubt der Elektronik auch eine angemessene Hochlaufzeit nach dem Einschalten (ca. 1/2 Stunde) bevor man die ersten Messungen vornimmt.
2. Man kalibriert den Sensor vor jeder Meßfahrt indem man das Schiff definiert einer Beschleunigung von ax=ay=Null aussetzt und den in dieser Situation gemittelten Meßwert als Null definiert.
Mit diesen beiden Maßnahmen sollte man den Nullpunktfehler des Sensors auf (geschätzt) 1% des maximalen im Datenblatt angegebenen Fehler bringen können. Das ist eine erhebliche Verbesserung (aber leider nicht genug für das Vorhaben).

lord-maricek
30.05.2012, 12:34
Hi,

ganz ausschließen können wa eine abdrift nie, aber wir versuchens so gut wie möglich zu kompensieren.
http://www.sparkfun.com/datasheets/Sensors/Accelerometer/BST-BMA180-DS000-03.pdf
Seite 10, der hat Typ: +/- 15mg und max/min -45/+45mg
Nach einem Finetuning bekommt man den bis auf: Typ: +/- 5mg und max/min 20mg. Der sollte besser geeignet sein.

MfG
Philipp

Calis007
30.05.2012, 14:24
"Daraus kann ich dann die Beschleunigungswerte des Bootes in x und y Richtung rausnehmen. (Z Brauche ich nicht)."

Kannst Du wirklich davon ausgehen, dass das Ding immer absolut eben im Wasser liegt? Wenn z.B. eine Welle von steuerbord kommt und das Modell nach backbord schubst, dann wird doch eine Rollbewegung passieren, und gerade waehrend der staerksten Querbeschleunigung gibt es auch eine ordentliche Schraeglage - oder seh ich das falsch?

lord-maricek
30.05.2012, 14:43
"Daraus kann ich dann die Beschleunigungswerte des Bootes in x und y Richtung rausnehmen. (Z Brauche ich nicht)."

Kannst Du wirklich davon ausgehen, dass das Ding immer absolut eben im Wasser liegt? Wenn z.B. eine Welle von steuerbord kommt und das Modell nach backbord schubst, dann wird doch eine Rollbewegung passieren, und gerade waehrend der staerksten Querbeschleunigung gibt es auch eine ordentliche Schraeglage - oder seh ich das falsch?

Ich hatte im ersten Post geschrieben, dass ich das Koordinatensystem des Beschleunigungssensors drehe, wenn ich mit Gyro, Acc und Mag die Lage bestimmt habe. Dann bekomme ich die absoluten Beschleunigungen auf der X und Y Achse.

Calis007
30.05.2012, 15:12
Oops, wieder mal schlampig gelesen. Klar passt das dann ..
Bleibt wohl nur noch der Kampf gegen Temperaturdrift und Vibrationen. Hast Du Dir schon eine geeignete Verkapselung/Befestigung/Aufhaengung ueberlegt?

lord-maricek
30.05.2012, 15:31
Oops, wieder mal schlampig gelesen. Klar passt das dann ..
Bleibt wohl nur noch der Kampf gegen Temperaturdrift und Vibrationen. Hast Du Dir schon eine geeignete Verkapselung/Befestigung/Aufhaengung ueberlegt?

Ich weiß noch nicht wie ich die Sensorik verpacken will, das Boot soll weiter normal aussehen, also nicht einfach aufs deck klatschen. Eine Art container oder so, könnte man noch gut aufs Deck packen.
Gegen Vibrationen könnte man den Sensor auf Schaumstoff oder Storypor packen? Wie sichert ihr eure Sensoren gegen Vibrationen?
Wie ich das mit der Temperatur mache, weiß ich auch noch net. Wenn ich das richtig sehe, hat man beim BMA180 eine Abweichung von 0,5mg/Kelvin, ausgehend von 25°C. Da ich vorwiegend im Sommer fahre, sollte das eher das geringere Problem werden, wenns zu heiß wird, kann ich noch einen Lüfter mit Temperatursensor einbauen.

MfG
Philipp

damfino
30.05.2012, 19:51
Die Sensoren kannst locker im Schiffsrumpf verbauen, der Beschleunigungssensor den du dir ausgesucht hast misst grade 3x3mm....
Erstens würde ich mir wegen möglicher Temperaturdrift oder anderen Störgrößen die man jetzt nicht messen kann vorerst keine Gedanken machen.
Bau die Schaltung auf, programmiere alles und teste. Sollte es wirklich nur schlecht funktionieren kann man immer noch verbessern. Ich denke der Aufwand ist auch so schon so groß, und bevor man an einem Kalman Filter verzweifelt, kann eine simple Mittelwertbildung Wunder bewirken.
Ich bin ein Fan von absoluten Messwerten, daher wie erwähnt sehe ich einen Kompass als sinnvoll an, und wenn dir eine große Drift durch Messfehler Sorgen macht, kannst immer noch GPS als Rückfallebene verwenden. zB wenn die errechnte Position größer als 3m von der gemittelten GPS Position abweicht, wird wohl eher die GPS Position stimmen.
Bezüglich Temperatur konstant halten: im Rumpf wird sich nach ein paar Minuten durch die Motoren und Elektronik sicher eine relativ konstante Temperatur einstellen. Ansonsten würde ich die Sensoren in eine kleine Box einbauen, einen kleinen Wärmetauscher dran (zB CPU Wasserkühler) und Wasser zur Kühlung gibts rund ums Schiff ja genug.
Wie gesagt, baue das System auf und teste, verbessern kann man es immer.

LG!

ps: mir wurde auch von vielen erklärt das mein Vorhaben nicht durchführbar wäre, Messfehler zu groß, usw. Es funktioniert aber...

lord-maricek
30.05.2012, 19:59
Die Sensoren kannst locker im Schiffsrumpf verbauen, der Beschleunigungssensor den du dir ausgesucht hast misst grade 3x3mm....
Erstens würde ich mir wegen möglicher Temperaturdrift oder anderen Störgrößen die man jetzt nicht messen kann vorerst keine Gedanken machen.
Bau die Schaltung auf, programmiere alles und teste. Sollte es wirklich nur schlecht funktionieren kann man immer noch verbessern. Ich denke der Aufwand ist auch so schon so groß, und bevor man an einem Kalman Filter verzweifelt, kann eine simple Mittelwertbildung Wunder bewirken.
Ich bin ein Fan von absoluten Messwerten, daher wie erwähnt sehe ich einen Kompass als sinnvoll an, und wenn dir eine große Drift durch Messfehler Sorgen macht, kannst immer noch GPS als Rückfallebene verwenden. zB wenn die errechnte Position größer als 3m von der gemittelten GPS Position abweicht, wird wohl eher die GPS Position stimmen.
Bezüglich Temperatur konstant halten: im Rumpf wird sich nach ein paar Minuten durch die Motoren und Elektronik sicher eine relativ konstante Temperatur einstellen. Ansonsten würde ich die Sensoren in eine kleine Box einbauen, einen kleinen Wärmetauscher dran (zB CPU Wasserkühler) und Wasser zur Kühlung gibts rund ums Schiff ja genug.
Wie gesagt, baue das System auf und teste, verbessern kann man es immer.

LG!

ps: mir wurde auch von vielen erklärt das mein Vorhaben nicht durchführbar wäre, Messfehler zu groß, usw. Es funktioniert aber...

Hi,

wenn alles sofort funktioniert ist es ja keine Herausforderung mehr ;). Kompass brauchen wir ja sowieso, da auch das Heading gehalten werden soll, und dazu gibt man ein festes Heading ein ohne Kompass lässt sich das nicht machen.

MfG
Philipp