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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> расчет растояния по координатам.
alexdos
сообщение Apr 30 2013, 15:28
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856



Подскажите где почитать про расчет растояния по координатам, нужно упрощенная формула, для растояний до 500 метров, точность не шибкая, и пару метров устрит. Но чтоб просто и быстро. Нужно знать приблизился ли обьект с жпс на какоето растояния до статической координаты. Координат будет штук 500, а может и больше.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 30 2013, 15:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(alexdos @ Apr 30 2013, 18:28) *
Подскажите где почитать про расчет растояния по координатам, нужно упрощенная формула, для растояний до 500 метров, точность не шибкая, и пару метров устрит.

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

Цитата(alexdos @ Apr 30 2013, 18:28) *
Но чтоб просто и быстро. Нужно знать приблизился ли обьект с жпс на какоето растояния до статической координаты.

Мало данных: если у вас PC или Cortex-M4F - можно работать с плавучкой и будет всё равно быстро, если что-то типа PIC16 - то совсем по другому - работать лучше с целыми величинами. Опять же в какое время должен вложится обсчёт?



Ещё момент - нужно ли учитывать что полушария бывают западное и восточное?
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 30 2013, 15:58
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(alexdos @ Apr 30 2013, 19:28) *
Подскажите где почитать про расчет растояния по координатам, нужно упрощенная формула, для растояний до 500 метров, точность не шибкая, и пару метров устрит. Но чтоб просто и быстро. Нужно знать приблизился ли обьект с жпс на какоето растояния до статической координаты. Координат будет штук 500, а может и больше.


Я вот так считаю:
Код
#include <math.h>

double sdlat, sdlon, dist;
volatile double lat, clat, lon, clon;

clat = 57.60904722 * M_PI / 180.0;
clon = 39.82411944 * M_PI / 180.0;

lat = 57.6083 * M_PI / 180.0;
lon = 39.82488333 * M_PI / 180.0;

sdlat = sin((lat - clat) / 2.0);
sdlon = sin((lon - clon) / 2.0);
dist = 2.0 * asin(sqrt(sdlat * sdlat + cos(clat) * cos(lat) * sdlon * sdlon)) * 6367444.6571225;


На Cortex-M4F довольно быстро.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 30 2013, 16:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(adnega @ Apr 30 2013, 18:58) *
Я вот так считаю:
Код
dist = 2.0 * asin(sqrt(sdlat * sdlat + cos(clat) * cos(lat) * sdlon * sdlon)) * 6367444.6571225;

Почему через арксинус? Sqrt недостаточно? Или точность выше?
Go to the top of the page
 
+Quote Post
alexdos
сообщение Apr 30 2013, 16:56
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856



Цитата(_Артём_ @ Apr 30 2013, 19:34) *
Почему через арксинус? Sqrt недостаточно? Или точность выше?


расчет будет проводится на STM32f100.
Вот и я думаю, зачем усложнения в вычислениях косинусами, арксинусами. По сути задача на моё мнение сводится к вычислению гипотенузы в треугольнике. Где гипотенуза искомое расстояние, а катеты, разница между координатами (проэкции на широту и долготу). Учитывая что это все растояния будут не более 500 метров, точность не высокая, даже ошибка в пару метров устроит, то можно все упростить.
Go to the top of the page
 
+Quote Post
GeGeL
сообщение May 1 2013, 06:40
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Цитата(_Артём_ @ Apr 30 2013, 18:39) *
Для таких дистанций можно считать Землю плоской и расстояние считать по Пифагору, с учётом того что дельта растояния по долготе зависит от широты.

Все равно косинус нужен, но есть хорошие целочисленные алгоритмы для MC, уже обсуждалось в этой ветке около года назад.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение May 1 2013, 06:44
Сообщение #7


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

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(alexdos @ Apr 30 2013, 18:28) *
Подскажите где почитать про расчет растояния по координатам, нужно упрощенная формула, для растояний до 500 метров, точность не шибкая, и пару метров устрит. Но чтоб просто и быстро. Нужно знать приблизился ли обьект с жпс на какоето растояния до статической координаты. Координат будет штук 500, а может и больше.


Давно пользуемся таким методом.

Код
#define Pi 3.14159265358979

//вычисление расстояния между двумя точками
unsigned int calcDist(double Lat1, double Long1, double Lat2, double Long2)
{
  double Lat1_Radi=0, Lat_metr=0, Long_metr=0, Res=0;


  Lat1_Radi = 111112*cos( (Pi*Lat1)/180 );


  Lat_metr = (Lat1*111112) - (Lat2*111112);

  Long_metr = (Long1*Lat1_Radi) - (Long2*Lat1_Radi);

  Res = sqrt( (Lat_metr*Lat_metr) + (Long_metr*Long_metr) );
  return ((unsigned int) Res);
}
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 1 2013, 10:42
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(GeGeL @ May 1 2013, 09:40) *
Все равно косинус нужен

Можно затабулировать с каким-то шагом, например для каждого градуса.
Цитата(GeGeL @ May 1 2013, 09:40) *
есть хорошие целочисленные алгоритмы для MC, уже обсуждалось в этой ветке около года назад.

Что за тема?
Go to the top of the page
 
+Quote Post
V_G
сообщение May 1 2013, 11:48
Сообщение #9


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

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Гораздо лучше, быстрее и точнее считать расстояния не по географическим, а по прямоугольным координатам. Все GPS-приемники считают в XYZ (относительно центра Земли), но в стандартном NMEA вывод наружу прямоугольных координат не предусмотрен. Приходится переключаться на бинарные протоколы.
Go to the top of the page
 
+Quote Post
Frolov Kirill
сообщение May 1 2013, 12:51
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643



Формулы здесь: http://gis-lab.info/qa/great-circles.html Алгоритм проще писать с плавающей точкой. Переписывать с фиксированной IMHO заметный маразм (float работает и на PIC18 но тянет за собой много мат. функций в ПЗУ). Понадобятся: синус и косинус, корень квадратный и atan2 -- всё кордиком (если вручную, с фикс. точкой). Но, повторюсь, маразм, ибо с плавающей может даже быстрей считаться (для фикс. точки разрядность бОльшая).

Если памяти на float нет (double не нужен и медленее, cosf() вместо cos() и т.п.), то остаётся только считать на плоскости. В 16 битах расстояния до ~65км с погрешностью до 500м на больших расстояниях. Понадобятся корень квадратный (32 бита кордиком) и косинус (12 бит кордиком).


Сообщение отредактировал Frolov Kirill - May 1 2013, 12:55
Go to the top of the page
 
+Quote Post
GeGeL
сообщение May 3 2013, 11:00
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Цитата(GeGeL @ May 1 2013, 09:40) *
...есть хорошие целочисленные алгоритмы для MC, уже обсуждалось в этой ветке около года назад.


Цитата(_Артём_ @ May 1 2013, 13:42) *
Что за тема?


Тема по стояночному дрейфу координат:
http://electronix.ru/forum/index.php?showtopic=96786
Кстати, таки получилось у меня сделать хороший фильтр стояночных звезд. Вкратце: использую очередь с адаптируемым размером, обсчитываю по оригинальному фильтрующему
алгоритму всю группу накопленных в ней точек (фрейм). В итоге подавляет как быстрый, так и медленный дрейф, последовательно приближаясь к средней координате. Но даже при медленном начале движения с маневрами четко фиксирует и выдает начало трека. Вместе с использованием отправки точек по перемещению (тоже адаптируемому) и по повороту дает очень плавный трек без никаких артефактов даже в условиях города (помехи, застройка). А при быстром относительно равномерном движении размер очереди (и латентность фильтра) минимальны.
Проверено на Quectel M12 под OCPU: для его 32bit ARM7 это легкая задача.
Go to the top of the page
 
+Quote Post
x893
сообщение May 22 2013, 20:44
Сообщение #12


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Цитата(GeGeL @ May 3 2013, 15:00) *
Тема по стояночному дрейфу координат:
http://electronix.ru/forum/index.php?showtopic=96786
Кстати, таки получилось у меня сделать хороший фильтр стояночных звезд. Вкратце: использую очередь с адаптируемым размером, обсчитываю по оригинальному фильтрующему
алгоритму всю группу накопленных в ней точек (фрейм). В итоге подавляет как быстрый, так и медленный дрейф, последовательно приближаясь к средней координате. Но даже при медленном начале движения с маневрами четко фиксирует и выдает начало трека. Вместе с использованием отправки точек по перемещению (тоже адаптируемому) и по повороту дает очень плавный трек без никаких артефактов даже в условиях города (помехи, застройка). А при быстром относительно равномерном движении размер очереди (и латентность фильтра) минимальны.
Проверено на Quectel M12 под OCPU: для его 32bit ARM7 это легкая задача.


Было бы интересно проверить на своем приемнике - не планируете опубликовать ?
Go to the top of the page
 
+Quote Post
GeGeL
сообщение May 23 2013, 18:46
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Пока нет, к сожалению: алгоритм работает в составе коммерческого софта.
Go to the top of the page
 
+Quote Post
Telit_Sprt
сообщение May 23 2013, 21:30
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 21-01-13
Пользователь №: 75 273



Доброй ночи,
всем пользователям модемов от Телит, предлагается новый сервис M2M Locatе, для определения местоположения модуля по базовым станциям, причем все вычисления проходят на стороне сервиса M2M locate. Более подробно об этом сервисе можно прочитать по ссылке - Telit M2M Locate

Желаю удачи!
Go to the top of the page
 
+Quote Post
GeGeL
сообщение May 24 2013, 17:04
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Цитата(Telit_Sprt @ May 24 2013, 00:30) *
вычисления проходят на стороне сервиса

А можно поподробнее алгоритм? ТА хоть используется?

Цитата
А тестовых целях сервис предоставляется в свободном доступе, но с ограничением до 10 запросов в сутки с одного модуля.

Как то даже неконкурентно в сравнении с тем же Quectel: у них все бесплатно и неограниченно...
Go to the top of the page
 
+Quote Post
Telit
сообщение May 24 2013, 19:56
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 12-11-10
Из: СПБ
Пользователь №: 60 836



Цитата(GeGeL @ May 24 2013, 21:04) *
Как то даже неконкурентно в сравнении с тем же Quectel: у них все бесплатно и неограниченно...


да нет конечно. бесплатный сервис планируется. мы же не самоубийцы...

в тестовых целях сервис пока идет с ограничением до 10 запросов в сутки.

Кстати насколько мне известно, симоком и квактель юзают открытый и непонятный открытый сервер вроде гугля, на котором непонятно как и что считается и конечно без гарантий всяких. ну типа завтра мы съехали и досвидос сервису.


а у нас используется свой телитовский сервак за который отвечает компания,

P.S. подразделению модулей Телит в этом году 10 лет!
Go to the top of the page
 
+Quote Post
x893
сообщение May 24 2013, 20:06
Сообщение #17


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Цитата(Telit_Sprt @ May 24 2013, 01:30) *
Доброй ночи,
всем пользователям модемов от Телит, предлагается новый сервис M2M Locatе, для определения местоположения модуля по базовым станциям, причем все вычисления проходят на стороне сервиса M2M locate. Более подробно об этом сервисе можно прочитать по ссылке - Telit M2M Locate

Желаю удачи!

Не могу найти кнопки - Использоватть или Регистрация
Go to the top of the page
 
+Quote Post
Telit_Sprt
сообщение May 27 2013, 06:55
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 21-01-13
Пользователь №: 75 273



Цитата(x893 @ May 25 2013, 00:06) *
Не могу найти кнопки - Использоватть или Регистрация


для использования сервиса не требуется регистрации, нужно только обновить модуль до Февральской прошивки. По командам отписался на странице новости.
Go to the top of the page
 
+Quote Post
krdmitry
сообщение Jun 9 2013, 16:21
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 160
Регистрация: 24-11-05
Из: СПб
Пользователь №: 11 354



Господа, кто уже тестировал функцию m2m Locate? Каковы результаты?
Go to the top of the page
 
+Quote Post
Relax
сообщение Jun 11 2013, 05:53
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 1-10-12
Из: Санкт-Петербург
Пользователь №: 73 753



Цитата(alexdos @ Apr 30 2013, 19:28) *
Подскажите где почитать про расчет растояния по координатам, нужно упрощенная формула, для растояний до 500 метров, точность не шибкая, и пару метров устрит. Но чтоб просто и быстро. Нужно знать приблизился ли обьект с жпс на какоето растояния до статической координаты. Координат будет штук 500, а может и больше.

Со стороны SIMCom - все достаточно просто. Почитайте статью из БТ - http://mt-system.ru/sites/default/files/docs/bt_10_28_2.pdf

точность очень приблизительная и зависит от плотности расположения базовых станций того или иного оператора в данной местности. Это связано с тем, что модуль определяет координаты базовой станции с которой работает в данный момент.

P.s. по вопросу "открытого и непонятного сервера вроде гугля". Чет у меня доверие к надежности работы, доступности серверу Googla больше, пади и серверов у него в разы больше... wink.gif

Сообщение отредактировал Relax - Jun 11 2013, 05:55
Go to the top of the page
 
+Quote Post
alexdos
сообщение Jun 11 2013, 06:32
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 339
Регистрация: 10-07-08
Из: Херсон
Пользователь №: 38 856



Цитата(Relax @ Jun 11 2013, 08:53) *
точность очень приблизительная и зависит от плотности расположения базовых станций того или иного оператора в данной местности. Это связано с тем, что модуль определяет координаты базовой станции с которой работает в данный момент.


Тема немного стала уходить в сторону.
Могу доложить некоторые изыскания. Во первых должен немного сказать про то для какой задачи. И условия задачи. Основная цель, определения попадания обьекта в заданную область от тзвестной координаты. Область круг, растояние до координаты от места положения обьекта будет радиус. Обьект движущийся, машина. Расчет растояния нужно в пределах одного города. При средней скорости 40 км/ч и получение координат с частотой 1 раз в сек. обьект успевает изменить свое положение на 11 метров. Поэтому смысла вычислять растояние с точностью до миллиметры нет. Поэтому, в "гугля" было "спрошено" сколько приходится растояния на изменения на еденицу по широте и долготе. Взяты координаты двух точек и растояние между ними расчитаны двумя способами.
1. "спросили" у то го же гугля, растояние получилось 3226.7025001787 метров
2. Расчитано по теореме пифагора, по разнице координат, получилось 3222.5241770131 метров

Разница составила 4.178323165782 метров, что составляет 0.1295% ошибки.
При этом "растояния на изменения на еденицу по широте и долготе" было взято от места удалённого на 200 км. При такой ошибке расчетов, упрощение расчетов, вполне возможно для решения моей задачи.

Сообщение отредактировал alexdos - Jun 11 2013, 06:34
Go to the top of the page
 
+Quote Post
GeGeL
сообщение Jun 11 2013, 22:03
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682



Цитата(alexdos @ Jun 11 2013, 10:32) *
Поэтому, в "гугля" было "спрошено" сколько приходится растояния на изменения на еденицу по широте и долготе.

А смысл спрашивать у Гугла? На градус по долготе приходится всегда одинаковое расстояние (длина меридиана разделить на 360). На градус по широте можете брать то же значение (земля - шар), умноженное на косинус долготы.
Далее - по Пифагору. На одном расчете получите точность в доли процента при расстояния в километры. Но если, например, делаете одометр в самом трекере, то надо принять меры для предупреждения накопления ошибок и корректного округления. У меня получалась точность одометра около 1-2% на суточном пробеге.
Go to the top of the page
 
+Quote Post

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

 


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


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