Определение курса по GPS

std
Offline
Зарегистрирован: 05.01.2012

Приветствую all, и хочу задать вопрос: строил ли кто-нибудь корабль? не ROV плавающий под водой, а именно что-то работающее на поверхности.

Суть задачи такова: у нас есть река, в реке отводим себе некоторый квадрат, скажем 500х500 м. Нужно послать координаты, и чтобы кораблик пришёл в указанное место, ессно +/- погрешность приёмника. Если попытаться мерить курс компасом GY-85, то надо знать магнитное склонение, а то подбором как-то лень заниматься. Итак, можно ли обойтись без компаса и прокладывать курс по точкам с GPS, или понадобится и то и другое? Терзают сомнения т. к. по-идее надо пройти ~надцать метров, чтобы координаты ощутимо изменились и можно было заниматься расчётами. А это уже заведомые допущения, что корабль смотрит куда нужно и не упрётся носом в берег на этапе определения курса.

Или GY-85 достаточно, в пределах километра?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

правильно терзают. если с одним датчиком GPS то нужно придумать какой то алгоритм инициализации в прострастве.. ну типа вперед 2 метра и назад 2 метра. тогда и будет ясно где перед, а где зад... :)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

может тогда gps и компас

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

https://code.google.com/p/arducopter/

Там всё это есть, но разобраться...........

//****************************************************************
// Function that will calculate the desired direction to fly and distance
//****************************************************************
static void navigate()
{
    // waypoint distance from plane in cm
    // ---------------------------------------
    wp_distance     = get_distance_cm(&filtered_loc, &next_WP);
    home_distance   = get_distance_cm(&filtered_loc, &home);

    // target_bearing is where we should be heading
    // --------------------------------------------
    target_bearing                  = get_bearing_cd(&filtered_loc, &next_WP);
    home_to_copter_bearing  = get_bearing_cd(&home, &current_loc);
}

StrangerM
Offline
Зарегистрирован: 02.11.2013

NMEA посылки от от GPS, гляньте спецификацию. Там есть курс в посылках.

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

В библиотеке  TinyGPS есть пример test_with_gps_device.ino, проверил, показывает курс и дистанцию до Лондона

 

Date       Time     Date Alt    Course Speed Card  Distance Course Card  Chars Sentences Checksum
                    Age  (m)    --- from GPS ----  ---- to London  ----  RX    RX        Fail
----------------------------------------------------------------------------------------------
 ********** ******** **** ****** ****** ***** ***   *******  ****** ***   8     0         0        
06/30/2014 21:47:57 374  11.90  0.00   0.81  N     1685     259.42 W     518   2         0       
06/30/2014 21:47:58 391  11.80  0.00   1.17  N     1685     259.42 W     1038  4         0       

(unsigned long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000, 0xFFFFFFFF, 9);

TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON);

А есть ещё TinyGPSPlus

std
Offline
Зарегистрирован: 05.01.2012

TinyGPSPlus уже читаю, позавчера подключал.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Знать курс это только половина. Нужно еще азимут как то брать. Если нет компаса. То только делать инициализацию. 2 метра вперед и 2 назад.. и дальше все уже ясно.
Тут как том анекдоте
Зюйд зюйд вест
Ты не зюйкай, ты пальцем покажи.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Я могу дико ошибаться, но если мне не изменяет помать, то Ваш кораблик (я предполагаю что он не 1,5-2 метра высотой будет) будет такие помехи от воды ловить что мама не горюй. Любая мало-мальская волна в непосредственной близости от датчика будет ему такие значения рисовать, что он у Вас просто метаться из-стороны в сторону будет.

StrangerM
Offline
Зарегистрирован: 02.11.2013

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

std
Offline
Зарегистрирован: 05.01.2012

Ну, бескрайние моря-окияны покорять не нужно. Да и думаю можно волны поймать акселерометром. Подождать пока вода узбагоится, а уже потом на спутник лезть.

Короче самый подходящий вариант как я думаю - надо ставить и компас, и GPS; и первоначальный курс определять по GPS. Собсно, можно ещё на берегу.

А, да. Примерный размер - 80x15x5 см (ДхШхВ). Ессно, над GPS антенной - шарик с радиусом 4-7 см, чтобы свести заливание водой пространства над антенной к минимуму.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Подождать пока вода успокоится? Это же шутка, да? Отплыл - поднялся ветер, подождал 2 часа пока он успокоился, и поплыл дальше? Тут наверное будет интереснее с конструкцией киля поиграть. Но тогда параход большой будет.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Не встречал ошибок в работе GPS от качки. В алгоритме работы приемника заложено усреднение. А у малого объекта перемещения антенны сантиметры. При точности после усреднения метры (выходной сигнал GPS), а до усреднения более десятка метров (обрабатываемые результаты измерений до выхода из GPS. 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Может быть, я предпологал. Я просто абсолютно точно знаю что автомобильные навигации, когда едешь по мосту над рекой или вдоль реки, у меня до 300 метров "прыгают".

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

Вчера пробовал модуль NEO-6M, довольно стабильно работает, видел 11-12 спутников, метра 2-3 иногда прыгал, лежал на столе рядом, измерения раз в секунду по дефолту.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

trembo пишет:

Вчера пробовал модуль NEO-6M, довольно стабильно работает, видел 11-12 спутников, метра 2-3 иногда прыгал, лежал на столе рядом, измерения раз в секунду по дефолту.

стол рядом с катером который глиссирует по водоему???

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

Стол стоял неподвижно на втором этаже дома, никуда не глиссируя, у него нет мотора и пока не планируется.

Для защиты стола и  GPS модуля применил крышу из черепицы.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Хм, а как это относится к помехам кораблику на воде?

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

GPS Всегда имеет погрешность: 5м - норма , 2-3 метра- очень хорошо. И не надо надеяться что всегда будет лучьше. И дело не в помехах или корабликах

std
Offline
Зарегистрирован: 05.01.2012

Чо вы спорите, народ? Попробуем - узнаем.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

std пишет:

Чо вы спорите, народ? Попробуем - узнаем.


Корабликов сразу десяток собирай.. что бы хватило попробовать.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Я уж давно пробую. Только размер маленько другой. :-)

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

trembo пишет:

GPS Всегда имеет погрешность: 5м - норма , 2-3 метра- очень хорошо. И не надо надеяться что всегда будет лучьше. И дело не в помехах или корабликах

А как же мнолучевое распространение?

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

JollyBiber пишет:

А как же мнолучевое распространение?

В пруду среди небоскрёбов?

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

trembo пишет:

JollyBiber пишет:

А как же мнолучевое распространение?

В пруду среди небоскрёбов?

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

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

Информация к размышлению.....  U-blox   NEO-6M-0-001  ( ~14 USD)

Сельская местность, отсутствие высокого рядом, время- 30-40 минут

DEVIATION

ALTITUDE

nbouda
nbouda аватар
Offline
Зарегистрирован: 10.06.2019

Добрый день, StrangerM.

Интересно, в плане создания авторулевого для лодки на чем Вы остановились?

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

Если не секрет, конечно.

Может еще ссылки подскажете на полезные материалы.

С уважением,

nbouda

rkit
Онлайн
Зарегистрирован: 23.11.2016

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

nbouda
nbouda аватар
Offline
Зарегистрирован: 10.06.2019

В принципе очень не плохое решение.

Заодно и скорость усредненная будет.

Сколько требуется держать в памяти отсчетов, при скорости движения до 1 м/сек и частоте выборки менее 1Гц?

Ориентировочно конечно.

rkit
Онлайн
Зарегистрирован: 23.11.2016

Лучше почитать немного теории по фильтрам, потому что вопрос сам по себе не особо имеет смысл.

nbouda
nbouda аватар
Offline
Зарегистрирован: 10.06.2019

Может подкинете ссылку на текст с доступным изложением по теме?

Если не затруднит