реклама на сайте
подробности

 
 
> Дрейф координат во время стоянки. EB-500
Alt.F4
сообщение Nov 22 2011, 13:15
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GeGeL
сообщение Nov 25 2011, 17:11
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Frolov Kirill
сообщение Nov 26 2011, 13:50
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 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).

Go to the top of the page
 
+Quote Post
GeGeL
сообщение Nov 26 2011, 15:56
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 02:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016