goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

Differentialgleichungen mit MathCad und MATLAB

Fachkräfte:
Testingenieur (w/m) Konfigurationswerkzeuge für Echtzeitsysteme
Einbinden von Simulink®-Simulationsmodellen, Verteilung der Simulationsmodelle auf Multicore- und Multiprozessorsysteme
dSPACE GmbH - Paderborn

Entwicklungsingenieur Emissions-Modellierung (m/w)
Erstellung Modellstrukturen in Matlab/Simulink zur Abbildung von Abgasanlagen
MBtech Group GmbH & Co. KGaA - Stuttgart

Projektleiter Embedded Software / Software Projektleiter (m/w)
Planung und Steuerung für modellbasierte Software-Entwicklungsaufgaben
MBtech Group GmbH & Co. KGaA - Sindelfingen bei Stuttgart

Entwicklungsingenieur/-in Vorentwicklung - Elektronik & Regelungssysteme
Erstellung und Testen von Schaltungskonzepten
Behr GmbH & Co. KG - Stuttgart

Senior Softwareingenieur/in für Erstellung, Wartung und Pflege von Softwarespezifikationen
Betreuung und Support der Standardsoftware
ESG Elektroniksystem- und Logistik-GmbH - Ingolstadt

weitere Angebote

Partner:




Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

GPS-Tracking in Matlab

 

aemkey
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 07.06.10
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 07.06.2010, 08:32     Titel: GPS-Tracking in Matlab
  Antworten mit Zitat      
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:
Code:
%
function [UTC lat_A lat_B long_A long_B x_gps velocity course] = GPS()

% create a object with serial port for gps device
gps = instrfind('Type','serial','Port', 'COM5', 'Tag', '');
if isempty (gps)
    gps = serial('COM5');
else
    fclose(gps);
    gps = gps(1);
end
fopen(gps); %connect object to serial port
set(gps, 'BaudRate', 57600);

info = fscanf(gps);

% get data from GPGGA (Global positioning system fix data)
while isempty(strmatch('$GPGGA',info))
    info = fscanf(gps);
end
data = textscan(info,'%s%f%f%c%f%c',1,'delimiter',',');

% compute UTC(HHMMSS.SSS), Universal Time Coordinated
hour = floor(data{2}/10000);
minute = floor((data{2}-hour*10000)/100);
second = round(data{2}-floor(data{2}/100)*100);
UTC = strcat(num2str(hour),':',num2str(minute),':',num2str(second));

%compute latitude(DDMM.MMM) and longitude(DDDMM.MMMM)
degree = floor(data{3}/100);
decimal = round((data{3}-degree*100)/60*10^6)/10^6;
lat_A = strcat(num2str(degree+decimal),data{4});

degree= floor(data{5}/100);
decimal = round((data{5}-degree*100)/60*10^6)/10^6;
long_A = strcat(num2str(degree+decimal),data{6});

% get data from GPVTG (Track made good and ground speed)
while isempty(strmatch('$GPVTG',info))
    info = fscanf(gps);
end
data = textscan(info,'%s%f%c%f%c%f%c%f%c',1,'delimiter',',');

% compute velocity(km/h) and course
velocity = data{8};
course = data{2};

% GPS-Koordinaten der Ampel
lat_B = 52;
long_B = 14;

% Entfernung zwischen GPS-Signalen
x_gps = arccos(sin(lat_B)*sin(lat_A) + cos(lat_B)*cos(lat_A)*cos(long_B - long_A));

% Display the results
disp({UTC,lat_A,long_A,lat_B,long_B,velocity, course});

end

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.

MfG
Markus
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter
Supporter


Beiträge: 2407
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2007b, R2009b
     Beitrag Verfasst am: 07.06.2010, 09:59     Titel:
  Antworten mit Zitat      
Hallo

Code:

% Entfernung zwischen GPS-Signalen
x_gps = arccos(sin(lat_B)*sin(lat_A) + cos(lat_B)*cos(lat_A)*cos(long_B - long_A));
 


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
aemkey
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 07.06.10
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 08.06.2010, 08:25     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2010, 09:10     Titel:
  Antworten mit Zitat      
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);

Error in ==> OpenGPS at 16
 

Aber vielleicht findest du ja den Fehler oder hier kann jemand helfen.
Gruß

SerialGPS.zip
 Beschreibung:

Download
 Dateiname:  SerialGPS.zip
 Dateigröße:  16.8 KB
 Heruntergeladen:  63 mal
 
aemkey
Forum-Newbie
Forum-Newbie

Beiträge: 4
Anmeldedatum: 07.06.10
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 08.07.2010, 17:52     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.