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

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #15 -: Февруари 06, 2020, 03:50:30 pm »
juliang, предлагаш алтернативен вариант на алгоритъм, но ми се струва сатна по-сложен с всички тези обяснения за работа на тоя регулатор. Гледал съм софт на автопилот и по спомен там се работи по формулата, която даде dmitarp синус, косинус тангенс.

Целта на занятието е да се изчисли ъгъла от координатите на двете точки. Видно от формулата е само от 2-3 реда:
β = atan2(X,Y)

X = cos θb * sin ∆L

Y = cos θa * sin θb – sin θa * cos θb * cos ∆L.


В Ардуино има такива функции:
    sin()
    cos()
    tan()

, но аз не съм ги ползвал досега, трябва да видя примери как работят, дори въобще съм забравил формулите за синус, косинус и тангенс, котангенс  :D, та сега ще търся учебник за 3-ти клас да си доуча урока.  :D

А за аркус тангес, въобще не се сещам за какво иде реч, ще ми трябва преводач.

Тоя ПИД много ми прилича на ингератор - цифров филтър. Впрочем точно това се ползва и при датчиците - компаса и GPS-а. Понеже са доста чувствителни и мърдат доста, се включват филтри, за да се получи някаква инертност. Особено това се отнася за компаса. Не съм пускал компас досега, защото още не е пристигнал, но като гледах видеата само от магнитометър е невъзможно да се направи компас, той се влияе от движение по отстта Z, затова се прави компенсация само с комбиниран датчик с акселерометър.

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 3 132
Re: GPS-автопилот - алгоритъм
« Отговор #16 -: Февруари 06, 2020, 04:02:51 pm »
PID-а се слага във веригата, може с него, може и без него. Но без него ще имаш "насам-натам".
И не, не е филтър. Макар че ще ти помогне и да филтрираш показанията - именно чрез интегралната си съставка.

Не ти трябват синуси, повярвай ми. Тези сметки са много ресурсоемки за едно ардуино.

Тръгваш от точка с координати 10,10, трябва да стигнеш до точка с координати 1000, 1000. По моята сметка коефициента се получава 990 / 990 = 1
Първото ти измерване ти дава координати 20,22. 1000-20 е 980, 1000 - 22 е 978. Коефициента е 980/978, или 1.002. T.e. трябва ти завой в едната посока (в случая ще е надясно, но все се надявам че ще можеш да обърнеш движението на руля ако е грешно :) )

Втори измерване - дава ти координати 30,31. Съгласно резултатите от предното измерване коефициента е 1.002. Сегашното е 1000-30 =970 и 1000-31 = 969 или 970/969
 => коефициент 1.001. Той е по-малък от предишния, съответно корекцията трябва да е в обратна посока - наляво. Щото ако продължиш в тази посока, следващото измерване ще е 40,40, следващото - 50,49 и ... отиваш у канавката :)

Трето измерване ти дава 40,41. 1000-40 = 960, 1000 - 41 = 959, коефициент ... 1.001. Идеално, същия като предния, продължаваме направо.

И така си вървиш, сравнявайки две числа - коефициента от текущото измерване с това от предишното. Ако двата коефициента са равни - вървиш направо, Ако са различни - завиваш в съответната посока.

Трябва ти и една сметка все пак дали не вървиш точно в противоположната посока, но се надявам една Питагорова теорема да можеш да имплементираш :)

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #17 -: Февруари 06, 2020, 04:58:32 pm »
juliang, струва си да се пробва. Ще кача на едно ардуино дисплей е GPS на батерия и ще пробвам една разходка, де видим на практика какви коефициенти ще показва и колко ще трепери тоя коефициент. Ако се наложи да слагам и ПИД, ще те питам тогава как работи.


Но има и нещо друго:
Основното предназначение на тоя автопилот ще е електрическа котва, т.е. като запаметя дадена точка, щото искам да стоя на едно място, тогава нещата стават още по-сложни. Най-полезното на автопилота е електрическата котва. Примерно няма как да се закотвя на дълбочини над 40-50 м, става много трудоемко и времеемко. С електрическата котва става мигновено - супер модерна технология. Тогава освен руля ще трябва да се управлява и двигателя и то в реверс, защото тоя рул ще има ход само +,- 90 гр. Ще се дублира управлението и от компаса, защото освен, че трябва да ме държи в тази точка, то трябва и направлението да се същото. Примерно духа вятър - извъртам се с гръб, не да ме блъска в синусите, и двигателя трябва да ме държи в тази позиция. Това е по-трудната задача, макар че ще се ползват пак същите данни, като при първия вариант, просто управлението на руля и GPS-а ще е по-сложно. Примерно, ако се намирам на повече от 3-4 метра от точката или ъгъла на позицията е по-голям от 20 гр., двигателя работи с някаква средна скорост, ако тези показатели са по-малки - по-малка скорост и т.н. това вече опитно ще се установи колко точно. Отделно трябва да се съблюдава реверса на мотора, кога да компенсира само с руля, кога и с реверс на двигателя, но с по-малък ъгъл на руля.

Твоя алгоритам ще го може ли това?

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 3 132
Re: GPS-автопилот - алгоритъм
« Отговор #18 -: Февруари 06, 2020, 07:19:59 pm »
Това не можеш да го постигнеш с GPS. Точността на този уред е 3-5 метра (умишлено е въведена погрешност за да не се ползва за насочване на ракети или други високоточни оръжия). Няма да знаеш дали си мръднал с 1 метър или не. По-лошия вариант е че ГПС-а може да те мести насам-натам в радиус няколко метра въпреки че не е необходимо, просто защото грешката също е променлива величина.
Да, вероятно ще може да те държи в някаква зона с радиус 10 метра, но на повече не се надявай. За посоката на лодката ти пък ГПС-а хептен не може да се оправи - там ще ти трябва вече компас.

Вече самия алгоритъм кое как да се ползва ще е малко по-сложен. Дста по-сложен всъщност... :)

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #19 -: Февруари 06, 2020, 09:03:30 pm »
https://akvasport.com/product/10885/el-motor-minn-kota-riptide-st-55-i-pilot-no-foot-pedal.html

Отдавна се продават такива неща. И котвата работи добре и маршрута. Ползвал съм и знам.
Котвата държи на 3-4 м толеранс, това не е много. А направлението е безкомпромисно. Дори има на дистанционното бутон за добавяне и изваждане на 10 гр. и можеш да си променяш направлението много фино. Мисля, че имаше и такава опция за позицията, т.е. корекция на GPS-а. Като задуха вятъра леко измества, но двигателя коригира най-много с 3-4 м грешка, не е повече. Голяма ще бъде грешката ако се сравняват големи отстояния между 2 точки. А тук те са минимални.

Алгоритъма на котвата няма да е много по-сложен. Ще се ползват абсолютно същите данни от GPS-а и компас разбира се. Нали той ще определя позицията. Алгоритъма ще е сложен по отношение управлението на руля, двигателя и реверса. Но колко да е сложен при положение, че частта с датчиците работи перфектно? Ако на 3 магарета плявата не можем да разделим. :)

Затова твоя вариант е неприложим в моя случай. Ще ми трябва основно азимута от GPS - горната формула да се окаже имане, но ще сравня с някои готови проекти.

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

  • Много Напреднал
  • *****
  • Публикации: 5 649
  • Пол: Мъж
  • Преди сламката е гредата
    • http://martinov-radiko.blogspot.com/
  • Скайп: radiko1a
Re: GPS-автопилот - алгоритъм
« Отговор #20 -: Февруари 06, 2020, 09:18:42 pm »
Edm
Точно това което Юлиян обяснява ще ти е нужно. Компаса ти е необходим единственно за да знае алгоритъма в каква посока е насочен съда. За нормалните GPSи това не е от значение защото по презумпция се счита, че дали пеша дали с кола вървиш напред. При теб може да вървиш но може и вятъра да те снася странично.
Мисля, че с един универсален алгоритъм няма да се оправиш. По лесно ще е таблица от алгоритми и основния алгоритъм избира подходящото от таблицата. Точно както работи компютъра на автомобилния двигател.

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 3 132
Re: GPS-автопилот - алгоритъм
« Отговор #21 -: Февруари 06, 2020, 09:31:31 pm »
Да, за 3-5 метра не е проблем. Можеш да се бориш и с вградената грешка донякъде - ползваш последните примерно 50 точки от ГПС-а и решваш че си някъде на средата :) Така че ако има някаква грешка, тя поне няма да те мести толкова рязко насам-натам.

Проблема ще е управлението на руля и мотора. На пръв поглед изглежда лесно, но на практика ще са стотици редове код. Трябва да се въведе и някаква характеристика на самата лодка  - примерно как логиката да определи дали е по-изгодно да те завърти на 180 градуса и да даде напред, или да включи двигателя на реверс без да знае радиуса на завиване на лодката... Така че нещата не са невъзможни, просто са доста пипкави и човек трябва да е много напред с програмирането за да направи нещо работещо прилично. Не ти се иска да обикаляш по 50-100 метра щот прорамаат е решила е е по-добре така :)

И се сещам за един бъг в по-старите навигации... Като ходим в Германия трябва да вървим на север от Австрия към Мюнхен и там да завием на ляво (на запад) към Улм. Обаче Около мюнхем има една хубава магистрала, дето го обикаля ... ма от Изток. По нея нама няма ограничение за скоростта, докато по по-краткия път ограничението е "само" 90 км/ч. И тъпия Гармин винаги решаваше, че е е по-бързо да заобиколим 100 км по магистралата, вмето да минем 30 км по пътя с ограничението. Да, ако караме с 300, вероятно ще е по-бързо, ама ...

П.С. Дори и сега Гугъла твърди че е по-бързо... :) Глупава работа...
https://www.google.bg/maps/dir/47.7722884,12.9647008/48.4342954,10.3066256/@47.976179,11.1834318,8.96z/data=!4m2!4m1!3e0?hl=bg

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #22 -: Февруари 06, 2020, 10:04:51 pm »
Ето каква идея ми дойде сега за котвата:
Мисля, че алгоритъма ще е дори по-лесен от този за маршрута.
Запаметявам точката. Тя има ширина и дължина - някакви стойности.
Отнася ме течението и позицията ми показва други координати.
Поставям условие:
Ако в изменената позиция ширината е по-голямо число, да се извади от него по-малкото - поставя се флаг за +.
Ако в изменената позиция ширината е по-малко число, да се извади от по-голямото - поставя се друг флаг за -.
Така разбирам дали съм се изместил нагоре или надолу и с колко по направление север-юг, защото е ширина.
После ползвам тези данни - разликата, която показва колко съм се изместил и флага, който ще показва дали съм се изместил нагоре от точката или надолу. От тези данни правя функция.

Същото условие поставям и за дължината, като там ще определя дали съм се изместил в ляво или дясно посока изток - запад.

От тези условия ще определя функциите на 3-те неща за управление: рул, двигател и тригер реверс.
В зависимост от отдалечаването ще се поставят различни обороти на двигателя, колкото по-далече, толкова повече.

Сложното в този алгоритъм е да се намери средния вариант за компенсация на позицията по отношение на компаса и GPS-а, не първо да оправи GPS-а, после компаса, а трябва да става едновременно и оптимално - ей това е сложността тука - смесването на две управления от два датчика.

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 3 132
Re: GPS-автопилот - алгоритъм
« Отговор #23 -: Февруари 07, 2020, 05:57:24 am »
Не е само това сложнотията...
Примерно би ли ми обяснил какво решение може да се вземе, когато си решил че носа на лодката трябва да сочи "юг", обаче има силен източен вятър? Ясно е че лодката не може да се придвижва странично. Тоест алгоритъма трябва да игнорира някое от твоите желания - лодката да е неподвижна, или лодката да сочи на юг. Колкото по-голяма амплитуда "напред-назад" й разрешиш, толкова по-малко ще е отклонението на носа от посоката "юг" при маневрите за да те върне на мястото на което искаш да стоиш.

Неактивен miromad

  • Специалист
  • Активен
  • ***
  • Публикации: 289
Re: GPS-автопилот - алгоритъм
« Отговор #24 -: Февруари 07, 2020, 07:49:10 am »
EDM electronics, а защо не пробваш и с жироскоп (не знам дали ще е по-добре от gps-a или дали може да се използва заедно с него за по-прецизно измерване/регулиране/контролиране)?

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

  • Много Напреднал
  • *****
  • Публикации: 5 649
  • Пол: Мъж
  • Преди сламката е гредата
    • http://martinov-radiko.blogspot.com/
  • Скайп: radiko1a
Re: GPS-автопилот - алгоритъм
« Отговор #25 -: Февруари 07, 2020, 08:02:35 am »
Miromad, жироскопа отчита завъртане а не праволинейно отместване.
И колеги  да ви припомням ли притчата за математика инжинера и манекенката. В момента тук виждам само разсъждения изхождащи от гледната точка на математика.

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #26 -: Февруари 07, 2020, 09:14:40 am »
Не е само това сложнотията...
Примерно би ли ми обяснил какво решение може да се вземе, когато си решил че носа на лодката трябва да сочи "юг", обаче има силен източен вятър? Ясно е че лодката не може да се придвижва странично. Тоест алгоритъма трябва да игнорира някое от твоите желания - лодката да е неподвижна, или лодката да сочи на юг. Колкото по-голяма амплитуда "напред-назад" й разрешиш, толкова по-малко ще е отклонението на носа от посоката "юг" при маневрите за да те върне на мястото на което искаш да стоиш.
Същия алгоритъм ще може да отработва и тази хипотеза, а обяснението е следното:
Датчиците се намират при двигателя, отзад. Там е измерената и запаметена точка. А носа е в посока на компаса на база закованата от GPS-а точка. Ако вятъра издуха лодката от позицията странично и компаса запази своето положение, т.е. азимута, то GPS-точката ще се промени в ляво или дясно от закованата точка. Тогава се нарушава баланса на алгоритъма и той ще се стреми да върне кармата обратно в GPS-точката. Като тръгне това да се случва обаче, ще се промени положението на лодката спрямо севера и компаса ще го отчете. Той от своя страна също ще се стреми да изправи разбалансирането на алгоритъма и така заедно, смесено ще се прави корекция от двигателя. Лодката не може да се движи странично. Тя или може да се движи напред-назад, или в пергел ляво-дясно - това са опциите.

Има го направено това, не е откриване на топлата вода. Има дори едно видео, ще го намеря да ви покажа как модел - количка я рита с крак "баща й" и тя се връща в същата GPS-точка и застава в същото направление.

Нямам и ни най-малко съмнение, че ще се справя със задачата. Въпросът е да получа помощ от публиката, подсказка. Но така или иначе не теория няма да се получат нещата. Нещата стават винаги с опит и грешка, теорията само ще даде направление, да не да се движим още в началото в обратната посока.  ;)

Ще се направи някакъв несъвършен алгоритам. Прави се проба в реални бойни условия, виждат се недостатъците - отстраняват се. Появяват се други, преценят се отново нещата, пак се прави корекция и така. Хубавото е, че тази корекция се прави в програмата на контролера - това е много по-лесния вариант, защото другото - маханиката е по-трудоемката част.

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #27 -: Февруари 07, 2020, 09:36:49 am »
Miromad, жироскопа отчита завъртане а не праволинейно отместване.
И колеги  да ви припомням ли притчата за математика инжинера и манекенката. В момента тук виждам само разсъждения изхождащи от гледната точка на математика.
Радико, зле ти се отразява Германията и лидалската бира.  ;)
Тук всички разсъждения са ИНЖЕНЕРНИ! Математик или пък физик ще ти направи такива разсъждания на кукуво лято. Аман от физици, дето една гайка не са развили. Математика има само във формулата за синус и косинус в сложната триизмерна геометрична фигура /виж на 1-ва стр. 2-рата схема/, за да се намери ъгъла на отсечка спрямо севера, другото не е математика и не е никак за блондинки.

Всички разсъждения са практически. Те ще се превърнат много лесно в практика. Практически примери не могат да се дадат, защото това може да направи само оня, който е правил подобно нещо. Сигурно има такъв, но се крие зад пердето.  :D

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #28 -: Февруари 07, 2020, 01:27:11 pm »
Модератора!!!! ето ви го по-долу GPS-автопилот Алгоритъма разписан. Исках сами да си го погледнете от първа страница, ама..., но уви. Тъпотата ще затрии /мазето/ света:Ако не знаеш Юли е завършил школата по програмиране Светлин Наков и като един от първите е обучаван лично от самия С.Наков. Така, че, като ти каже алгоритъм, Вервай Mу
Ако беше прочел, щеше да видиш, че най-вече сме обсъждали алгоритъма на juliang, а той не става за котва, защото му трябват няколко измервания и определено време, за да определи средна стойност и вярното направление. За котвата трябва бърза реакция, защото разстоянията са много малки. Трябва и компас. Чети преди да прибързваш с писането.

Ама щом казваш, че учил при как беше - Светлин Наков, сигурно е гуру, не го познавам, но нямам никакви съмнения щом е обучавал juliang, и каквото и да каже по въпроса, по-добро от това няма на къде и всяко друго мнение би било безполезно. Ама добре, че има такива умни хора като теб, та да ми отворят очите.  Благодаря. :D

Иначе приемам казаното от теб, като обяснение в любов, като че си търсил повод да го направиш и се радвам, че аз спомогнах за това с моята тъпотия.  :D
Нека се обичат младите, никой няма право да спира изявата на любовта в каквато и да е форма!  :D

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 457
Re: GPS-автопилот - алгоритъм
« Отговор #29 -: Февруари 07, 2020, 02:17:27 pm »
Любовта ще спаси света! а то тъпотията е в форума не че вие сте тъп въпроса е тъпите теми и обсъждани тъпизми в мазето. Отправям последен Апел за заличаване на мойте 402 публикации да се изтрият за да се прочисти форума от тъпотията в тях. Така ще ваксинирате и новите участници от форумна гъша тъпня и старите ще си отдъхнат от безсмислени и налудничави коментари които съм давал и без да се усетя те скочили на 402 вече време като Баш Модератора да се разчисти форумчето от луди елементи /публикации/.
van , темата която съм отворил за дискусия никак не е тъпа. Дори твоя идол juliang изрази мнение, че се касае за сериозно програмиране. Факт е, че не съм срещал някой, който сам да е правил подобен софт. Говорил съм с мои приятели, които професионално се занимават с програмиране, но и те ми отказват, не са се занимавали, нямат идея и им се вижда сложно. Не че няма да се справят, но предполагам, ако те имат интерес от това. Не е чак толкова сложно.

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

Има и други, които пускат напълно ненужни теми и забележи, това са хора които нито са направили нещо през живота си, нито имат такова намерение, просто си търсят лаф-муабет и някой да ги забележи.

По отношение да ти се почистят коментарите, които смяташ за тъпотия:
Ти си правил боклук във форума, някой друг да мете подире ти. Кой е тоя, дето ще прерови целия форум страница по страница, да ти чисти тъпотиите?
Като си решил да напускаш, спри да пишеш, никой няма да те моли за обратното. Това е начина да прекратиш участието си във форума.

Доброволно си изразявал мнението си, никой не те е карал насила, никой не ти е отправял специални покани за участие, така че нямаш право да изискваш, някой да чисти подире ти.