Verfasst am: 07.06.2010, 08:32
Titel: GPS-Tracking in Matlab
Hallo,
ich bin neu hier und habe in der Suche nichts passendes gefunden.
Ich muss für eine Studienarbeit ein GPS-Signal in Matlab einlesen.
Ich bin soweit dass ich das Signal bekomme:
% create a object with serial port for gps device
gps = instrfind('Type','serial','Port', 'COM5', 'Tag', '');
ifisempty(gps)
gps = serial('COM5');
else fclose(gps);
gps = gps(1);
end fopen(gps); %connect object to serial port
set(gps, 'BaudRate', 57600);
% get data from GPGGA (Global positioning system fix data) whileisempty(strmatch('$GPGGA',info))
info = fscanf(gps);
end
data = textscan(info,'%s%f%f%c%f%c',1,'delimiter',',');
% get data from GPVTG (Track made good and ground speed) whileisempty(strmatch('$GPVTG',info))
info = fscanf(gps);
end
data = textscan(info,'%s%f%c%f%c%f%c%f%c',1,'delimiter',',');
Wie gesagt, ich befasse mich erst seit kurzem mit dem ganzen Thema, bin jetzt aber soweit, dass ich das Signal einlesen kann.
Nun ist meine Aufgabe die Entfernung zwischen den eingelesenen GPS-Daten mit weiteren fest vorgegebenen GPS-Daten zu berechnen. Dies möchte ich mich oben aufgeführter Formel berechnen, allerdings kommt beim Ausführen des Programms folgender Fehler:
"??? Undefined function or method 'sin' for input arguments of type 'char'.
Error in ==> GPS at 53
x_gps = (arccos(sin(lat_B)*sin(lat_A) + cos(lat_B)*cos(lat_A)*cos(long_B -long_A)));"
Was muss ich ändern damit die Funktion Sinuns und Cosinus verarbeitet werden kann?
Ziel dieses Programmes ist es kontinuierlich den Abstand zwischen den eingelesenen und den fest vorgegebenen GPS-Daten zu berechnen und bei bestimmten Entfernung Meldungen anzuzeigen. Nun erfasst dieses Programm aber nur einmalig die GPS-Daten und gibt mir ein Ergebnis aus.
Gibt es die Möglichkeit dies so umzuschreiben, dass es sozusagen live mitläuft?
Ich hoffe ihr könnt mir helfen und ich bin im richtigen Thema.
Vielen Dank schon mal für eure Hilfe.
du hast ja zuvor lat_A und lat_B in STRING konvertiert,
SINUS-Fkt braucht aber Werte in Double, also STR2DOUBLE oder NUM2STR verwenden, um in DOUBLE-Werte zurückzukonvertieren.
Vielen Dank, da war der Fehler.
Gibt es die Möglichkeit das Programm "live" mitlaufen zu lassen, so dass die Entfernung immer berechnet wird und ich bei unterschreiten eines bestimmten Wertes Meldungen ausgeben kann?
Vielen Dank
MfG
Markus
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 07.07.2010, 09:10
Titel:
Hallo,
habe ein Programm gefunden, welches dir weiterhelfen könnte. Allerdings bekomme ich es nicht zum laufen. Beim Ausführen kommt folgender Fehler:
Code:
> In OpenGPS at 6
??? Error using ==> ReadPacketHeader at 9
Expecting DLE at head of incoming packet, received ASCII 36
Error in ==> ReadPacket at 14 [id, sz] = ReadPacketHeader(gps);
Error in ==> WritePacketTerminator at 20 [pid] = ReadPacket(gps);
Error in ==> WritePacket at 24
WritePacketTerminator(gps, id, data, type);
das ist genau das was ich brauche, leider bekomme ich beim ausführen des programms den gleichen fehler.
vielleicht kann ja mal jemand drüber schauen und weiter helfen.
vielen dank
markus
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.