Làm cách nào để truy xuất quỹ đạo MSL EDL bằng Javascript và API webgeocalc?
Tôi đã tìm thấy " cổng javascript" vào dữ liệu SPICE của NASA , api web "webgeocalc":
https://wgc2.jpl.nasa.gov:8443/webgeocalc/example/perform-calculation.html
Nó hoạt động cả trực tuyến và ngoại tuyến (nhưng ngoại tuyến, tôi phải sử dụng giải pháp thay thế cho chính sách CORS ), nhưng tôi không thể lấy dữ liệu cho quỹ đạo EDL của Phòng thí nghiệm Khoa học Sao Hỏa.
Đối với một trong nhiều lần thử, tôi đã sử dụng đầu vào này:
{
"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"
}
Nhưng tôi gặp lỗi này ("Không đủ dữ liệu về con thiêu thân đã được tải"):
{
"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."
}
}
Kernel này chứa tất cả các khung tham chiếu có sẵn cho MSL:
https://naif.jpl.nasa.gov/pub/naif/MSL/kernels/fk/msl_v08.tf
Ví dụ:
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
Dữ liệu phải có sẵn cho ngày cụ thể, vì NASA Horizons có thể cung cấp cho chúng: 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
Tôi đã bao gồm các hạt nhân được liệt kê trong ví dụ này từ thư viện Timecraft.js, nhưng có thể tôi vẫn thiếu một số hạt nhân:
https://github.com/NASA-AMMOS/timecraftjs/blob/master/example/index.js
Đường dẫn nhân (giao diện webgeocalc so với máy chủ NAIF của NASA và máy chủ webgeocal):
- "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 /
Trả lời
Sau hàng chục lần thử nghiệm, tôi đã tìm ra con đường.
Tải trọng sẽ được gửi qua truy vấn 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"
}
Xin lưu ý rằng các nhân được chỉ định không phải là nhân thực mà thực sự là danh sách các nhân:
Nội dung của pds / wgc / mk / new_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
Nội dung của pds / data / msl-m-Cay-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 ) (có lẽ không phải tất cả các hạt nhân này đều cần thiết cho 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 ...)
Đặt tải trọng phía trên vào trang này và nhấp vào GỬI TÍNH TOÁN. Khi kết quả đã sẵn sàng, bạn sẽ nhận được một id tính toán; bấm vào NHẬN KẾT QUẢ để tải xuống phản hồi.
Trang cũng hoạt động ngoại tuyến miễn là bạn thêm dòng này:
baseURL = "https://cors-anywhere.herokuapp.com/https://wgc2.jpl.nasa.gov:8443/webgeocalc/api/";
sau cái này:
var baseURL = ourLocation.substring(0, splicePoint) + "/api/"
Làm thế nào nó hoạt động:
Gọi hàm performanceRequest (urlSuffix, payload, onComplete) lần đầu tiên bằng cách sử dụng PerformRequest ("tính toán / mới", payloadText, showProgress) , có nghĩa là showProgress () sẽ được gọi sau khi nhận được phản hồi; phản hồi sơ bộ sẽ như thế nào (sau khi tính toán hoàn tất):
{
"status": "OK",
"message": "The request was successful.",
"calculationId": "7a304773-50f2-45c1-bb5a-bfd9fcbd063c",
"result": {
"phase": "COMPLETE",
"expiresIn": 600
}
}
Bạn nên kiểm tra "phase" trong khi nó chuyển từ "LOADING KERNELS" sang "COMPLETE".
Khi quá trình tính toán hoàn tất, phản hồi sẽ chứa số nhận dạng ("mathId") để sử dụng để yêu cầu phản hồi thực tế kèm theo kết quả, sẽ chỉ có sẵn trong giây "expiresIn".
Để yêu cầu kết quả tính toán, hãy gọi lại hàm performanceRequest (urlSuffix, payload, onComplete) bằng performanceRequest ("tính toán /" + tính toánID + "/ kết quả, null, showProgress)
Trong phản hồi cuối cùng, response.columns sẽ là một mảng các cột dữ liệu của bạn.
== Ghi chú bổ sung ==
Kernel https://naif.jpl.nasa.gov/pub/naif/pds/data/msl-m-spice-6-v1.0/mslsp_1000/data/fk/msl_v08.tfchứa danh sách các hệ quy chiếu có sẵn cho MSL; quan trọng nhất là:
- MSL_LANDING_SITE -76900
- MSL_SITE_1 ... 399 -76501 ...- 76899
- MSL -76
- MSL_ROVER -76000
- MSL_SPACECRAFT -76010 (skycrane + rover + backhell + heatshield?)
- MSL_CRUISE_STAGE -76020
- MSL_DESCENT_STAGE -76030 (skycrane hay skycrane + rover?)
- MSL_ROVER_MECH -76040
- MSL_CACS -76050 (Khung MSL Cruise ACS (Hệ thống Kiểm soát Thái độ?))
- MSL_DIMU_A -76031 (IMU giai đoạn đi xuống)
Đã tạo một trang cụ thể để tải xuống dữ liệu EDL:
http://win98.altervista.org/space/exploration/EDL/ (đặc biệt http://win98.altervista.org/space/exploration/EDL/edl-retriever.html
)