Javascript ve webgeocalc API kullanarak MSL EDL yörüngesi nasıl alınır?
NASA SPICE verilerine bir " javascript ağ geçidi" , "webgeocalc" web api'si buldum:
https://wgc2.jpl.nasa.gov:8443/webgeocalc/example/perform-calculation.html
Hem çevrimiçi hem de çevrimdışı çalışıyor (ancak çevrimdışı CORS politikası için bir geçici çözüm kullanmam gerekiyor ), ancak Mars Bilim Laboratuvarı EDL yörüngesi için veri alamıyorum.
Birçok denemeden biri için bu girişi kullandım:
{
"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"
}
Ancak şu hatayı alıyorum ("Yetersiz efemeris verisi yüklendi"):
{
"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."
}
}
Bu çekirdek, MSL için kullanılabilen tüm referans çerçevelerini içerir:
https://naif.jpl.nasa.gov/pub/naif/MSL/kernels/fk/msl_v08.tf
Örneğin:
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
NASA Horizons bunları sağlayabildiğinden, veriler belirtilen tarih için mevcut olmalıdır: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
Bu örnekte listelenen çekirdekleri Timecraft.js kitaplığından ekledim, ancak belki hala bazılarını özlüyorum:
https://github.com/NASA-AMMOS/timecraftjs/blob/master/example/index.js
Çekirdek yolları (webgeocalc arabirimi ve NASA NAIF sunucusu ve webgeocal sunucusu):
- "MSL/" -->https://naif.jpl.nasa.gov/pub/naif/MSL/--> /group/naif/critical/naifweb/pub/naif/MSL
- "pds/wgc/çekirdekler/" -->https://naif.jpl.nasa.gov/pub/naif/generic_kernels/--> /group/naif/critical/naifweb/pub/naif/pds/wgc/kernels/
Yanıtlar
Onlarca denemeden sonra yolu buldum.
POST sorgusu üzerinden gönderilecek yük:
{
"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"
}
Lütfen belirtilen çekirdeklerin gerçek çekirdekler değil, aslında çekirdek listeleri olduğunu unutmayın:
pds /wgc/mk/latest_lsk_v0004.tm'nin içeriği (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
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) (muhtemelen tüm bu çekirdekler EDL için gerekli değildir):
\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 ...)
Yukarıdaki yükü bu sayfaya koyun ve HESAPLAMAYI GÖNDER'e tıklayın. Sonuçlar hazır olduğunda bir hesaplama kimliği alacaksınız; yanıtı indirmek için SONUÇLARI AL'a tıklayın.
Bu satırı eklediğiniz sürece sayfa çevrimdışı da çalışır:
baseURL = "https://cors-anywhere.herokuapp.com/https://wgc2.jpl.nasa.gov:8443/webgeocalc/api/";
bundan sonra:
var baseURL = ourLocation.substring(0, splicePoint) + "/api/"
Nasıl çalışır:
İlk kez kullanarak performRequest(urlSuffix, payload, onComplete) işlevini çağırınperformRequest("hesaplama/yeni", payloadText, showProgress) çağırın ; bu, yanıt alındığında showProgress() öğesinin çağrılacağı anlamına gelir; ön yanıt şöyle görünecektir (hesaplama tamamlandıktan sonra):
{
"status": "OK",
"message": "The request was successful.",
"calculationId": "7a304773-50f2-45c1-bb5a-bfd9fcbd063c",
"result": {
"phase": "COMPLETE",
"expiresIn": 600
}
}
ÇEKİRDEĞİ YÜKLENİYOR'dan TAMAM'a geçerken "faz"ı kontrol etmelisiniz.
Hesaplama tamamlandıktan sonra yanıt, yalnızca "expiresIn" saniyeleri için geçerli olacak sonuçlarla birlikte gerçek yanıtı istemek için kullanılacak tanımlayıcıyı ("hesaplamaId") içerecektir.
Hesaplama sonuçlarını istemek için , performRequest("hesaplama/" + hesaplamaID + "/results, null, showProgress ) tarafından performRequest (urlSuffix, payload, onComplete) öğesini tekrar çağırın.
Son yanıtta, answer.columns, verilerinizin sütunlarının bir dizisi olacaktır.
== Ek notlar ==
Çekirdekhttps://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000/data/fk/msl_v08.tfMSL için mevcut referans çerçevelerinin listesini içerir; en önemlileri:
- MSL_LANDING_SITE -76900
- MSL_SITE_1...399 -76501...-76899
- MSL -76
- MSL_ROVER -76000
- MSL_SPACECRAFT -76010 (skycrane + gezici + arka kabuk + ısı kalkanı?)
- MSL_CRUISE_STAGE -76020
- MSL_DESCENT_STAGE -76030 (skycrane veya skycrane + gezici?)
- MSL_ROVER_MECH -76040
- MSL_CACS -76050 (MSL Cruise ACS (Attitude Control System?) çerçevesi)
- MSL_DIMU_A -76031 (İniş Aşaması IMU)
EDL verilerini indirmek için belirli bir sayfa oluşturuldu:
http://win98.altervista.org/space/exploration/EDL/(özelliklehttp://win98.altervista.org/space/exploration/EDL/edl-retriever.html
)