Forum: Mikrocontroller und Digitale Elektronik Neigungskompensation bei Abstandsmessung


von GeneigterLeser (Gast)


Lesenswert?

An einem kleinen Quadrokopter habe ich einen Ultraschall-Abstandsmesser,
der die Flughöhe messen soll.
Das Klappt prinzipiell ganz gut, aaaaber: Um mich vorwärts zu bewegen,
muss ich das Gerät ja neigen, der gemessene Abstand wird als bei
gleicher Flughöhe größer.
Aus dem Kompass bekomme ich Pitch- und Rollwinkel.
Solange ich nur vorwärts fliege, kann ich ganz einfach mit dem Cosinus
meine tatsächliche Höhe über dem Boden berechnen. Klappt schon gut.

Nun möchte ich aber auch in der Kurve meine Flughöhe korrekt bestimmen,
wenn das Gerät um Pitch- und Rollachse geneigt ist.
Da habe ich gerade ein Problem.

Wie muss ich da vorgehen? In Sachen Vektorrechnung bin ich leider nicht
mehr ganz fit, ist schon lange her.
Im Grunde muss ich wohl den Schnittwinkel zwischen der Pitch-Roll-Ebene
und der Senkrechten (in richtung Erdmittelpunkt) bestimmen. Aber da
stehe ich mal eben auf dem Schlauch.
Ich finde auch keine Beispiele, evtl. suche ich aber auch noch nach dem
falschen Begriff.

Für einen ordentlichen Schubs in die richtige Richtung, evtl. mit
Beispiel wäre ich sehr dankbar!

von GeneigterLeser (Gast)


Lesenswert?

JA wo sind denn die ganzen klugen Köpfe heute!?

Ich habe ja den Verdacht, dass man hiermit weiterkommen müsste, komme 
aber immernoch nicht drauf!

http://de.wikipedia.org/wiki/Kugelkoordinaten

von Schlumpf (Gast)


Lesenswert?

Bin gerade auch am Grübeln.
Aber wäre es möglich, ein kombiniertes Pitch und Roll in zwei 
Einzeprobleme zu "zerlegen" und diese kombiniert zu betrachten?
Also z.B. erst aufgrund des Pitchwertes des Sensors eine virtuelle Linie 
bilden, die den Pitch kompensiert hat und diese dann noch mit dem 
Roll-Wert korrigieren?

Also erst die Achse "nach vorne ziehen" und dann zur Mitte...
Das ware dann eigentlich nur die eine Rechnung, die du für den Pitch 
bereits durchführst, nochmal auf den Rollwert durchführen.. oder sehe 
ich das gerade zu einfach?

von Schlumpf (Gast)


Lesenswert?

nochmal überlegt:

Wäre das nicht?

hx = messwert * cos(Pitch)
h = hx * cos(Roll)

--> h = messwert * cos(Pitch) * cos(Roll)

von GeneigterLeser (Gast)


Lesenswert?

Genau das habe ich auch schon überlegt, das wäre einfach nur
Messergebnis * cos(pitch) * cos(roll)

http://de.wikipedia.org/wiki/Kugelkoordinaten#Umrechnungen

Ich grübel noch, wie ich pitch/roll in dieses KO legen müsste. Dann käme 
ich aber auf sin*sin oder sin*cos.

Aber so in der richtung müsste es wohl sein.

von Martin (Gast)


Lesenswert?


von GeneigterLeser (Gast)


Lesenswert?

Tatsache, das scheint wirklich schon alles zu sein. Vielen Dank euch 
beiden!

Werde mich dann nochmal ein bisschen mit den trigonometrischen 
Zusammenhängen vergnügen, nur so zum Spaß ;)
Nach langer Zeit schön zu sehen, dass man sowas gelegentlich doch 
brauchen kann...

cos(x)*cos(y) = (cos(x-y)+cos(x+y))/2

von Schlumpf (Gast)


Lesenswert?

Warum stellst du die gleiche Frage nochmal?
Was hat dir denn an den damals gegebenen Antworten nicht gepasst?
Oder hat es nicht funktioniert?

von Aufrechter Leser (Gast)


Lesenswert?

GeneigterLeser schrieb:
> Tatsache, das scheint wirklich schon alles zu sein. Vielen Dank euch
> beiden!

Ich fürchte, du bist da auf dem Holzweg. Wenn deine Überlegung richtig 
wäre, würdest du über glattem Wasser keine US-Höhenmessung machen 
können, weil der Schall nicht zum Flieger zurückreflektiert wird.
Solange dein Neigungswinkel kleiner als der Öffnungswinkel deines 
Schallkegels ist, funktioniert dort aber die Höhenmessung. Das liegt 
daran, dass der erste zurückkommende Reflex als Höhe ausgewertet wird. 
Und der kommt von dem Punkt mit geringstem Abstand, i.e. vom Nadir. Nix 
mit cos() und Roll und Pitch.

von GeneigterLeser (Gast)


Lesenswert?

"Damals" war ca. 30min früher und ich hatte den Eindruck, als ob sich im 
Bereich DSP so garnichts bewegt. Und in der Forenübersicht war der 
Thread leider ratz fatz durchgelaufen.

Die Sache trieb mich gerade in den Wahnsinn, da war ich so dreist die 
Frage im stärker belebten Teil des Forums nochmal zu stellen. Martins 
Hinweis kam dann auch erst später.

Vielleicht findet sich ja ein Mod, der den Thread zusammenführen kann...

Bin jedenfalls froh, dass sich doch noch ein Antwort gefunden hat und 
werde es gleich morgen umsetzen. Kann dann ja nochmal berichten.

von Schlumpf (Gast)


Lesenswert?

GeneigterLeser schrieb:
> "Damals" war ca. 30min früher

Ist mir dann auch aufgefallen ;-)

Was Aufrechter Leser schreibt, ist allerdings richtig.
Die Mathematik, die wir hier gefunden haben, stimmt nur, wenn dein US 
ein scharfer Strahl wäre, der immer exakt in die Richtung 
zurückreflektiert wird, von der er kam.
Und da der US weder ein Laserstrahl ist, noch exakt im gleichen Winkel 
zurückgeworfen wird, wie er auftrifft, wundere ich mich gerade ein 
wenig, dass du geschrieben hast, dass das mit dem Pitch bereits 
funktioniert hat.

von GeneigterLeser (Gast)


Lesenswert?

Aufrechter Leser schrieb:
> Ich fürchte, du bist da auf dem Holzweg. Wenn deine Überlegung richtig
> wäre, würdest du über glattem Wasser keine US-Höhenmessung machen
> können, weil der Schall nicht zum Flieger zurückreflektiert wird.
> Solange dein Neigungswinkel kleiner als der Öffnungswinkel deines
> Schallkegels ist, funktioniert dort aber die Höhenmessung. Das liegt
> daran, dass der erste zurückkommende Reflex als Höhe ausgewertet wird.
> Und der kommt von dem Punkt mit geringstem Abstand, i.e. vom Nadir. Nix
> mit cos() und Roll und Pitch.

Tja, eine absolut ebene Fläche dürfte eher der Extremfall sein. Du 
meinst, weil der Schall einfach im gleichen Winkel reflektiert wird 
kommt nichts mehr zum Empfänger zurück?

Dennoch vergrößert sich durch eine nicht senkrechte Abstrahlung die 
Laufzeit, was natürlich zu einem falschen (d.h. zu großen) Messergebnis 
führt!
Der Öffnungswinkel spielt sicherlich noch eine Rolle, das gebe ich zu.

von Schlumpf (Gast)


Lesenswert?

Aber ist ja egal.. bissle rumspielen macht Spass und schlau :-)
Und wenn es am Ende nicht so genau ist, wie erwartet, aber dennoch ein 
Effekt erkennbar ist, dann ist das doch auch schon gut.

von Martin (Gast)


Lesenswert?

Schlumpf schrieb:
> Aber ist ja egal.. bissle rumspielen macht Spass und schlau :-)
> Und wenn es am Ende nicht so genau ist, wie erwartet, aber dennoch ein
> Effekt erkennbar ist, dann ist das doch auch schon gut.

Genau...

Ich bin jedenfalls schon auf's Ergebnis gespannt.

Was für ein Kompass ist das eigentlich?

von GeneigterLeser (Gast)


Lesenswert?

Schlumpf schrieb:
> Und da der US weder ein Laserstrahl ist, noch exakt im gleichen Winkel
> zurückgeworfen wird, wie er auftrifft, wundere ich mich gerade ein
> wenig, dass du geschrieben hast, dass das mit dem Pitch bereits
> funktioniert hat.

Nun, die absolute Genauigkeit ist schwer zu beurteilen. Es ist aber so, 
dass der Fehler hiermit merklich verringert wird.

Und das gute ist, dass es um so besser funktioniert, desto niedriger man 
fliegt, wo es wiederum wichtiger ist...

Im Endeffekt alles nur Spielerei zwecks Erkenntnisgewinn :) Genauso wie 
die trigonometrischen Zusammenhänge auch nur für eine optimale 
Berechnung auf einem 8bit-AVR intressant sein kann, obwohl der das so 
oder so schafft.

von GeneigterLeser (Gast)


Lesenswert?

Ist ein PNI TCM3

von Martin (Gast)


Lesenswert?

> Ist ein PNI TCM3

Danke

von Aufrechter Leser (Gast)


Lesenswert?

GeneigterLeser schrieb:
> Dennoch vergrößert sich durch eine nicht senkrechte Abstrahlung die
> Laufzeit, was natürlich zu einem falschen (d.h. zu großen) Messergebnis
> führt!

Da der US nicht als Strahl sondern eher als (größerer) Teil einer 
Kugelwellen abgestrahlt wird, wird bei nicht zu extremer Fluglage 
immer ein Teil der Keule im Nadir auf den Boden treffen und 
reflektiert. Dieser Teil kommt zuerst am Empfänger an und sollte von der 
Auswerteelektronik als Impuls erkannt und in Abstand umgerechnet werden. 
Wenn die ermittelte Höhe von der Lage abhängt, ist wahrscheinlich die 
Flankendetektion im Empfänger nicht in Ordnung.
Leg den US-Sensor mal in einem großen Raum auf den Boden und lass ihn 
gegen die kahle Decke pingen. Und dann guck dir an, wie sich die 
Höhenausgabe ändert, wenn du den US-Geber neigst.

von GeneigterLeser (Gast)


Lesenswert?

Martin schrieb:
> Danke

Weil du dir nicht den ganzen Abend den Kopf zerbrochen hast um am Ende 
zu sehen, dass der Kompass nicht neigungskompensiert ist? ;)

von Amateur (Gast)


Lesenswert?

Nutz Dir die Neigungskompensation überhaupt etwas?

Ein bisschen Winkel berechnen im 3-dimensionalen Raum ist doch nicht das 
Problem.

Mit dem Ansatz kannst Du Dich im sterilen Labor oder bestenfalls in 
einer Turnhalle, bewegen.

Wenn das Teil in einer Kurve gegen ein Hindernis kracht: "Senkrecht 
gesehen war aber noch viel Platz", wirst Du den Unterschied 
kennenlernen.
Kein Problem wenn Du eine funktionsfähige Bremse implementiert hast;-)

von GeneigterLeser (Gast)


Lesenswert?

GeneigterLeser schrieb:
> Im Endeffekt alles nur Spielerei zwecks Erkenntnisgewinn :)

Turnhalle kommt schon sehr gut hin.

Aufrechter Leser schrieb:
> Leg den US-Sensor mal in einem großen Raum auf den Boden und lass ihn
> gegen die kahle Decke pingen. Und dann guck dir an, wie sich die
> Höhenausgabe ändert, wenn du den US-Geber neigst.

Ja, ändert sich.

von Martin (Gast)


Lesenswert?

GeneigterLeser schrieb:
> Martin schrieb:
>> Danke
>
> Weil du dir nicht den ganzen Abend den Kopf zerbrochen hast um am Ende
> zu sehen, dass der Kompass nicht neigungskompensiert ist? ;)

Nein war ein ganz ehrliches Danke :D

Die ganze 3D-Lageregelung interessiert mich eh. Vor allem im 
Zusammenhang mit der Singularitär im Gier-Nick-Roll-System bei 
senkrechtem Flug und der Umgehung des Problems mit Quaternionen.

Ich frage mich gerade ob man statt des senkrechten Abstandes des Sensors 
zur Oberfläche nicht besser den senkrechten Mindestabstand z.B. der 
Motorgondeln oder eines gedachten Kreises um den Kopter herum bestimmen 
sollte.

von Amateur (Gast)


Lesenswert?

>Ich frage mich gerade ob man statt des senkrechten Abstandes des Sensors
>zur Oberfläche nicht besser den senkrechten Mindestabstand z.B. der
>Motorgondeln oder eines gedachten Kreises um den Kopter herum bestimmen
>sollte.

Falscher Ansatz. Der gedachte, senkrechte Kreis um Deinen Flieger ist 
frei, sonst hättest Du das bereits gehört;-)

Ich unterstelle mal, dass der Bereich - vor Dir in Flugrichtung - viel 
interessanter ist.

Räumlich gesehen geht es um die Halbkugel, in Flugrichtung, vor Dir. 
Hiervon kannst Du, wie bereits gesagt, den Kreisbogen um den Flieger 
selbst ausklammern. Eventuell kannst Du sogar den Bereich: vorne, oben 
teilweise ignorieren, es sei denn Du willst gerade steigen.

von quadrokopterix (Gast)


Lesenswert?

wo ist denn beim qc die flugrichtung? Braucht es dann 6 sensoren?

von Amateur (Gast)


Lesenswert?

>wo ist denn beim qc die flugrichtung?

Wenn Du diese Frage mit: "nirgends" beantwortest, so musst Du einfach 
das gesamte Kugelvolumen rund um den qc betrachten.

Von der Sensorik und der dafür nötigen Rechenleistung eine echte 
Herausforderung.

Viel Spaß dabei.

von quadrokopterix (Gast)


Lesenswert?

Amateur schrieb:
> wo ist denn beim qc die flugrichtung?
>
> Wenn Du diese Frage mit: "nirgends" beantwortest, so musst Du einfach
> das gesamte Kugelvolumen rund um den qc betrachten.
>
> Von der Sensorik und der dafür nötigen Rechenleistung eine echte
> Herausforderung.
>
> Viel Spaß dabei.

Wohl eher überall! Sensorik ist nur für das gewicht ein problem, 
Rechenleistung ist heutzutage doch genug vorhanden. Ausserdem kann man 
ja die momentane flugrichtung priorisieren. Braucht halt nur genug 
Hirnschmalz...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.