Wie rufe ich die MSL EDL-Trajektorie mit Javascript und der Webgeocalc-API ab?
Ich habe ein " Javascript-Gateway" zu NASA SPICE-Daten gefunden , die Web-API "webgeocalc":
https://wgc2.jpl.nasa.gov:8443/webgeocalc/example/perform-calculation.html
Es funktioniert sowohl online als auch offline (aber offline muss ich eine Problemumgehung für die CORS-Richtlinie verwenden ), aber ich kann keine Daten für die EDL-Trajektorie des Mars Science Laboratory abrufen.
Für einen von vielen Versuchen habe ich diese Eingabe verwendet:
{
"kernels": [
{
"type": "KERNEL",
"path": "pds/wgc/kernels/lsk/naif0012.tls"
},
{
"type": "KERNEL",
"path": "pds/wgc/kernels/spk/de430.bsp"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/sclk/MSL_76_SCLKSCET.00017.tsc"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/sclk/msl_lmst_ops120808_v1.tsc"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/pck/pck00008.tpc"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/spk/msl_cruise.bsp"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/spk/msl_edl_v01.bsp"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/spk/msl_ls_ops120808_iau2000_v1.bsp"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/spk/msl_atls_ops120808_v1.bsp"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/fk/msl_v08.tf"
},
{
"type": "KERNEL",
"path": "/MSL/kernels/spk/mar085s.bsp"
}
],
"timeSystem": "UTC",
"timeFormat": "CALENDAR",
"times": [
"2012-08-06T05:00:00.000"
],
"timeStep": 1,
"timeStepUnits": "SECONDS",
"calculationType": "STATE_VECTOR",
"targetType": "FIXED_POINT",
"targetLocation": {
"centerBody": "-76030",
"referenceFrame": "MSL_TOPO",
"coordinateRepresentation": "RECTANGULAR",
"x": 0,
"y": 0,
"z": 248.3
},
"observerType": "OBJECT",
"observer": "MARS",
"referenceFrame": "MSL_TOPO",
"frameLocus": "OBSERVER",
"aberrationCorrection": "NONE",
"stateRepresentation": "RECTANGULAR"
}
Aber ich erhalte diesen Fehler ("Unzureichende Ephemeridendaten wurden geladen"):
{
"status": "ERROR",
"message": "The request has failed.",
"calculationId": "cbcab756-f854-41d1-95e2-077b840155ec",
"error": {
"shortDescription": "CSPICE_N0066: CSPICE.spkcpt: SPICE(SPKINSUFFDATA): [spkcpt_c --> SPKCPT --> SPKCVT --> ZZSPKFZT --> SPKGEO] Insufficient ephemeris data has been loaded to compute the state of -76030 (MSL_DESCENT_STAGE) relative to 499 (MARS) at the ephemeris epoch 2012 AUG 01 05:01:07.183."
}
}
Dieser Kernel enthält alle für MSL verfügbaren Referenzrahmen:
https://naif.jpl.nasa.gov/pub/naif/MSL/kernels/fk/msl_v08.tf
Zum Beispiel:
Landing site and sites:
-----------------------
MSL_LANDING_SITE -76900
MSL_SITE_1...399 -76501...-76899
Cruise and descent stages and the rover:
----------------------------------------
MSL -76
MSL_ROVER -76000
MSL_SPACECRAFT -76010
MSL_CRUISE_STAGE -76020
MSL_DESCENT_STAGE -76030
MSL_ROVER_MECH -76040
MSL_CACS -76050
MSL_DIMU_A -76031
Daten sollten für ein bestimmtes Datum verfügbar sein, da NASA Horizons sie bereitstellen kann:http://win98.altervista.org/space/exploration/3d/space-explorer-tracker.html?orbiter=-76&body=@499&start=2012-08-06%2005:10:04&stop=2012-08-06%2005:19:00&step=1m
Ich habe die in diesem Beispiel aufgeführten Kernel aus der Timecraft.js-Bibliothek eingefügt, aber vielleicht fehlen mir noch einige:
https://github.com/NASA-AMMOS/timecraftjs/blob/master/example/index.js
Kernel-Pfade (Webgeocalc-Schnittstelle vs. NASA-NAIF-Server vs. Webgeocal-Server):
- "MSL/" -->https://naif.jpl.nasa.gov/pub/naif/MSL/--> /group/naif/critical/naifweb/pub/naif/MSL
- "pds/wgc/kernels/" -->https://naif.jpl.nasa.gov/pub/naif/generic_kernels/--> /group/naif/critical/naifweb/pub/naif/pds/wgc/kernels/
Antworten
Nach Dutzenden von Tests fand ich den Weg.
Nutzlast, die über die POST-Abfrage gesendet werden soll:
{
"kernels": [
{
"type": "KERNEL",
"path": "pds/wgc/mk/latest_lsk_v0004.tm"
},
{
"type": "KERNEL",
"path": "pds/data/msl-m-spice-6-v1.0/mslsp_1000/extras/mk/msl_v25.tm"
}
],
"timeSystem": "UTC",
"timeFormat": "CALENDAR",
"intervals": [
{
"startTime": "2012-08-06T05:10:00",
"endTime": "2012-08-06T05:19:00"
}
],
"timeStep": 1,
"timeStepUnits": "SECONDS",
"calculationType": "STATE_VECTOR",
"target" : "-76000",
"targetType": "OBJECT",
"observer": "MARS",
"observerType": "OBJECT",
"referenceFrame": "IAU_MARS",
"frameLocus": "OBSERVER",
"aberrationCorrection": "NONE",
"stateRepresentation": "RECTANGULAR"
}
Bitte beachten Sie, dass angegebene Kernel keine echten Kernel sind, sondern Listen von Kerneln:
Inhalt von pds/wgc/mk/latest_lsk_v0004.tm (https://naif.jpl.nasa.gov/pub/naif/pds/wgc/mk/latest_lsk_v0004.tm)
KPL/MK
This meta-kernel lists the latest generic LSK file available at the time
when this meta-kernel was created.
\begindata
PATH_VALUES = (
'../kernels'
)
PATH_SYMBOLS = (
'DATA'
)
KERNELS_TO_LOAD = (
'$DATA/lsk/naif0012.tls'
)
\begintext
Inhalt von pds/data/msl-m-spice-6-v1.0/mslsp_1000/extras/mk/msl_v25.tm (https://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000/extras/mk/msl_v25.tm) (wahrscheinlich sind nicht alle diese Kernel für EDL notwendig):
\begindata
PATH_VALUES = ( './data' )
PATH_SYMBOLS = ( 'KERNELS' )
KERNELS_TO_LOAD = (
'$KERNELS/lsk/naif0012.tls' '$KERNELS/pck/pck00008.tpc'
'$KERNELS/sclk/msl_lmst_ops120808_v1.tsc' '$KERNELS/sclk/msl_76_sclkscet_refit_s2.tsc'
'$KERNELS/fk/msl_v08.tf'
'$KERNELS/ik/msl_aux_v00.ti' '$KERNELS/ik/msl_chrmi_20120731_c03.ti'
'$KERNELS/ik/msl_hbla_20120731_c03.ti' '$KERNELS/ik/msl_hblb_20120731_c03.ti'
'$KERNELS/ik/msl_hbra_20120731_c03.ti' '$KERNELS/ik/msl_hbrb_20120731_c03.ti'
'$KERNELS/ik/msl_hfla_20120731_c03.ti' '$KERNELS/ik/msl_hflb_20120731_c03.ti'
'$KERNELS/ik/msl_hfra_20120731_c03.ti' '$KERNELS/ik/msl_hfrb_20120731_c03.ti'
'$KERNELS/ik/msl_mahli_20120731_c02.ti' '$KERNELS/ik/msl_mardi_20120731_c02.ti'
'$KERNELS/ik/msl_ml_20120731_c03.ti' '$KERNELS/ik/msl_mr_20120731_c03.ti'
'$KERNELS/ik/msl_nla_20120731_c04.ti' '$KERNELS/ik/msl_nlb_20130530_c05.ti'
'$KERNELS/ik/msl_nra_20120731_c04.ti' '$KERNELS/ik/msl_nrb_20130530_c05.ti'
'$KERNELS/ik/msl_struct_v01.ti' '$KERNELS/spk/msl_struct_v02.bsp'
'$KERNELS/spk/de425s.bsp' '$KERNELS/spk/mar085s.bsp'
'$KERNELS/spk/msl_cruise_v1.bsp' '$KERNELS/spk/msl_edl_v01.bsp'
'$KERNELS/spk/msl_ls_ops120808_iau2000_v1.bsp'
(...cut.... rover kernels for each sol ..... cut ...)
Geben Sie die obige Nutzlast in diese Seite ein und klicken Sie auf BERECHNUNG SENDEN. Sobald die Ergebnisse fertig sind, erhalten Sie eine Berechnungs-ID; Klicken Sie auf ERGEBNISSE ERHALTEN, um die Antwort herunterzuladen.
Die Seite funktioniert auch offline, solange Sie diese Zeile hinzufügen:
baseURL = "https://cors-anywhere.herokuapp.com/https://wgc2.jpl.nasa.gov:8443/webgeocalc/api/";
nach diesem:
var baseURL = ourLocation.substring(0, splicePoint) + "/api/"
Wie es funktioniert:
Rufen Sie die Funktion performRequest(urlSuffix, payload, onComplete) ein erstes Mal mit performRequest("calculation/new", payloadText, showProgress) auf, was bedeutet, dass showProgress() aufgerufen wird, sobald die Antwort empfangen wird; Die vorläufige Antwort sieht so aus (nach Abschluss der Berechnung):
{
"status": "OK",
"message": "The request was successful.",
"calculationId": "7a304773-50f2-45c1-bb5a-bfd9fcbd063c",
"result": {
"phase": "COMPLETE",
"expiresIn": 600
}
}
Sie sollten "Phase" überprüfen, während es von "LOADING KERNELS" zu "COMPLETE" übergeht.
Sobald die Berechnung abgeschlossen ist, enthält die Antwort den Bezeichner („calculationId“), der zum Anfordern der eigentlichen Antwort mit Ergebnissen verwendet werden soll, die nur für „expiresIn“-Sekunden verfügbar sind.
Um die Berechnungsergebnisse anzufordern, rufen Sie erneut performRequest(urlSuffix, payload, onComplete) von performRequest("calculation/" + computeID + "/results, null, showProgress) auf.
In der endgültigen Antwort ist response.columns ein Array der Spalten Ihrer Daten.
== Zusätzliche Anmerkungen ==
Kernelhttps://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000/data/fk/msl_v08.tfenthält die Liste der verfügbaren Referenzrahmen für MSL; am wichtigsten sind:
- MSL_LANDING_SITE -76900
- MSL_SITE_1...399 -76501...-76899
- MSL-76
- MSL_ROVER -76000
- MSL_SPACECRAFT -76010 (Skycrane + Rover + Backshell + Hitzeschild?)
- MSL_CRUISE_STAGE -76020
- MSL_DESCENT_STAGE -76030 (Skycrane oder Skycrane + Rover?)
- MSL_ROVER_MECH -76040
- MSL_CACS -76050 (Rahmen MSL Cruise ACS (Attitude Control System?))
- MSL_DIMU_A -76031 (Abstiegsstufe IMU)
Eine bestimmte Seite zum Herunterladen von EDL-Daten erstellt:
http://win98.altervista.org/space/exploration/EDL/(speziellhttp://win98.altervista.org/space/exploration/EDL/edl-retriever.html
)