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

Неактивен ppipilica

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

Неактивен nizo

  • Стабилен
  • ****
  • Публикации: 734
  • Thoughts become things!
Re: GPS-автопилот - алгоритъм
« Отговор #61 -: Февруари 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 101
Re: GPS-автопилот - алгоритъм
« Отговор #62 -: Февруари 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

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

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

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

Неактивен VITAN

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

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

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

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

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 2 779
Re: GPS-автопилот - алгоритъм
« Отговор #67 -: Февруари 16, 2020, 07:57:16 pm »
Ако ще се ползват географски координати от ГПС модул, май се оказва че ще ти трябва формулата на Хаверсин... щот един градус в посока север-юг е 60 мили ма 1 градус в посока изток-запад е по-малко (на нашите географски ширини)...
Не че не можеш да направиш една твърда корекция като предположиш че уреда ще се ползва само в нашите региони...

Неактивен VITAN

  • Подготвен
  • **
  • Публикации: 197
Re: GPS-автопилот - алгоритъм
« Отговор #68 -: Февруари 16, 2020, 08:10:09 pm »
И кое точно му е непрактичното какво различно от този масив представлява една дигитална карта. особенно като се има в предвид, че става дума за лодка...
Езерото не е правоъгълник или квадрат.
Значи става въпрос за масив от масиви - усложнява се описанието съответно много и алгоритъма....

Неактивен VITAN

  • Подготвен
  • **
  • Публикации: 197
Re: GPS-автопилот - алгоритъм
« Отговор #69 -: Февруари 16, 2020, 09:24:35 pm »
Всъщност, ако става въпрос за 1 единствено езеро, можем да приемем правоъгълна матрица със забранени зони - получаваме стандартен алгоритъм за обхождане на лабиринт.
Проблема идва от това, ако трябва динамически да го опреледеляме този "лабиринт".

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 2 779
Re: GPS-автопилот - алгоритъм
« Отговор #70 -: Февруари 16, 2020, 09:57:25 pm »
Какъв лабиринт ви гони бе хора... имаш квадратчета и трябва да теглиш една или няколко линийки през тая мрежа.
Но реално не ви трябва мрежа, трябват ви само линийките.
Прблема за мен ще дойде от прекалено постния хардуер на Ардуиното. Дори и мега-та има 250 килобайта памет за програмата и само 8 килобайта памет за данни.

Неактивен VITAN

  • Подготвен
  • **
  • Публикации: 197
Re: GPS-автопилот - алгоритъм
« Отговор #71 -: Февруари 16, 2020, 10:05:44 pm »
Но реално не ви трябва мрежа, трябват ви само линийките.
Само с линийки по моему ще е постно.

Прблема за мен ще дойде от прекалено постния хардуер на Ардуиното...
Тук да, постно е. Не по-малка задача за оптимизация, от основната.
Ако е решима.

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 2 779
Re: GPS-автопилот - алгоритъм
« Отговор #72 -: Февруари 16, 2020, 10:22:02 pm »
Той ЕДМ-а иска да ползва стандартни библиотеки, дето имат освен нужните му функции още и един тон плява. Така че ще изпищи доста бързо... Ма нищо де, то човек така се учи :) А като види един синус колко ресурси гълта, съвсем ще се отчая.

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

  • Много Напреднал
  • *****
  • Публикации: 4 945
  • Пол: Мъж
  • Черния отмъстител
    • http://martinov-radiko.blogspot.com/
  • Скайп: radiko1a
Re: GPS-автопилот - алгоритъм
« Отговор #73 -: Февруари 16, 2020, 11:08:51 pm »
Той ЕДМ-а иска да ползва стандартни библиотеки, дето имат освен нужните му функции още и един тон плява. Така че ще изпищи доста бързо... Ма нищо де, то човек така се учи :) А като види един синус колко ресурси гълта, съвсем ще се отчая.
Е за това разправях на Монтанар, че от компютърен програмист трудно става програмист на контролери. Ама той не вярваше.  Практиката обаче е показала, че е така. Просто тия хора са свикнали да се разпростират на много широко.

Неактивен VITAN

  • Подготвен
  • **
  • Публикации: 197
Re: GPS-автопилот - алгоритъм
« Отговор #74 -: Февруари 16, 2020, 11:21:12 pm »
За протокола:
Програмирам на ниско ниво, програмирам и на високо.
Тригонометрична функция, ако я вземаш от масив с резултати, за да е точно - много памет!
Ако я смяташ - много процесорно време за Ардуино и немалко буфер.
А квадратен корен и пр. екстри?