จะดึงวิถี MSL EDL โดยใช้ Javascript และ webgeocalc API ได้อย่างไร
ฉันพบ " เกตเวย์จาวาสคริปต์" สำหรับข้อมูล NASA SPICEซึ่งเป็น API เว็บ "webgeocalc":
https://wgc2.jpl.nasa.gov:8443/webgeocalc/example/perform-calculation.html
ใช้งานได้ทั้งออนไลน์และออฟไลน์ (แต่ออฟไลน์ฉันต้องใช้วิธีแก้ปัญหาสำหรับนโยบาย CORS ) แต่ฉันไม่สามารถรับข้อมูลสำหรับวิถี EDL ของ Mars Science Laboratory EDL
สำหรับหนึ่งในหลาย ๆ ความพยายามฉันใช้อินพุตนี้:
{
"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"
}
แต่ฉันได้รับข้อผิดพลาดนี้ ("โหลดข้อมูล ephemeris ไม่เพียงพอแล้ว"):
{
"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
ควรมีข้อมูลตามวันที่ระบุเนื่องจาก NASA Horizons สามารถให้ข้อมูลเหล่านี้ได้: 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
ฉันรวมเมล็ดที่ระบุไว้ในตัวอย่างนี้จากไลบรารี Timecraft.js แต่บางทีฉันยังขาดบางส่วน:
https://github.com/NASA-AMMOS/timecraftjs/blob/master/example/index.js
เส้นทางเคอร์เนล (อินเตอร์เฟส webgeocalc เทียบกับเซิร์ฟเวอร์ NASA NAIF และเซิร์ฟเวอร์ webgeocal):
- "MSL /" -> https://naif.jpl.nasa.gov/pub/naif/MSL/ -> / group / naif / ที่สำคัญ / naifweb / pub / naif / MSL
- "pds / wgc / kernels /" -> https://naif.jpl.nasa.gov/pub/naif/generic_kernels/ -> / กลุ่ม / naif / วิกฤต / naifweb / ผับ / naif / pds / wgc / เมล็ด /
คำตอบ
หลังจากการทดสอบหลายสิบครั้งฉันก็พบวิธี
Payload ที่จะส่งผ่านแบบสอบถาม 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"
}
โปรดทราบว่าเมล็ดที่ระบุไม่ใช่เมล็ดจริง แต่เป็นรายการของเมล็ด:
เนื้อหาของ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
เนื้อหาของ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 ) (อาจไม่ใช่เมล็ดทั้งหมดที่จำเป็นสำหรับ 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 ...)
ใส่ payload ไว้ด้านบนในหน้านี้และคลิกที่ส่งการคำนวณ เมื่อผลลัพธ์พร้อมคุณจะได้รับรหัสการคำนวณ คลิกที่รับผลลัพธ์เพื่อดาวน์โหลดคำตอบ
หน้านี้ยังทำงานแบบออฟไลน์ได้ตราบเท่าที่คุณเพิ่มบรรทัดนี้:
baseURL = "https://cors-anywhere.herokuapp.com/https://wgc2.jpl.nasa.gov:8443/webgeocalc/api/";
หลังจากนี้:
var baseURL = ourLocation.substring(0, splicePoint) + "/api/"
มันทำงานอย่างไร:
เรียกใช้ฟังก์ชันperformRequest (urlSuffix, payload, onComplete)เป็นครั้งแรกโดยใช้performRequest ("การคำนวณ / ใหม่", payloadText, showProgress)ซึ่งหมายความว่า showProgress () จะถูกเรียกเมื่อได้รับการตอบกลับ คำตอบเบื้องต้นจะมีลักษณะดังนี้ (เมื่อคำนวณเสร็จสมบูรณ์):
{
"status": "OK",
"message": "The request was successful.",
"calculationId": "7a304773-50f2-45c1-bb5a-bfd9fcbd063c",
"result": {
"phase": "COMPLETE",
"expiresIn": 600
}
}
คุณควรตรวจสอบ "เฟส" ในขณะที่ผ่านจาก "โหลดเคอร์เนล" เป็น "สมบูรณ์"
เมื่อคำนวณเสร็จสิ้นการตอบกลับจะมีตัวระบุ ("รหัสการคำนวณ") เพื่อใช้ในการร้องขอการตอบกลับจริงพร้อมผลลัพธ์ซึ่งจะใช้ได้เฉพาะ "expiresIn" วินาที
หากต้องการขอผลการคำนวณให้เรียกใช้performRequestอีกครั้ง(urlSuffix, payload, onComplete)โดยperformRequest ("การคำนวณ /" + รหัสการคำนวณ + "/ ผลลัพธ์, โมฆะ, showProgress)
ในการตอบกลับสุดท้าย response.columns จะเป็นอาร์เรย์ของคอลัมน์ข้อมูลของคุณ
== หมายเหตุเพิ่มเติม ==
เคอร์เนล https://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000/data/fk/msl_v08.tfมีรายการกรอบอ้างอิงที่มีให้สำหรับ MSL ที่สำคัญที่สุดคือ:
- MSL_LANDING_SITE -76900
- MSL_SITE_1 ... 399 -76501 ...- 76899
- MSL -76
- MSL_ROVER -76000
- MSL_SPACECRAFT -76010 (skycrane + rover + backshell + heatshield?)
- MSL_CRUISE_STAGE -76020
- MSL_DESCENT_STAGE -76030 (skycrane หรือ skycrane + rover?)
- MSL_ROVER_MECH -76040
- MSL_CACS -76050 (กรอบ MSL Cruise ACS (Attitude Control System?))
- MSL_DIMU_A -76031 (Descent Stage IMU)
สร้างเพจเฉพาะเพื่อดาวน์โหลดข้อมูล EDL:
http://win98.altervista.org/space/exploration/EDL/ (โดยเฉพาะ http://win98.altervista.org/space/exploration/EDL/edl-retriever.html
)