Справочници, схемотехника, теория > Програмиране на микроконтролери, програматори, цифрови проекти
GPS-автопилот - алгоритъм
valex:
Не знам доколко по-точно от компас може да се управлява ако един вид се 'усевери' текуща позиция на лодката и от там нататък да се работи с дани от жироскопа? Естествено с переодични корекции от компаса.
EDM electronics:
--- Цитат на: dmitarp в Февруари 17, 2020, 09:00:22 pm ---Формулите за азимута ти ги дадох по напред:
β = 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
--- Край на цитат ---
dmitarp, искам да изведа формулата за азимута и да я приложа в твоя скеч, да видим как ще работи, обаче нещо не ми е ясен записа на тази формула:
β = atan2(X,Y)
Тези са ясни:
β е ъгъла от 0-360 гр. - азимута
atan2 е аркотангенса или 1/tg
X = cos θb * ∆L
Y = cos θa * sin θb – sin θa * cos θb.
Това е неясното:
, ей тая запетая какво означава?
Не ми е ясна функцията на запетаята в математическо уравнение.
Тук има малко теория по въпроса с формулите за ъгъла: http://www.movable-type.co.uk/scripts/latlong.html
формулата за азимута-ъгъла: θ = atan2 (sin Δλ ⋅ cos φ 2 , cos φ 1 ⋅ sin φ 2 - sin φ 1 ⋅ cos φ 2 ⋅ cos Δλ)
- и отново има запетая в уравнението!
където: φ 1 , λ 1 е началната точка, φ 2 , λ 2 крайна точка ( Δλ е разликата в дължината)
Това ли е представянето на формулата със запетаята , ?
dmitarp:
atan(), функция винаги има за аргумент (това, което е в скоби) отношения на две числа. В компютърните езици, има два начина на представяне на функцията atan, единият начин е atan(X/Y), но при този начин ако Y е нула и ще ти даде грешка или NaN. Затова има второ представяне на функцията като atan2(X,Y). Тук запетаята отделя двете числа. Освен това резултата от функцията се получава в радиани, а не в градуси. Въобще в компютрите тригонометричните функции работят само с радиани.Така че, ъглите на с.ш. и и.д ако се получават в градуси трябва да се превърнат в радиани. Превръщането от радиани в градуси става с формулата:
β =β*180/π, π = 3.14159265358979.
1/tg е различно от atan.
EDM electronics:
Помислих, че е математическо уравнение, а не програмна функция, понеже я няма IDE.
Сега разбрах, че функцията е от "С", надявам се ще работи с ардуинския компилатор. Ще направя проба.
Видях в програмата, че преобразуваш градусите в радиани и формулата е в радиани.
Ще имам и това превръщане в предвид β =β*180/π, π = 3.14159265358979.
dmitarp:
--- Цитат на: valex в Февруари 18, 2020, 09:01:29 am ---Не знам доколко по-точно от компас може да се управлява ако един вид се 'усевери' текуща позиция на лодката и от там нататък да се работи с дани от жироскопа? Естествено с переодични корекции от компаса.
--- Край на цитат ---
Да за мен това е добра идея, магнитометъра да служи само за начално определяне на позицията и след това да се използва жироскоп. Но жироскопа има един недостатък, много е муден, за това бих го сдвоил с още един източник на посока, който е бърз, а именно два акселерометъра, на кърмата и на носа на лодката, на точно определено разстояние един от друг. Като се знае разстоянието и разликата от показанията на акселерометрите може да се определи ъгъла на завъртане.
Навигация
[0] Списък на темите
Премини на пълна версия