|
Дрейф координат во время стоянки. EB-500 |
|
|
|
Nov 22 2011, 13:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256

|
Добрый день. Во время стоянки объекта раз в 30-270мин отсылаю координаты на сервер. Валидность данных проверяю по значению "A" в строке RMC NMEA (если "V" - данные недостоверны): Код $GPRMC,181057.000,A,5542.2389,N,03741.6063,E,0.47,74.50,190311,,,A*51 Так вот частенько координата убегает за 300-500м, плюс скорость скачет от 1 до 5км/ч. Во время же движения - все ОК. Пока на ум только приходит вариант с проверкой значения HDOP. Может кто-то уже решал подобную задачу? Спасибо.
Сообщение отредактировал Alt.F4 - Nov 22 2011, 13:16
|
|
|
|
|
 |
Ответов
|
Nov 25 2011, 17:11
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Это не PI Не я придумывал, см.тут: http://users.erols.com/dlwilson/gpshdop.htmИ HDOP - не просто множитель, я и сам толком не понял, что... Этот алго sqrt по моему тот же Ньютона, только со сдвигами. Вот еще: Код //SQRT using Newton algo for int
s32 mysqrt(s64 l) { s64 ret=l;s64 div=l; if(l<=0)return 0; while(TRUE) { div=(l/div+div)/2; if(ret>div)ret=div;else return (s32)ret; } } Но я имел ввиду ежесекундное СРАВНЕНИЕ суммы RMSError (расчитанных по HDOP по формуле выше) для какой-то координаты (назовем ее текущей) и новой координаты с расстоянием в метрах между этими координатами (перемещением). Если перемещение больше суммы ошибок, то можем считать, что объект сдвинулся, и меняем текущую координату на новую. Если нет, но HDOP новой МЕНЬШЕ чем HDOP текущей, то тоже заменяем. Если больше-равно, то игнорируем новую. Расстояние между координатами считаем по теореме Пифагора, но вот чтобы преобразовать дельту градусов долготы в дельту метров, потребуется косинус широты. Правде, есть приближенный алго для cos через тангенс двойного угла с заданной точностью, так что отсутствие math не проблема, но это если хватает вычислительной мощности.
Сообщение отредактировал GeGeL - Nov 25 2011, 17:16
|
|
|
|
|
Nov 26 2011, 13:50
|
Местный
  
Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643

|
Цитата(GeGeL @ Nov 25 2011, 21:11)  Этот алго sqrt по моему тот же Ньютона, только со сдвигами. Вот еще: Это скорей CORDIC (Цифра-за-цифрой). Алгоритм Ньютона требует деление и это его фатальный недостаток. Многие небольшие MCU имеют аппаратный умножитель (уже, раньше и того не было), но аппаратное деление до сих по роскошь (да и выполняется, если есть, не быстро). Цикл в CORDIC алгоритме может быть развёрнут, код оптимизирован и может тратиться всего несколько тактов на итерацию цикла (которых 32). В алгоритме Ньютона итераций может меньше, но одно только деление на 8-битном MCU может занять тысячу тактов, например. Цитата Но я имел ввиду ежесекундное СРАВНЕНИЕ суммы RMSError (расчитанных по HDOP по формуле выше) для какой-то координаты (назовем ее текущей) и новой координаты с расстоянием в метрах между этими координатами (перемещением). Если перемещение больше суммы ошибок, Не совсем понял откуда взять сумму ошибок. Вот стоит ночью на одном месте и улетает то на 180 метров туда, то на 180 метров сюда (в две точки, пол-часа там, пол-часа тут) -- как понимать? Цитата Расстояние между координатами считаем по теореме Пифагора, но вот чтобы преобразовать дельту градусов долготы в дельту метров, потребуется косинус широты. Да, нужен. Синус, косинус и арктангенс (верней, atan2(y,x)) считаются тоже кордиком достаточно легко. От безысходности для pic18 писал код. Хотя для более-менее вменяемого компилятора всё считается быстро и в плавучке (раз в секунду-то). Цитата Правде, есть приближенный алго для cos через тангенс двойного угла с заданной точностью, так что отсутствие math не проблема, но это если хватает вычислительной мощности. Вот тангенс как раз неудобен тем, что не влезает ни в какой int. Удобней отдельно представлять синусную и косинусную составляющую (получаемую из одной функции угла за одну итерацию на бит, примерно, методом CORDIC).
|
|
|
|
|
Nov 26 2011, 15:56
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Цитата(Frolov Kirill @ Nov 26 2011, 16:50)  Не совсем понял откуда взять сумму ошибок. Вот стоит ночью на одном месте и улетает то на 180 метров туда, то на 180 метров сюда (в две точки, пол-часа там, пол-часа тут) -- как понимать? Я вот что имел ввиду: держим в памяти координату, и ее ошибку (определенную как функцию от HDOP). Ее можно геометрически представить кругом с центром в координате и радиусом ошибки. Это наша рабочая координата, для выдачи, скажем, наружу. Ежесекундно получаем NMEA новую координату, определяем ее ошибку по ее HDOP. Если полученный круг не пересекается с рабочим, то тогда рабочим становится вновь полученный круг. И если радиус нового круга меньше рабочего, то опять же рабочим становится вновь полученный круг. Но это уже проехали, т.к. нет прямой функциональной зависимости между HDOP и ошибкой в метрах: если HDOP - это вероятностный показатель, то возможны редкие, но значительные отклонения даже при низкой HDOP (что показали вышеприведенные тесты), а это будет сбивать данный алгоритм. PS: а держится оно полчаса тут, полчаса там, скорее всего потому, что похожий алгоритм УЖЕ ЕСТЬ в чипсете. На самом деле изначально оно должно скакать постоянно. И, скорее всего, от чипсета к чипсету этот алгоритм фиксации различный (т.к. нигде не регламентируется), поэтому и имеем неопределенность.
Сообщение отредактировал GeGeL - Nov 26 2011, 16:03
|
|
|
|
Сообщений в этой теме
Alt.F4 Дрейф координат во время стоянки. EB-500 Nov 22 2011, 13:15 Baser Есть такая проблема. Причем она разрослась с появл... Nov 22 2011, 14:15 alexdos передаю координаты при стоянке раз в 120 сек, дре... Nov 22 2011, 14:37 Alt.F4 Как я понял, альманах, сохраненный в приемнике, им... Nov 22 2011, 15:17 V125 В строке $GPGGA есть параметр GPS fix 0 данн... Nov 22 2011, 15:31 GeGeL Я тестировал такой алгоритм: устанавливал порогову... Nov 22 2011, 16:40 Alt.F4 По какому показателю тогда лучше фильтровать:
1) п... Nov 22 2011, 16:51 GeGeL Наверное, лучше Ваша первоначальная идея - по пока... Nov 22 2011, 17:07 V125 Параметр снижения точности DOP (HDOP, VDOP, PDOP) ... Nov 22 2011, 17:58 Alt.F4 ЦитатаTrimble Planning2.9У меня не идет загрузка..... Nov 23 2011, 06:17 Baser Цитата(Alt.F4 @ Nov 23 2011, 08:17) з.ы. ... Nov 23 2011, 07:29 GeGeL Нет Nov 23 2011, 06:40 butthead2 Вчера HDOP 0,7 видел при >=10 спутниках. Прямо ... Nov 23 2011, 10:06  GeGeL Цитата(butthead2 @ Nov 23 2011, 13:06) Вч... Nov 23 2011, 15:37   Frolov Kirill Цитата(GeGeL @ Nov 23 2011, 19:37) RMS_Er... Nov 25 2011, 12:52 Alt.F4 Нашел интересную доку: жать.
Цитата: "Приемно... Nov 23 2011, 08:58 V125 Выходит надо забить на валидность в строке $G... Nov 23 2011, 09:31 ssokol Цитата(V125 @ Nov 23 2011, 13:31) Выходит... Nov 23 2011, 13:34 ilya_nn Цитата(Alt.F4 @ Nov 22 2011, 17:15) Добры... Nov 23 2011, 11:07 V125 Цитата(ssokol @ Nov 23 2011, 17:34) Ну на... Nov 23 2011, 14:26 butthead2 Попробуйте снять лог на стоянке - порядка +-20 пла... Nov 25 2011, 20:41 Baser Тоже немного поигрался с приемником на МТ3329 в оф... Nov 25 2011, 21:41 GeGeL Согласен, тот алго, что я выше предложил, особого ... Nov 26 2011, 07:36 Alt.F4 Включение EB500 каждые полчаса и выключение сразу ... Nov 29 2011, 17:38 Baser Цитата(Alt.F4 @ Nov 29 2011, 19:38) Включ... Nov 29 2011, 21:04 Alt.F4 ЦитатаНемного не понятно: в таблице самые первые в... Nov 30 2011, 04:14 Baser Цитата(Alt.F4 @ Nov 30 2011, 06:14) А есл... Nov 30 2011, 09:39 Alt.F4 Я тут глянул, что многие юзают продукт белорусской... Nov 30 2011, 11:55 andrewlekar Самое адекватное решение задачи - дополнительно к ... Dec 1 2011, 04:43 ssokol Цитата(andrewlekar @ Dec 1 2011, 08:43) С... Dec 1 2011, 19:20 GeGeL Акселерометр - это хорошо, но по существу не решае... Dec 1 2011, 09:50 Slonofil Ага. Тогда уж можно сразу ставить инерциальную нав... Dec 1 2011, 09:57 andrewlekar ЦитатаВо-первых, можно качаться, стоя на месте, а ... Dec 2 2011, 05:35 Slonofil Цитата(andrewlekar @ Dec 2 2011, 09:35) В... Dec 2 2011, 09:06 vesago Я тоже сталкивался с такой неприятностью. Сначала ... Dec 3 2011, 15:19
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|