Geschwindigkeit aus RMC

Allgemeine Fragen zu GPS und verwandten Themen

Moderator: Roland

Antworten
matlox

Geschwindigkeit aus RMC

Beitrag von matlox » 10.01.2007 - 16:58

Hallo,

ich habe mal eine bescheidene Frage:

ich wuerde gerne die x,y,z Geschwindigkeiten aus dem RMC Protokoll herausholen, (wobei die z Geschwindigkeit vernachlaessigt werden kann) ohne die Positionen und die Zeit zu betrachten und sich daraus die Geschwindigkeit zu berechnen. Also nur mit Hilfe der Geschwindigkeit SpeedOverGround und dem Kurs. Und da ist nun mein Problem. Wo liegt der Nullpunkt des Kurses, bzw. welches Koordinatensystem wird benutzt?

MfG

Benutzeravatar
Roland
Beiträge: 2055
Registriert: 18.02.2004 - 22:33
Wohnort: Wusterhausen(Dosse)

Beitrag von Roland » 11.01.2007 - 00:40

Hallo matlox,

nicht falsch verstehen:
Um diese Uhrzeit reicht es bei mir nur zu einem Querverweis:
http://www.kowoma.de/gpsforum/viewtopic.php?t=1007

Aber Morgen ... Morgen :twisted:

Gute Nacht
Roland

matlox

nachtrag

Beitrag von matlox » 11.01.2007 - 12:56

ich muss mich verbessern:
natuerlich ist die z geschwindigkeit wichtig. bei einem ecef koordinatensystem
ist fuer mich natuerlich auch die z geschwindigkeit wichtig. sorry, hab da an ein koerper-festes koordinatensystem gedacht, bei dem z dann nach unten zeigen wuerde und hab das dann vertauscht. bei ecef geht ja aber z durch den nordpol und den ursprung.
daher stehe ich nun wirklich vor einem problem. wie bekomme ich die dreidimensionale geschwindigkeit aus dem GPRMC protokoll? das kann ja nur klappen, wenn sich die geschwindigkeit auf das lla koordinatensystem bezieht, oder? also geschwindigkeit-länge und geschwindigkeit-breite oder liege ich da falsch? genauer geschwindigkeit nord und geschwindigkeit ost meinetwegen. wie komme ich nun davon auf meine xyz geschwindigkeiten? ich muss das ja in bezug zu der position setzen. weiss jemand rat oder hat ne seite mit ner umrechnungsformel? ;)

Benutzeravatar
Roland
Beiträge: 2055
Registriert: 18.02.2004 - 22:33
Wohnort: Wusterhausen(Dosse)

Beitrag von Roland » 11.01.2007 - 20:48

Hallo matlox,

vielleicht reden wir ein bißchen aneinander vorbei ?

$GPRMC
gibt nur die Geschwindigkeit über Grund. Aber immerhin in dem von Dir gewünschten LLA-System=Longitude-Latitude-Azimuth.
Steigen/Fallen müsstest Du aus einem anderen Datensatz über die Höhe ableiten.

Über den Nullpunkt der Kursangabe habe ich mir noch keine Gedanken gemacht. Ich nehme an, das Azimuth wird ein bißchen gemittelt ...

Grüße Roland

matlox

Beitrag von matlox » 12.01.2007 - 11:14

also, ich hol mal ein wenig weiter aus:

ich benoetige für ein inertiales messsystem einen observer fuer den kalman filter. das soll zum einen natuerlich die position ueber gps sein und zum anderen die geschwindigkeit ueber gps. da mein state space model bisher so aussieht, dass ich mir die geschwindigkeiten im ecef koordinatensystem berechne, muss der observer also auch die daten in diesem system liefern. ich habe leider noch kein nmea protokoll gefunden, das mir die geschwindigkeiten so liefert. nur eben im lat/lon modus und da fehlt dann immer die dritte geschwindigkeit.

so, kleine unterbrechung, ich hab nochmal geguckt. es gibt wirklich kein nmea protokoll, was mir die gewuenschte info bietet. ich koennte jetzt einen anderen gps empfaenger nutzen, der ein proprietäres protokoll nutzt, z.b. den tim-lp von u-blox, aber das ist alles nicht so klasse...
wahrscheinlich mach ich dann das kalman update nur ueber die position. hilft ja nix...

matlox

Beitrag von matlox » 12.01.2007 - 11:18

btw wen es interessiert:

von der geschwindigkeit nord/ost kommt man uebrigens mit einer diskreten cosinus matrix, die man aus dem laengen und breitengrad gebildet hat ins ecef koordinatensystem. leider fehlt dann ja, wie sollte es anders sein, die geschwindigkeit nach unten, daher wird die geschwindigkeitsangabe im ecef system nicht genau sein. muss dann wohl oder uebel, wie roland erwaehnte, ueber die hoehe ableiten....

Benutzeravatar
Roland
Beiträge: 2055
Registriert: 18.02.2004 - 22:33
Wohnort: Wusterhausen(Dosse)

Beitrag von Roland » 12.01.2007 - 19:36

Hallo,
btw wen es interessiert:
mich würde schon interessieren, wie so eine "diskrete Cosinus-Matrix" aussieht ?!

Aber beim Basteln einer GPS/INS-Einheit kann ich Dich nicht unterstützen. Allein die Filterverfahren sind mir z.B. nicht geläufig.

Grüße Roland

Benutzeravatar
Roland
Beiträge: 2055
Registriert: 18.02.2004 - 22:33
Wohnort: Wusterhausen(Dosse)

Beitrag von Roland » 13.01.2007 - 21:06

Hallo,

der einzige Filter, den ich seit Jahren gebrauche, um möglichst zeitnah ein brauchbares Ergebnis zu bekommen, ist der MELITTA-Filter ...
Bin auch samstags witzig :P

Roland

matlox

Beitrag von matlox » 17.01.2007 - 12:39

so eine diskrete consinus matrix kann ganz unterschiedlich aussehen. kommt eben drauf an was und wohin man drehen will.
wenn du z.b. vom NED-Koordinatensystem in das koerperfeste koordinatensystem übertragen willst, dann müsstest du folgende matrix verwenden: (ist in c#-code geschrieben, wenn es dich nicht stoert....)



Code: Alles auswählen

        /// <summary>
        /// This will construct a direction cosine matrix from 
        /// euler angles in the standard rotation sequence 
        /// [phi][theta][psi] from NED to body frame
        ///
        ///  body = tBL(3,3)*NED
        /// </summary>
        /// <param name="euler">vector</param>
        /// <returns>cosine matrix</returns>
        public int eulerDC(Vector euler, Matrix DCM)
        {
            double 	phi	= euler[0];
	        double 	theta	= euler[1];
	        double 	psi	= euler[2];

	        double	cpsi	= Math.Cos(psi);
	        double	cphi	= Math.Cos(phi);
	        double	ctheta	= Math.Cos(theta);

	        double	spsi	= Math.Sin(psi);
	        double	sphi	= Math.Sin(phi);
	        double	stheta	= Math.Sin(theta);

            

            DCM[0, 0] =  cpsi * ctheta;
            DCM[0, 1] =  spsi * ctheta;
            DCM[0, 2] = -stheta;

            DCM[1, 0] = -spsi * cphi + cpsi * stheta * sphi;
            DCM[1, 1] =  cpsi * cphi + spsi * stheta * sphi;
            DCM[1, 2] =  ctheta * sphi;

            DCM[2, 0] =  spsi * sphi + cpsi * stheta * cphi;
            DCM[2, 1] = -cpsi * sphi + spsi * stheta * cphi;
            DCM[2, 2] =  ctheta * cphi;

            return 0;

        }
hier bezieht sich die matrix auf die euler winkel.
hilfreich dazu: http://de.wikipedia.org/wiki/Eulerwinkel
apropos, haeufig verwendet man auch die quaternionen-schreibweise dafür, da bei den eulerwinkeln singularitäten auftreten können...dann wird die matrix noch ein wenig interessanter.

grüße

Benutzeravatar
Roland
Beiträge: 2055
Registriert: 18.02.2004 - 22:33
Wohnort: Wusterhausen(Dosse)

Beitrag von Roland » 17.01.2007 - 23:52

Hallo matlox,

jetzt kann ich vielleicht wirklich einen Hinweis geben:

Es tauchen zwei Bezeichnungen auf: Diskrete und direction cosine matrix.

Eine
diskrete cosinus matrix
habe ich allenfalls im Zusammenhang mit Rasterbild-Operationen gefunden. Ich bin ein neugieriger Mensch und wollte wissen, was das ist. Fand aber eben nichts, was mit Koordinaten-Transformation in Zusammenhang stand sondern z.B.
http://www.info.uni-karlsruhe.de/~rubin ... al/dct.pdf

Meinst Du eine direction cosine matrix wie es im Code steht ?
Die im Code gezeigte Matrix kenne ich unter dem Begriff "Rotations-Matrix". Und in meinem Torge (2001) "Geodesy" steht dafür der englische Begriff "rotation matrix" (so einfach kann Englisch sein :) ).

Sowas kann passieren, wenn zwei Fachrichtungen aufeinander treffen ...

Das mit den Quaternionen hatten wir hier schonmal gesteckt bekommen ... ich drücke mich aber vor einer Einarbeitung; besser gesagt, ich drücke mich vor einem Umdenken ...

Grüße Roland

Benutzeravatar
Roland
Beiträge: 2055
Registriert: 18.02.2004 - 22:33
Wohnort: Wusterhausen(Dosse)

Beitrag von Roland » 20.01.2007 - 12:35

Noch ein Hinweis:

http://en.wikipedia.org/wiki/Rotation_matrix

letzter Absatz.

Roland

Antworten