การอ้างอิงโครงสร้าง GnssMeasurement
#include < gps.h >
เขตข้อมูล | |
ขนาด_t | ขนาด |
GnssMeasurementFlags | ธง |
int16_t | สวิด |
ประเภทกลุ่มดาว Gnss | กลุ่มดาว |
สองเท่า | เวลา_ชดเชย_ns |
รัฐการวัด Gnss | สถานะ |
int64_t | ได้รับ_sv_time_in_ns |
int64_t | ได้รับ_sv_time_uncertainty_in_ns |
สองเท่า | c_n0_dbhz |
สองเท่า | pseudorange_rate_mps |
สองเท่า | pseudorange_rate_uncertainty_mps |
GnssสะสมDeltaRangeState | สะสม_delta_range_state |
สองเท่า | collect_delta_range_m |
สองเท่า | collect_delta_range_uncertainty_m |
ลอย | ผู้ให้บริการ_ความถี่_hz |
int64_t | Carrier_cycles |
สองเท่า | ผู้ให้บริการ_เฟส |
สองเท่า | Carrier_phase_uncertainty |
ตัวบ่งชี้ GnssMultipath | multipath_indicator |
สองเท่า | snr_db |
คำอธิบายโดยละเอียด
แสดงถึงการวัด GNSS ประกอบด้วยข้อมูลดิบและข้อมูลที่คำนวณแล้ว
ความเป็นอิสระ - ข้อมูลการวัดสัญญาณทั้งหมด (เช่น sv_time, pseudorange_rate, multipath_indicator) ที่รายงานในโครงสร้างนี้ควรอิงตามการวัดสัญญาณ GNSS เท่านั้น คุณไม่สามารถสังเคราะห์การวัดโดยการคำนวณหรือรายงานการวัดที่คาดหวังตามตำแหน่ง ความเร็ว หรือเวลาที่ทราบหรือประมาณไว้
เอกสารภาคสนาม
สะสม_delta_range_m สองเท่า |
ช่วงเดลต้าสะสมตั้งแต่ช่องสุดท้ายรีเซ็ตเป็นเมตร ค่าบวกบ่งชี้ว่า SV กำลังเคลื่อนออกจากเครื่องรับ
เครื่องหมายของ 'ช่วงเดลต้าสะสม' และความสัมพันธ์กับเครื่องหมายของ 'เฟสพาหะ' ได้จากสมการ: ช่วงเดลต้าสะสม = -k * เฟสพาหะ (โดยที่ k เป็นค่าคงที่)
ต้องเติมค่านี้หาก 'สถานะช่วงเดลต้าสะสม' != GPS_ADR_STATE_UNKNOWN อย่างไรก็ตาม คาดว่าข้อมูลจะมีความแม่นยำก็ต่อเมื่อ: 'สถานะช่วงเดลต้าสะสม' == GPS_ADR_STATE_VALID
GnssAccumulatedDeltaRangeState สะสม_delta_range_state |
สะสม_delta_range_uncertainty_m สองเท่า |
c_n0_dbhz สองเท่า |
int64_t ผู้ให้บริการ_รอบ |
จำนวนรอบของผู้ให้บริการทั้งหมดระหว่างดาวเทียมและเครื่องรับ ความถี่อ้างอิงกำหนดโดยฟิลด์ 'carrier_frequency_hz' ข้อบ่งชี้ของไซเคิลสลิปที่เป็นไปได้และการรีเซ็ตในการสะสมของค่านี้สามารถอนุมานได้จากแฟล็ก collect_delta_range_state
หากมีข้อมูล 'แฟล็ก' จะต้องมี GNSS_MEASUREMENT_HAS_CARRIER_CYCLES
ผู้ให้บริการลอยตัว_ความถี่_hz |
ผู้ให้บริการคู่_เฟส |
เฟส RF ที่เครื่องรับตรวจพบในช่วง [0.0, 1.0] โดยปกติจะเป็นเศษส่วนของการวัดเฟสพาหะที่สมบูรณ์
ความถี่อ้างอิงกำหนดโดยฟิลด์ 'carrier_frequency_hz' ค่านี้ประกอบด้วย 'ความไม่แน่นอนของระยะพาหะ' อยู่ในนั้น
หากมีข้อมูล 'แฟล็ก' จะต้องมี GNSS_MEASUREMENT_HAS_CARRIER_PHASE
Carrier_phase_uncertainty สองเท่า |
GnssConstellationประเภท กลุ่มดาว |
GnssMultipathIndicator multipath_indicator |
การแจงนับที่ระบุสถานะ 'หลายเส้นทาง' ของเหตุการณ์
ตัวบ่งชี้หลายเส้นทางมีวัตถุประสงค์เพื่อรายงานการมีอยู่ของสัญญาณที่ทับซ้อนกันซึ่งแสดงว่าเป็นยอดความสัมพันธ์ที่บิดเบี้ยว
- หากมีรูปร่างสูงสุดของความสัมพันธ์ที่บิดเบี้ยว ให้รายงานว่า multipath คือ GNSS_MULTIPATH_INDICATOR_PRESENT
- หากไม่มีรูปร่างสูงสุดของความสัมพันธ์ที่บิดเบี้ยว ให้รายงาน GNSS_MULTIPATH_INDICATOR_NOT_PRESENT
- หากสัญญาณอ่อนเกินกว่าจะมองเห็นข้อมูลนี้ ให้รายงาน GNSS_MULTIPATH_INDICATOR_UNKNOWN
ตัวอย่าง: เมื่อทำการทดสอบประสิทธิภาพ Multipath ที่ทับซ้อนกันมาตรฐาน (3GPP TS 34.171) ตัวบ่งชี้ Multipath ควรรายงาน GNSS_MULTIPATH_INDICATOR_PRESENT สำหรับสัญญาณเหล่านั้นที่ถูกติดตามและมี multipath และ GNSS_MULTIPATH_INDICATOR_NOT_PRESENT สำหรับสัญญาณเหล่านั้นที่ถูกติดตามและไม่มี multipath
pseudorange_rate_mps สองเท่า |
อัตรา Pseudorange ณ เวลาประทับในหน่วย m/s การแก้ไขค่า Pseudorange Rate ที่กำหนดจะรวมถึงการแก้ไขข้อผิดพลาดของเครื่องรับและความถี่นาฬิกาดาวเทียมด้วย ตรวจสอบให้แน่ใจว่าฟิลด์นี้เป็นอิสระ (ดูความคิดเห็นที่ด้านบนของโครงสร้าง GnssMeasurement )
จำเป็นต้องระบุ 'อัตราหลอก' ที่ 'ไม่แก้ไข' และระบุฟิลด์ 'ดริฟท์' ของ GpsClock ด้วยเช่นกัน (เมื่อระบุอัตราหลอกเทียมที่ไม่ถูกแก้ไข ห้ามใช้การแก้ไขที่อธิบายไว้ข้างต้น)
ค่านี้รวม 'ความไม่แน่นอนของอัตราหลอก' ไว้ด้วย ค่าบวก 'ไม่ถูกแก้ไข' บ่งชี้ว่า SV กำลังเคลื่อนออกจากตัวรับ
เครื่องหมายของ 'อัตราช่วงเทียม' ที่ 'ไม่ได้รับการแก้ไข' และความสัมพันธ์กับเครื่องหมาย 'การเปลี่ยนแปลงดอปเปลอร์' ได้มาจากสมการ: อัตราช่วงเทียม = -k * การเปลี่ยนแปลงดอปเปลอร์ (โดยที่ k เป็นค่าคงที่)
นี่ควรเป็นอัตรา pseudorange ที่แม่นยำที่สุดที่มีอยู่ โดยอิงจากการวัดสัญญาณใหม่จากช่องนี้
จำเป็นต้องระบุค่านี้ที่คุณภาพ PRR ของเฟสพาหะทั่วไป (ความไม่แน่นอนไม่กี่ซม./วินาทีต่อวินาที หรือดีกว่า) - เมื่อสัญญาณมีความแรงและเสถียรเพียงพอ เช่น สัญญาณจากเครื่องจำลอง GPS ที่ >= 35 dB-Hz
pseudorange_rate_uncertainty_mps สองเท่า |
int64_t ได้รับ_sv_time_in_ns |
เวลา GNSS ที่ได้รับ ณ เวลาการวัด มีหน่วยเป็นนาโนวินาที ตรวจสอบให้แน่ใจว่าฟิลด์นี้เป็นอิสระ (ดูความคิดเห็นที่ด้านบนของโครงสร้าง GnssMeasurement )
สำหรับ GPS และ QZSS นี่คือ: เวลา GPS ที่ได้รับในสัปดาห์ ณ เวลาการวัด มีหน่วยเป็นนาโนวินาที ค่านี้สัมพันธ์กับจุดเริ่มต้นของสัปดาห์ GPS ปัจจุบัน
เมื่อพิจารณาถึงสถานะการซิงค์สูงสุดที่สามารถทำได้ ต่อดาวเทียมแต่ละดวง ช่วงที่ถูกต้องสำหรับฟิลด์นี้สามารถเป็น: การค้นหา : [ 0 ] : GNSS_MEASUREMENT_STATE_UNKNOWN ล็อครหัส C/A : [ 0 1ms ] : GNSS_MEASUREMENT_STATE_CODE_LOCK ถูกตั้งค่า การซิงค์บิต : [ 0 20ms ] : GNSS_MEASUREMENT_STATE_BIT_SYNC ถูกตั้งค่า การซิงค์เฟรมย่อย : [ 0 6s ] : GNSS_MEASUREMENT_STATE_SUBFRAME_SYNC ถูกตั้งค่า ถอดรหัส TOW : [ 0 1 สัปดาห์ ] : GNSS_MEASUREMENT_STATE_TOW_DECODED ถูกตั้งค่า
โปรดทราบว่า: หากมีความคลุมเครือในจำนวนเต็มมิลลิวินาที ควรตั้งค่า GNSS_MEASUREMENT_STATE_MSEC_AMBIGUOUS ตามนั้นในฟิลด์ 'สถานะ'
ต้องเติมค่านี้หาก 'state' != GNSS_MEASUREMENT_STATE_UNKNOWN
สำหรับ Glonass นี่คือ: เวลา Glonass ที่ได้รับของวัน ณ เวลาการวัดในหน่วยนาโนวินาที
เมื่อพิจารณาถึงสถานะการซิงค์สูงสุดที่สามารถทำได้ ต่อดาวเทียมแต่ละดวง ช่วงที่ถูกต้องสำหรับฟิลด์นี้สามารถเป็น: การค้นหา : [ 0 ] : GNSS_MEASUREMENT_STATE_UNKNOWN ล็อครหัส C/A : [ 0 1ms ] : GNSS_MEASUREMENT_STATE_CODE_LOCK ได้รับการตั้งค่า การซิงค์สัญลักษณ์ : [ 0 10ms ] : ตั้งค่า GNSS_MEASUREMENT_STATE_SYMBOL_SYNC แล้ว การซิงค์บิต : [ 0 20ms ] : ตั้งค่า GNSS_MEASUREMENT_STATE_BIT_SYNC แล้ว การซิงค์สตริง : [ 0 2s ] : GNSS_MEASUREMENT_STATE_GLO_STRING_SYNC ถูกตั้งค่า เวลาของวัน : [ 0 1 วัน ] : GNSS_MEASUREMENT_STATE_GLO_TOD_DECODED ถูกตั้งค่า
สำหรับ Beidou นี่คือ: เวลา Beidou ที่ได้รับของสัปดาห์ ณ เวลาการวัดในหน่วยนาโนวินาที
เมื่อพิจารณาถึงสถานะการซิงค์สูงสุดที่สามารถทำได้ ต่อดาวเทียมแต่ละดวง ช่วงที่ถูกต้องสำหรับฟิลด์นี้สามารถเป็น: การค้นหา : [ 0 ] : GNSS_MEASUREMENT_STATE_UNKNOWN ล็อครหัส C/A: [ 0 1ms ] : GNSS_MEASUREMENT_STATE_CODE_LOCK ได้รับการตั้งค่า การซิงค์บิต (D2): [ 0 2ms ] : GNSS_MEASUREMENT_STATE_BDS_D2_BIT_SYNC ถูกตั้งค่าไว้ บิตซิงค์ (D1): [ 0 20ms ] : GNSS_MEASUREMENT_STATE_BIT_SYNC ถูกตั้งค่า เฟรมย่อย (D2): [ 0 0.6s ] : GNSS_MEASUREMENT_STATE_BDS_D2_SUBFRAME_SYNC ถูกตั้งค่า เฟรมย่อย (D1): [ 0 6 s ] : GNSS_MEASUREMENT_STATE_SUBFRAME_SYNC ถูกตั้งเวลาไว้ สัปดาห์ : [ 0 1 สัปดาห์ ] : GNSS_MEASUREMENT_STATE_TOW_DECODED ถูกตั้งค่าแล้ว
สำหรับกาลิเลโอ นี่คือ: เวลากาลิเลโอที่ได้รับในสัปดาห์ ณ เวลาที่วัดเป็นนาโนวินาที
ล็อครหัส E1BC : [ 0 4ms ] : GNSS_MEASUREMENT_STATE_GAL_E1BC_CODE_LOCK ได้รับการตั้งค่า ล็อครหัส E1C ครั้งที่ 2: [ 0 100ms ] : GNSS_MEASUREMENT_STATE_GAL_E1C_2ND_CODE_LOCK ได้รับการตั้งค่า
หน้า E1B : [ 0 2s ] : GNSS_MEASUREMENT_STATE_GAL_E1B_PAGE_SYNC ถูกตั้งค่า เวลาของสัปดาห์: [ 0 1 สัปดาห์ ] : GNSS_MEASUREMENT_STATE_TOW_DECODED ถูกตั้งค่า
สำหรับ SBAS นี่คือ: เวลา SBAS ที่ได้รับ ณ เวลาการวัดในหน่วยนาโนวินาที
เมื่อพิจารณาถึงสถานะการซิงค์สูงสุดที่สามารถทำได้ ต่อดาวเทียมแต่ละดวง ช่วงที่ถูกต้องสำหรับฟิลด์นี้สามารถเป็นได้: กำลังค้นหา : [ 0 ] : GNSS_MEASUREMENT_STATE_UNKNOWN ล็อครหัส C/A: [ 0 1ms ] : GNSS_MEASUREMENT_STATE_CODE_LOCK ได้รับการตั้งค่า การซิงค์สัญลักษณ์ : [ 0 2ms ] : GNSS_MEASUREMENT_STATE_SYMBOL_SYNC ถูกตั้งค่า ข้อความ : [ 0 1s ] : GNSS_MEASUREMENT_STATE_SBAS_SYNC ถูกตั้งค่า
int64_t ได้รับ_sv_time_uncertainty_in_ns |
snr_db สองเท่า |
int16_t svid |
หมายเลขประจำตัวยานพาหนะดาวเทียม ตามที่กำหนดไว้ใน GnssSvInfo::svid นี่เป็นค่าบังคับ
สองเท่าtime_offset_ns |
การชดเชยเวลาที่ทำการวัดในหน่วยนาโนวินาที เวลาของผู้รับอ้างอิงระบุโดย GpsData::clock::time_ns และควรตีความในลักษณะเดียวกับที่ระบุโดย GpsClock::type
เครื่องหมายของ time_offset_ns ได้รับจากสมการต่อไปนี้: เวลาในการวัด = GpsClock::time_ns + time_offset_ns
โดยจะให้การประทับเวลาแต่ละรายการสำหรับการวัด และช่วยให้มีความแม่นยำต่ำกว่านาโนวินาที นี่เป็นค่าบังคับ
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
- ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / gps.h