जावास्क्रिप्ट और webgeocalc एपीआई का उपयोग करके MSL EDL प्रक्षेपवक्र कैसे प्राप्त करें?

Jan 18 2021

मुझे NASA SPICE डेटा , "वेबजैक" वेब एपी के लिए " जावास्क्रिप्ट गेटवे" मिला :

https://wgc2.jpl.nasa.gov:8443/webgeocalc/example/perform-calculation.html

यह ऑनलाइन और ऑफलाइन (लेकिन ऑफ़लाइन मुझे कोरस पॉलिसी के लिए वर्कअराउंड का उपयोग करना है ) दोनों काम करता है , लेकिन मुझे मंगल विज्ञान प्रयोगशाला ईडीएल प्रक्षेपवक्र के लिए डेटा नहीं मिल सकता है।

कई प्रयासों में से एक के लिए मैंने इस इनपुट का उपयोग किया:

{
  "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"
}

लेकिन मुझे यह त्रुटि मिल रही है ("अपर्याप्त पंचांग डेटा लोड किया गया है"):

{
  "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."
  }
}

इस कर्नेल में MSL के लिए सभी संदर्भ फ्रेम उपलब्ध हैं:

https://naif.jpl.nasa.gov/pub/naif/MSL/kernels/fk/msl_v08.tf

उदाहरण के लिए:

   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

डेटा निर्दिष्ट तिथि के लिए उपलब्ध होना चाहिए, क्योंकि नासा होराइजन्स उन्हें प्रदान करने में सक्षम है: 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

मैंने टिमकेप्ट.जेएस लाइब्रेरी से इस उदाहरण में सूचीबद्ध गुठली को शामिल किया, लेकिन शायद मैं अभी भी कुछ याद कर रहा हूं:

https://github.com/NASA-AMMOS/timecraftjs/blob/master/example/index.js

केर्नेल पथ (नासा NAIF सर्वर बनाम वेबगेकल सर्वर)

  • "एमएसएल /" -> https://naif.jpl.nasa.gov/pub/naif/MSL/ -> / समूह / naif / महत्वपूर्ण / naifweb / पब / naif / MSL
  • "pds / wgc / kernels /" -> https://naif.jpl.nasa.gov/pub/naif/generic_kernels/ -> / समूह / naif / महत्वपूर्ण / naifweb / पब / naif / pds / wgc / गुठली /

जवाब

1 jumpjack Jan 19 2021 at 15:30

दर्जनों परीक्षण के बाद, मुझे रास्ता मिल गया।

POST क्वेरी पर भेजा जाने वाला पेलोड:

{
  "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"
}

कृपया ध्यान दें कि निर्दिष्ट गुठली असली गुठली नहीं है, लेकिन वास्तव में गुठली की सूची:

की सामग्री सार्वजनिक वितरण प्रणाली / डब्लूजीसी / 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

 

की सामग्री सार्वजनिक वितरण प्रणाली / डेटा / एम एस एल-एम-मसाला-6-v1.0 / mslsp_1000 / अतिरिक्त / 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 ) (शायद ये सभी कर्नेल EDL के लिए आवश्यक नहीं हैं):

 \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 ...)

इस पृष्ठ में पेलोड से ऊपर रखें और SUBMIT CALCULATION पर क्लिक करें। एक बार परिणाम तैयार हो जाने के बाद, आपको एक गणना आईडी मिलेगी; प्रतिक्रिया डाउनलोड करने के लिए GET परिणाम पर क्लिक करें।

जब तक आप यह पंक्ति जोड़ते हैं, तब तक पृष्ठ ऑफ़लाइन भी काम करता है:

baseURL = "https://cors-anywhere.herokuapp.com/https://wgc2.jpl.nasa.gov:8443/webgeocalc/api/"; 

इसके बाद एक:

var baseURL = ourLocation.substring(0, splicePoint) + "/api/"

यह काम किस प्रकार करता है:

कॉल फ़ंक्शन PerformRequest (urlSuffix, पेलोड, onComplete) पहली बार PerformRequest ("गणना / नया", पेलोडटेक्स्ट, शोप्रोअर) का उपयोग करके , जिसका अर्थ है कि शोप्रोग्रेस () प्रतिक्रिया प्राप्त होने के बाद कॉल किया जाएगा; प्रारंभिक प्रतिक्रिया की तरह दिखेगा (एक बार गणना पूरी हो गई है):

{
  "status": "OK",
  "message": "The request was successful.",
  "calculationId": "7a304773-50f2-45c1-bb5a-bfd9fcbd063c",
  "result": {
    "phase": "COMPLETE",
    "expiresIn": 600
  }
}

आपको "चरण" की जाँच करनी चाहिए, जबकि यह "LOADING KERNELS" से "COMPLETE" तक जाता है।

एक बार गणना पूरी हो जाने के बाद, प्रतिक्रिया में पहचानकर्ता ("गणनाआईडीडी") होगा, जिसका उपयोग परिणामों के साथ वास्तविक प्रतिक्रिया का अनुरोध करने के लिए किया जाएगा, जो केवल "समाप्ति" सेकंड के लिए उपलब्ध होगा।

गणना के परिणामों का अनुरोध करने के लिए, फिर से PerformRequest ("गणना /" + गणनाआईडी + "/ परिणाम, अशक्त, शोप्रोग्रेस) द्वारा पुर्नप्रदर्शन (urlSuffix, पेलोड , onComplete) पर कॉल करें।

अंतिम प्रतिक्रिया में, response.columns आपके डेटा के कॉलम की एक सरणी होगी।

== अतिरिक्त नोट ==

गुठली https://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000/data/fk/msl_v08.tfMSL के लिए उपलब्ध संदर्भ फ़्रेमों की सूची शामिल है; सबसे महत्वपूर्ण हैं:

  • MSL_LANDING_SITE -76900
  • MSL_SITE_1 ... 399 -76501 ...- 76899
  • MSL -76
  • MSL_ROVER -76000
  • MSL_SPACECRAFT -76010 (skycrane + रोवर + बैकशेल + हीटशील्ड)?
  • MSL_CRUISE_STAGE -76020
  • MSL_DESCENT_STAGE -76030 (skycrane या skycrane + रोवर?)
  • MSL_ROVER_MECH -76040
  • MSL_CACS -76050 (MSL क्रूज ACS (एटीट्यूड कंट्रोल सिस्टम?) फ्रेम)
  • MSL_DIMU_A-76031 (डिसेंट स्टेज IMU)

EDL डेटा डाउनलोड करने के लिए एक विशिष्ट पृष्ठ बनाया गया:

http://win98.altervista.org/space/exploration/EDL/ (विशेष रूप से http://win98.altervista.org/space/exploration/EDL/edl-retriever.html

)