Greetings. For anyone familiar with GPStk... I am using GPStk in a positioning project but strangely I'm having problems to use the broadcast ephemerides.
I was trying to extract the satellites position from the broadcast navigation message using an GPSEphemerisStore? <http://www.gpstk.org/bin/edit/Forum/GPSEphemerisStore?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49> object like in example 4. But then when trying to use the function .getXvt(prn, t) the program crashes (although no error is detected in code before compilation), with the following message: "Non processed exception: InteropServices? <http://www.gpstk.org/bin/edit/System/Runtime/InteropServices?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49>.SEHException: The external component activated an exception. in gpstk.OrbitEph.svXvt( OrbitEph? <http://www.gpstk.org/bin/edit/Forum/OrbitEph?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49>* , Xvt* , CommonTime? <http://www.gpstk.org/bin/edit/Forum/CommonTime?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49>* ) in main() em c:\users\user\documents\visual studio 2012\projects\gnssrelpos\g nssrelpos\main.cpp:line 143 in mainCRTStartup() Press key to continue . . ." I already used this approach successfully a few years ago in another project using version 1.6 of GPStk. I tried to investigate a little bit the origin of the problem by making a few tests: code: RinexNavStream? <http://www.gpstk.org/bin/edit/Forum/RinexNavStream?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49> rin_nav(nav_path.c_str()); RinexNavData? <http://www.gpstk.org/bin/edit/Forum/RinexNavData?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49> nav_data; while (rin_nav >> nav_data) BcEStore? <http://www.gpstk.org/bin/edit/Forum/BcEStore?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49>.addEphemeris(nav_data); SatID? <http://www.gpstk.org/bin/edit/Forum/SatID?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49> s(23, SatID? <http://www.gpstk.org/bin/edit/Forum/SatID?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49>::systemGPS); CommonTime? <http://www.gpstk.org/bin/edit/Forum/CommonTime?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49> t = BcEStore? <http://www.gpstk.org/bin/edit/Forum/BcEStore?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49>.getInitialTime(); const OrbitEph? <http://www.gpstk.org/bin/edit/Forum/OrbitEph?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49> *eph = BcEStore? <http://www.gpstk.org/bin/edit/Forum/BcEStore?topicparent=Forum.DiscussionForumArticle2014x09x03x09x49>.findOrbitEph(s, t); cout << "test: " << eph->asString() << endl; cout << "test2: " << eph->ecc << endl; cout << "test3: " << eph->svClockBias(t) << endl; cout << "test4: " << eph->isValid(t) << endl; Xvt sv = eph->svXvt(t); cout << "x = " << sv.x[0] << endl; These tests resulted in the following output: test: EPH G23 | 2011 74 12:00:00 | 74 12:00:00 | 74 12:00:00 | 74 14:00:00 | 74 12:00:00 | 71 | 71 | 0 test2: 0.00703742 test3: 0.00032 test4: 0 All of which are consistent with the nav file. After that the program crashes and the exception message appears. Has anyone had similar difficulties using broadcast ephemerides? I suspect it may be some glitch in the classes involved from one of the version updates between 1.6 and the current 2.4 version. So, before diving into the code itself I was wondering if anyone has noticed this issue also. Thank you Sérgio Santos
_______________________________________________ This message is sent to you from [email protected] mailing list. Visit http://lists.osgeo.org/mailman/listinfo/foss-gps to manage your subscription For more information, check http://wiki.osgeo.org/wiki/FOSS-GPS
