1

通过 GNSS 记录器应用程序获取的官方 GNSS 原始测量值提供以下参数:

TimeNanos   
LeapSecond  
TimeUncertaintyNanos    
FullBiasNanos   
BiasNanos   
BiasUncertaintyNanos
DriftNanosPerSecond 
DriftUncertaintyNanosPerSecond  HardwareClockDiscontinuityCount 
Svid    
TimeOffsetNanos 
State   
ReceivedSvTimeNanos 
ReceivedSvTimeUncertaintyNanos  
Cn0DbHz 
PseudorangeRateMetersPerSecond  
PseudorangeRateUncertaintyMetersPerSecond

我正在PR从上述数据中寻找原始伪距测量值。一点帮助?

参考1:https ://github.com/google/gps-measurement-tools

参考2:https ://developer.android.com/guide/topics/sensors/gnss

4

2 回答 2

1
Pseudorange[m] = (AverageTravelTime[s] + delta_t[s]) * speedOfLight[m/s]

其中:m- 米,s- 秒。

试试这个方法:

  1. 从一个星座中选择卫星(首先尝试使用 GPS)。
  2. 选择最大值ReceivedSvTimeNanos
  3. 计算delta_t每颗卫星的
    最大值ReceivedSvTimeNanos减去电流ReceivedSvTimeNanos
    ( delta_t = maxRst - curRst)。
  4. 平均行程时间为 70 毫秒,光速为 299792458 m/s。用它来计算。

不要忘记将所有值转换为相同的单位。

有关详细信息,请参阅此 pdfUserPositionVelocityWeightedLeastSquare课程

于 2019-06-19T11:50:53.750 回答
0

不幸的是,Android 不直接从 API 提供伪距——你必须自己计算。

欧盟 GSA 有一个很棒的文档,在第 2.4 节中详细解释了如何使用 GNSS 原始测量: https ://www.gsa.europa.eu/system/files/reports/gnss_raw_measurement_web_0.pdf

具体来说,第 2.4.2 节解释了如何根据 Android API 提供的数据计算伪距。它实际上是几页文本,所以我不会在这里复制整个内容,但这里是他们共享的示例 1,用于计算 Galileo、GPS 和北斗信号在一周时间时的伪距的 Matlab 代码片段被编码:

% Select GPS + GAL TOW decoded (state bit 3 enabled)
pos = find( (gnss.Const == 1 | gnss.Const == 6) & bitand(gnss.State,2^3);
% Generate the measured time in full GNSS time
tRx_GNSS = gnss.timeNano(pos) - (gnss.FullBiasNano(1) + gnss.BiasNano(1));
% Change the valid range from full GNSS to TOW
tRx = mod(tRx_GNSS(pos),WEEKSEC*1e9);
% Generate the satellite time
tTx = gnss.ReceivedSvTime(pos) + gnss.TimeOffsetNano(pos);
% Generate the pseudorange
prMilliSeconds = (tRx - tTx );
pr = prMilliSeconds *Constant.C*1e-9;
于 2020-06-18T14:14:00.573 回答