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

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 2 774
Re: GPS-автопилот - алгоритъм
« Отговор #45 -: Февруари 10, 2020, 12:30:31 pm »
Не ме бърка, че при настройка на позицията ще прави леки чупки при маневрата и ще варира с няколко метра. Така работят и фабричните. Дори има някакъв предел, защото, ако е по-силно течението или вятъра точността на позицията се променя, затова и има бутони за корекция с +,- 10 гр и метра също.
Значи нямаш никакъв проблем. Задаваш някакво допустимо отклонение по разстояние и ъгъл. Ако отклонението по разстояние е по-голямо от допустимото, то лодката се завърта докато носа й почне да сочи точката където искаш да отидеш и двигателя се пуска. Точката се достига и лодката на минимален ход и пълно завъртане на руля се завърта до достигане на положението на носа в желаната посока.
Най-простия алгоритъм е лодката винага да завива надясно (примерно). По-сложния ще изисква сметка накъде да се завърти за да се върти по-малко.
Най-простия алгоритъм ще спира мотора докато отклонението не превиши зададения параметър, и чак тогава ще го включва за да го коригира. По-сложния ще се опитва да включва мотора още преди отклонението да е достигнало граничното.

Мен най-малко ме притеснява алгоритъма за управление на руля и мотора, което ще е смесица и като казваш компромис между двете коректирофки - позиция и направление. ...
Алгоритъма за управление на руля, скоростта на мотора и посоката му - реверса ще направя много по-лесно.
А на бас че това ще е едно огромно предизвикателство. Идея си нямаш колко сложна е всъщност тази задача. Това ще е най-големото ти предзивикателство, ако не вярваш попитай приятелите ти, които се занимават професионално с програмиране и ти отказват помощ. Не че са лоши приятели - задачата е изключително сложна. И става още по-сложна защото възложителя (ти) идея си нямаш какво искаш.
За мен "компромис" примерно може да означава лодката да се мести със 100-200 метра, но за теб това вероятно ще е недопустимо. За мен "компромис" може да е лодката постоянно да прави някакви корекции с двигателя и руля, но за теб вероятно ще е проблем това, че батерията на лодката ще се изтощи доста бързо.
Ти като възложител е ясно какво искаш - възможно най-малко преместване и възможно най-малко въртене, възможно най-кратко време за работа на руля и двигателя, възможно най-бързо коригиране на отклонението.
Е това всичкото е невъзможно да го получиш. Трябва да се откажеш от нещо. Такава задача е неизпълнима, поне докато не се дефинира в цифри всичкото това "възможно най-малко".

Хубаво е поне че има обратна връзка. Това малко ще улесни задачата, макар че не е съвем ясно какво е въздействието на руля и двигателя върху лодката. Това че е на 30% мощност двигателя ... с колко м/сек ще придвижва лодката... т.е. колко секунди ще трябва да работи за да я придвижи с 5 метра примерно... Да, може алгоритъма да се адаптира динамично, но ... това са още редове код, доста сложна логика... най-малкото тоя PID дето го постнах вече ще е задължително да присъства (и вероятно няма да е само един).

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 254
  • Пол: Мъж
  • изчислителна техника
Re: GPS-автопилот - алгоритъм
« Отговор #46 -: Февруари 10, 2020, 01:46:22 pm »
EDM electronics
TinyGPS се компилира за Arduino.
Доколко виждам софта е направен с няколко константни данни от GPS. Поне основния пример.

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 101
Re: GPS-автопилот - алгоритъм
« Отговор #47 -: Февруари 10, 2020, 01:53:07 pm »
Идея си нямаш колко сложна е всъщност тази задача. Това ще е най-големото ти предзивикателство, ако не вярваш попитай приятелите ти, които се занимават професионално с програмиране и ти отказват помощ.
Кои си има тогава идея, ако не аз?
Не познавам някой, който има такава идея и си е поставил такава задача. А относно приятелите, те няма как да го направят, защото освен едно програмиране и една платка друго не могат. При мен нещата се правят от иглата до конеца.

Бях ти споменал, че лодката може да се движи в пергел. Пергел с център носа и пергел с център кърмата. Това ще оправя зададената посоката от компаса. Но приоритетно ще бъде позицията на GPS, което е по-лесното. Сега, как ще направя така, че да си взаимодействат, кое по-напред, кое по-назад, при тези ситуация така, при другата иначе е въпрос на който от сега не мога да отговоря, защото не съм мислил задълбочено. Но мога да вкарам хиляди условия и параметри. Те условията не се безброй. После, ако не се получи добре, се мисли и се прави още по-оптимален вариант. Ми те така стават нещата, те не стават от първия път хубавите неща. Дори една програма не може да се напише за кратко в най-оптималния си вариант. Винаги има последващи идеи - по-добри.

Приемаме, че батерията ми няма изтощаване, то е и така. Тя издържа 3-4 дни плътно /постоянно движение с около 4 км/ч/ около 10-12 часа риболов, т.е. издържа около 40 часа с такава скорост.

Всякакъв песимизъм е вреден и неприемлив за мен, както и подценяването. Няма как да си нямам идея за нещо с което се занимавам от години и замисъла е от тогава. Имам наблюдения, имам и понятие какво правя.

Като начало ми е необходим само алгоритъма на GPS и отработването на двата датчика, да дават стабилни показания, да не се влияят от претреперване, да не показват различно при връщане в същата точка, защото това им е основният проблем. После, когато има стабилна информация управлението ще се направи, колкото и условия да има. Щом някой го е направил и работи, продава се в магазина...
Управлението на двигателите ще го мисля на следващия етап, сега е рано и нещата се забравят, ако навляза в подробности на алгоритъма.

Примерно може да се даде такова условие:
При достигане на точката-позицията при корекция и компаса показва отклонение примерно от 30 гр. от зададеното направление, то изпълни: дай още 5 м напред и на изток, след което завърти руля на 90 гр. и коригирай докато се установи направлението по компаса. Така лодката ще компенсира въртенето по компаса и ще застане отново в точката. Ето ти пример как трябва да работи само в една ситуация. А те не са много.

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 101
Re: GPS-автопилот - алгоритъм
« Отговор #48 -: Февруари 10, 2020, 02:06:59 pm »
EDM electronics
TinyGPS се компилира за Arduino.
Доколко виждам софта е направен с няколко константни данни от GPS. Поне основния пример.
valex , знам, нали затова я коментирам тая библиотека.
Тъй като вече близо 2 месеца се занимавам с програмиране на един сатрт-стоп таймер за двигател само с един PWM изход - "проста" работа само 600 реда условия без библиотеките, та понеже вчера го завърших и не можех да се захващам с друго, тия дни ще започна работата по GPS-датчика.

Освен тази библиотека TinyGPS++ има и друга - по-добра, с 2 пъти по-малко ресурс на паметта. Тя също дава разстояние и направление. Та ще изпробвам нещата, калибрирам и чак тогава ще имам виждане по въпроса, дали ще избера данните-функциите от някоя библиотека или ще тръгна да правя собствен алгоритъм по формулата на Хаверсин.

Неактивен van

  • Стабилен
  • ****
  • Публикации: 536
Re: GPS-автопилот - алгоритъм
« Отговор #49 -: Февруари 10, 2020, 05:12:12 pm »
EDM коя е другата библиотека ? Може ли линкче?
« Последна редакция: Февруари 10, 2020, 05:28:41 pm от van »

Неактивен juliang

  • Главен инквизитор
  • Много Напреднал
  • ***
  • Публикации: 2 774
Re: GPS-автопилот - алгоритъм
« Отговор #50 -: Февруари 10, 2020, 06:42:55 pm »
Като начало ми е необходим само алгоритъма на GPS и отработването на двата датчика, да дават стабилни показания, да не се влияят от претреперване, да не показват различно при връщане в същата точка, защото това им е основният проблем.
Този проблем се решава чрез запазване на последните N на брой точки и взимане на средното им аритметично. Колкото N е по-голямо, толкова по-малко влияние оказва "притрепване", но и толкова по-муден става датчика. Така че отново се опира до компромис.
За връщането в същата точка ... това вече не зависи от теб, а само от датчика. Но за 3-5 метра и +/- 10 градуса би трябвало и най-евтините сензори да ти вършат работа.

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

Неактивен EDM electronics

  • Global Moderator
  • Много Напреднал
  • *****
  • Публикации: 2 101
Re: GPS-автопилот - алгоритъм
« Отговор #51 -: Февруари 10, 2020, 08:03:00 pm »
По принцип за тия ниски скорости или за покой и евентуално мърдане не е необходим въобще бърз GPS. Дори да опреснява под 1 сек пак е достатъчно. Но все пак е добре да се сложи по-бърз, примерно за 10 Hz или 30 Hz и след такъв датчик да се постави цифровия филтър. Тогава да речем ще има опресняването на еднохерцовия, но показанието му трябва да кове, не да танцува.

Аз имам датчик на 6 Hz - евтин е, но е може би най-добрия от евтините. Щях да поръчвам 15 Hz-ов, но сега с тоя коронавирус ме е шубе.
По принцип фабричните котви и сонари ползват 10Hz-ови датчици и вършат работа. А ако ще се ползва само за автопилота, то всеки ще върши работа. Маркировка във водата все още няма и 2 м вдясно - вляво, не е кахър.

Неактивен valex

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

Неактивен EDM electronics

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

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


Неактивен ppipilica

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

Неактивен EDM electronics

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

Неактивен MTM

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

Неактивен EDM electronics

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

Неактивен valex

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

Неактивен valex

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