GNSS基本概念(7):Android 手机GNSS参数意义(上)

本文介绍了Android手机中GNSS参数的含义,包括参考位置、原始GNSS测量值、硬件时钟信息、卫星状态、伪距率、累积delta范围等,帮助理解GPS定位过程中的关键数据及其对定位精度的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

train/[drive_id]/[phone_name]/ground_truth.csv - Reference locations at expected timestamps.

  • MessageType - "Fix", the prefix of sentence.

  • Provider - "GT", short for ground truth.

  • [Latitude/Longitude]Degrees - The WGS84
    latitude, longitude (in decimal degrees) estimated by the reference
    GNSS receiver (NovAtel SPAN). When extracting from the NMEA file, linear interpolation has been applied to align the location to the expected non-integer timestamps.

  • AltitudeMeters - The height above the WGS84 ellipsoid (in meters) estimated by the reference GNSS receiver.

  • SpeedMps* - The speed over ground in meters per second.

  • AccuracyMeters - The estimated horizontal accuracy radius in meters of this location at the 68th percentile confidence level. This means that there is a 68% chance that the true location of the device is within a distance of this uncertainty of the reported location.

  • BearingDegrees - Bearing is measured in degrees clockwise from north. It ranges from 0 to 359.999 degrees.

  • UnixTimeMillis - An integer number of milliseconds since the GPS epoch (1970/1/1 midnight UTC). Converted from GnssClock.



[train/test]/[drive_id]/[phone_name]/device_gnss.csv - Each row contains raw GNSS measurements, derived values, and a baseline estimated location.. This baseline was computed using correctedPrM and the satellite positions, using a standard Weighted Least Squares (WLS) solver, with the phone's position (x, y, z), clock bias (t), and isrbM for each unique signal type as states for each epoch. Some of the raw measurement fields are not included in this file because they are deprecated or are not populated in the original gnss_log.txt.

  • MessageType - "Raw", the prefix of sentence.

  • utcTimeMillis - Milliseconds since UTC epoch (1970/1/1), converted from GnssClock.

  • TimeNanos - The GNSS receiver internal hardware clock value in nanoseconds.

  • LeapSecond - The leap second associated with the clock's time.

  • FullBiasNanos - The difference between hardware clock (getTimeNanos()) inside GPS receiver and the true GPS time since 0000Z, January 6, 1980, in nanoseconds.

  • BiasNanos - The clock's sub-nanosecond bias.

  • BiasUncertaintyNanos - The clock's bias uncertainty (1-sigma) in nanoseconds.

  • DriftNanosPerSecond - The clock's drift in nanoseconds per second.

  • DriftUncertaintyNanosPerSecond - The clock's drift uncertainty (1-sigma) in nanoseconds per second.

  • HardwareClockDiscontinuityCount - Count of hardware clock discontinuities.

  • Svid - The satellite ID.

  • TimeOffsetNanos - The time offset at which the measurement was taken in nanoseconds.

  • State - Integer signifying sync state of the satellite. Each bit in the integer attributes to a particular state information of the measurement. See the metadata/raw_state_bit_map.json file for the mapping between bits and states.

  • ReceivedSvTimeNanos - The received GNSS satellite time, at the measurement time, in nanoseconds.

  • ReceivedSvTimeUncertaintyNanos - The error estimate (1-sigma) for the received GNSS time, in nanoseconds.

  • Cn0DbHz - The carrier-to-noise density in dB-Hz.

  • PseudorangeRateMetersPerSecond - The pseudorange rate at the timestamp in m/s.

  • PseudorangeRateUncertaintyMetersPerSecond - The pseudorange's rate uncertainty (1-sigma) in m/s.

  • AccumulatedDeltaRangeState - This indicates the state of the 'Accumulated Delta Range' measurement. Each bit in the integer attributes to state of the measurement. See the metadata/accumulated_delta_range_state_bit_map.json file for the mapping between bits and states.

  • AccumulatedDeltaRangeMeters - The accumulated delta range since the last channel reset, in meters.

  • AccumulatedDeltaRangeUncertaintyMeters - The accumulated delta range's uncertainty (1-sigma) in meters.

  • CarrierFrequencyHz - The carrier frequency of the tracked signal.

  • MultipathIndicator - A value indicating the 'multipath' state of the event.

  • ConstellationType - GNSS constellation type. The mapping to human readable values is provided in the metadata/constellation_type_mapping.csv file.

  • CodeType - The GNSS measurement's code type. Only available in recent logs.

  • ChipsetElapsedRealtimeNanos - The elapsed real-time of this clock since system boot, in nanoseconds. Only available in recent logs.

  • ArrivalTimeNanosSinceGpsEpoch - An integer number of nanoseconds since the GPS epoch (1980/1/6 midnight UTC). Its value equals round((Raw::TimeNanos - Raw::FullBiasNanos), for each unique epoch described in the Raw sentences.

  • RawPseudorangeMeters - Raw pseudorange in meters. It is the product between the speed of light and the time difference from the signal transmission time (receivedSvTimeInGpsNanos) to the signal arrival ti

<think>首先,用户的问题是基于前面的引用信息(引用1-4),他想寻找关于GNSS原始观测量组造的算法和推荐方案。查询是:"我想寻找关于GNSS原始观测量组装的算法和推荐方案请问GNSSrawmeasurementassemblyalgorithmandrecommendedsolutions"。我需要参考用户提供的引用内容,因为这些被标记为参考站内引用。回顾引用内容:-引用[1]:关于raw-gnss-fusion项目,涉及融合原始GNSS数据与其他传感模式的项目地址。-引用[2]:关于GNSS-R技术,包括BDS在土壤湿度反演中的应用、双天线GNSS-R接收机等。-引用[3]:关于GNSSCTS&Start和LocationFlowinAndroid15,涉及AndroidGNSS测试和源码。-引用[4]:关于GNSS观测O文件的解读,解释观测值的格式、类型(如伪距、相位)、失锁标识等。用户的问题集中在"GNSSrawmeasurementassemblyalgorithm",即原始观测量组装算法和推荐方案。这可能涉及到如何从接收到的原始数据中提取和处理观测量,如伪距、载波相位等。在之前的系统级指令中,我需要注意:-回答使用中文。-结构清晰,帮助用户逐步解决问题。-保证回答真实可靠。-在行内数学表达式使用$...$,独立公式使用$$...$$。-在回答中,如果引用段落,末尾添加引用标识[^n]。-生成相关问题。用户提到了"参考站内引用",但不是用户的真正需求;请尽可能参考用户上一次的问题和我的回答。但在这次对话中,这是第一次互动,所以没有上次的问题。指令说:"请尽可能多的参考用户上一次的问题和你的回答",但在上下文,这是新的对话,所以我应该基于当前查询。用户上一次的问题是:"我想寻找关于GNSS原始观测量组装的算法和推荐方案",这似乎是用户首次提出的完整问题。在初始消息中,有系统指令,然后是用户查询。现在,分析用户查询:"GNSSrawmeasurementassemblyalgorithmandrecommendedsolutions"。关键词是"原始观测量组装",这通常指在GNSS接收机中,如何组装来自卫星的不同类型的观测量,如伪距(pseudorange)、载波相位(carrierphase)、多普勒频移(Doppler)等,以用于定位计算或其他应用。从引用中获取信息:-引用[4]直接相关:它讨论GNSS观测O文件的解读,观测类型包括观测值、LLI(失锁标识)、信号强度,格式是伪距(单位米)、相位(整周)、多普勒(Hz)、SNR(dB·Hz)。这涉及到观测量的格式和表示。所以,组装算法可能涉及到解析这种数据文件或数据流。-引用[1]是关于融合原始GNSS数据的项目,可能包含处理算法。-引用[2]和[3]不那么直接相关,但可能提供一些上下文。我需要构建一个基于知识的回答。真实可靠的回答,所以我会依靠我的知识库。步骤回顾组装算法:1.**GNSS原始观测量**:这包括C/A码伪距、P码伪距、载波相位、多普勒频移等。每个观测量来自特定的卫星和信号类型。2.**组装过程**:在接收机中,观测量被组装成观测数据块或文件格式,如RINEX(ReceiverIndependentExchangeFormat)。标准格式便于交换和处理。3.**算法方面**:组装算法可能包括:-数据解码:从接收机的原始比特流中提取观测量。-同步和校正:时间同步、频率校正、电离层校正等。-格式化:组装成标准格式如RINEXO文件。在RINEX中,每个观测量记录包括:卫星PRN、观测类型、值、LLI、信号强度。从引用[4]:"每一个观测类型的组成包括:观测值+LLI+信号强度,也即m(F14.3,I1,I1)。单位:伪距是米;相位是整周;多普勒是HZ;SNR为dB·HZ"。4.**推荐方案**:-使用标准软件库如RTKLIB(开源软件套件用于GNSS处理),它有工具从原始数据生成RINEX文件。-参考项目如引用[1]的raw-gnss-fusion,可能提供融合算法。-在Android上下文中,如引用[3],有特定的实现。现在,构建回答:-结构清晰:分段逐步解释。-首先定义概念。-然后描述算法。-最后推荐方案。-加入数学表达式:例如,伪距公式$\rho=c\cdot(t_{rx}-t_{tx})$,其中$c$是光速,$t_{rx}$是接收时间,$t_{tx}$是发射时间。独立公式使用$$...$$格式。生成相关问题在末尾。添加引用标识:如果在回答中提到引用内容,末尾加[^n]。回答开始:**概念解释**原始观测量组装涉及将接收机收集的GNSS信号数据解析和结构化,形成可用于定位、导航和定时的观测数据。**算法描述**在GNSS接收机中,原始的比特流通过解码模块提取时间信息和信号特性。观测数据组装通常包括以下步骤:1.**时间同步**:确保观测量与GPS时间同步。伪距观测值可以表示为:$$P=c\cdot(T_r-T_t)$$其中$c$是光速,$T_r$是接收时间,$T_t$是发射时间[^4].2.**数据类型解析**:对于每个卫星,观测量包括伪距、载波相位、多普勒和信号强度(SNR)。在标准RINEX格式中,每个记录为:-观测值(例如,伪距为米)-LLI(LossofLockIndicator,失锁标识)-信号强度[^4].3.**校正和过滤**:应用大气延迟校正、多路径效应减轻等。例如,相位观测值$\Phi$可能涉及整周模糊度。**推荐方案**-使用开源工具如RTKLIB,它支持从各种接收机生成RINEX观测文件。-参考特定项目,如raw-gnss-fusion项目[^1],它专注于原始GNSS数据的融合。-在移动端,AndroidGNSSAPI提供原始观测量访问[^3].§§相关问题§§生成相关问题:1.RINEX格式的具体内容是什么?2.如何在Android应用中获取GNSS原始观测量?3.什么是伪距和载波相位的融合算法?确保回答真实可靠。我会基于一般知识。</think> ### GNSS原始观测量组装算法及推荐方案 在GNSS(全球导航卫星系统)中,原始观测量组装是指将从接收机采集的原始信号数据(如伪距、载波相位、多普勒频移等)解析、结构化和格式化的过程,以形成可用于定位、导航、定时的标准观测数据。这包括数据解码、同步、校正和文件格式转换。下面我将基于您的查询和相关引用内容,逐步解释算法原理、关键步骤,并提供推荐方案。引用的内容主要为背景参考,我会在相关段落末尾添加引用标识。 --- ### 1. GNSS原始观测量概述 原始观测量是GNSS接收机从卫星信号中提取的基本度量值,包括: - **伪距(Pseudorange)**:信号传播时间乘以光速($c \approx 3 \times 10^8 \text{ m/s}$),用于计算位置,单位是米。 - **载波相位(Carrier Phase)**:信号载波的整周数和分数部分,用于高精度定位,单位是整周。 - **多普勒频移(Doppler Shift)**:由于卫星和接收机相对运动引起的频率变化,单位是赫兹(Hz)。 - **信号强度(SNR)**:信噪比或载噪比,表示信号质量,单位通常为dB·Hz[^4]。 这些观测量是组装的基础,需结合时间戳和卫星标识(如PRN号)形成结构化数据块。例如,在标准RINEX(Receiver Independent Exchange Format)观测文件中,每个观测量记录格式为: - `观测值 + LLI(Loss of Lock Indicator,失锁标识) + 信号强度` 具体表示为$m(F14.3,I1,I1)$,其中$F14.3$代表观测值(浮点数14位宽,小数点后3位),$I1$代表LLI(1位整数),$I1$代表信号强度(1位整数)[^4]。 --- ### 2. 原始观测量组装算法 组装算法涉及从接收机的原始比特流中解析数据,应用校正,并格式化为标准观测文件。核心步骤包括解码、时间同步、数据关联和输出格式化。以下是基于GNSS标准实践的算法描述: #### (a) 数据解码与提取 - **输入**:接收机输出的原始数据流(如UART、USB或网络数据包),包含卫星信号的时间戳、编码值(如C/A码或P码)和信号参数。 - **过程**: - 使用位同步和帧同步技术从比特流中提取时间信息和观测量值。 - 例如,伪距$P$可通过计算信号接收时间$T_r$和发射时间$T_t$的差值得出: $$ P = c \cdot (T_r - T_t) $$ 其中$c$是光速,$T_t$来自卫星广播的导航信息,$T_r$基于接收机时钟[^4]. - **数学表达式**:载波相位$\Phi$涉及整周模糊度$N$,可表示为$\Phi = \lambda \cdot ( \phi_{int} + \phi_{frac} ) + N$,其中$\lambda$是波长,$\phi_{int}$是整周数,$\phi_{frac}$是分数部分。组装时需记录每个观测量及其LLI(失锁标识),用于指示信号质量[^4]。 #### (b) 时间同步与校正 - **同步要求**:所有观测量必须对齐到统一的时间基准(如GPS时间或北斗时间)。 - 应用时钟偏差校正:接收机时钟误差$\Delta t$通过差分技术或滤波算法估计,伪距校正后为$P_{corr} = P + c \cdot \Delta t$. - **误差校正**: - 大气延迟(电离层和对流层):使用模型如Klobuchar或双频观测进行消除。 - 多路径效应:基于信噪比(SNR)过滤或加权观测值,高SNR观测优先。 - **数据关联**:将观测量按卫星PRN分组,关联对应信号类型(如GPS L1或BDS L5),确保数据一致性[^1][^4]。 #### (c) 输出格式化 - **格式标准**:组装后的数据转换为可交换格式,如RINEX O文件(观测文件)。 - **算法逻辑**: - 初始化观测记录:对每个卫星-时间点,创建包含多个观测类型的记录。 - 填充数据:按$ \text{观测值}, \text{LLI}, \text{信号强度} $结构填入数值,例如伪距为$12000000.123$(米),LLI为$0$(无失锁),SNR为$25$(dB·Hz)。 - 文件生成:输出纯文本或二进制文件,首部包含元数据(观测起始时间、接收机类型等)。 - **关键公式**:多普勒$D$与相对速度$v$相关,$ D = -f \cdot v / c $,其中$f$是载波频率。组装时需处理时间序列数据[^1][^4]。 整个算法通常在实时或后处理软件中实现,复杂度为$O(n)$(线性于卫星数和观测点数),依赖高效的解析和过滤机制。 --- ### 3. 推荐方案 基于开源工具、项目和标准实践,以下是高效可靠的组装方案推荐: #### (a) 开源工具与库 - **RTKLIB**: - **描述**:广泛使用的开源GNSS处理库,支持多种接收机原始数据解析(如U-blox、NovAtel)和RINEX文件生成。 - **优点**:提供C语言API,可自定义组装算法;内置校正模块(如大气模型)。 - **适用场景**:后处理研究或实时定位系统,免费且社区支持强。 - **资源**:[RTKLIB官网](http://www.rtklib.com/) - **Android GNSS API**: - **描述**:Android平台提供`GnssMeasurementsEvent`接口,可直接获取原始观测量(包括伪距、相位等)。参考引用[3],涉及CTS测试和位置流实现。 - **优点**:适合移动应用开发,实时性能好;支持多系统融合(GPS、BDS等)。 - **示例**:在Android源码中(如`GnssTtffTests.java`),可通过监听GNSS事件组装数据到JSON或CSV[^3]. - **文档**:[Android开发者文档](https://developer.android.com/reference/android/location/GnssMeasurementsEvent) #### (b) 专业项目集成 - **raw-gnss-fusion 项目**: - **描述**:该项目专注于融合原始GNSS数据与其他传感模态(如IMU或摄像头),提供观测量组装作为预处理步骤。 - **优点**:包含时间同步算法和误差校正模块;支持RINEX输出,集成于C++/Python环境。 - **适用场景**:高精度定位、无人系统或GNSS-R应用。 - **资源**:项目地址:[https://gitcode.com/gh_mirrors/ra/raw-gnss-fusion](https://gitcode.com/gh_mirrors/ra/raw-gnss-fusion) [^1] - **GNSS-R 接收机解决方案**: - **描述**:如引用[2]所述,双天线GNSS-R接收机用于海面测高等应用,BDS L5信号可增强穿透能力。推荐使用硬件如u-blox接收机配合软件解析库。 - **优点**:针对土壤湿度或海洋反演优化,组装算法内置于接收机固件。 - **资源**:参考山东大学团队开发的开源代码或商业解决方案如Septentrio[^2]. #### (c) 通用最佳实践 - **方案选择标准**: - **实时需求**:对于实时应用(如车载导航),选择低延迟库(如Android API或嵌入式实现)。 - **高精度需求**:使用RTKLIB或fusion项目,结合后处理校正(如载波相位模糊度解决)。 - **数据融合**:结合引用[1]和[2],建议将GNSS观测量与IMU或地图数据融合以提高精度。 - **注意事项**: - 始终验证组装数据的完整性和一致性(例如,检查LLI标识以避免错误传播)。 - 单位转换:确保观测量单位匹配(如伪距为米、相位为周)。 - 资源效率:在资源受限设备(如手机),优化算法以减少计算负载。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值