Справочници, схемотехника, теория > Програмиране на микроконтролери, програматори, цифрови проекти
GPS-автопилот - алгоритъм
EDM electronics:
dmitarp, златен си. :D
Вери импортант персона в автопилотите. :D
Благодаря много!
Много работа си свършил, чак се чувствам задължен.
Ще изпробвам скеча ти, също с примери от Гугал мапс. Щом работи с примери от Гугал, от това по-показателно здраве му кажи.
Да опростяването на формулата не дава забележима грешка. По принцип не е нужна голяма точност. Плюс-минус 1 м в голямото море няма никакво значение.
Обаче в ардуинската среда най-голямото число с плаваща запетая е 32 бита - float. double е същото число float. Затова и измерванията ти не показват разлика с промяната му.
Щом Ардуиното може да направи изчисления със скорост 100 Хц това е предостатъчно, като се има предвид, че много добър GPS приемник работи на 10 Хц. И 5 Хц са достатъчни.
Интересно ми е как мериш бързодействието и ако се напълни паметта с останалата част от програмата, дали ще изчислява със същата скорост?
От тази формула може ли да се изведе азимута на отсечката?
dmitarp:
Формулите за азимута ти ги дадох по напред:
β = atan2(X,Y)
X = cos θb * sin ∆L
Y = cos θa * sin θb – sin θa * cos θb * cos ∆L.
Тук θa и θb са ширините на точките a и b съответно, а ∆L е разликата между дължините.
Ако две точки имат еднакви ширини, ягълът е 90 градуса, а ако имат еднакви дължини, ъгълът е 0 градуса
Но тук може да се направи опростяване, но малко и тази формула ще отнеме повече време. Ардуиното използва стандартен С, всички тригонометрични функции, ги има.
X = cos θb * ∆L
Y = cos θa * sin θb – sin θa * cos θb.
Но както спомена по-рано на магнитометъра трудно може да се разчита, това е голям проблем, имам няколко и въпреки калибрирането дават голямо отклонение. Исках да изпробвам на Сименс един, но така и не го купих, на него по може да се вярва, но не знам BNO055
EDM electronics:
С обикновен магнитометър компас не може да стане.
Да, и аз ще разчитам на тоя датчик BNO055, но още не е пристигнал от Алиекспрес.
Добре е да разгледаш това видео с калибровката и работата.
Магнитометрите с които се мъчиш вероятно са с китайски чип - никога няма да заработи коректно. Има с оригинален чип, по цената се познават и маркировката, но и той още не ми е пристигнал.
https://www.youtube.com/v/LBXdo1d1ZCI
dmitarp:
Този датчик има собствен процесор, ако не се лъжа STM32f4 и може директно да даде ориентацията, но пак използва магнитометъра, може да направи и поправка на магнитния полюс, така че да сочи географския. Когато аз го поръчах за съжаление не ми го доставиха, ами върнаха парите и след това не съм поръчвал втори път, и нямам опит с датчика но чета добри отзиви за него.
juliang:
Ако приемем, че лодката ще се ползва на територията на България, може да се приеме че една ъглова минута в посока север-юг си е равна а една морска миля, а една ъглова минута в посока изток-запад е 0.7 от една морска миля. T.e. 1 градус север-юг е 110 км, един градус изток-запад е около 78-79 км. Вече зависи как ще получваш резултатите от ГПС модула - дали в градуси или в градуси, минути, секунди... примерно дали ще е 45.053217 градуса или 45 11' 20". Но прехвърлянето ще е много лесно.
Оттам нататък отиваш на едни цели числа, които ще ги подбереш така че да работиш с желаната точност - дали ще е милиметър, сантиметър... И сметката ти опира до Питагор-а. Квадратен корен, вдигане на квадрат и някой синус.
Синуса също можеш да го махнеш, защото теб ти трябва "коефициент на наклона" на дадена права, или съотношението на изменение на Y спрямо изменението на Х, а не точно синуса като число. Да, ако искаш да задаваш курс като ъгъл - ще ти трябва, но ако само ще даваш начална и крайна точка - не е нужен.
Оттам ти отпада огромна библиотека с геометрия, отпадат ти работа с числа с плаваща запетая (която се емулира, не се смята хардуерно като в процесорите на компютрите).
Обаче ще имаш проблем с точността. Дори и long ще събере квадрата на 600 метра разстояние и след това ще се препълни, ако работиш в сантиметри. Да, ако е в метри ще събере 60 км, но ще имаш точност няколко метра.
Ако работиш с числа с плаваща запетая нещата вероятно ще са малко по-добри, но трябва да внимаваш изключително много при преминаването от абсолютни географски координати към разстояния. Не е изключено катастрофално да загубваш точност, защото ардуиното си работи с числа със 7-8 значещи цифри.
Навигация
[0] Списък на темите
Премини на пълна версия