--- Сообщения объединены, 11 янв 2019, Оригинальное время сообщения: 11 янв 2019 --- Спасибо конечно, - но если у Вас с английским в отличии от меня все нормально, - может объясните попонятнее? .
Я в третий раз рекомендую посмотреть исходники http://stvl.nl/stdalone.pas Там всё это есть. Пиво без водки – деньги на етер. В том смысле, что стандартное значение машинного эпсилон для типа float 1.19209e-07. И это явно недостаточно. Кстати, а есть ли в этом micro С определение для FLT_EPSILON? Или выполнить что-то типа: Код: float a = 1.0; do{ a *= 0.5; }while((1.0 + a) > 1.0); Может быть всё не так плохо, как я думаю, хотя в четыре байта много не засунешь. Иначе надо искать библиотеку поддержки типа double для вашего micro С/контроллера.
Спасибо конечно за подсказку. Я посмотрел конечно, Но может быть Вы (извиняюсь за дерзость) напишете мне простую пошаговую инструкцию для нахождения этого самого искомого t/ --- Сообщения объединены, 12 янв 2019, Оригинальное время сообщения: 12 янв 2019 --- Вот и я о том же. У меня нет за плечами 5 лет обучения в профильном институте по этой тематике. Поэтому на плохое знание английского накладывается также не знание специальной терминологии. Но в любом случае, - спасибо за подсказку. Если кто нибудь внятно пояснит, - составлю алгоритм, и пойду дальше, - если нет, - буду разбираться.
У меня застарелый синдром преподавателя – точно знаю, что лучше всего запоминается то, до чего дошёл сам. Скачал Lazarus, создал проект для консольной программы, вставил текст stdalone.pas, заменил real на double, исправил кусок кода с устаревшим синтаксисом на while T >= 86400 do T := T - 86400; while T < 0 do T := T + 86400; И в отладчике посмотрел за изменением переменных. Важно! Точности float недостаточно для вычислений. Ошибка в последнем бите мантиссы равносильна ошибке представления орбиты и псевдодальности ~2 метра. Всё ещё печальней со временем. Ошибка может быть порядка 0.01 сек. Умножьте это на скорость света.
Мы с Вами отчего то о разном говорим. Мне сейчас нужно получить рабочий алгоритм, написанный мной. А вот когда он будет работать, - тогда я с большим удовольствием и энтузиазмом буду говорить о точности, и интересоваться как и какими методами мне её, этой самой точности добиваться.
Ttr=Trcv-S/c Trcv - время приёма в шкале времени приёмника, получите отсюда: S - псевдодальность до спутника c - скорость света Псевдодальности для каждого спутника разные, поэтому и Ttr будет для каждого спутника своё.
Уф!!!!!!!!!!!!!!!! Спасибо большое! Еще раз, - я правильно понял, - C0 7F 77 07 - (Врем¤ недели измерени¤ по локальному времени приемника. rcvTow \ в мс) это и есть Trcv, и теперь Ttr = Ttr = Trcv-S/c = C0 7F 77 07 минус псевдодальность деленная на скорость света.: Отчего я это нигде не находил , ни в каких книжках.
только не равно, а примерно равно, вообще время со спутника не высчитывают, а берут со спутника, но для этого нужно профессиональное геодезическое оборудование, вряд ли есть навигатор который получает такие данные Как вы собираетесь проверять правильность своих вычислений? PS: если вы собрались время спутника высчитывать опираясь на время приемника, то не забудьте о факторах влияющих на прохождения сигнала от спутника до приемника, правда на сколько я знаю их просчитывать пока не умеет никто
Добрый день. Только я обрадовался, что получил ответ, как меня опять "переопределили". Я ведь пояснил, - что делаю эти расчеты используя исходные данные модуля навигатора. Модуль считает свои координаты, получая данные со спутников. Я по сути повторяю его расчет, - беря исходные данные у него, из его сообщений, - по запросу от контроллера. Эфемериды получаю, псевдодальности получаю. Если мне правильно подсказали, - время тоже получаю. Правильность вычислений собираюсь проверять сравнив их с координатами, которые высчитывает этот же модуль с которым я работаю. --- Сообщения объединены, 20 янв 2019, Оригинальное время сообщения: 20 янв 2019 --- Я бы самостоятельно не мог додуматься , что нужно это время еще дополнительно высчитывать, используя псевдодальности и скорость света.
Так ведь он считает координаты не так, как студенты на занятиях. Там ведь используется фильтр Калмана.
я же писал уже, - C0 7F 77 07 - Врем¤ недели измерени¤ по локальному времени приемника. rcvTow \ в мс 4 байта. все переменные в double.
наверное упустил. На тот момент беседа была не в этом. интересует правильность алгоритма. точность - следующий этап.
Похоже я неправильно пояснил ситуацию. Оставаясь в рамках точности float и без дополнительных ухищрений, в принципе невозможно проверить правильность алгоритма, так как решения просто не будет. А если и получится какое-то число, то ошибка может быть в сотни км. И будет совершенно непонятно, где сидит ошибка.
Я понял Вас, - наверное просто все смешалось....... я ведь изначально писал про методичку она есть вместе с решением. Результат с моим сходится. - я думал что это изначально понятно было. Видимо не написал....... Но это, - координаты спутников.