Автор Тема: GPS-автопилот - алгоритъм  (Прочетена 20389 пъти)

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 285
  • Пол: Мъж
  • изчислителна техника
Re: GPS-автопилот - алгоритъм
« Отговор #45 -: Февруари 10, 2020, 08:42:47 pm »
Все си мисля, че в един подходящ акселометър и жироскоп може някаква позиция да се подържа или поне да се следи изместването от нея.
Който и да е дрон може да подържа стоене на едно място, да се върти и мести насам-натам. Значи има начин.
За съжаление това е едно от нещата с което не съм се занимавал :(

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 478
Re: GPS-автопилот - алгоритъм
« Отговор #46 -: Февруари 10, 2020, 08:52:24 pm »
valex, акселерометъра показва ускорение, а жироскопа показва движение в пространството по осите и завъртане. Това е необходимо за дроновете, защото имат 4 двигателя и те трябва да балансират, за да стоят хоризонтално, т.е. това е необходимо за хоризонтален баланс. Моята задача е съвсем друга. На мен ви трябва компас и той е достатъчен. Друг е въпроса, че чистия компас - магнитометъра не става за такъв в буквалния смисъл. Причината е, че като го завъртиш по оста Z и си променя показанията по оста Х и Y. Той има там една калибровка, но дори и да се направи резултата е ала-бала. Истински компас става именно с комбиниран датчик акселерометър, като той служи за компенсация на изместването по оста Z. Чак тогава имам истински компас.

Давам пример за такъв:
Инсталирай си на телефона приложение компас и виж как работи. Като го въртиш компаса се движи съвсем плавно, без отскоци, спокойно. Ето така трябва да работи и моя датчик. Но той няма да работи така, докато не ползвам комбинирания датчик и последователно на него цифров филтър.


Неактивен ppipilica

  • Сериозно Активен
  • ***
  • Публикации: 340
  • говори на жаргон и пише на "старобългарски"
Re: GPS-автопилот - алгоритъм
« Отговор #47 -: Февруари 10, 2020, 08:55:12 pm »
Четох но никъде на намеих да си писал каква е идеята на проекта, за какво ще го ползваш.

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 478
Re: GPS-автопилот - алгоритъм
« Отговор #48 -: Февруари 10, 2020, 09:01:13 pm »
Четох но никъде на намеих да си писал каква е идеята на проекта, за какво ще го ползваш.
Ще го ползвам за електрически двигател със серво управление за лодка, който трябва да се движи по зададен маршрут от GPS-точки, да ги следва последователно и още за електрическа котва, като спра на едно място да коригира течението и вятъра, които местят лодката, да я връща в тази точка и същото направление, т.е. да не ме обръща с гръб и т.н.

Неактивен MTM

  • Сериозно Активен
  • ***
  • Публикации: 378
Re: GPS-автопилот - алгоритъм
« Отговор #49 -: Февруари 10, 2020, 09:08:53 pm »
За тая цел, ти трябва нивел.

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 478
Re: GPS-автопилот - алгоритъм
« Отговор #50 -: Февруари 10, 2020, 09:12:05 pm »
За тая цел, ти трябва нивел.
Това беше яка ирония, браво!  :D

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 285
  • Пол: Мъж
  • изчислителна техника
Re: GPS-автопилот - алгоритъм
« Отговор #51 -: Февруари 10, 2020, 09:21:58 pm »
Първата производна на ускорението е скорост, а втората е преместване(път).
Така, че от данните за ускорение може да се сметне изместването от позиция.

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 285
  • Пол: Мъж
  • изчислителна техника
Re: GPS-автопилот - алгоритъм
« Отговор #52 -: Февруари 10, 2020, 09:52:48 pm »
Първата производна на ускорението е скорост, а втората е преместване(път).
Така, че от данните за ускорение може да се сметне изместването от позиция.
Поне такива спомени имам
Това е интересно:
http://cache.freescale.com/files/sensors/doc/app_note/AN3397.pdf?fsrch=1&sr=2

Неактивен ppipilica

  • Сериозно Активен
  • ***
  • Публикации: 340
  • говори на жаргон и пише на "старобългарски"
Re: GPS-автопилот - алгоритъм
« Отговор #53 -: Февруари 11, 2020, 04:25:35 am »
Ще го ползвам за електрически двигател със серво управление за лодка, който трябва да се движи по зададен маршрут от GPS-точки, да ги следва последователно и още за електрическа котва, като спра на едно място да коригира течението и вятъра, които местят лодката, да я връща в тази точка и същото направление, т.е. да не ме обръща с гръб и т.н.
При тия условия аз бих потърсил готово управлвние за дрон, не вярвам да няма такова нещо да се продава. То хубаво да си го съчиниш сам ама тва лекинко сложно ми се струва. А как ще задаваш координатите като пуснеш лодката в язовира или реката, Ще трябва да направиш учебно плаване и да запаметиш определени места. Предвиди в алгоритъма и опция Go Home както е при дроновете когато загубят връзка с дистанционното, предвиди и тая опция да се задейства когато батерията падне под критично ниво, то може би ще трябва да смята за да имаш ток за връщане.
Според мен ще ти трябва компас на лодката, по-лесно ще я караш по права под определен ъгъл спрямо север, пък с GPS-а ще си смяташ колко е разстоянието от точка до точка и колко време ще пътува. Не ми се вярва да искаш системата да цепи сантиметъра, нали така, все пак ще пускаш въдица а не бомба. Та за това помисли как да се улесниш в управлението.

Неактивен nizo

  • Стабилен
  • ****
  • Публикации: 751
  • Thoughts become things!
Re: GPS-автопилот - алгоритъм
« Отговор #54 -: Февруари 13, 2020, 07:39:33 pm »
Алгоритъма според мен е следния. Искаме да преминем от ъгли в плоска координатна система. Плоската координатна система е с координати X,Y. X в нашия случай е 1/4 от периметъра на сечението на Земята, а Y e дължината на екватора на Земята. Това са константи и се задават директно в програмата. След това искаме от ъглите да генерираме координати в нашата плоска координатна система, което става със синус(ширината) умножено по дължината на X и косинус(дължината) умножено по Y. На този момент имаме вече генерирани плоски координати на 2-те точки във формат А(X,Y) и B (X,Y). От тук нататък построяваме правоъгълен триъгълник в който отсечката АB е хипотенуза. Хипотенузата е равна на корен квадратен от квадрата на единия катет плюс квадрата на другия катет (Питагорова теорема). Дължините на катетите се получават с проста математика, модул на разликата на координатите. Дори да имаме 2-5=-3 то модула е 3. Т.е. модула на разликата винаги дава положителната абсолютна дължина на катетите. Получили сме катетите, змятаме по Питагоровата теорема и намираме разстоянието от А до Б.

Цитат
Отсечката между т.А и т.Б представлява реално дъга и тя се изчислява по сложна формула. Мен тази дъга не ме интересува, макар и точно тя да дава реалното разстояние, т.к. автопилота ще се ползва за къси разстояния и това закръгление ще е несъществено, грешката ще е минимална. Интересува ме само правата отсечка, тя дава разстоянието между две точки. Т.е. търся по-опростен вариант на алгоритъма.

Естествено тук допускаме грешката, че прехвърляме огъната повърхност в плоскост. По принцип синуса на ширината ни дава точка върху радиуса на Земята, а не върху повърхността. Например синус от 30 градуса е 0.5, но 0.5 върху повърхността е на 45 градуса. Сигурно има начин да се компенсира тази неточност, например задавайки корекция на катетите според съответната им ширина и дължина. Някой ако знае как става да каже.

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 478
Re: GPS-автопилот - алгоритъм
« Отговор #55 -: Февруари 14, 2020, 04:58:43 pm »
Формулите как се изчислява дължината на земната дъга между две точки и ъгъла, който тя образува с меридиана - т.е. север или това е географския азимут, са налични по-напред в темата. Това е формулата на Хаверсин.

Ето тук е обяснена подробно формулата, има и скриптове на различни програмни езици, не и на С++, има и на Ексел с пример:
https://wiki.gis-lab.info/w/%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_%D0%B8_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B0%D0%B7%D0%B8%D0%BC%D1%83%D1%82%D0%B0_%D0%BC%D0%B5%D0%B6%D0%B4%D1%83_%D0%B4%D0%B2%D1%83%D0%BC%D1%8F_%D1%82%D0%BE%D1%87%D0%BA%D0%B0%D0%BC%D0%B8_%D0%BD%D0%B0_%D1%81%D1%84%D0%B5%D1%80%D0%B5

И тук:
https://en.wikipedia.org/wiki/Haversine_formula

Така или иначе скриптовете могат да се преобразуват в ардуински език. Но има и библиотеки, които съдържат тая формула и генерират с отделни функции азимута и разстоянието между две точки и отпада труда, да се прави отделен алгоритъм.
« Последна редакция: Февруари 14, 2020, 05:13:56 pm от EDM electronics »

Неактивен VITAN

  • Сериозен
  • ****
  • Публикации: 1 137
  • Monkey see, monkey do...
    • Monkey see, monkey do...
Re: GPS-автопилот - алгоритъм
« Отговор #56 -: Февруари 16, 2020, 12:31:47 pm »
Има ли тригонометрични формули, простото Ардуино ще се бави.
Трябва от тия, с яките процесори и още
проба-грешка, дали има смисъл на практика да се изчислява земна дъга или да се кара с прави линии - за къси разстояния.

Неактивен Радико

  • Много Напреднал
  • *****
  • Публикации: 5 668
  • Пол: Мъж
  • Преди сламката е гредата
    • http://martinov-radiko.blogspot.com/
  • Скайп: radiko1a
Re: GPS-автопилот - алгоритъм
« Отговор #57 -: Февруари 16, 2020, 12:58:01 pm »
Нещата са много прости бащата на ардуиното дето са го слагали в компютрите правец със лекота може да намери пътя от произволно поле "А" до произволно поле"В"  във, да речем една шахматна дъска.  Алгоритъма е един и същ. Освен това има и друго. Изчисленията със 360 градусов кръг са възможно най неудобните. Геодезите използват в изчисленията си 400 гради. Те са по удобни защото са кратни на 100. Обаче за целите на настоящия проект би бил напълно задоволителен и резултата от използването на старинния моряшки стандарт основаващ се на 12 румба.

Неактивен VITAN

  • Сериозен
  • ****
  • Публикации: 1 137
  • Monkey see, monkey do...
    • Monkey see, monkey do...
Re: GPS-автопилот - алгоритъм
« Отговор #58 -: Февруари 16, 2020, 02:57:45 pm »
Нещата са много прости бащата на ардуиното дето са го слагали в компютрите правец със лекота може да намери пътя от произволно поле "А" до произволно поле"В"  във, да речем една шахматна дъска.
Това е обхождане на масив, не особено сложен алгоритъм, но едва ли е практичен в случая.
Геодезите използват в изчисленията си 400 гради. Те са по удобни защото са кратни на 100. Обаче за целите на настоящия проект би бил напълно задоволителен и резултата от използването на старинния моряшки стандарт основаващ се на 12 румба.
Все тая му е на процесора, дали са 360 или 400. 12 вече мисля му е малко.
Това са метри язовир, не ъмнаасе морски мили от остров до остров.

Неактивен Радико

  • Много Напреднал
  • *****
  • Публикации: 5 668
  • Пол: Мъж
  • Преди сламката е гредата
    • http://martinov-radiko.blogspot.com/
  • Скайп: radiko1a
Re: GPS-автопилот - алгоритъм
« Отговор #59 -: Февруари 16, 2020, 05:39:58 pm »
Това е обхождане на масив, не особено сложен алгоритъм, но едва ли е практичен в случая.
И кое точно му е непрактичното какво различно от този масив представлява една дигитална карта. особенно като се има в предвид, че става дума за лодка демек всичко е 2D а не 3D

.Все тая му е на процесора, дали са 360 или 400. 12 вече мисля му е малко.
Това са метри язовир, не ъмнаасе морски мили от остров до остров.
Малко ли са 12, браво досетлив си. Ако се беше досетил, че въобще не е проблем да се трансформират както в 12 така и в 36 така и в 67 или 113 единици каквото ти е удобно. Та ако се беше досетил и за това можеше да се каже че си гениален, е и досетлив не е зле.