通过GNSS记录器应用程序获取的官方GNSS原始测量提供了以下参数:
TimeNanos
LeapSecond
TimeUncertaintyNanos
FullBiasNanos
BiasNanos
BiasUncertaintyNanos
DriftNanosPerSecond
DriftUncertaintyNanosPerSecond HardwareClockDiscontinuityCount
Svid
TimeOffsetNanos
State
ReceivedSvTimeNanos
ReceivedSvTimeUncertaintyNanos
Cn0DbHz
PseudorangeRateMetersPerSecond
PseudorangeRateUncertaintyMetersPerSecond我正在从上面的数据中寻找原始伪距测量值PR。帮个小忙?
发布于 2019-06-19 19:50:54
Pseudorange[m] = (AverageTravelTime[s] + delta_t[s]) * speedOfLight[m/s]其中:秒数,s - m。
尝试这样做:
减去当前ReceivedSvTimeNanos ReceivedSvTimeNanos的最大
不要忘记将所有值转换为相同的单位。
有关详情,请参阅this pdf和UserPositionVelocityWeightedLeastSquare class
发布于 2020-06-18 22:14:01
不幸的是,Android不能直接从API中提供伪距--你必须自己计算。
EU GSA在这里有一个很好的文档,在第2.4节中详细解释了如何使用GNSS原始测量:https://www.gsa.europa.eu/system/files/reports/gnss_raw_measurement_web_0.pdf
具体来说,2.4.2节解释了如何根据Android API提供的数据计算伪距。它实际上是几页的文本,所以我不会在这里复制整个代码,但这是他们分享的示例1,这是一个Matlab代码片段,用于计算伽利略,全球定位系统和BeiDou信号的伪距,当星期的时间编码时:
% 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;https://stackoverflow.com/questions/54904681
复制相似问题