RTKlib/постпроцессинг

Так уж и не бывает?
https://www.researchgate.net/publication/260088162_Application_of_SBAS_pseudorange_and_carrier_phase_signals_to_precise_instantaneous_single-frequency_positioning

Не только u-blox.
Мой S-Max Geo (в девичестве SP60) тоже не в курсе, что их не бывает и вполне себе пишет в измерения.
Вот из последнего rinex-а:

на заборах тоже многое пишут :smiley: маразм крепчает :expressionless:

Смотрим лог с u-blox PRN125 и PRN140

Ch	SV	CN0	Residual	Nav	Qi	El	Az	Orbit	Healthy	DGPS
6	S140	43	0.00		N	6	11	115	Eph	N	N
20	S125	39	0.00		N	7	15	239	Eph	N	N



SV	Signal 	Pseudo Range [m]	Doppler [Hz]	SNR	PR Std Dev. [m]	
S140	L1C/A	38707396.81		3489.2		39	0.64	
S125	L1C/A	38407194.92		3679.6		35	0.64	

спустя 1 час наблюдений

S140	L1C/A	36370692.58		3514.0		40	0.32	
S125	L1C/A	35924012.59		3691.4		38	0.32	

Спутники СДКМ относительно приемника разнесены на угол 124 градуса.
Неподвижный приемник u-blox к геостационарным Лучам приближается со скоростями :
S125 2483 км/час
S140 2336 км/час

**Плоскоземельщики рыдают от счастья ** :smiley:
Согласно данным приемника Земля падает на геостационарные спутники,
естественно реально этого не происходит, просто глюк, спутники рассинхронизованы,
причем у S125 несущая сбита больше потому и скорость больше !

Отлично! :slight_smile:

Солнечный ветер маловероятен. Ионосферная сетка в составе SBAS его бы скомпенсировала.

tt8_quadrifilar_140_com9 ICB:


-4  -6,6444
-2  -2,8727
-1  -0,0443
 0   1,5763
 1   0,6557
 2   2,0576
 4   2,4765
 5   3,0585
 6   7,5727

tt8_quadrifilar_140_com9 GPS+СДКМ:

tt8_quadrifilar_140_com9 ГЛОНАСС+СДКМ:

tt8_patch_140_com9 ICB:


-7  -12,83137
-4  -11,4566
-1  -2,9486
 0  -0,2633
 1   0,4452
 2   1,1176
 4   2,5417
 6   3,0825

tt8_patch_140_com9 GPS+СДКМ:

tt8_patch_140_com9 ГЛОНАСС+СДКМ:

Надеюсь ничего не напутал :slight_smile:

Пожалуйста напишите нам на почту ваши контактные данные, чтобы мы могли с вами связаться – rodchenko.ao@spacecorp.ru, в письме укажите, что вы тот самый Иван с форума :).

Буду ждать очередного возмущения ионосферы :slight_smile:

Огромное Спасибо !
Наглядно видно зависимость калибровки от типа пассивной антенны.

Не очень частое явление :slight_smile:

Поэтому и была приведена статья - http://russianspacesystems.ru/wp-content/uploads/2019/10/1_p3_0603.pdf. Простой алгоритм, позволяющий любому потребителю СДКМ в независимости от приёмника и антенны вычислить свои ICB в режиме реального времени.

You can use here any other language. As i understand it, the fake chinese M8N modules use smaller SPI flash chips than the usual 16Mbit and it creates problems with the newer firmware versions,
because they assume a certain layout with fixed data block offsets.
There are 2 possible ways to get raw GPS data with M8N firmware v3.01:
use a modified firmware or decode the obfuscated “secure” output.
Both need a modified rtklib version with the recursive UBX packet parser
and the second option requires 2 128bit keys: for bit XOR and permutation.
I have no experience with the M8P firmware on M8N, and have already moved
to M9N and F9x.

Версию RTKLIB в которой встроен этот алгоритм планируете выкладывать ?

Thank you for that comprehensive answer.

I think that, while waiting to be able to purchase a suitable receiver natively for use with RTKLIB, I will study these modifications you have indicated, as I have already said I like to learn.

Thank you again

вместо ionmodel подставляю свою ionmodel_sim выверенную в GPS симуляторе klobuchar model и сравниваем сразу все три


sat= 8 el= 5.2 -> ion_old=4.52 ion_sim=4.52 ion_sbas=3.56
sat=10 el=10.4 -> ion_old=5.54 ion_sim=4.02 ion_sbas=4.15
sat=27 el=12.8 -> ion_old=3.89 ion_sim=3.81 ion_sbas=3.05 
sat=13 el=15.5 -> ion_old=4.49 ion_sim=3.60 ion_sbas=3.60 
sat=29 el=16.4 -> ion_old=5.63 ion_sim=3.53 ion_sbas=3.61
sat=21 el=18.4 -> ion_old=3.89 ion_sim=3.38 ion_sbas=2.89 
sat=15 el=25.8 -> ion_old=4.06 ion_sim=2.89 ion_sbas=2.85 
sat=26 el=36.1 -> ion_old=3.23 ion_sim=2.36 ion_sbas=2.20 
sat=10 el=36.3 -> ion_old=3.34 ion_sim=2.35 ion_sbas=2.27 
sat=27 el=36.6 -> ion_old=2.80 ion_sim=2.34 ion_sbas=2.12 
sat=21 el=40.4 -> ion_old=2.77 ion_sim=2.18 ion_sbas=1.99 
sat=16 el=47.4 -> ion_old=2.49 ion_sim=1.95 ion_sbas=1.79
sat=26 el=53.2 -> ion_old=2.18 ion_sim=1.81 ion_sbas=1.55 
sat=18 el=63.8 -> ion_old=2.17 ion_sim=1.63 ion_sbas=1.60 
sat=20 el=67.1 -> ion_old=2.18 ion_sim=1.59 ion_sbas=1.55 
sat=18 el=88.5 -> ion_old=1.84 ion_sim=1.50 ion_sbas=1.25

наглядно видно что в ionmodel RTKLIB bug :wink:

Ничего не понятно :). Что за баг? Что означает “выверенную в GPS симуляторе klobuchar model”?

ionmodel имеет баг в реализации klobuchar model который расписан весьма детально :smiley:
Алгоритм есть так что сами ищите где именно баг в ionmodel :sunglasses:

В GPS симуляторе реализация klobuchar model проверяется вессьма просто :slight_smile:
Два неподвижных приемника u-blox принимают в одно и то же время один реальные спутники а второй
сигнал от симулятора который иммитирует эти спутники в реальном масштабе времени.

Посмотрел, бага не нашёл, может плохо искал :slight_smile:

Понятнее не стало. Как вычисляется ion_sim? Каким-то образом вычисляете разницу между сигналом от симулятора и реальным измерением?

баг там знатный :smiley: с первого и даже пятого взгляда кажется что все OK !
поэтому** все и пользуются с багом**


extern int ionocorr(gtime_t time, const nav_t *nav, int sat, const double *pos,
					const double *azel, int ionoopt, double *ion, double *var)
{
.....
	/* broadcast model */
//	if (ionoopt==IONOOPT_BRDC)
	{
		double ion2 ;
		ion2 = ionmodel_sim( time,nav->ion_gps,pos,azel);
		*ion=ionmodel(time,nav->ion_gps,pos,azel);
		trace(2," ion_old=%2.2f ion_sim=%2.2f ",*ion, ion2 );
		*ion = ion2;
		*var=SQR(*ion);
//		return 1;
	}
	/* sbas ionosphere model */
	if (ionoopt==IONOOPT_SBAS)
	{
		sbsioncorr(time,nav,pos,azel,ion,var);
		trace(2," ion_sbas=%2.2f \n",*ion);
		return  1;
	}

.....
}

ionmodel_sim и ionmodel реализуют один и тот же алгоритм klobuchar model
только в ionmodel_sim нет бага :slight_smile:

вот в реализации тропосферной задержки нет багов


SDCM

2 sat=25 azel= 2.9 -> 2  trp_saas=47.16 2  trp_sbas=36.04 
2 sat= 8 azel= 5.2 -> 2  trp_saas=26.44 2  trp_sbas=24.18
2 sat=13 azel= 7.5 -> 2  trp_saas=18.33 2  trp_sbas=17.69
2 sat=10 azel= 8.0 -> 2  trp_saas=17.10 2  trp_sbas=16.62
2 sat=27 azel=10.7 -> 2  trp_saas=12.78 2  trp_sbas=12.69
2 sat=15 azel=11.8 -> 2  trp_saas=11.66 2  trp_sbas=11.63
2 sat=13 azel=15.5 -> 2  trp_saas= 8.95 2  trp_sbas= 9.01
2 sat= 5 azel=15.0 -> 2  trp_saas= 9.23 2  trp_sbas= 9.28
2 sat=21 azel=16.2 -> 2  trp_saas= 8.54 2  trp_sbas= 8.61
2 sat=29 azel=16.4 -> 2  trp_saas= 8.48 2  trp_sbas= 8.55
2 sat=15 azel=25.8 -> 2  trp_saas= 5.48 2  trp_sbas= 5.57
2 sat=16 azel=35.0 -> 2  trp_saas= 4.16 2  trp_sbas= 4.23
2 sat=26 azel=36.1 -> 2  trp_saas= 4.05 2  trp_sbas= 4.13
2 sat=10 azel=36.3 -> 2  trp_saas= 4.03 2  trp_sbas= 4.10
2 sat=27 azel=36.6 -> 2  trp_saas= 4.01 2  trp_sbas= 4.08
2 sat=20 azel=38.0 -> 2  trp_saas= 3.87 2  trp_sbas= 3.94
2 sat=21 azel=40.4 -> 2  trp_saas= 3.68 2  trp_sbas= 3.75
2 sat=29 azel=42.0 -> 2  trp_saas= 3.56 2  trp_sbas= 3.63
2 sat=16 azel=47.4 -> 2  trp_saas= 3.24 2  trp_sbas= 3.30
2 sat=26 azel=53.9 -> 2  trp_saas= 2.95 2  trp_sbas= 3.00
2 sat=18 azel=63.8 -> 2  trp_saas= 2.66 2  trp_sbas= 2.71
2 sat=20 azel=67.1 -> 2  trp_saas= 2.59 2  trp_sbas= 2.64
2 sat=18 azel=86.7 -> 2  trp_saas= 2.39 2  trp_sbas= 2.43


наглядно видать что тропосферная задержка больше чем ионосферная.

Ещё раз проверил ionmodel, ошибок нет, всё правильно реализовано. Сдаётся мне, что баг всё-таки в ionmodel_sim :slight_smile:

Уже ж сказал что** баг там знатный** :smiley:
Причем видать его любому если смотреть в эту табличку


sat= 8 el= 5.2 -> ion_old=4.52 ion_sim=4.52 ion_sbas=3.56
sat=10 el=10.4 -> ion_old=5.54 ion_sim=4.02 ion_sbas=4.15
sat=27 el=12.8 -> ion_old=3.89 ion_sim=3.81 ion_sbas=3.05 
sat=13 el=15.5 -> ion_old=4.49 ion_sim=3.60 ion_sbas=3.60 
sat=29 el=16.4 -> ion_old=5.63 ion_sim=3.53 ion_sbas=3.61
sat=21 el=18.4 -> ion_old=3.89 ion_sim=3.38 ion_sbas=2.89 
sat=15 el=25.8 -> ion_old=4.06 ion_sim=2.89 ion_sbas=2.85 
sat=26 el=36.1 -> ion_old=3.23 ion_sim=2.36 ion_sbas=2.20 
sat=10 el=36.3 -> ion_old=3.34 ion_sim=2.35 ion_sbas=2.27 
sat=27 el=36.6 -> ion_old=2.80 ion_sim=2.34 ion_sbas=2.12 
sat=21 el=40.4 -> ion_old=2.77 ion_sim=2.18 ion_sbas=1.99 
sat=16 el=47.4 -> ion_old=2.49 ion_sim=1.95 ion_sbas=1.79
sat=26 el=53.2 -> ion_old=2.18 ion_sim=1.81 ion_sbas=1.55 
sat=18 el=63.8 -> ion_old=2.17 ion_sim=1.63 ion_sbas=1.60 
sat=20 el=67.1 -> ion_old=2.18 ion_sim=1.59 ion_sbas=1.55 
sat=18 el=88.5 -> ion_old=1.84 ion_sim=1.50 ion_sbas=1.25

занятная у вас логика :laughing:
если ion_sim (ionmodel_sim) фактически совпадает с ion_sbas а ion_old (ionmodel) врет типа el=16.4 → ion_old=5.63 тихий ужас :open_mouth: и т.д.
то баг именно в ionmodel_sim :sunglasses:

Невидимый :).

Почему сразу врёт и тихий ужас? Такие значения вполне имеют место быть. У вас же кроме угла возвышения есть ещё и азимут…Как вариант, точка прокола ионосферы для данного спутника оказалась в области более возмущённой ионосферы.

Зачётный баг в RTKLIB :smiley:
на базе этого бага несознательные опубликовали не один десяток публикаций :open_mouth:
типа этой, вот перл оттуда :laughing:
“модель Клобучара , которая в среднем компенсирует 50–60% ионосферной ошибки. Эта модель была предложена к практическому использованию около тридцати лет назад.”

от угла возвышения зависит длина пути в ионосфере и следовательно величина задержки
а вот какой механизм влияния азимута ? :wink:
особенно если спутник то один и тот же в одно и то же время

sat=29 el=16.4 -> ion_old=5.63 ion_sim=3.53 ion_sbas=3.61

Правильно ли я вас понял, что “БАГ” присутствует в стандартном алгоритме модели Клобучара? В том алгоритме, который приведён в ICD-GPS?

уже несколько раз повторил что бага в стандартном алгоритме модели Клобучара нет :slight_smile:

Есть баг в процедуре ionmodel RTKLIB которая compute ionospheric delay by broadcast ionosphere model (klobuchar model)
естественно реализуя стандартный алгоритм модели Клобучара, но неправильно :smiley:

Покажите уже патч его исправляющий, пока ваше поведение на протяжении страницы больше похоже на ёрничество.