Javascript ve webgeocalc API kullanarak MSL EDL yörüngesi nasıl alınır?

Jan 18 2021

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

1 jumpjack Jan 19 2021 at 15:30

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

)