Добраться до путевой точки с помощью GPS / Компас / Акселерометр - Алгоритм? - PullRequest
3 голосов
/ 14 мая 2011

У меня в настоящее время есть робот с некоторыми датчиками, такими как GPS, акселерометр и компас. Я хотел бы, чтобы мой робот достиг координаты GPS, которую я ввел. Я задавался вопросом, существует ли какой-либо алгоритм для этого, который уже существует. Я не хочу, чтобы исходный код не имел никакого смысла, просто процедура, которой должен следовать мой робот, чтобы я мог понять, что я делаю ... В данный момент давайте представим, что я может получить доступ к GPS-координате каждый раз, поэтому нет необходимости в фильтре Калмана. Я знаю, что это нереально, но я бы хотел запрограммировать это шаг за шагом, и Калман - следующий шаг.

Если у кого-то есть идея ...

Ответы [ 4 ]

1 голос
/ 28 июня 2011

Чтобы получить направление (положительный угол к востоку от севера) между двумя точками широты, используйте:

bearing=mod(atan2(sin(lon2-lon1)*cos(lat2),(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(lon2-lon1)),2*pi)

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

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

Для типичных широт 45 градусов это около 111,132 км / град. Шир., 78,847 км / град. Л.

0 голосов
/ 09 мая 2017

Есть очень хорошая страница, объясняющая формулы между вычислением расстояния по GPS, пеленгом и т. Д., Который я использовал:

http://www.movable -type.co.uk / скрипты / latlong.html

Я сейчас пытаюсь сделать эти вычисления самостоятельно, и только что обнаружил, что в ответе Мартина Беккета есть ошибка. Если вы сравните с информацией этой веб-страницы, вы увидите, что часть в середине:

(lat1)*sin(lat2)

на самом деле должно быть:

cos(lat1)*sin(lat2)

Оставил бы комментарий, но пока не имеет репутации ...

0 голосов
/ 28 июня 2011

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

0 голосов
/ 14 мая 2011

1) сориентируйте своего робота в направлении пункта назначения.

2) Двигайтесь вперед до тех пор, пока расстояние между вами и пунктом назначения не увеличится, и вы должны вернуться к 1)

3) НО.... если вы находитесь достаточно близко (под порогом), считайте, что вы прибыли в пункт назначения.

...