Справочници, схемотехника, теория > Програмиране на микроконтролери, програматори, цифрови проекти
GPS-автопилот - алгоритъм
valex:
EDM electronics
TinyGPS се компилира за Arduino.
Доколко виждам софта е направен с няколко константни данни от GPS. Поне основния пример.
EDM electronics:
--- Цитат на: juliang в Февруари 10, 2020, 12:30:31 pm ---Идея си нямаш колко сложна е всъщност тази задача. Това ще е най-големото ти предзивикателство, ако не вярваш попитай приятелите ти, които се занимават професионално с програмиране и ти отказват помощ.
--- Край на цитат ---
Кои си има тогава идея, ако не аз?
Не познавам някой, който има такава идея и си е поставил такава задача. А относно приятелите, те няма как да го направят, защото освен едно програмиране и една платка друго не могат. При мен нещата се правят от иглата до конеца.
Бях ти споменал, че лодката може да се движи в пергел. Пергел с център носа и пергел с център кърмата. Това ще оправя зададената посоката от компаса. Но приоритетно ще бъде позицията на GPS, което е по-лесното. Сега, как ще направя така, че да си взаимодействат, кое по-напред, кое по-назад, при тези ситуация така, при другата иначе е въпрос на който от сега не мога да отговоря, защото не съм мислил задълбочено. Но мога да вкарам хиляди условия и параметри. Те условията не се безброй. После, ако не се получи добре, се мисли и се прави още по-оптимален вариант. Ми те така стават нещата, те не стават от първия път хубавите неща. Дори една програма не може да се напише за кратко в най-оптималния си вариант. Винаги има последващи идеи - по-добри.
Приемаме, че батерията ми няма изтощаване, то е и така. Тя издържа 3-4 дни плътно /постоянно движение с около 4 км/ч/ около 10-12 часа риболов, т.е. издържа около 40 часа с такава скорост.
Всякакъв песимизъм е вреден и неприемлив за мен, както и подценяването. Няма как да си нямам идея за нещо с което се занимавам от години и замисъла е от тогава. Имам наблюдения, имам и понятие какво правя.
Като начало ми е необходим само алгоритъма на GPS и отработването на двата датчика, да дават стабилни показания, да не се влияят от претреперване, да не показват различно при връщане в същата точка, защото това им е основният проблем. После, когато има стабилна информация управлението ще се направи, колкото и условия да има. Щом някой го е направил и работи, продава се в магазина...
Управлението на двигателите ще го мисля на следващия етап, сега е рано и нещата се забравят, ако навляза в подробности на алгоритъма.
Примерно може да се даде такова условие:
При достигане на точката-позицията при корекция и компаса показва отклонение примерно от 30 гр. от зададеното направление, то изпълни: дай още 5 м напред и на изток, след което завърти руля на 90 гр. и коригирай докато се установи направлението по компаса. Така лодката ще компенсира въртенето по компаса и ще застане отново в точката. Ето ти пример как трябва да работи само в една ситуация. А те не са много.
EDM electronics:
--- Цитат на: valex в Февруари 10, 2020, 01:46:22 pm ---EDM electronics
TinyGPS се компилира за Arduino.
Доколко виждам софта е направен с няколко константни данни от GPS. Поне основния пример.
--- Край на цитат ---
valex , знам, нали затова я коментирам тая библиотека.
Тъй като вече близо 2 месеца се занимавам с програмиране на един сатрт-стоп таймер за двигател само с един PWM изход - "проста" работа само 600 реда условия без библиотеките, та понеже вчера го завърших и не можех да се захващам с друго, тия дни ще започна работата по GPS-датчика.
Освен тази библиотека TinyGPS++ има и друга - по-добра, с 2 пъти по-малко ресурс на паметта. Тя също дава разстояние и направление. Та ще изпробвам нещата, калибрирам и чак тогава ще имам виждане по въпроса, дали ще избера данните-функциите от някоя библиотека или ще тръгна да правя собствен алгоритъм по формулата на Хаверсин.
juliang:
--- Цитат на: EDM electronics в Февруари 10, 2020, 01:53:07 pm ---Като начало ми е необходим само алгоритъма на GPS и отработването на двата датчика, да дават стабилни показания, да не се влияят от претреперване, да не показват различно при връщане в същата точка, защото това им е основният проблем.
--- Край на цитат ---
Този проблем се решава чрез запазване на последните N на брой точки и взимане на средното им аритметично. Колкото N е по-голямо, толкова по-малко влияние оказва "притрепване", но и толкова по-муден става датчика. Така че отново се опира до компромис.
За връщането в същата точка ... това вече не зависи от теб, а само от датчика. Но за 3-5 метра и +/- 10 градуса би трябвало и най-евтините сензори да ти вършат работа.
Формулата на Хаверсин не ти трябва, тъй като ще работиш в сравнително малко дистанции, където закръглението на Земята не оказва никакво влияние. А тя се ползва именно когато трябва да работиш по повърхността на сфера. За твоите нужди можеш да приемеш че си в равнина.
EDM electronics:
По принцип за тия ниски скорости или за покой и евентуално мърдане не е необходим въобще бърз GPS. Дори да опреснява под 1 сек пак е достатъчно. Но все пак е добре да се сложи по-бърз, примерно за 10 Hz или 30 Hz и след такъв датчик да се постави цифровия филтър. Тогава да речем ще има опресняването на еднохерцовия, но показанието му трябва да кове, не да танцува.
Аз имам датчик на 6 Hz - евтин е, но е може би най-добрия от евтините. Щях да поръчвам 15 Hz-ов, но сега с тоя коронавирус ме е шубе.
По принцип фабричните котви и сонари ползват 10Hz-ови датчици и вършат работа. А ако ще се ползва само за автопилота, то всеки ще върши работа. Маркировка във водата все още няма и 2 м вдясно - вляво, не е кахър.
Навигация
[0] Списък на темите
Премини на пълна версия